Advanced Order Export For WooCommerce - Version 3.2.0

Version Description

  • 2021-11-09 =
  • Speeded up XLS export
  • Added option "Remove emojis" (XLS format)
  • Added option "Remove line breaks" (CSV format)
  • Added field "Total volume"
  • New button "Add calculated field" in section "Setup Fields"
  • Fixed bug - photo missed in product search
  • Fixed bug - can't filter items if item has "&" in name
  • Fixed bug - PHP warnings for deleted taxonomy
  • Fixed bug - long links broke PDF cells
  • Fixed bug - ignored capability "export_woocommerce_orders"
Download this release

Release Info

Developer algol.plus
Plugin Icon 128x128 Advanced Order Export For WooCommerce
Version 3.2.0
Comparing to
See all releases

Code changes from version 3.1.9 to 3.2.0

assets/css/export.css CHANGED
@@ -219,6 +219,24 @@ input.date {
219
  border: 1px solid lightgrey;
220
  }
221
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
222
  #progressBar {
223
 
224
  width: 400px;
@@ -878,7 +896,10 @@ input[type=number] {
878
  .div_custom.segment-form.all-segments > div,
879
  .div_custom.products-segment > div,
880
  .div_custom.product_items-segment > div,
881
- .div_custom.coupons-segment > div {
 
 
 
882
  margin-top: .2rem;
883
  }
884
  #my-export-date-field input[type="radio"] {
219
  border: 1px solid lightgrey;
220
  }
221
 
222
+ #progress_div .title-gen-file {
223
+ display: none;
224
+ -webkit-animation: title-gen-file 3s linear infinite;
225
+ animation: title-gen-file 3s linear infinite;
226
+ }
227
+
228
+ @-webkit-keyframes title-gen-file {
229
+ 0% { color: rgba(34, 34, 34, 1); }
230
+ 50% { color: rgba(34, 34, 34, 0); }
231
+ 100% { color: rgba(34, 34, 34, 1); }
232
+ }
233
+
234
+ @keyframes title-gen-file {
235
+ 0% { color: rgba(34, 34, 34, 1); }
236
+ 50% { color: rgba(34, 34, 34, 0); }
237
+ 100% { color: rgba(34, 34, 34, 1); }
238
+ }
239
+
240
  #progressBar {
241
 
242
  width: 400px;
896
  .div_custom.segment-form.all-segments > div,
897
  .div_custom.products-segment > div,
898
  .div_custom.product_items-segment > div,
899
+ .div_custom.coupons-segment > div,
900
+ .div_calculated.segment-form.all-segments > div,
901
+ .div_calculated.products-segment > div,
902
+ .div_calculated.product_items-segment > div {
903
  margin-top: .2rem;
904
  }
905
  #my-export-date-field input[type="radio"] {
assets/js/buttons.js CHANGED
@@ -23,11 +23,29 @@ function woe_show_preview( response ) {
23
  window.scrollTo( 0, document.body.scrollHeight );
24
  }
25
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
26
  function woe_preview( size ) {
27
 
28
  jQuery( '#output_preview, #output_preview_csv' ).hide();
29
 
30
- var data = 'json=' + woe_make_json_var( jQuery( '#export_job_settings' ) );
31
 
32
  // var estimate_data = data + "&action=order_exporter&method=estimate&mode=" + mode + "&id=" + job_id + '&woe_nonce=' + settings_form.woe_nonce + '&tab=' + settings_form.woe_active_tab;
33
 
@@ -64,7 +82,7 @@ function woe_close_waiting_dialog() {
64
 
65
  function woe_get_data() {
66
  var data = new Array();
67
- data.push( {name: 'json', value: woe_make_json( jQuery( '#export_job_settings' ) )} );
68
  data.push( {name: 'action', value: 'order_exporter'} );
69
  data.push( {name: 'mode', value: mode} );
70
  data.push( {name: 'id', value: job_id} );
@@ -179,9 +197,10 @@ function woe_get_all( start, percent, method ) {
179
  return;
180
  }
181
 
182
- woe_export_progress( parseInt( percent, 10 ), jQuery( '#progressBar' ) );
183
 
184
  if ( percent < 100 ) {
 
185
  data = woe_get_data();
186
  data.push( {name: 'method', value: method} );
187
  data.push( {name: 'start', value: start} );
@@ -217,6 +236,7 @@ function woe_get_all( start, percent, method ) {
217
  } );
218
  }
219
  else {
 
220
  data = woe_get_data();
221
  data.push( {name: 'method', value: 'export_finish'} );
222
  data.push( {name: 'file_id', value: window.file_id} );
@@ -230,6 +250,7 @@ function woe_get_all( start, percent, method ) {
230
  dataType: "json",
231
  error: function ( xhr, status, error ) {
232
  alert( xhr.responseText );
 
233
  },
234
  success: function ( response ) {
235
  var download_format = output_format;
@@ -250,6 +271,7 @@ function woe_get_all( start, percent, method ) {
250
  ajaxurl.indexOf( '?' ) === - 1 ? '?' : '&'
251
  ) + 'action=order_exporter&method=export_download&format=' + download_format + '&file_id=' + window.file_id + '&tab=' + settings_form.woe_active_tab );
252
  }
 
253
 
254
  woe_reset_date_filter_for_cron();
255
  }
@@ -339,7 +361,7 @@ jQuery( document ).ready( function ( $ ) {
339
 
340
  $( "#export-wo-pb-btn" ).click( function () {
341
  $( '#export_wo_pb_form' ).attr( "action", ajaxurl );
342
- $( '#export_wo_pb_form' ).find( '[name=json]' ).val( woe_make_json( $( '#export_job_settings' ) ) );
343
  $( '#export_wo_pb_form' ).submit();
344
  return false;
345
  } );
23
  window.scrollTo( 0, document.body.scrollHeight );
24
  }
25
 
26
+ function woe_get_json_settings() {
27
+ let obj = jQuery( '#export_job_settings' ).serializeJSON();
28
+ if( obj.settings.item_names ) {
29
+ let filter_items = obj.settings.item_names;
30
+
31
+ let sz = filter_items.length;
32
+ let additional = [];
33
+ for (let i = 0; i < sz; i++) {
34
+ if (filter_items[i].includes("& ")) {
35
+ additional.push(filter_items[i].replaceAll("&", "&#038;"));
36
+ additional.push(filter_items[i].replaceAll("&", "&amp;"));
37
+ }
38
+ }
39
+ obj.settings.item_names = filter_items.concat(additional);
40
+ }
41
+ return JSON.stringify(obj);
42
+ }
43
+
44
  function woe_preview( size ) {
45
 
46
  jQuery( '#output_preview, #output_preview_csv' ).hide();
47
 
48
+ var data = 'json=' + encodeURIComponent(woe_get_json_settings());
49
 
50
  // var estimate_data = data + "&action=order_exporter&method=estimate&mode=" + mode + "&id=" + job_id + '&woe_nonce=' + settings_form.woe_nonce + '&tab=' + settings_form.woe_active_tab;
51
 
82
 
83
  function woe_get_data() {
84
  var data = new Array();
85
+ data.push( {name: 'json', value: woe_get_json_settings()} );
86
  data.push( {name: 'action', value: 'order_exporter'} );
87
  data.push( {name: 'mode', value: mode} );
88
  data.push( {name: 'id', value: job_id} );
197
  return;
198
  }
199
 
200
+ //woe_export_progress( parseInt( percent, 10 ), jQuery( '#progressBar' ) );
201
 
202
  if ( percent < 100 ) {
203
+ woe_export_progress( parseInt( percent, 10 ), jQuery( '#progressBar' ) );
204
  data = woe_get_data();
205
  data.push( {name: 'method', value: method} );
206
  data.push( {name: 'start', value: start} );
236
  } );
237
  }
238
  else {
239
+ jQuery( '#progress_div .title-gen-file').show();
240
  data = woe_get_data();
241
  data.push( {name: 'method', value: 'export_finish'} );
242
  data.push( {name: 'file_id', value: window.file_id} );
250
  dataType: "json",
251
  error: function ( xhr, status, error ) {
252
  alert( xhr.responseText );
253
+ woe_export_progress( 100, jQuery( '#progressBar' ) );
254
  },
255
  success: function ( response ) {
256
  var download_format = output_format;
271
  ajaxurl.indexOf( '?' ) === - 1 ? '?' : '&'
272
  ) + 'action=order_exporter&method=export_download&format=' + download_format + '&file_id=' + window.file_id + '&tab=' + settings_form.woe_active_tab );
273
  }
274
+ woe_export_progress( 100, jQuery( '#progressBar' ) );
275
 
276
  woe_reset_date_filter_for_cron();
277
  }
361
 
362
  $( "#export-wo-pb-btn" ).click( function () {
363
  $( '#export_wo_pb_form' ).attr( "action", ajaxurl );
364
+ $( '#export_wo_pb_form' ).find( '[name=json]' ).val( woe_get_json_settings() );
365
  $( '#export_wo_pb_form' ).submit();
366
  return false;
367
  } );
assets/js/export-fields.js CHANGED
@@ -805,6 +805,35 @@ function woe_add_bind_for_custom_fields( prefix, output_format, $to ) {
805
  return false;
806
  } );
807
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
808
  }
809
 
810
  function woe_add_custom_field( to, index_p, format, colname, value, segment, format_field ) {
@@ -1041,6 +1070,11 @@ jQuery( document ).ready( function ( $ ) {
1041
  $( '.woe_segment_tips' ).removeClass( 'active' );
1042
  $( '#woe_tips_' + $( this ).data( 'segment' ) ).addClass( 'active' );
1043
 
 
 
 
 
 
1044
  window.location.href = $( this ).attr( 'href' );
1045
 
1046
  woe_reset_field_contorls();
@@ -1142,6 +1176,23 @@ jQuery( document ).ready( function ( $ ) {
1142
  return false;
1143
  } );
1144
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1145
  jQuery( '.tab-controls .button-cancel' ).on( 'click', function () {
1146
 
1147
  jQuery( this ).closest( '.segment-form' )
@@ -1246,6 +1297,32 @@ jQuery( document ).ready( function ( $ ) {
1246
  return false;
1247
  });
1248
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1249
  jQuery( '.tab-controls .other_items-actions-buttons .add-fee' ).on( 'click', function () {
1250
  jQuery( '.tab-actions-forms .segment-form' ).removeClass( 'active' );
1251
  jQuery( '.tab-actions-forms .segment-form.other-items-add-fee-form' ).addClass( 'active' );
805
  return false;
806
  } );
807
 
808
+ jQuery( '#button_custom_calculated_' + prefix + '' ).off();
809
+ jQuery( '#button_custom_calculated_' + prefix + '' ).click( function () {
810
+ var metakey = jQuery( '#metakey_custom_calculated_' + prefix + '' ).val();
811
+ var label = jQuery( '#label_custom_calculated_' + prefix + '' ).val();
812
+ var format_field = jQuery( '#format_custom_calculated_' + prefix + '' ).val();
813
+ if ( ! metakey ) {
814
+ alert( export_messages.empty_column_name );
815
+ jQuery( '#metakey_custom_calculated_' + prefix + '' ).focus();
816
+ return false
817
+ }
818
+ if ( ! label && 'products' !== prefix ) {
819
+ alert( export_messages.empty_value );
820
+ jQuery( '#label_custom_calculated_' + prefix + '' ).focus();
821
+ return false
822
+ }
823
+
824
+ jQuery( '#metakey_custom_calculated_' + prefix + '' ).val( "" );
825
+
826
+ jQuery( '#label_custom_calculated_' + prefix + '' ).val( "" );
827
+ jQuery( '#format_custom_calculated_' + prefix + '' ).val( "" );
828
+
829
+ var segment = jQuery( '.segment_choice.active' ).attr( 'data-segment' );
830
+
831
+ woe_add_custom_meta( jQuery( "#" + segment + '_unselected_segment' ), prefix, output_format, metakey, label, segment, format_field );
832
+
833
+ jQuery( this ).siblings( '.button-cancel' ).trigger( 'click' );
834
+
835
+ return false;
836
+ } );
837
  }
838
 
839
  function woe_add_custom_field( to, index_p, format, colname, value, segment, format_field ) {
1070
  $( '.woe_segment_tips' ).removeClass( 'active' );
1071
  $( '#woe_tips_' + $( this ).data( 'segment' ) ).addClass( 'active' );
1072
 
1073
+ $('.add-calculated').hide();
1074
+ if(jQuery.inArray(segment, ["common", "products", "product_items"]) >= 0) {
1075
+ $('.add-calculated').show();
1076
+ }
1077
+
1078
  window.location.href = $( this ).attr( 'href' );
1079
 
1080
  woe_reset_field_contorls();
1176
  return false;
1177
  } );
1178
 
1179
+ jQuery( '.tab-controls .tab-actions-buttons .add-calculated' ).on( 'click', function () {
1180
+
1181
+ jQuery( '.tab-actions-forms .segment-form' ).removeClass( 'active' );
1182
+
1183
+ if ( jQuery( '.tab-actions-forms .div_calculated.segment-form.' +
1184
+ jQuery( '#unselected_fields .segment_choice.active' ).attr( 'data-segment' ) + '-segment'
1185
+ ).length ) {
1186
+ jQuery( '.tab-actions-forms .div_calculated.segment-form.' +
1187
+ jQuery( '#unselected_fields .segment_choice.active' ).attr( 'data-segment' ) + '-segment'
1188
+ ).addClass( 'active' );
1189
+ } else {
1190
+ jQuery( '.tab-actions-forms .div_calculated.segment-form.all-segments' ).addClass( 'active' );
1191
+ }
1192
+
1193
+ return false;
1194
+ } );
1195
+
1196
  jQuery( '.tab-controls .button-cancel' ).on( 'click', function () {
1197
 
1198
  jQuery( this ).closest( '.segment-form' )
1297
  return false;
1298
  });
1299
 
1300
+ jQuery( '#button_custom_calculated' ).click( function () {
1301
+ var metakey = jQuery( '#metakey_custom_calculated' ).val();
1302
+ var label = jQuery( '#label_custom_calculated' ).val();
1303
+ var format_field = jQuery( '#format_custom_calculated' ).val();
1304
+ if ( ! metakey ) {
1305
+ alert( export_messages.empty_meta_key );
1306
+ jQuery( '#metakey_custom_calculated' ).focus();
1307
+ return false
1308
+ }
1309
+ if ( ! label ) {
1310
+ alert( export_messages.empty_column_name );
1311
+ jQuery( '#label_custom_calculated' ).focus();
1312
+ return false
1313
+ }
1314
+
1315
+ var segment = jQuery( '.segment_choice.active' ).attr( 'data-segment' );
1316
+
1317
+ woe_add_custom_meta( jQuery( "#" + segment + '_unselected_segment' ), 'orders', output_format, metakey, label, segment, format_field );
1318
+
1319
+ woe_reset_field_contorls();
1320
+
1321
+ jQuery( this ).siblings( '.button-cancel' ).trigger( 'click' );
1322
+
1323
+ return false;
1324
+ } );
1325
+
1326
  jQuery( '.tab-controls .other_items-actions-buttons .add-fee' ).on( 'click', function () {
1327
  jQuery( '.tab-actions-forms .segment-form' ).removeClass( 'active' );
1328
  jQuery( '.tab-actions-forms .segment-form.other-items-add-fee-form' ).addClass( 'active' );
classes/FPDF/class-woe-pdf-mc-table.php CHANGED
@@ -436,8 +436,14 @@ class WOE_PDF_MC_Table extends WOE_FPDF {
436
  protected function getRowHeight( $widths, $row ) {
437
  $nb = 0;
438
  for ( $i = 0; $i < count( $row ); $i ++ ) {
439
- // do not calculate height for non string values
440
- $value = is_string( $row[ $i ] ) ? $row[ $i ] : 0;
 
 
 
 
 
 
441
  $nb = max( $nb, $this->NbLines( $widths[ $i ], $value ) );
442
  }
443
 
@@ -589,7 +595,7 @@ class WOE_PDF_MC_Table extends WOE_FPDF {
589
  $l = 0;
590
  $line_counter = 1;
591
  while ( $ch_index < $text_len ) {
592
- $char = $s[ $ch_index ];
593
  if ( $char == "\n" ) {
594
  $ch_index ++;
595
  $sep = - 1;
436
  protected function getRowHeight( $widths, $row ) {
437
  $nb = 0;
438
  for ( $i = 0; $i < count( $row ); $i ++ ) {
439
+ if ( $this->isLinkCell($row[ $i ]) ) {
440
+ $value = $row[ $i ]['link'];
441
+ } elseif ( is_string( $row[ $i ] ) ) {
442
+ $value = $row[ $i ];
443
+ } else {
444
+ $value = 0;
445
+ }
446
+
447
  $nb = max( $nb, $this->NbLines( $widths[ $i ], $value ) );
448
  }
449
 
595
  $l = 0;
596
  $line_counter = 1;
597
  while ( $ch_index < $text_len ) {
598
+ $char = mb_substr($s, $ch_index, 1);
599
  if ( $char == "\n" ) {
600
  $ch_index ++;
601
  $sep = - 1;
classes/PHPExcel/Writer/Excel2007/Worksheet.php CHANGED
@@ -768,7 +768,7 @@ class PHPExcel_Writer_Excel2007_Worksheet extends PHPExcel_Writer_Excel2007_Writ
768
  $objWriter->writeAttribute('ref', str_replace('$', '', $range));
769
 
770
  $columns = $pSheet->getAutoFilter()->getColumns();
771
- if (count($columns > 0)) {
772
  foreach ($columns as $columnID => $column) {
773
  $rules = $column->getRules();
774
  if (count($rules) > 0) {
768
  $objWriter->writeAttribute('ref', str_replace('$', '', $range));
769
 
770
  $columns = $pSheet->getAutoFilter()->getColumns();
771
+ if (!empty($columns)) {
772
  foreach ($columns as $columnID => $column) {
773
  $rules = $column->getRules();
774
  if (count($rules) > 0) {
classes/admin/class-wc-order-export-manage.php CHANGED
@@ -252,6 +252,7 @@ class WC_Order_Export_Manage {
252
  'format_xls_auto_width' => 1,
253
  'format_xls_direction_rtl' => 0,
254
  'format_xls_force_general_format' => 0,
 
255
  'format_xls_row_images_width' => 50,
256
  'format_xls_row_images_height' => 50,
257
 
@@ -263,6 +264,7 @@ class WC_Order_Export_Manage {
263
  'format_csv_item_rows_start_from_new_line' => 0,
264
  'format_csv_encoding' => 'UTF-8',
265
  'format_csv_delete_linebreaks' => 0,
 
266
  'format_csv_force_quotes' => 0,
267
 
268
  'format_tsv_linebreak' => '\r\n',
@@ -512,6 +514,14 @@ class WC_Order_Export_Manage {
512
  apply_filters( $filter, array(), $format )
513
  );
514
 
 
 
 
 
 
 
 
 
515
  foreach ( $default_segment_fields as $key => $value ) {
516
  $order_field = $value;
517
  $order_field['colname'] = $value['label'];
252
  'format_xls_auto_width' => 1,
253
  'format_xls_direction_rtl' => 0,
254
  'format_xls_force_general_format' => 0,
255
+ 'format_xls_remove_emojis' => 0,
256
  'format_xls_row_images_width' => 50,
257
  'format_xls_row_images_height' => 50,
258
 
264
  'format_csv_item_rows_start_from_new_line' => 0,
265
  'format_csv_encoding' => 'UTF-8',
266
  'format_csv_delete_linebreaks' => 0,
267
+ 'format_csv_remove_linebreaks' => 0,
268
  'format_csv_force_quotes' => 0,
269
 
270
  'format_tsv_linebreak' => '\r\n',
514
  apply_filters( $filter, array(), $format )
515
  );
516
 
517
+ if ($segment == 'common') {
518
+ $settings = WC_Order_Export_Main_Settings::get_settings();
519
+ $type = isset($settings['post_type']) ? $settings['post_type'] : (isset($_GET['woe_post_type']) ? $_GET['woe_post_type'] : '');
520
+ if ( $type !== 'shop_order_refund' ) {
521
+ unset($default_segment_fields['orig_order_date']);
522
+ }
523
+ }
524
+
525
  foreach ( $default_segment_fields as $key => $value ) {
526
  $order_field = $value;
527
  $order_field['colname'] = $value['label'];
classes/admin/tabs/ajax/trait-wc-order-export-admin-tab-abstract-ajax-export.php CHANGED
@@ -120,6 +120,8 @@ trait WC_Order_Export_Admin_Tab_Abstract_Ajax_Export {
120
  set_transient( $this->tempfile_prefix . 'download_filename', $filename, 60 );
121
  $this->stop_prevent_object_cache();
122
 
 
 
123
  $this->ajax_export_download();
124
  } else {
125
  _e( 'Nothing to export. Please, adjust your filters', 'woo-order-export-lite' );
@@ -134,7 +136,7 @@ trait WC_Order_Export_Admin_Tab_Abstract_Ajax_Export {
134
  $filename = $this->get_temp_file_name();
135
  delete_transient( $this->tempfile_prefix . $_GET['file_id'] );
136
 
137
- $download_name = get_transient( $this->tempfile_prefix . 'download_filename' );
138
  $this->send_headers( $format, $download_name );
139
  $this->send_contents_delete_file( $filename );
140
  $this->stop_prevent_object_cache();
120
  set_transient( $this->tempfile_prefix . 'download_filename', $filename, 60 );
121
  $this->stop_prevent_object_cache();
122
 
123
+ $this->set_filename($filename);
124
+ $this->set_tmp_filename($file);
125
  $this->ajax_export_download();
126
  } else {
127
  _e( 'Nothing to export. Please, adjust your filters', 'woo-order-export-lite' );
136
  $filename = $this->get_temp_file_name();
137
  delete_transient( $this->tempfile_prefix . $_GET['file_id'] );
138
 
139
+ $download_name = $this->filename ? $this->filename : get_transient( $this->tempfile_prefix . 'download_filename' );
140
  $this->send_headers( $format, $download_name );
141
  $this->send_contents_delete_file( $filename );
142
  $this->stop_prevent_object_cache();
classes/admin/tabs/ajax/trait-wc-order-export-ajax-helpers.php CHANGED
@@ -5,6 +5,9 @@ if ( ! defined( 'ABSPATH' ) ) {
5
 
6
  trait WC_Order_Export_Ajax_Helpers {
7
  protected $tempfile_prefix = 'woocommerce-order-file-';
 
 
 
8
 
9
  protected $_wp_using_ext_object_cache_previous;
10
 
@@ -113,7 +116,7 @@ trait WC_Order_Export_Ajax_Helpers {
113
 
114
  $this->start_prevent_object_cache();
115
 
116
- $filename = get_transient( $this->tempfile_prefix . $_REQUEST['file_id'] );
117
  if ( $filename === false ) {
118
  echo json_encode( array( 'error' => __( 'Can\'t find exported file', 'woo-order-export-lite' ) ) );
119
  die();
@@ -124,6 +127,14 @@ trait WC_Order_Export_Ajax_Helpers {
124
  return $filename;
125
  }
126
 
 
 
 
 
 
 
 
 
127
  protected function delete_temp_file() {
128
 
129
  $this->start_prevent_object_cache();
5
 
6
  trait WC_Order_Export_Ajax_Helpers {
7
  protected $tempfile_prefix = 'woocommerce-order-file-';
8
+ //to avoid using transients for file name
9
+ protected $filename;
10
+ protected $tmp_filename;
11
 
12
  protected $_wp_using_ext_object_cache_previous;
13
 
116
 
117
  $this->start_prevent_object_cache();
118
 
119
+ $filename = $this->tmp_filename ? $this->tmp_filename : get_transient( $this->tempfile_prefix . $_REQUEST['file_id'] );
120
  if ( $filename === false ) {
121
  echo json_encode( array( 'error' => __( 'Can\'t find exported file', 'woo-order-export-lite' ) ) );
122
  die();
127
  return $filename;
128
  }
129
 
130
+ public function set_filename($filename) {
131
+ $this->filename = $filename;
132
+ }
133
+
134
+ public function set_tmp_filename($tmp_filename) {
135
+ $this->tmp_filename = $tmp_filename;
136
+ }
137
+
138
  protected function delete_temp_file() {
139
 
140
  $this->start_prevent_object_cache();
classes/class-wc-order-export-admin.php CHANGED
@@ -198,9 +198,9 @@ class WC_Order_Export_Admin {
198
  public function add_action_links( $links ) {
199
  $mylinks = array(
200
  '<a href="admin.php?page=wc-order-export">' . __( 'Settings', 'woo-order-export-lite' ) . '</a>',
201
- '<a href="https://algolplus.com/plugins/documentation-order-export-woocommerce/" target="_blank">' . __( 'Docs',
202
  'woo-order-export-lite' ) . '</a>',
203
- '<a href="https://algolplus.freshdesk.com" target="_blank">' . __( 'Support',
204
  'woo-order-export-lite' ) . '</a>',
205
  );
206
 
@@ -465,7 +465,7 @@ class WC_Order_Export_Admin {
465
  // calls ajax_action_XXXX
466
  public function ajax_gate() {
467
 
468
- if( !current_user_can('view_woocommerce_reports') ){
469
  die( __( 'You can not do it', 'woo-order-export-lite' ) );
470
  }
471
 
198
  public function add_action_links( $links ) {
199
  $mylinks = array(
200
  '<a href="admin.php?page=wc-order-export">' . __( 'Settings', 'woo-order-export-lite' ) . '</a>',
201
+ '<a href="https://docs.algolplus.com/order-export-docs/" target="_blank">' . __( 'Docs',
202
  'woo-order-export-lite' ) . '</a>',
203
+ '<a href="https://docs.algolplus.com/support/" target="_blank">' . __( 'Support',
204
  'woo-order-export-lite' ) . '</a>',
205
  );
206
 
465
  // calls ajax_action_XXXX
466
  public function ajax_gate() {
467
 
468
+ if( !current_user_can('view_woocommerce_reports') AND !current_user_can(self::$cap_export_orders) ){
469
  die( __( 'You can not do it', 'woo-order-export-lite' ) );
470
  }
471
 
classes/core/class-wc-order-export-data-extractor-ui.php CHANGED
@@ -130,9 +130,9 @@ class WC_Order_Export_Data_Extractor_UI extends WC_Order_Export_Data_Extractor {
130
  $limit_result = (int) $limit > 0 ? "LIMIT " . (int) $limit : "";
131
 
132
  $query = "
133
- SELECT post.ID as id,post.post_title as text,att.ID as photo_id,att.guid as photo_url
134
  FROM " . $wpdb->posts . " as post
135
- LEFT JOIN " . $wpdb->posts . " AS att ON post.ID=att.post_parent AND att.post_type='attachment'
136
  WHERE post.post_title LIKE %s
137
  AND post.post_type = 'product'
138
  AND post.post_status NOT IN ('trash')
@@ -620,6 +620,11 @@ class WC_Order_Export_Data_Extractor_UI extends WC_Order_Export_Data_Extractor {
620
  'checked' => 1,
621
  'format' => 'date',
622
  ),
 
 
 
 
 
623
  'modified_date' => array(
624
  'label' => __( 'Modification Date', 'woo-order-export-lite' ),
625
  'checked' => 0,
@@ -1119,6 +1124,11 @@ class WC_Order_Export_Data_Extractor_UI extends WC_Order_Export_Data_Extractor {
1119
  'checked' => 0,
1120
  'format' => 'number',
1121
  ),
 
 
 
 
 
1122
  );
1123
  }
1124
 
130
  $limit_result = (int) $limit > 0 ? "LIMIT " . (int) $limit : "";
131
 
132
  $query = "
133
+ SELECT post.ID as id,post.post_title as text,att.meta_value as photo_id, '' as photo_url
134
  FROM " . $wpdb->posts . " as post
135
+ LEFT JOIN " . $wpdb->postmeta . " AS att ON post.ID=att.post_id AND att.meta_key='_thumbnail_id'
136
  WHERE post.post_title LIKE %s
137
  AND post.post_type = 'product'
138
  AND post.post_status NOT IN ('trash')
620
  'checked' => 1,
621
  'format' => 'date',
622
  ),
623
+ 'orig_order_date' => array(
624
+ 'label' => __( 'Date of original order', 'woo-order-export-lite' ),
625
+ 'checked' => 0,
626
+ 'format' => 'date',
627
+ ),
628
  'modified_date' => array(
629
  'label' => __( 'Modification Date', 'woo-order-export-lite' ),
630
  'checked' => 0,
1124
  'checked' => 0,
1125
  'format' => 'number',
1126
  ),
1127
+ 'total_volume' => array(
1128
+ 'label' => __( 'Total volume', 'woo-order-export-lite' ),
1129
+ 'checked' => 0,
1130
+ 'format' => 'number',
1131
+ ),
1132
  );
1133
  }
1134
 
classes/core/class-wc-order-export-data-extractor.php CHANGED
@@ -558,25 +558,27 @@ class WC_Order_Export_Data_Extractor {
558
  //print_r($filters );die();
559
  foreach ( $filters as $operator => $fields ) {
560
  foreach ( $fields as $label => $values ) {
561
- $field = $names2fields[ $label ];
562
- $values = self::sql_subset( $values );
563
- if ( $values ) {
564
- $label = esc_sql( $label );
565
-
566
- if ($operator == 'NOT SET') {
567
- $taxonomy_where[] = "NOT ( orderitemmeta_product.meta_key IN('_product_id') AND orderitemmeta_product.meta_value IN (SELECT object_id FROM {$wpdb->term_relationships} AS `{$field}_rel`
 
568
  INNER JOIN {$wpdb->term_taxonomy} AS `{$field}_cat` ON `{$field}_cat`.term_taxonomy_id = `{$field}_rel`.term_taxonomy_id
569
  WHERE `{$field}_cat`.taxonomy='$label' AND `{$field}_cat`.term_id IN (SELECT term_id FROM {$wpdb->terms} ) ))";
570
- } elseif ($operator == 'IS SET') {
571
- $taxonomy_where[] = "( orderitemmeta_product.meta_key IN('_product_id') AND orderitemmeta_product.meta_value IN (SELECT object_id FROM {$wpdb->term_relationships} AS `{$field}_rel`
572
  INNER JOIN {$wpdb->term_taxonomy} AS `{$field}_cat` ON `{$field}_cat`.term_taxonomy_id = `{$field}_rel`.term_taxonomy_id
573
  WHERE `{$field}_cat`.taxonomy='$label' AND `{$field}_cat`.term_id IN (SELECT term_id FROM {$wpdb->terms} ) ))";
574
- } else {
575
- $taxonomy_where[] = "( orderitemmeta_product.meta_key IN('_product_id') AND orderitemmeta_product.meta_value $operator (SELECT object_id FROM {$wpdb->term_relationships} AS `{$field}_rel`
576
  INNER JOIN {$wpdb->term_taxonomy} AS `{$field}_cat` ON `{$field}_cat`.term_taxonomy_id = `{$field}_rel`.term_taxonomy_id
577
  WHERE `{$field}_cat`.taxonomy='$label' AND `{$field}_cat`.term_id IN (SELECT term_id FROM {$wpdb->terms} WHERE name IN ($values) ) ))";
578
- }
579
- }
 
580
  }
581
  }
582
  if( $taxonomy_where )
@@ -1323,7 +1325,7 @@ class WC_Order_Export_Data_Extractor {
1323
  $_date = date( 'Y-m-d', $_time );
1324
  $last_month = strtotime( $_date . " -3 month" );
1325
  $quarter_start = date( 'Y-' . self::get_quarter_month( $last_month ) . '-01', $last_month );
1326
- $quarter_end = date( 'Y-' . ( self::get_quarter_month( $last_month ) + 2 ) . '-31', $last_month );
1327
 
1328
  $from_date = sprintf( '%s %s', $quarter_start, '00:00:00' );
1329
  $to_date = sprintf( '%s %s', $quarter_end, '23:59:59' );
@@ -1483,7 +1485,7 @@ class WC_Order_Export_Data_Extractor {
1483
  foreach ( $order->get_items( 'line_item' ) as $item_id => $item ) {
1484
  /** @var WC_Order_Item_Product $item */
1485
  do_action( "woe_get_order_product_item", $item );
1486
- if ( $options['export_refunds'] AND $item['qty'] == 0 ) // skip zero items, when export refunds
1487
  {
1488
  continue;
1489
  }
@@ -1521,6 +1523,12 @@ class WC_Order_Export_Data_Extractor {
1521
  continue 3;
1522
  }
1523
  }
 
 
 
 
 
 
1524
  else if(in_array($operator, self::$operator_must_check_values)) {
1525
  if(empty($meta)) {
1526
  continue 3;
558
  //print_r($filters );die();
559
  foreach ( $filters as $operator => $fields ) {
560
  foreach ( $fields as $label => $values ) {
561
+ if (isset($names2fields[ $label ])) {
562
+ $field = $names2fields[ $label ];
563
+ $values = self::sql_subset( $values );
564
+ if ( $values ) {
565
+ $label = esc_sql( $label );
566
+
567
+ if ($operator == 'NOT SET') {
568
+ $taxonomy_where[] = "NOT ( orderitemmeta_product.meta_key IN('_product_id') AND orderitemmeta_product.meta_value IN (SELECT object_id FROM {$wpdb->term_relationships} AS `{$field}_rel`
569
  INNER JOIN {$wpdb->term_taxonomy} AS `{$field}_cat` ON `{$field}_cat`.term_taxonomy_id = `{$field}_rel`.term_taxonomy_id
570
  WHERE `{$field}_cat`.taxonomy='$label' AND `{$field}_cat`.term_id IN (SELECT term_id FROM {$wpdb->terms} ) ))";
571
+ } elseif ($operator == 'IS SET') {
572
+ $taxonomy_where[] = "( orderitemmeta_product.meta_key IN('_product_id') AND orderitemmeta_product.meta_value IN (SELECT object_id FROM {$wpdb->term_relationships} AS `{$field}_rel`
573
  INNER JOIN {$wpdb->term_taxonomy} AS `{$field}_cat` ON `{$field}_cat`.term_taxonomy_id = `{$field}_rel`.term_taxonomy_id
574
  WHERE `{$field}_cat`.taxonomy='$label' AND `{$field}_cat`.term_id IN (SELECT term_id FROM {$wpdb->terms} ) ))";
575
+ } else {
576
+ $taxonomy_where[] = "( orderitemmeta_product.meta_key IN('_product_id') AND orderitemmeta_product.meta_value $operator (SELECT object_id FROM {$wpdb->term_relationships} AS `{$field}_rel`
577
  INNER JOIN {$wpdb->term_taxonomy} AS `{$field}_cat` ON `{$field}_cat`.term_taxonomy_id = `{$field}_rel`.term_taxonomy_id
578
  WHERE `{$field}_cat`.taxonomy='$label' AND `{$field}_cat`.term_id IN (SELECT term_id FROM {$wpdb->terms} WHERE name IN ($values) ) ))";
579
+ }
580
+ }
581
+ }
582
  }
583
  }
584
  if( $taxonomy_where )
1325
  $_date = date( 'Y-m-d', $_time );
1326
  $last_month = strtotime( $_date . " -3 month" );
1327
  $quarter_start = date( 'Y-' . self::get_quarter_month( $last_month ) . '-01', $last_month );
1328
+ $quarter_end = date( 'Y-' . ( self::get_quarter_month( $last_month ) + 2 ) . '-t', strtotime("$quarter_start +2 month") );
1329
 
1330
  $from_date = sprintf( '%s %s', $quarter_start, '00:00:00' );
1331
  $to_date = sprintf( '%s %s', $quarter_end, '23:59:59' );
1485
  foreach ( $order->get_items( 'line_item' ) as $item_id => $item ) {
1486
  /** @var WC_Order_Item_Product $item */
1487
  do_action( "woe_get_order_product_item", $item );
1488
+ if ( $options['export_refunds'] AND $item['qty'] == 0 AND !apply_filters("woe_allow_export_zero_qty", false) ) // skip zero items, when export refunds
1489
  {
1490
  continue;
1491
  }
1523
  continue 3;
1524
  }
1525
  }
1526
+ else if($operator == 'IS SET' && $meta === '') {
1527
+ continue 3;
1528
+ }
1529
+ else if($operator == 'NOT SET' && $meta !== '') {
1530
+ continue 3;
1531
+ }
1532
  else if(in_array($operator, self::$operator_must_check_values)) {
1533
  if(empty($meta)) {
1534
  continue 3;
classes/core/class-wc-order-export-engine.php CHANGED
@@ -176,6 +176,11 @@ class WC_Order_Export_Engine {
176
  if ( ! apply_filters( 'woe_load_custom_formatter_' . $format, false ) ) {
177
  include_once dirname( dirname( __FILE__ ) ) . "/formats/class-woe-formatter-$format.php";
178
  }
 
 
 
 
 
179
 
180
  $format_settings = array( 'global_job_settings' => $settings );
181
  foreach ( $settings as $key => $val ) {
@@ -552,7 +557,6 @@ class WC_Order_Export_Engine {
552
  $settings = self::replace_sort_field( $settings );
553
  $sql .= apply_filters( "woe_sql_get_order_ids_order_by",
554
  " ORDER BY " . $settings['sort'] . " " . $settings['sort_direction'] );
555
-
556
  if ( $limit ) {
557
  $sql .= " LIMIT " . intval( $limit );
558
  }
@@ -624,7 +628,7 @@ class WC_Order_Export_Engine {
624
 
625
  public static function replace_sort_field( $settings ) {
626
  $settings['sort'] = ! in_array( $settings['sort'], self::get_wp_posts_fields() ) ? 'ordermeta_cf_sort.meta_value' : $settings['sort'];
627
-
628
  return $settings;
629
  }
630
 
176
  if ( ! apply_filters( 'woe_load_custom_formatter_' . $format, false ) ) {
177
  include_once dirname( dirname( __FILE__ ) ) . "/formats/class-woe-formatter-$format.php";
178
  }
179
+ include_once dirname( dirname( __FILE__ ) ) . "/formats/storage/interface-woe-formatter-storage.php";
180
+ include_once dirname( dirname( __FILE__ ) ) . "/formats/storage/class-woe-formatter-storage-row.php";
181
+ include_once dirname( dirname( __FILE__ ) ) . "/formats/storage/class-woe-formatter-storage-column.php";
182
+ include_once dirname( dirname( __FILE__ ) ) . "/formats/storage/class-woe-formatter-storage-csv.php";
183
+ include_once dirname( dirname( __FILE__ ) ) . "/formats/storage/class-woe-formatter-storage-summary-session.php";
184
 
185
  $format_settings = array( 'global_job_settings' => $settings );
186
  foreach ( $settings as $key => $val ) {
557
  $settings = self::replace_sort_field( $settings );
558
  $sql .= apply_filters( "woe_sql_get_order_ids_order_by",
559
  " ORDER BY " . $settings['sort'] . " " . $settings['sort_direction'] );
 
560
  if ( $limit ) {
561
  $sql .= " LIMIT " . intval( $limit );
562
  }
628
 
629
  public static function replace_sort_field( $settings ) {
630
  $settings['sort'] = ! in_array( $settings['sort'], self::get_wp_posts_fields() ) ? 'ordermeta_cf_sort.meta_value' : $settings['sort'];
631
+ $settings['sort'] = apply_filters("woe_adjust_sort_field", $settings['sort'], $settings);
632
  return $settings;
633
  }
634
 
classes/core/class-wc-order-export-order-fields.php CHANGED
@@ -220,7 +220,13 @@ class WC_Order_Export_Order_Fields {
220
  $row[$field] = ! method_exists( $this->order,
221
  "get_date_created" ) ? $this->order->order_date : ( $this->order->get_date_created() ? gmdate( 'Y-m-d H:i:s',
222
  $this->order->get_date_created()->getOffsetTimestamp() ) : '' );
223
- } elseif ( $field == 'modified_date' ) {
 
 
 
 
 
 
224
  $row[$field] = ! method_exists( $this->order,
225
  "get_date_modified" ) ? $this->order->modified_date : ( $this->order->get_date_modified() ? gmdate( 'Y-m-d H:i:s',
226
  $this->order->get_date_modified()->getOffsetTimestamp() ) : '' );
@@ -362,7 +368,15 @@ class WC_Order_Export_Order_Fields {
362
  $row[$field] = $count;
363
  }
364
  } elseif ( $field == 'count_unique_products' ) { // speed! replace with own counter ?
365
- $row[$field] = count( $this->data['products'] );
 
 
 
 
 
 
 
 
366
  } elseif ( $field == 'customer_note' ) {
367
  $notes = array( $this->post->post_excerpt );
368
  if ( $this->options['export_refund_notes'] ) {
@@ -413,7 +427,7 @@ class WC_Order_Export_Order_Fields {
413
  } elseif ( $field == 'order_currency' ) {
414
  $row[$field] = $this->order->get_currency();
415
  } elseif( method_exists( $this->order, 'get_' . $field ) ) { // order_date...
416
- if ( $this->post->post_type == 'shop_order_refund' )
417
  $row[$field] = $this->parent_order->{'get_' . $field}(); //use main order details for refund
418
  else
419
  $row[$field] = $this->order->{'get_' . $field}();
220
  $row[$field] = ! method_exists( $this->order,
221
  "get_date_created" ) ? $this->order->order_date : ( $this->order->get_date_created() ? gmdate( 'Y-m-d H:i:s',
222
  $this->order->get_date_created()->getOffsetTimestamp() ) : '' );
223
+ } elseif ( $field == 'orig_order_date' ) {
224
+ $parent_id = $this->order->get_parent_id();
225
+ if( $parent_id ) {
226
+ $parent_order = wc_get_order($parent_id);
227
+ $row[$field] = $parent_order->get_date_created()->format("Y-m-d H:i");
228
+ }
229
+ } elseif ( $field == 'modified_date' ) {
230
  $row[$field] = ! method_exists( $this->order,
231
  "get_date_modified" ) ? $this->order->modified_date : ( $this->order->get_date_modified() ? gmdate( 'Y-m-d H:i:s',
232
  $this->order->get_date_modified()->getOffsetTimestamp() ) : '' );
368
  $row[$field] = $count;
369
  }
370
  } elseif ( $field == 'count_unique_products' ) { // speed! replace with own counter ?
371
+ $row[$field] = count( $this->data['products'] );
372
+ } elseif ( $field == 'total_volume' ) {
373
+ $value = 0;
374
+ foreach ( $this->order->get_items() as $item ) {
375
+ $product = $item->get_product();
376
+ if ( !$product ) continue;
377
+ $value += $item->get_quantity() * $product->get_width() * $product->get_height() * $product->get_length();
378
+ }
379
+ $row[$field] = $value;
380
  } elseif ( $field == 'customer_note' ) {
381
  $notes = array( $this->post->post_excerpt );
382
  if ( $this->options['export_refund_notes'] ) {
427
  } elseif ( $field == 'order_currency' ) {
428
  $row[$field] = $this->order->get_currency();
429
  } elseif( method_exists( $this->order, 'get_' . $field ) ) { // order_date...
430
+ if ( $this->post->post_type == 'shop_order_refund' AND $this->parent_order )
431
  $row[$field] = $this->parent_order->{'get_' . $field}(); //use main order details for refund
432
  else
433
  $row[$field] = $this->order->{'get_' . $field}();
classes/formats/abstract-class-woe-formatter-plain-format.php CHANGED
@@ -8,8 +8,8 @@ require_once 'trait-woe-plain-format.php';
8
  abstract class WOE_Formatter_Plain_Format extends WOE_Formatter {
9
  use WOE_Order_Export_Plain_Format;
10
  private $duplicate_settings = array();
11
- private $summary_report_products;
12
- private $summary_report_customers;
13
  protected $rows;
14
  var $encoding;
15
 
@@ -651,4 +651,286 @@ abstract class WOE_Formatter_Plain_Format extends WOE_Formatter {
651
  return $html;
652
  }
653
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
654
  }
8
  abstract class WOE_Formatter_Plain_Format extends WOE_Formatter {
9
  use WOE_Order_Export_Plain_Format;
10
  private $duplicate_settings = array();
11
+ protected $summary_report_products;
12
+ protected $summary_report_customers;
13
  protected $rows;
14
  var $encoding;
15
 
651
  return $html;
652
  }
653
 
654
+ public function insertRowAndSave($row)
655
+ {
656
+ if ( $row instanceof WOE_Formatter_Storage_Row ) {
657
+ if ($this->summary_report_products) {
658
+ $this->saveSummaryProductsData($row);
659
+ } elseif ($this->summary_report_customers) {
660
+ $this->saveSummaryCustomersData($row);
661
+ } else {
662
+ $this->storage->insertRowAndSave($row);
663
+ }
664
+ }
665
+ }
666
+
667
+ /**
668
+ * @param WOE_Formatter_Storage_Row $rowObj
669
+ */
670
+ protected function saveSummaryProductsData( $rowObj ) { //this summary method works with storage (for xls/pdf)
671
+ if(!$this instanceof WOE_Formatter_PDF && !$this instanceof WOE_Formatter_Xls) {
672
+ return;
673
+ }
674
+ $order = false;
675
+ $row = $rowObj->getData();
676
+
677
+ foreach ( self::get_array_from_array( $row, 'products' ) as $item_id => $item ) {
678
+ $product_item = new WC_Order_Item_Product( $item_id );
679
+ $product = $product_item->get_product();
680
+ $item_meta = get_metadata( 'order_item', $item_id );
681
+ if ( ! $order ) {
682
+ $order = new WC_Order( $product_item->get_order_id() );
683
+ }
684
+
685
+ if( $product )
686
+ $key = $product->get_id();
687
+ elseif( isset($item_meta['_variation_id'][0]) )
688
+ $key = $item_meta['_variation_id'][0] ? $item_meta['_variation_id'][0] : $item_meta['_product_id'][0];
689
+ else
690
+ $key = $item_id;
691
+ $key = apply_filters( "woe_summary_products_adjust_key", $key, $product, $product_item, $order, $item );
692
+
693
+ //add new product
694
+ if ( ! $this->storage->getRow($key) ) {
695
+ $new_row = array();
696
+ foreach ( $this->labels['products']->get_labels() as $label_data ) {
697
+ $original_key = $label_data['key'];
698
+ if ( preg_match( '#^(line_|qty)#', $original_key ) )//skip item values!
699
+ {
700
+ continue;
701
+ }
702
+ $field_key = $label_data['parent_key'] ? $label_data['parent_key'] : $original_key;
703
+ if ( preg_match( '#^summary_report_total_#', $field_key ) ) {
704
+ $new_row[ $original_key ] = 0;
705
+ }//total fields
706
+ else {
707
+ $value = $item[ $field_key ];
708
+ $new_row[ $original_key ] = $value;
709
+ } // already calculated
710
+ }
711
+ $new_row = apply_filters( 'woe_summary_column_keys',
712
+ $new_row );// legacy hook
713
+ $new_row = apply_filters( "woe_summary_products_prepare_product",
714
+ $new_row, $key, $product, $product_item, $order,$item );
715
+ $newRowObj = new WOE_Formatter_Storage_Row();
716
+ $newRowObj->setData($new_row);
717
+ $newRowObj->setMeta($rowObj->getMeta());
718
+ $newRowObj->setKey($key);
719
+ $this->storage->setRow($newRowObj);
720
+ }
721
+ $storageRowObj = $this->storage->getRow($key);
722
+ $storageData = $storageRowObj->getData();
723
+
724
+ //increase totals
725
+ if ( isset( $storageData['summary_report_total_qty'] ) ) {
726
+ $storageData['summary_report_total_qty'] += $product_item->get_quantity();
727
+ }
728
+
729
+ if ( isset( $storageData['summary_report_total_weight'] ) AND $product ) { // only if product exists!
730
+ $storageData['summary_report_total_weight'] += $product_item->get_quantity() * (float)$product->get_weight();
731
+ }
732
+
733
+ if ( isset( $storageData['summary_report_total_amount'] ) ) {
734
+ $total = method_exists( $product_item,
735
+ 'get_total' ) ? $product_item->get_total() : $product_item['line_total'];
736
+ $storageData['summary_report_total_amount'] += wc_round_tax_total( $total );
737
+ }
738
+
739
+ if ( isset( $storageData['summary_report_total_discount'] ) ) {
740
+ $total = $product_item->get_subtotal() - $product_item->get_total();
741
+ $storageData['summary_report_total_discount'] += wc_round_tax_total( $total );
742
+ }
743
+
744
+ if ( isset( $storageData['summary_report_total_refund_count'] ) ) {
745
+ $storageData['summary_report_total_refund_count'] += abs( $order->get_qty_refunded_for_item($item_id) );
746
+ }
747
+
748
+ if ( isset( $storageData['summary_report_total_refund_amount'] ) ) {
749
+ $total = $order->get_total_refunded_for_item($item_id);
750
+ $storageData['summary_report_total_refund_amount'] += wc_round_tax_total( $total );
751
+ }
752
+
753
+ $storageRowObj->setData($storageData);
754
+ $this->storage->setRow($storageRowObj);
755
+
756
+ do_action( "woe_summary_products_add_item", $key, $product_item, $order, $item );
757
+ }
758
+ do_action( "woe_summary_products_added_order", $order );
759
+ }
760
+
761
+ protected function saveSummaryCustomersData( $rowObj ) { //this summary method works with storage (for xls/pdf)
762
+ if(!$this instanceof WOE_Formatter_PDF && !$this instanceof WOE_Formatter_Xls) {
763
+ return;
764
+ }
765
+ $order_id = $rowObj->getMetaItem('order_id');
766
+ $order = new WC_Order( $order_id );
767
+ $row = $rowObj->getData();
768
+
769
+ $key = $order->get_billing_email();
770
+ $key = apply_filters( "woe_summary_customers_adjust_key", $key, $order );
771
+
772
+ $allowed_fields = WC_Order_Export_Data_Extractor_UI::get_order_fields(
773
+ $this->settings['global_job_settings']['format'],
774
+ array('user', 'billing', 'shipping')
775
+ );
776
+
777
+ //add new product
778
+ if ( ! $this->storage->getRow($key) ) {
779
+ $new_row = array();
780
+ foreach ( $this->labels['order']->get_labels() as $label_data ) {
781
+ $original_key = $label_data['key'];
782
+ if ( ! isset( $allowed_fields[$original_key] ) &&
783
+ ! preg_match( '^\\AUSER_.+^', $original_key ) &&
784
+ ! preg_match( '^\\A_billing_.+^', $original_key ) &&
785
+ ! preg_match( '^\\A_shipping_.+^', $original_key) &&
786
+ ! preg_match( '^\\Astatic_field.+^', $original_key ) ) {
787
+ continue;
788
+ }
789
+ $field_key = $label_data['parent_key'] ? $label_data['parent_key'] : $original_key;
790
+ if ( preg_match( '#^summary_report_total_#', $field_key ) ) {
791
+ $new_row[ $original_key ] = 0;
792
+ }//total fields
793
+ else {
794
+ $value = $row[ $field_key ];
795
+ $new_row[ $original_key ] = $value;
796
+ } // already calculated
797
+ }
798
+ $new_row = apply_filters( 'woe_summary_column_keys',
799
+ $new_row );// legacy hook
800
+ $new_row = apply_filters( "woe_summary_customers_prepare_row",
801
+ $new_row, $key, $order );
802
+ $newRowObj = new WOE_Formatter_Storage_Row();
803
+ $newRowObj->setData($new_row);
804
+ $newRowObj->setMeta($rowObj->getMeta());
805
+ $newRowObj->setKey($key);
806
+ $this->storage->setRow($newRowObj);
807
+ }
808
+ $storageRowObj = $this->storage->getRow($key);
809
+ $storageData = $storageRowObj->getData();
810
+
811
+ //increase totals
812
+ if ( isset( $storageData['summary_report_total_count'] ) ) {
813
+ $storageData['summary_report_total_count']++;
814
+ }
815
+
816
+ if ( isset( $storageData['summary_report_total_count_items'] ) ) {
817
+ $storageData['summary_report_total_count_items'] += $order->get_item_count();
818
+ }
819
+
820
+ if ( isset( $storageData['summary_report_total_count_items_exported'] ) ) {
821
+ if( empty( WC_Order_Export_Engine::$extractor_options['include_products']) ) {
822
+ $storageData['summary_report_total_count_items_exported'] += $order->get_item_count(); // can add all items
823
+ } else {
824
+ $export_only_products = WC_Order_Export_Engine::$extractor_options['include_products'];
825
+ $exported_items = 0;
826
+ foreach ( $order->get_items( 'line_item') as $item ) {
827
+ if ( $export_only_products AND
828
+ ! in_array( $item['product_id'], $export_only_products ) AND // not product
829
+ ( ! $item['variation_id'] OR ! in_array( $item['variation_id'],
830
+ $export_only_products ) ) // not variation
831
+ ) {
832
+ continue;
833
+ }
834
+ //OK, item was exported
835
+ $exported_items += $item->get_quantity();
836
+ }
837
+ $storageData['summary_report_total_count_items_exported'] += $exported_items;
838
+ }
839
+ }
840
+
841
+ if ( isset( $storageData['summary_report_total_amount'] ) ) {
842
+ $storageData['summary_report_total_amount'] += wc_round_tax_total( $order->get_total() );
843
+ }
844
+
845
+ if ( isset( $storageData['summary_report_total_amount_paid'] ) ) {
846
+ $storageData['summary_report_total_amount_paid'] += $order->is_paid() ? wc_round_tax_total( $order->get_total() ) : 0;
847
+ }
848
+
849
+ if ( isset( $storageData['summary_report_total_shipping'] ) ) {
850
+ $storageData['summary_report_total_shipping'] += wc_round_tax_total( $order->get_shipping_total() );
851
+ }
852
+
853
+ if ( isset( $storageData['summary_report_total_discount'] ) ) {
854
+ $storageData['summary_report_total_discount'] += wc_round_tax_total( $order->get_discount_total() );
855
+ }
856
+
857
+ if ( isset( $storageData['summary_report_total_refund_count'] ) ) {
858
+ $storageData['summary_report_total_refund_count'] += $order->get_status() == 'wc-refunded' ? 1 : 0;
859
+ }
860
+
861
+ if ( isset( $storageData['summary_report_total_refund_amount'] ) ) {
862
+ $storageData['summary_report_total_refund_amount'] += wc_round_tax_total( $order->get_total_refunded() );
863
+ }
864
+
865
+ if( isset( $storageData['summary_report_total_tax_amount'] ) ) {
866
+ $storageData['summary_report_total_tax_amount'] += wc_round_tax_total( $order->get_total_tax() );
867
+ }
868
+
869
+ if ( isset( $storageData['summary_report_total_fee_amount'] ) ) {
870
+ $fees = 0;
871
+
872
+ if ( method_exists( $order, 'get_total_fees' ) ) {
873
+ $fees = $order->get_total_fees();
874
+ } else if ( method_exists( $order, 'calculate_fees' ) ) {
875
+ $fees = $order->calculate_fees();
876
+ }
877
+
878
+ $storageData['summary_report_total_fee_amount'] += wc_round_tax_total( $fees );
879
+ }
880
+
881
+ $storageRowObj->setData($storageData);
882
+ $this->storage->setRow($storageRowObj);
883
+
884
+ do_action( "woe_summary_customers_add_item", $key, $order, $row );
885
+ }
886
+
887
+ protected function extractRowForHeaderProcess($rows) {
888
+ $row = reset($rows);
889
+ if ($this->summary_report_products) {
890
+ $products_row = self::get_array_from_array($row, 'products');
891
+ $product_row = reset($products_row);
892
+ $product_labels = $this->labels['products']->get_labels();
893
+ $row = array_filter($product_row, function($field_key) use ($product_labels) {
894
+ foreach ( $product_labels as $label_data ) {
895
+ $label_key = $label_data['parent_key'] ? $label_data['parent_key'] : $label_data['key'];
896
+ if ( $field_key == $label_key ) {
897
+ return true;
898
+ }
899
+ }
900
+ return false;
901
+ }, ARRAY_FILTER_USE_KEY);
902
+ return $row;
903
+ }
904
+ if ($this->summary_report_customers) {
905
+ $allowed_fields = WC_Order_Export_Data_Extractor_UI::get_order_fields(
906
+ $this->format,
907
+ array('user', 'billing', 'shipping')
908
+ );
909
+ $order_lables = $this->labels['order']->get_labels();
910
+ $row = array_filter($row, function($field_key) use ($allowed_fields, $order_lables) {
911
+ foreach ( $order_lables as $label_data ) {
912
+ $label_key = $label_data['parent_key'] ? $label_data['parent_key'] : $label_data['key'];
913
+ $original_key = $label_data['key'];
914
+ if ( $field_key == $label_key &&
915
+ (isset( $allowed_fields[$original_key] ) ||
916
+ preg_match( '^\\AUSER_.+^', $original_key ) ||
917
+ preg_match( '^\\A_billing_.+^', $original_key ) ||
918
+ preg_match( '^\\A_shipping_.+^', $original_key) ||
919
+ preg_match( '^\\Astatic_field.+^', $original_key )) ) {
920
+ return true;
921
+ }
922
+ }
923
+ return false;
924
+ }, ARRAY_FILTER_USE_KEY);
925
+ return $row;
926
+ }
927
+ return $row;
928
+ }
929
+
930
+ protected function applyOutputRowFilter($row) {
931
+ if ( $this->has_output_filter ) {
932
+ $row = apply_filters( "woe_{$this->format}_output_filter", $row, $this );
933
+ }
934
+ return $row;
935
+ }
936
  }
classes/formats/abstract-class-woe-formatter-sv.php CHANGED
@@ -45,7 +45,7 @@ abstract class WOE_Formatter_sv extends WOE_Formatter_Plain_Format {
45
  if ( ! empty( $this->settings['add_utf8_bom'] ) ) {
46
  fwrite( $this->handle, chr( 239 ) . chr( 187 ) . chr( 191 ) );
47
  }
48
-
49
  if ( ! empty( $this->settings['display_column_names'] ) AND $data ) {
50
  if ( $this->mode == 'preview' ) {
51
  $this->rows[] = $data;
@@ -79,8 +79,8 @@ abstract class WOE_Formatter_sv extends WOE_Formatter_Plain_Format {
79
  $this->rows[] = $row;
80
  } else {
81
  // insert order id of inserted rows, only required for PDF
82
- if ( $this instanceof WOE_Formatter_PDF ) {
83
- $row[] = intval( WC_Order_Export_Engine::$order_id );
84
  }
85
 
86
  if ( ! apply_filters( "woe_{$this->format}_custom_output_func", false, $this->handle, $row,
45
  if ( ! empty( $this->settings['add_utf8_bom'] ) ) {
46
  fwrite( $this->handle, chr( 239 ) . chr( 187 ) . chr( 191 ) );
47
  }
48
+ $this->rows = array();
49
  if ( ! empty( $this->settings['display_column_names'] ) AND $data ) {
50
  if ( $this->mode == 'preview' ) {
51
  $this->rows[] = $data;
79
  $this->rows[] = $row;
80
  } else {
81
  // insert order id of inserted rows, only required for PDF
82
+ if ( $this instanceof WOE_Formatter_PDF || $this instanceof WOE_Formatter_Xls ) {
83
+ $row[] = ! $this->summary_processing ? intval( WC_Order_Export_Engine::$order_id ) : 0;
84
  }
85
 
86
  if ( ! apply_filters( "woe_{$this->format}_custom_output_func", false, $this->handle, $row,
classes/formats/class-woe-formatter-csv.php CHANGED
@@ -26,13 +26,21 @@ class WOE_Formatter_Csv extends WOE_Formatter_sv {
26
  return true; //stop default fputcsv!
27
  }, 10, 7);
28
  }
29
-
30
  }
 
 
 
 
31
 
32
  protected function delete_linebreaks_from_array( &$data ) {
33
  $data = array_map( array( $this, 'delete_linebreaks_callback' ), $data );
34
  }
35
 
 
 
 
 
36
  protected function delete_linebreaks_callback( $value ) {
37
  // show linebreaks as literals
38
  $value = str_replace( "\n", '\n', $value );
@@ -45,6 +53,9 @@ class WOE_Formatter_Csv extends WOE_Formatter_sv {
45
  if ( ! empty( $this->settings['delete_linebreaks'] ) ) {
46
  $this->delete_linebreaks_from_array( $arr );
47
  }
 
 
 
48
  parent::prepare_array( $arr );
49
  }
50
 
26
  return true; //stop default fputcsv!
27
  }, 10, 7);
28
  }
29
+
30
  }
31
+
32
+ protected function remove_linebreaks_from_array( &$data ) {
33
+ $data = array_map( array( $this, 'remove_linebreaks_callback' ), $data );
34
+ }
35
 
36
  protected function delete_linebreaks_from_array( &$data ) {
37
  $data = array_map( array( $this, 'delete_linebreaks_callback' ), $data );
38
  }
39
 
40
+ protected function remove_linebreaks_callback( $value ) {
41
+ return preg_replace( "/([\r,\n])+/", " ", $value);
42
+ }
43
+
44
  protected function delete_linebreaks_callback( $value ) {
45
  // show linebreaks as literals
46
  $value = str_replace( "\n", '\n', $value );
53
  if ( ! empty( $this->settings['delete_linebreaks'] ) ) {
54
  $this->delete_linebreaks_from_array( $arr );
55
  }
56
+ if ( ! empty( $this->settings['remove_linebreaks'] ) ) {
57
+ $this->remove_linebreaks_from_array( $arr );
58
+ }
59
  parent::prepare_array( $arr );
60
  }
61
 
classes/formats/class-woe-formatter-pdf.php CHANGED
@@ -4,7 +4,6 @@ if ( ! defined( 'ABSPATH' ) ) {
4
  }
5
 
6
  include_once 'abstract-class-woe-formatter-plain-format.php';
7
- include_once 'class-woe-formatter-csv.php';
8
 
9
  if ( ! class_exists( 'WOE_PDF_MC_Table' ) ) {
10
  include_once dirname( __FILE__ ) . '/../FPDF/class-woe-pdf-mc-table.php';
@@ -16,7 +15,7 @@ if ( ! class_exists( 'WOE_PDF_MC_Table' ) ) {
16
  * Using CSV formatter as basis. Works like CSV (even creates csv file) but after finish,
17
  * fetches data from file and paste them to PDF as table
18
  */
19
- class WOE_Formatter_PDF extends WOE_Formatter_Csv {
20
  /** @var $pdf WOE_PDF_MC_Table */
21
  protected $pdf;
22
 
@@ -25,8 +24,10 @@ class WOE_Formatter_PDF extends WOE_Formatter_Csv {
25
  private $font_size = 5;
26
  private $repeat_header = false;
27
 
28
- private $image_positions = array();
29
- private $link_positions = array();
 
 
30
 
31
  public function __construct( $mode, $filename, $settings, $format, $labels, $field_formats, $date_format, $offset ) {
32
 
@@ -40,10 +41,6 @@ class WOE_Formatter_PDF extends WOE_Formatter_Csv {
40
  $this->font_size = ! empty( $settings['font_size'] ) ? $settings['font_size'] : 5;
41
  $this->repeat_header = ! empty( $settings['repeat_header'] );
42
 
43
- if ( $mode != 'preview' ) {
44
- $filename = str_replace( '.pdf', '.csv', $filename );
45
- }
46
-
47
  $this->image_format_fields = array();
48
  if ( isset( $field_formats['order']['image'] ) ) {
49
  $this->image_format_fields = array_merge( $this->image_format_fields, $field_formats['order']['image'] );
@@ -71,86 +68,135 @@ class WOE_Formatter_PDF extends WOE_Formatter_Csv {
71
 
72
  parent::__construct( $mode, $filename, $settings, $format, $labels, $field_formats, $date_format, $offset );
73
 
74
- $this->image_positions = array();
75
- $this->link_positions = array();
76
- if ( $this->mode != 'preview' ) {
77
- $tmp_data = get_transient( $this->get_tmp_data_transient_name() );
 
 
 
 
 
 
 
 
78
 
79
- if ( ! empty( $tmp_data['image_positions'] ) ) {
80
- $this->image_positions = $tmp_data['image_positions'];
81
- }
82
 
83
- if ( ! empty( $tmp_data['link_positions'] ) ) {
84
- $this->link_positions = $tmp_data['link_positions'];
85
- }
 
 
86
  }
87
  }
88
 
89
  public function output( $rec ) {
90
- $rows = parent::output( $rec );
 
91
 
92
- if ( $this->mode != 'preview' ) {
93
- if ( 0 === count($this->image_positions) ) {
94
- foreach ( $rows as $row ) {
95
- $pos = 0;
96
- foreach ( $row as $field => $text ) {
97
- if ( $this->field_format_is( $field, $this->image_format_fields ) ) {
98
- $this->image_positions[] = $pos;
99
- }
100
- $pos ++;
 
 
 
 
 
 
 
 
 
 
 
 
 
101
  }
102
- break;
 
 
 
103
  }
 
 
104
  }
105
 
106
- if ( 0 === count( $this->link_positions ) ) {
107
- foreach ( $rows as $row ) {
108
- $pos = 0;
109
- foreach ( $row as $field => $text ) {
110
- if ( $this->field_format_is( $field, $this->link_format_fields ) ) {
111
- $this->link_positions[] = $pos;
112
- }
113
- $pos ++;
114
- }
115
- break;
116
  }
 
 
 
 
 
 
 
 
 
 
 
117
  }
118
-
119
- $tmp_data['image_positions'] = $this->image_positions;
120
- $tmp_data['link_positions'] = $this->link_positions;
121
- set_transient( $this->get_tmp_data_transient_name(), $tmp_data, 5 * MINUTE_IN_SECONDS );
122
  }
123
 
124
  return $rows;
125
  }
126
 
 
 
 
 
 
127
  public function finish() {
128
  if ( $this->mode === 'preview' ) {
 
 
 
 
 
129
  $image_preview_multiply = 5;
 
 
 
 
 
 
130
  foreach ( $this->rows as $row_index => $row ) {
131
- if ( ! empty( $this->settings['display_column_names'] ) && $row_index === 0 ) {
132
  continue;
133
  }
134
- foreach ( $row as $column => $cell ) {
135
  if ( $this->field_format_is( $column, $this->image_format_fields ) ) {
136
  $html = $this->make_img_html_from_path(
137
  $cell,
138
  $this->settings['row_images_width'] * $image_preview_multiply,
139
  $this->settings['row_images_height'] * $image_preview_multiply );
140
 
141
- if ( $html ) {
142
- $this->rows[ $row_index ][ $column ] = $html;
143
- } else {
144
- $this->rows[ $row_index ][ $column ] = "";
145
- }
146
  }
147
  }
 
 
 
 
 
 
 
148
  }
 
149
  }
150
 
151
  parent::finish();
152
 
153
  if ( $this->mode != 'preview' ) {
 
154
 
155
  if ( apply_filters( 'woe_pdf_output', false, $this->settings, str_replace( '.csv', '.pdf', $this->filename ) ) ) {
156
  return;
@@ -158,11 +204,20 @@ class WOE_Formatter_PDF extends WOE_Formatter_Csv {
158
 
159
  $this->pdf = new WOE_PDF_MC_Table( $this->orientation, 'mm', $this->page_size );
160
 
 
 
161
 
162
  $solid_width = array();
163
- if ( count( $this->image_positions ) ) {
164
- foreach ( $this->image_positions as $position ) {
165
- $solid_width[ $position ] = $this->settings['row_images_width'];
 
 
 
 
 
 
 
166
  }
167
  }
168
 
@@ -227,8 +282,9 @@ class WOE_Formatter_PDF extends WOE_Formatter_Csv {
227
  $this->pdf->AliasNbPages();
228
  $this->pdf->AddPage();
229
 
230
- $this->handle = fopen( $this->filename, 'r' );
231
- $row = fgetcsv( $this->handle, 0, $this->delimiter, $this->enclosure );
 
232
  $row = apply_filters( 'woe_row_before_format_pdf', $row );
233
 
234
  if ( ! empty( $this->settings['display_column_names'] ) ) {
@@ -237,7 +293,6 @@ class WOE_Formatter_PDF extends WOE_Formatter_Csv {
237
  $this->pdf->addTableHeader( $row );
238
  do_action("woe_pdf_below_header", $this->pdf, $this);
239
  }
240
- $row = fgetcsv( $this->handle, 0, $this->delimiter, $this->enclosure );
241
  }
242
 
243
  $pageBreakOrderLines = wc_string_to_bool( $this->settings['row_dont_page_break_order_lines'] );
@@ -246,24 +301,24 @@ class WOE_Formatter_PDF extends WOE_Formatter_Csv {
246
  $orderRows = array();
247
  $orderId = null;
248
 
249
- while ( $row ) {
250
- if ( count( $this->image_positions ) ) {
251
- foreach ( $this->image_positions as $position ) {
252
- $source = $row[ $position ];
253
- $row[ $position ] = array(
 
 
254
  'type' => 'image',
255
  'value' => $source,
256
  );
257
 
258
  if ( ! empty( $this->settings['row_images_add_link'] ) ) {
259
- $row[ $position ]['link'] = str_replace( wp_get_upload_dir()['basedir'], wp_get_upload_dir()['baseurl'], $source );
260
  }
261
  }
262
- }
263
 
264
- if ( count( $this->link_positions ) ) {
265
- foreach ( $this->link_positions as $position ) {
266
- $source = $row[ $position ];
267
 
268
  // fetch "href" attribute from "a" tag if existing
269
  if ( preg_match( '/<a\s+(?:[^>]*?\s+)?href=(["\'])(.*?)\1/', $source, $matches ) ) {
@@ -272,15 +327,16 @@ class WOE_Formatter_PDF extends WOE_Formatter_Csv {
272
  }
273
  }
274
 
275
- $row[ $position ] = array(
276
  'type' => 'link',
277
  'link' => $source,
278
  );
279
  }
280
  }
281
 
282
- $currentOrderId = intval( array_pop( $row ) ); // always pop! even $pageBreakOrderLines is false
283
  $orderId = ! $orderId ? $currentOrderId : $orderId;
 
284
 
285
  $row = apply_filters( 'woe_pdf_prepare_row', $row );
286
  $row_style = apply_filters( "woe_pdf_before_print_row", null, $row, $this->pdf, $this );
@@ -311,8 +367,6 @@ class WOE_Formatter_PDF extends WOE_Formatter_Csv {
311
  } else {
312
  $this->pdf->addRow( $row, null, $row_height, $row_style );
313
  }
314
-
315
- $row = fgetcsv( $this->handle, 0, $this->delimiter, $this->enclosure );
316
  }
317
 
318
  if ( count( $orderRows ) ) {
@@ -332,9 +386,9 @@ class WOE_Formatter_PDF extends WOE_Formatter_Csv {
332
  }
333
  }
334
  do_action("woe_pdf_finished", $this->pdf, $this);
335
- $this->pdf->output_to_destination( 'f', str_replace( '.csv', '.pdf', $this->filename ) );
336
 
337
- delete_transient( $this->get_tmp_data_transient_name() );
338
  }
339
  }
340
 
4
  }
5
 
6
  include_once 'abstract-class-woe-formatter-plain-format.php';
 
7
 
8
  if ( ! class_exists( 'WOE_PDF_MC_Table' ) ) {
9
  include_once dirname( __FILE__ ) . '/../FPDF/class-woe-pdf-mc-table.php';
15
  * Using CSV formatter as basis. Works like CSV (even creates csv file) but after finish,
16
  * fetches data from file and paste them to PDF as table
17
  */
18
+ class WOE_Formatter_PDF extends WOE_Formatter_Plain_Format {
19
  /** @var $pdf WOE_PDF_MC_Table */
20
  protected $pdf;
21
 
24
  private $font_size = 5;
25
  private $repeat_header = false;
26
 
27
+ /**
28
+ * @var WOE_Formatter_Storage
29
+ */
30
+ protected $storage;
31
 
32
  public function __construct( $mode, $filename, $settings, $format, $labels, $field_formats, $date_format, $offset ) {
33
 
41
  $this->font_size = ! empty( $settings['font_size'] ) ? $settings['font_size'] : 5;
42
  $this->repeat_header = ! empty( $settings['repeat_header'] );
43
 
 
 
 
 
44
  $this->image_format_fields = array();
45
  if ( isset( $field_formats['order']['image'] ) ) {
46
  $this->image_format_fields = array_merge( $this->image_format_fields, $field_formats['order']['image'] );
68
 
69
  parent::__construct( $mode, $filename, $settings, $format, $labels, $field_formats, $date_format, $offset );
70
 
71
+ if ( $this->mode != 'preview' && !$this->summary_report_products && !$this->summary_report_customers ) {
72
+ $storage_filename = str_replace( '.csv', '', $filename ) . ".storage";
73
+ $this->storage = new WOE_Formatter_Storage_Csv($storage_filename);
74
+ $this->storage->load();
75
+ }
76
+ if ($this->summary_report_products || $this->summary_report_customers) {
77
+ $summaryKey = $this->summary_report_products ? WOE_Formatter_Storage_Summary_Session::SUMMARY_PRODUCTS_KEY :
78
+ WOE_Formatter_Storage_Summary_Session::SUMMARY_CUSTOMERS_KEY;
79
+ $this->storage = new WOE_Formatter_Storage_Summary_Session($summaryKey);
80
+ $this->storage->load();
81
+ }
82
+ }
83
 
84
+ public function start( $data = '' ) {
85
+ parent::start();
 
86
 
87
+ if ( $this->mode == 'preview' ) {
88
+ $data = $this->make_header( $data );
89
+ $data = apply_filters( "woe_{$this->format}_header_filter", $data );
90
+
91
+ $this->rows[] = $data;
92
  }
93
  }
94
 
95
  public function output( $rec ) {
96
+ //$rows = parent::output( $rec ); //we can't change parent because of html
97
+ $is_summary_mode = $this->summary_report_products || $this->summary_report_customers;
98
 
99
+ //was taken from parent::output()
100
+ $rec = WOE_Formatter::output( $rec );
101
+ if ($is_summary_mode) {
102
+ $rows = array($rec);
103
+ } else {
104
+ $rows = apply_filters( 'woe_fetch_order_data', $this->maybe_multiple_fields( $rec ) );
105
+ }
106
+
107
+ if ( $this->mode !== 'preview' || $is_summary_mode ) {
108
+ if ( ! $this->storage->getColumns() ) {
109
+ $tmpLabels = $this->make_header( "" ); //it filters labels
110
+ $tmpRow = $this->extractRowForHeaderProcess($rows);
111
+ $tmpLabels = apply_filters( "woe_{$this->format}_header_filter", $tmpLabels );
112
+
113
+ foreach ( array_keys( $tmpRow ) as $index => $key ) {
114
+ $column = new WOE_Formatter_Storage_Column();
115
+ $column->setKey( $key );
116
+ if ( $this->field_format_is( $key, $this->image_format_fields ) ) {
117
+ $column->setMetaItem( "image", true );
118
+ }
119
+ if ( $this->field_format_is( $key, $this->link_format_fields ) ) {
120
+ $column->setMetaItem( "link", true );
121
  }
122
+ if ( isset( $tmpLabels[ $index ] ) ) {
123
+ $column->setMetaItem( "label", $tmpLabels[ $index ] );
124
+ }
125
+ $this->storage->insertColumn( $column );
126
  }
127
+
128
+ $this->storage->saveHeader();
129
  }
130
 
131
+ foreach ( $rows as $row ) {
132
+ if (!$row = $this->applyOutputRowFilter($row)) {
133
+ continue;
 
 
 
 
 
 
 
134
  }
135
+ $rowObj = new WOE_Formatter_Storage_Row();
136
+ $rowObj->setData($row);
137
+ $rowObj->setMetaItem("order_id", (int)WC_Order_Export_Engine::$order_id);
138
+ $this->insertRowAndSave($rowObj);
139
+ }
140
+ } else {
141
+ foreach ( $rows as $row ) {
142
+ if (!$row = $this->applyOutputRowFilter($row)) {
143
+ continue;
144
+ }
145
+ $this->rows[] = $row;
146
  }
 
 
 
 
147
  }
148
 
149
  return $rows;
150
  }
151
 
152
+ public function finish_partial() {
153
+ parent::finish_partial();
154
+ $this->storage->close();
155
+ }
156
+
157
  public function finish() {
158
  if ( $this->mode === 'preview' ) {
159
+ if($this->summary_report_products || $this->summary_report_customers) {
160
+ $this->rows = $this->storage->processDataForPreview($this->rows);
161
+ }
162
+ $this->rows = apply_filters( "woe_{$this->format}_preview_rows", $this->rows );
163
+
164
  $image_preview_multiply = 5;
165
+
166
+ fwrite( $this->handle, '<table>' );
167
+ if ( $this->settings['display_column_names'] && count( $this->rows ) < 2 || count( $this->rows ) < 1 ) {
168
+ $this->rows[] = array( '<td colspan=10><b>' . __( 'No results', 'woo-order-export-lite' ) . '</b></td>' );
169
+ }
170
+
171
  foreach ( $this->rows as $row_index => $row ) {
172
+ if ( empty( $this->settings['display_column_names'] ) && $row_index === 0 ) {
173
  continue;
174
  }
175
+ foreach ( $row as $column => &$cell ) {
176
  if ( $this->field_format_is( $column, $this->image_format_fields ) ) {
177
  $html = $this->make_img_html_from_path(
178
  $cell,
179
  $this->settings['row_images_width'] * $image_preview_multiply,
180
  $this->settings['row_images_height'] * $image_preview_multiply );
181
 
182
+ $cell = $html ? $html : "";
 
 
 
 
183
  }
184
  }
185
+
186
+ if ( $row_index == 0 AND ! empty( $this->settings['display_column_names'] ) ) {
187
+ fwrite( $this->handle,
188
+ '<tr style="font-weight:bold"><td>' . join( '</td><td>', $row ) . "</td><tr>\n" );
189
+ } else {
190
+ fwrite( $this->handle, '<tr><td>' . join( '</td><td>', $row ) . "</td><tr>\n" );
191
+ }
192
  }
193
+ fwrite( $this->handle, '</table>' );
194
  }
195
 
196
  parent::finish();
197
 
198
  if ( $this->mode != 'preview' ) {
199
+ $this->storage->close(); //if it's full export, storage hasn't been closed
200
 
201
  if ( apply_filters( 'woe_pdf_output', false, $this->settings, str_replace( '.csv', '.pdf', $this->filename ) ) ) {
202
  return;
204
 
205
  $this->pdf = new WOE_PDF_MC_Table( $this->orientation, 'mm', $this->page_size );
206
 
207
+ $this->storage->initRowIterator();
208
+ $row = array();
209
 
210
  $solid_width = array();
211
+ $imageColumns = array();
212
+ $linkColumns = array();
213
+ foreach ( $this->storage->getColumns() as $pos => $column ) {
214
+ if ( $column->getMetaItem("image") === true ) {
215
+ $solid_width[ $pos ] = $this->settings['row_images_width'];
216
+ $imageColumns[] = $column->getKey();
217
+ }
218
+
219
+ if ( $column->getMetaItem("link") === true ) {
220
+ $linkColumns[] = $column->getKey();
221
  }
222
  }
223
 
282
  $this->pdf->AliasNbPages();
283
  $this->pdf->AddPage();
284
 
285
+ foreach ( $this->storage->getColumns() as $column ) {
286
+ $row[] = $column->getMetaItem( "label" );
287
+ }
288
  $row = apply_filters( 'woe_row_before_format_pdf', $row );
289
 
290
  if ( ! empty( $this->settings['display_column_names'] ) ) {
293
  $this->pdf->addTableHeader( $row );
294
  do_action("woe_pdf_below_header", $this->pdf, $this);
295
  }
 
296
  }
297
 
298
  $pageBreakOrderLines = wc_string_to_bool( $this->settings['row_dont_page_break_order_lines'] );
301
  $orderRows = array();
302
  $orderId = null;
303
 
304
+ while ( $rowObj = $this->storage->getNextRow() ) {
305
+ $row = $rowObj->getData();
306
+
307
+ foreach ( $row as $key => &$item ) {
308
+ if ( in_array($key, $imageColumns) ) {
309
+ $source = $item;
310
+ $item = array(
311
  'type' => 'image',
312
  'value' => $source,
313
  );
314
 
315
  if ( ! empty( $this->settings['row_images_add_link'] ) ) {
316
+ $item['link'] = str_replace( wp_get_upload_dir()['basedir'], wp_get_upload_dir()['baseurl'], $source );
317
  }
318
  }
 
319
 
320
+ if ( in_array($key, $linkColumns) ) {
321
+ $source = $item;
 
322
 
323
  // fetch "href" attribute from "a" tag if existing
324
  if ( preg_match( '/<a\s+(?:[^>]*?\s+)?href=(["\'])(.*?)\1/', $source, $matches ) ) {
327
  }
328
  }
329
 
330
+ $item = array(
331
  'type' => 'link',
332
  'link' => $source,
333
  );
334
  }
335
  }
336
 
337
+ $currentOrderId = $rowObj->getMetaItem( "order_id" ); // always pop! even $pageBreakOrderLines is false
338
  $orderId = ! $orderId ? $currentOrderId : $orderId;
339
+ $row = array_values( $row ); // really important to do this
340
 
341
  $row = apply_filters( 'woe_pdf_prepare_row', $row );
342
  $row_style = apply_filters( "woe_pdf_before_print_row", null, $row, $this->pdf, $this );
367
  } else {
368
  $this->pdf->addRow( $row, null, $row_height, $row_style );
369
  }
 
 
370
  }
371
 
372
  if ( count( $orderRows ) ) {
386
  }
387
  }
388
  do_action("woe_pdf_finished", $this->pdf, $this);
389
+ $this->pdf->output_to_destination( 'f', $this->filename );
390
 
391
+ $this->storage->close();
392
  }
393
  }
394
 
classes/formats/class-woe-formatter-xls.php CHANGED
@@ -10,10 +10,16 @@ if ( ! class_exists( 'PHPExcel' ) ) {
10
  }
11
 
12
  class WOE_Formatter_Xls extends WOE_Formatter_Plain_Format {
 
 
13
  private $string_format_force = false;
14
  private $string_format_fields;
15
  private $date_format_fields;
16
- private $image_positions = array();
 
 
 
 
17
 
18
  public function __construct(
19
  $mode,
@@ -25,6 +31,11 @@ class WOE_Formatter_Xls extends WOE_Formatter_Plain_Format {
25
  $date_format,
26
  $offset
27
  ) {
 
 
 
 
 
28
  parent::__construct( $mode, $filename, $settings, $format, $labels, $field_formats, $date_format, $offset );
29
 
30
  $this->string_format_force = apply_filters( "woe_{$format}_string_format_force", false );
@@ -59,30 +70,6 @@ class WOE_Formatter_Xls extends WOE_Formatter_Plain_Format {
59
  $this->link_format_fields = apply_filters( "woe_{$format}_link_format_fields", $this->link_format_fields );
60
 
61
  if ( $mode != 'preview' ) {
62
- //more memory for XLS?
63
- ini_set( 'memory_limit', '512M' );
64
- //fallback to PCLZip
65
- if ( ! class_exists( 'ZipArchive' ) ) {
66
- PHPExcel_Settings::setZipClass( PHPExcel_Settings::PCLZIP );
67
- }
68
- fclose( $this->handle );
69
- $this->filename = $filename;
70
- if ( filesize( $this->filename ) > 0 ) {
71
- $this->objPHPExcel = PHPExcel_IOFactory::load( $this->filename );
72
- } else {
73
- $this->objPHPExcel = new PHPExcel();
74
- }
75
- $this->objPHPExcel->setActiveSheetIndex( 0 );
76
-
77
- do_action( 'woe_xls_PHPExcel_setup', $this->objPHPExcel, $settings );
78
-
79
- $this->last_row = $this->objPHPExcel->getActiveSheet()->getHighestRow();
80
-
81
- //fix bug, row=1 if we have 0 records
82
- if ( $this->last_row == 1 AND $this->objPHPExcel->getActiveSheet()->getHighestColumn() == "A" ) {
83
- $this->last_row = 0;
84
- }
85
-
86
  // Excel uses another format!
87
  $this->date_format = apply_filters( 'woe_xls_date_format', $this->convert_php_date_format( $date_format ) );
88
  $this->money_format = apply_filters( 'woe_xls_money_format', PHPExcel_Style_NumberFormat::FORMAT_NUMBER_00 );
@@ -92,94 +79,139 @@ class WOE_Formatter_Xls extends WOE_Formatter_Plain_Format {
92
  $this->format_number_fields_original = $this->format_number_fields;
93
  $this->format_number_fields = false;
94
 
95
- $this->image_positions = array();
96
- if ( $this->mode != 'preview' ) {
97
- $tmp_data = get_transient( $this->get_tmp_data_transient_name() );
98
-
99
- if ( ! empty( $tmp_data['image_positions'] ) ) {
100
- $this->image_positions = $tmp_data['image_positions'];
101
- }
102
  }
103
- } else {
104
- $this->auto_format_dates = true;
 
 
 
 
105
  }
106
  }
107
 
108
  public function start( $data = '' ) {
109
- $data = $this->make_header();
110
- $data = apply_filters( "woe_xls_header_filter", $data );
111
- parent::start( $data );
112
 
113
  if ( $this->mode == 'preview' ) {
114
- $this->rows[] = $data;
 
115
 
116
- return;
117
  }
 
118
 
119
- if ( $this->settings['display_column_names'] AND $data ) {
120
- $this->last_row ++;
121
- foreach ( $data as $pos => $text ) {
122
- $this->objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow( $pos, $this->last_row, $text );
123
- }
124
-
125
- //make first bold
126
- $last_column = $this->objPHPExcel->getActiveSheet()->getHighestDataColumn();
127
- $this->objPHPExcel->getActiveSheet()->getStyle( "A1:" . $last_column . "1" )->getFont()->setBold( true );
128
 
129
- //freeze
130
- $this->objPHPExcel->getActiveSheet()->freezePane( 'A2' );
131
- }
132
 
133
- //rename Sheet1
134
- if ( empty( $this->settings['sheet_name'] ) ) {
135
- $this->settings['sheet_name'] = __( 'Orders', 'woo-order-export-lite' );
136
- }
137
- $sheet_name = WC_Order_Export_Engine::make_filename( $this->settings['sheet_name'] );
138
- $this->objPHPExcel->getActiveSheet()->setTitle( $sheet_name );
139
 
140
- // right-to-left worksheet?
141
- if ( $this->settings['direction_rtl'] ) {
142
- $this->objPHPExcel->getActiveSheet()->setRightToLeft( true );
 
 
 
143
  }
144
 
145
- do_action( 'woe_xls_print_header', $this->objPHPExcel, $this );
 
 
 
 
146
 
147
- //save only header or empty file on init
148
- $objWriter = PHPExcel_IOFactory::createWriter( $this->objPHPExcel,
149
- $this->settings['use_xls_format'] ? 'Excel5' : 'Excel2007' );
150
- $objWriter->save( $this->filename );
151
- }
152
 
153
- public function output( $rec ) {
154
- $rows = parent::output( $rec );
155
 
156
- if ( $this->mode != 'preview' ) {
157
- if ( 0 === count( $this->image_positions ) ) {
158
- foreach ( $rows as $row ) {
159
- $pos = 0;
160
- foreach ( $row as $field => $text ) {
161
- if ( $this->field_format_is( $field, $this->image_format_fields ) ) {
162
- $this->image_positions[] = $pos;
163
- }
164
- $pos ++;
165
  }
166
- break;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
167
  }
 
 
168
  }
169
- }
170
-
171
- foreach ( $rows as $row ) {
172
- if ( $this->has_output_filter ) {
173
- $row = apply_filters( "woe_xls_output_filter", $row, $this );
174
- if ( ! $row ) {
175
  continue;
176
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
177
  }
 
178
 
179
- if ( $this->mode == 'preview' ) {
180
- $row = array_map( "nl2br", $row );
181
 
182
- $image_preview_multiply = 5;
 
 
 
 
 
 
 
183
  foreach ( $row as $column => &$cell ) {
184
  if ( $this->field_format_is( $column, $this->image_format_fields ) ) {
185
  $html = $this->make_img_html_from_path(
@@ -191,91 +223,127 @@ class WOE_Formatter_Xls extends WOE_Formatter_Plain_Format {
191
  }
192
  }
193
 
194
- $this->rows[] = $row;
195
- } else {
196
- $this->last_row ++;
197
- $pos = 0;
198
- foreach ( $row as $field => $text ) {
199
- if ( $this->string_format_force OR $this->field_format_is( $field, $this->string_format_fields ) ) {// STRING
200
- $this->objPHPExcel->getActiveSheet()->getStyleByColumnAndRow( $pos, $this->last_row )->getNumberFormat()->setFormatCode( PHPExcel_Style_NumberFormat::FORMAT_TEXT );
201
- $this->objPHPExcel->getActiveSheet()->setCellValueExplicitByColumnAndRow( $pos, $this->last_row, $text );
202
- } elseif ( $this->format_number_fields_original AND $this->field_format_is( $field, $this->money_format_fields ) ) { // MONEY
203
- $this->objPHPExcel->getActiveSheet()->getStyleByColumnAndRow( $pos, $this->last_row )->getNumberFormat()->setFormatCode( $this->money_format );
204
- $this->objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow( $pos, $this->last_row, $text );
205
- } elseif ( $this->format_number_fields_original AND $this->field_format_is( $field, $this->number_format_fields ) ) { // NUMBER
206
- $this->objPHPExcel->getActiveSheet()->getStyleByColumnAndRow( $pos, $this->last_row )->getNumberFormat()->setFormatCode( $this->number_format );
207
- $this->objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow( $pos, $this->last_row, $text );
208
- } elseif ( $this->field_format_is( $field, $this->date_format_fields ) ) {// DATE!
209
- $this->objPHPExcel->getActiveSheet()->getStyleByColumnAndRow( $pos, $this->last_row )->getNumberFormat()->setFormatCode( $this->date_format );
210
- if ( $text ) {
211
- if ( empty( $this->settings['global_job_settings']['time_format'] ) ) { // must remove time!
212
- if ( WOE_Formatter::is_valid_time_stamp( $text ) ) {
213
- $text = date( "Y-m-d", $text );
214
- } else {
215
- $text = date( "Y-m-d", strtotime( $text ) );
216
- }
217
- } else {
218
- if (WOE_Formatter::is_valid_time_stamp( $text )) {
219
- $text = date( "Y-m-d H:i:s", $text );
220
- }
221
- }
222
- try {
223
- $text = PHPExcel_Shared_Date::PHPToExcel( new DateTime( $text ) );
224
- } catch (Exception $e) {}
225
 
226
- $this->objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow( $pos, $this->last_row, $text );
227
- }
228
- } elseif ( $this->field_format_is( $field, $this->link_format_fields ) ) {
229
- $this->objPHPExcel->getActiveSheet()->getStyleByColumnAndRow( $pos, $this->last_row )->getNumberFormat()->setFormatCode( PHPExcel_Style_NumberFormat::FORMAT_TEXT );
230
- $this->objPHPExcel->getActiveSheet()->setCellValueExplicitByColumnAndRow( $pos, $this->last_row, $text );
231
- } else {
232
- $this->objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow( $pos, $this->last_row, $text );
233
  }
234
- do_action( "woe_xls_format_cell", $this, $field, $text, $row, $pos );
235
- $pos ++;
 
 
 
 
 
 
236
  }
237
  }
 
238
  }
239
 
 
240
 
241
  if ( $this->mode != 'preview' ) {
242
- $tmp_data = array();
243
- $tmp_data['image_positions'] = $this->image_positions;
244
- set_transient( $this->get_tmp_data_transient_name(), $tmp_data, 5 * MINUTE_IN_SECONDS );
245
- }
246
 
247
- }
 
 
 
 
 
 
 
248
 
249
- public function finish() {
250
- $this->try_apply_summary_report_fields();
251
- if ( $this->mode == 'preview' ) {
252
- $max_columns = 0;
253
- fwrite( $this->handle, '<table>' );
254
- if ( count( $this->rows ) < 2 ) {
255
- $this->rows[] = array( '<td colspan=10><b>'. __( 'No results', 'woo-order-export-lite' ) . '</b></td>');
 
 
 
 
256
  }
257
- foreach ( $this->rows as $num => $rec ) {
258
- $max_columns = max( $max_columns, count( $rec ) );
259
 
260
- //adds extra space for RTL
261
- if ( $this->settings['direction_rtl'] ) {
262
- while ( count( $rec ) < $max_columns ) {
263
- $rec[] = '';
264
- }
265
- $rec = array_reverse( $rec );
266
  }
267
- if ( $num === 0 AND $this->settings['display_column_names'] ) {
268
- fwrite( $this->handle,
269
- '<tr style="font-weight:bold"><td>' . join( '</td><td>', $rec ) . "</td><tr>\n" );
270
- } else {
271
- fwrite( $this->handle, '<tr><td>' . join( '</td><td>', $rec ) . "</td><tr>\n" );
 
 
272
  }
 
 
 
 
 
 
 
273
  }
274
- fwrite( $this->handle, '</table>' );
275
- } else {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
276
  if ( $this->settings['auto_width'] ) {
277
  try {
278
- $sheet = $this->objPHPExcel->getActiveSheet();
279
  $cellIterator = $sheet->getRowIterator()->current()->getCellIterator();
280
  $cellIterator->setIterateOnlyExistingCells( true );
281
  foreach ( $cellIterator as $cell ) {
@@ -287,14 +355,13 @@ class WOE_Formatter_Xls extends WOE_Formatter_Plain_Format {
287
  }
288
  }
289
 
290
- $sheet = $this->objPHPExcel->getActiveSheet();
291
  $start_row = $this->settings['display_column_names'] ? 2 : 1;
292
 
293
- foreach ( $this->image_positions as $column_index ) {
294
  $columnIterator = $sheet->getColumnIterator()
295
- ->seek(PHPExcel_Cell::stringFromColumnIndex($column_index))
296
- ->current()
297
- ->getCellIterator($start_row);
298
 
299
  $columnIterator->setIterateOnlyExistingCells( true );
300
  foreach ( $columnIterator as $cell ) {
@@ -332,14 +399,14 @@ class WOE_Formatter_Xls extends WOE_Formatter_Plain_Format {
332
  $row_image_height = $this->settings['row_images_height'];
333
 
334
 
335
- $this->objPHPExcel->getActiveSheet()->getColumnDimension( $col )->setWidth( $row_image_width );
336
- $this->objPHPExcel->getActiveSheet()->getRowDimension( $row )->setRowHeight( $row_image_height );
337
 
338
  $objDrawing->setResizeProportional( false ); // ignore proportional
339
  $objDrawing->setWidth( $row_image_width ); //set width, height
340
  $objDrawing->setHeight( $row_image_height );
341
 
342
- $objDrawing->setWorksheet( $this->objPHPExcel->getActiveSheet() ); //save
343
  $cell->setValue("");
344
  }
345
  }
@@ -350,23 +417,10 @@ class WOE_Formatter_Xls extends WOE_Formatter_Plain_Format {
350
  $this->settings['use_xls_format'] ? 'Excel5' : 'Excel2007' );
351
  $objWriter->save( $this->filename );
352
 
353
- delete_transient( $this->get_tmp_data_transient_name() );
354
  }
355
  }
356
 
357
- //just save Excel file
358
- public function finish_partial() {
359
- $objWriter = PHPExcel_IOFactory::createWriter( $this->objPHPExcel,
360
- $this->settings['use_xls_format'] ? 'Excel5' : 'Excel2007' );
361
- $objWriter->save( $this->filename );
362
- }
363
-
364
- public function truncate() {
365
- $this->objPHPExcel->disconnectWorksheets();
366
- $this->objPHPExcel->createSheet();
367
- $this->last_row = 0;
368
- }
369
-
370
  public function convert_php_date_format( $date_format ) {
371
  $replacements = array(
372
  //Day
@@ -396,4 +450,79 @@ class WOE_Formatter_Xls extends WOE_Formatter_Plain_Format {
396
  return strtr( $date_format, $replacements );
397
  }
398
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
399
  }
10
  }
11
 
12
  class WOE_Formatter_Xls extends WOE_Formatter_Plain_Format {
13
+ const CHUNK_SIZE = 1000;
14
+
15
  private $string_format_force = false;
16
  private $string_format_fields;
17
  private $date_format_fields;
18
+
19
+ /**
20
+ * @var WOE_Formatter_Storage
21
+ */
22
+ protected $storage;
23
 
24
  public function __construct(
25
  $mode,
31
  $date_format,
32
  $offset
33
  ) {
34
+ $settings['enclosure'] = '"';
35
+ $settings['linebreak'] = '\r\n';
36
+ $settings['delimiter'] = ',';
37
+ $settings['encoding'] = 'UTF-8';
38
+
39
  parent::__construct( $mode, $filename, $settings, $format, $labels, $field_formats, $date_format, $offset );
40
 
41
  $this->string_format_force = apply_filters( "woe_{$format}_string_format_force", false );
70
  $this->link_format_fields = apply_filters( "woe_{$format}_link_format_fields", $this->link_format_fields );
71
 
72
  if ( $mode != 'preview' ) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
73
  // Excel uses another format!
74
  $this->date_format = apply_filters( 'woe_xls_date_format', $this->convert_php_date_format( $date_format ) );
75
  $this->money_format = apply_filters( 'woe_xls_money_format', PHPExcel_Style_NumberFormat::FORMAT_NUMBER_00 );
79
  $this->format_number_fields_original = $this->format_number_fields;
80
  $this->format_number_fields = false;
81
 
82
+ if (!$this->summary_report_products && !$this->summary_report_customers) {
83
+ $storage_filename = str_replace( '.csv', '', $filename ) . ".storage";
84
+ $this->storage = new WOE_Formatter_Storage_Csv($storage_filename);
85
+ $this->storage->load();
 
 
 
86
  }
87
+ }
88
+ if ($this->summary_report_products || $this->summary_report_customers) {
89
+ $summaryKey = $this->summary_report_products ? WOE_Formatter_Storage_Summary_Session::SUMMARY_PRODUCTS_KEY :
90
+ WOE_Formatter_Storage_Summary_Session::SUMMARY_CUSTOMERS_KEY;
91
+ $this->storage = new WOE_Formatter_Storage_Summary_Session($summaryKey);
92
+ $this->storage->load();
93
  }
94
  }
95
 
96
  public function start( $data = '' ) {
97
+ parent::start();
 
 
98
 
99
  if ( $this->mode == 'preview' ) {
100
+ $data = $this->make_header( $data );
101
+ $data = apply_filters( "woe_{$this->format}_header_filter", $data );
102
 
103
+ $this->rows[] = $data;
104
  }
105
+ }
106
 
107
+ protected function remove_emojis_from_array( &$data ) {
108
+ $data = array_map( array( $this, 'remove_emojis_callback' ), $data );
109
+ }
 
 
 
 
 
 
110
 
111
+ protected function remove_emojis_callback( $value ) {
112
+ return trim(preg_replace('/[\x{1F3F4}](?:\x{E0067}\x{E0062}\x{E0077}\x{E006C}\x{E0073}\x{E007F})|[\x{1F3F4}](?:\x{E0067}\x{E0062}\x{E0073}\x{E0063}\x{E0074}\x{E007F})|[\x{1F3F4}](?:\x{E0067}\x{E0062}\x{E0065}\x{E006E}\x{E0067}\x{E007F})|[\x{1F3F4}](?:\x{200D}\x{2620}\x{FE0F})|[\x{1F3F3}](?:\x{FE0F}\x{200D}\x{1F308})|[\x{0023}\x{002A}\x{0030}\x{0031}\x{0032}\x{0033}\x{0034}\x{0035}\x{0036}\x{0037}\x{0038}\x{0039}](?:\x{FE0F}\x{20E3})|[\x{1F415}](?:\x{200D}\x{1F9BA})|[\x{1F468}\x{1F469}](?:\x{200D}\x{1F467}\x{200D}\x{1F467})|[\x{1F468}\x{1F469}](?:\x{200D}\x{1F467}\x{200D}\x{1F466})|[\x{1F468}\x{1F469}](?:\x{200D}\x{1F467})|[\x{1F468}\x{1F469}](?:\x{200D}\x{1F466}\x{200D}\x{1F466})|[\x{1F468}\x{1F469}](?:\x{200D}\x{1F466})|[\x{1F468}](?:\x{200D}\x{1F468}\x{200D}\x{1F467}\x{200D}\x{1F467})|[\x{1F468}](?:\x{200D}\x{1F468}\x{200D}\x{1F466}\x{200D}\x{1F466})|[\x{1F468}](?:\x{200D}\x{1F468}\x{200D}\x{1F467}\x{200D}\x{1F466})|[\x{1F468}](?:\x{200D}\x{1F468}\x{200D}\x{1F467})|[\x{1F468}](?:\x{200D}\x{1F468}\x{200D}\x{1F466})|[\x{1F468}\x{1F469}](?:\x{200D}\x{1F469}\x{200D}\x{1F467}\x{200D}\x{1F467})|[\x{1F468}\x{1F469}](?:\x{200D}\x{1F469}\x{200D}\x{1F466}\x{200D}\x{1F466})|[\x{1F468}\x{1F469}](?:\x{200D}\x{1F469}\x{200D}\x{1F467}\x{200D}\x{1F466})|[\x{1F468}\x{1F469}](?:\x{200D}\x{1F469}\x{200D}\x{1F467})|[\x{1F468}\x{1F469}](?:\x{200D}\x{1F469}\x{200D}\x{1F466})|[\x{1F469}](?:\x{200D}\x{2764}\x{FE0F}\x{200D}\x{1F469})|[\x{1F469}\x{1F468}](?:\x{200D}\x{2764}\x{FE0F}\x{200D}\x{1F468})|[\x{1F469}](?:\x{200D}\x{2764}\x{FE0F}\x{200D}\x{1F48B}\x{200D}\x{1F469})|[\x{1F469}\x{1F468}](?:\x{200D}\x{2764}\x{FE0F}\x{200D}\x{1F48B}\x{200D}\x{1F468})|[\x{1F468}\x{1F469}](?:\x{200D}\x{1F9BD})|[\x{1F468}\x{1F469}](?:\x{200D}\x{1F9BC})|[\x{1F468}\x{1F469}](?:\x{200D}\x{1F9AF})|[\x{1F575}\x{1F3CC}\x{26F9}\x{1F3CB}](?:\x{FE0F}\x{200D}\x{2640}\x{FE0F})|[\x{1F575}\x{1F3CC}\x{26F9}\x{1F3CB}](?:\x{FE0F}\x{200D}\x{2642}\x{FE0F})|[\x{1F468}\x{1F469}](?:\x{200D}\x{1F692})|[\x{1F468}\x{1F469}](?:\x{200D}\x{1F680})|[\x{1F468}\x{1F469}](?:\x{200D}\x{2708}\x{FE0F})|[\x{1F468}\x{1F469}](?:\x{200D}\x{1F3A8})|[\x{1F468}\x{1F469}](?:\x{200D}\x{1F3A4})|[\x{1F468}\x{1F469}](?:\x{200D}\x{1F4BB})|[\x{1F468}\x{1F469}](?:\x{200D}\x{1F52C})|[\x{1F468}\x{1F469}](?:\x{200D}\x{1F4BC})|[\x{1F468}\x{1F469}](?:\x{200D}\x{1F3ED})|[\x{1F468}\x{1F469}](?:\x{200D}\x{1F527})|[\x{1F468}\x{1F469}](?:\x{200D}\x{1F373})|[\x{1F468}\x{1F469}](?:\x{200D}\x{1F33E})|[\x{1F468}\x{1F469}](?:\x{200D}\x{2696}\x{FE0F})|[\x{1F468}\x{1F469}](?:\x{200D}\x{1F3EB})|[\x{1F468}\x{1F469}](?:\x{200D}\x{1F393})|[\x{1F468}\x{1F469}](?:\x{200D}\x{2695}\x{FE0F})|[\x{1F471}\x{1F64D}\x{1F64E}\x{1F645}\x{1F646}\x{1F481}\x{1F64B}\x{1F9CF}\x{1F647}\x{1F926}\x{1F937}\x{1F46E}\x{1F482}\x{1F477}\x{1F473}\x{1F9B8}\x{1F9B9}\x{1F9D9}\x{1F9DA}\x{1F9DB}\x{1F9DC}\x{1F9DD}\x{1F9DE}\x{1F9DF}\x{1F486}\x{1F487}\x{1F6B6}\x{1F9CD}\x{1F9CE}\x{1F3C3}\x{1F46F}\x{1F9D6}\x{1F9D7}\x{1F3C4}\x{1F6A3}\x{1F3CA}\x{1F6B4}\x{1F6B5}\x{1F938}\x{1F93C}\x{1F93D}\x{1F93E}\x{1F939}\x{1F9D8}](?:\x{200D}\x{2640}\x{FE0F})|[\x{1F468}\x{1F469}](?:\x{200D}\x{1F9B2})|[\x{1F468}\x{1F469}](?:\x{200D}\x{1F9B3})|[\x{1F468}\x{1F469}](?:\x{200D}\x{1F9B1})|[\x{1F468}\x{1F469}](?:\x{200D}\x{1F9B0})|[\x{1F471}\x{1F64D}\x{1F64E}\x{1F645}\x{1F646}\x{1F481}\x{1F64B}\x{1F9CF}\x{1F647}\x{1F926}\x{1F937}\x{1F46E}\x{1F482}\x{1F477}\x{1F473}\x{1F9B8}\x{1F9B9}\x{1F9D9}\x{1F9DA}\x{1F9DB}\x{1F9DC}\x{1F9DD}\x{1F9DE}\x{1F9DF}\x{1F486}\x{1F487}\x{1F6B6}\x{1F9CD}\x{1F9CE}\x{1F3C3}\x{1F46F}\x{1F9D6}\x{1F9D7}\x{1F3C4}\x{1F6A3}\x{1F3CA}\x{1F6B4}\x{1F6B5}\x{1F938}\x{1F93C}\x{1F93D}\x{1F93E}\x{1F939}\x{1F9D8}](?:\x{200D}\x{2642}\x{FE0F})|[\x{1F441}](?:\x{FE0F}\x{200D}\x{1F5E8}\x{FE0F})|[\x{1F1E6}\x{1F1E7}\x{1F1E8}\x{1F1E9}\x{1F1F0}\x{1F1F2}\x{1F1F3}\x{1F1F8}\x{1F1F9}\x{1F1FA}](?:\x{1F1FF})|[\x{1F1E7}\x{1F1E8}\x{1F1EC}\x{1F1F0}\x{1F1F1}\x{1F1F2}\x{1F1F5}\x{1F1F8}\x{1F1FA}](?:\x{1F1FE})|[\x{1F1E6}\x{1F1E8}\x{1F1F2}\x{1F1F8}](?:\x{1F1FD})|[\x{1F1E6}\x{1F1E7}\x{1F1E8}\x{1F1EC}\x{1F1F0}\x{1F1F2}\x{1F1F5}\x{1F1F7}\x{1F1F9}\x{1F1FF}](?:\x{1F1FC})|[\x{1F1E7}\x{1F1E8}\x{1F1F1}\x{1F1F2}\x{1F1F8}\x{1F1F9}](?:\x{1F1FB})|[\x{1F1E6}\x{1F1E8}\x{1F1EA}\x{1F1EC}\x{1F1ED}\x{1F1F1}\x{1F1F2}\x{1F1F3}\x{1F1F7}\x{1F1FB}](?:\x{1F1FA})|[\x{1F1E6}\x{1F1E7}\x{1F1EA}\x{1F1EC}\x{1F1ED}\x{1F1EE}\x{1F1F1}\x{1F1F2}\x{1F1F5}\x{1F1F8}\x{1F1F9}\x{1F1FE}](?:\x{1F1F9})|[\x{1F1E6}\x{1F1E7}\x{1F1EA}\x{1F1EC}\x{1F1EE}\x{1F1F1}\x{1F1F2}\x{1F1F5}\x{1F1F7}\x{1F1F8}\x{1F1FA}\x{1F1FC}](?:\x{1F1F8})|[\x{1F1E6}\x{1F1E7}\x{1F1E8}\x{1F1EA}\x{1F1EB}\x{1F1EC}\x{1F1ED}\x{1F1EE}\x{1F1F0}\x{1F1F1}\x{1F1F2}\x{1F1F3}\x{1F1F5}\x{1F1F8}\x{1F1F9}](?:\x{1F1F7})|[\x{1F1E6}\x{1F1E7}\x{1F1EC}\x{1F1EE}\x{1F1F2}](?:\x{1F1F6})|[\x{1F1E8}\x{1F1EC}\x{1F1EF}\x{1F1F0}\x{1F1F2}\x{1F1F3}](?:\x{1F1F5})|[\x{1F1E6}\x{1F1E7}\x{1F1E8}\x{1F1E9}\x{1F1EB}\x{1F1EE}\x{1F1EF}\x{1F1F2}\x{1F1F3}\x{1F1F7}\x{1F1F8}\x{1F1F9}](?:\x{1F1F4})|[\x{1F1E7}\x{1F1E8}\x{1F1EC}\x{1F1ED}\x{1F1EE}\x{1F1F0}\x{1F1F2}\x{1F1F5}\x{1F1F8}\x{1F1F9}\x{1F1FA}\x{1F1FB}](?:\x{1F1F3})|[\x{1F1E6}\x{1F1E7}\x{1F1E8}\x{1F1E9}\x{1F1EB}\x{1F1EC}\x{1F1ED}\x{1F1EE}\x{1F1EF}\x{1F1F0}\x{1F1F2}\x{1F1F4}\x{1F1F5}\x{1F1F8}\x{1F1F9}\x{1F1FA}\x{1F1FF}](?:\x{1F1F2})|[\x{1F1E6}\x{1F1E7}\x{1F1E8}\x{1F1EC}\x{1F1EE}\x{1F1F2}\x{1F1F3}\x{1F1F5}\x{1F1F8}\x{1F1F9}](?:\x{1F1F1})|[\x{1F1E8}\x{1F1E9}\x{1F1EB}\x{1F1ED}\x{1F1F1}\x{1F1F2}\x{1F1F5}\x{1F1F8}\x{1F1F9}\x{1F1FD}](?:\x{1F1F0})|[\x{1F1E7}\x{1F1E9}\x{1F1EB}\x{1F1F8}\x{1F1F9}](?:\x{1F1EF})|[\x{1F1E6}\x{1F1E7}\x{1F1E8}\x{1F1EB}\x{1F1EC}\x{1F1F0}\x{1F1F1}\x{1F1F3}\x{1F1F8}\x{1F1FB}](?:\x{1F1EE})|[\x{1F1E7}\x{1F1E8}\x{1F1EA}\x{1F1EC}\x{1F1F0}\x{1F1F2}\x{1F1F5}\x{1F1F8}\x{1F1F9}](?:\x{1F1ED})|[\x{1F1E6}\x{1F1E7}\x{1F1E8}\x{1F1E9}\x{1F1EA}\x{1F1EC}\x{1F1F0}\x{1F1F2}\x{1F1F3}\x{1F1F5}\x{1F1F8}\x{1F1F9}\x{1F1FA}\x{1F1FB}](?:\x{1F1EC})|[\x{1F1E6}\x{1F1E7}\x{1F1E8}\x{1F1EC}\x{1F1F2}\x{1F1F3}\x{1F1F5}\x{1F1F9}\x{1F1FC}](?:\x{1F1EB})|[\x{1F1E6}\x{1F1E7}\x{1F1E9}\x{1F1EA}\x{1F1EC}\x{1F1EE}\x{1F1EF}\x{1F1F0}\x{1F1F2}\x{1F1F3}\x{1F1F5}\x{1F1F7}\x{1F1F8}\x{1F1FB}\x{1F1FE}](?:\x{1F1EA})|[\x{1F1E6}\x{1F1E7}\x{1F1E8}\x{1F1EC}\x{1F1EE}\x{1F1F2}\x{1F1F8}\x{1F1F9}](?:\x{1F1E9})|[\x{1F1E6}\x{1F1E8}\x{1F1EA}\x{1F1EE}\x{1F1F1}\x{1F1F2}\x{1F1F3}\x{1F1F8}\x{1F1F9}\x{1F1FB}](?:\x{1F1E8})|[\x{1F1E7}\x{1F1EC}\x{1F1F1}\x{1F1F8}](?:\x{1F1E7})|[\x{1F1E7}\x{1F1E8}\x{1F1EA}\x{1F1EC}\x{1F1F1}\x{1F1F2}\x{1F1F3}\x{1F1F5}\x{1F1F6}\x{1F1F8}\x{1F1F9}\x{1F1FA}\x{1F1FB}\x{1F1FF}](?:\x{1F1E6})|[\x{00A9}\x{00AE}\x{203C}\x{2049}\x{2122}\x{2139}\x{2194}-\x{2199}\x{21A9}-\x{21AA}\x{231A}-\x{231B}\x{2328}\x{23CF}\x{23E9}-\x{23F3}\x{23F8}-\x{23FA}\x{24C2}\x{25AA}-\x{25AB}\x{25B6}\x{25C0}\x{25FB}-\x{25FE}\x{2600}-\x{2604}\x{260E}\x{2611}\x{2614}-\x{2615}\x{2618}\x{261D}\x{2620}\x{2622}-\x{2623}\x{2626}\x{262A}\x{262E}-\x{262F}\x{2638}-\x{263A}\x{2640}\x{2642}\x{2648}-\x{2653}\x{265F}-\x{2660}\x{2663}\x{2665}-\x{2666}\x{2668}\x{267B}\x{267E}-\x{267F}\x{2692}-\x{2697}\x{2699}\x{269B}-\x{269C}\x{26A0}-\x{26A1}\x{26AA}-\x{26AB}\x{26B0}-\x{26B1}\x{26BD}-\x{26BE}\x{26C4}-\x{26C5}\x{26C8}\x{26CE}-\x{26CF}\x{26D1}\x{26D3}-\x{26D4}\x{26E9}-\x{26EA}\x{26F0}-\x{26F5}\x{26F7}-\x{26FA}\x{26FD}\x{2702}\x{2705}\x{2708}-\x{270D}\x{270F}\x{2712}\x{2714}\x{2716}\x{271D}\x{2721}\x{2728}\x{2733}-\x{2734}\x{2744}\x{2747}\x{274C}\x{274E}\x{2753}-\x{2755}\x{2757}\x{2763}-\x{2764}\x{2795}-\x{2797}\x{27A1}\x{27B0}\x{27BF}\x{2934}-\x{2935}\x{2B05}-\x{2B07}\x{2B1B}-\x{2B1C}\x{2B50}\x{2B55}\x{3030}\x{303D}\x{3297}\x{3299}\x{1F004}\x{1F0CF}\x{1F170}-\x{1F171}\x{1F17E}-\x{1F17F}\x{1F18E}\x{1F191}-\x{1F19A}\x{1F201}-\x{1F202}\x{1F21A}\x{1F22F}\x{1F232}-\x{1F23A}\x{1F250}-\x{1F251}\x{1F300}-\x{1F321}\x{1F324}-\x{1F393}\x{1F396}-\x{1F397}\x{1F399}-\x{1F39B}\x{1F39E}-\x{1F3F0}\x{1F3F3}-\x{1F3F5}\x{1F3F7}-\x{1F3FA}\x{1F400}-\x{1F4FD}\x{1F4FF}-\x{1F53D}\x{1F549}-\x{1F54E}\x{1F550}-\x{1F567}\x{1F56F}-\x{1F570}\x{1F573}-\x{1F57A}\x{1F587}\x{1F58A}-\x{1F58D}\x{1F590}\x{1F595}-\x{1F596}\x{1F5A4}-\x{1F5A5}\x{1F5A8}\x{1F5B1}-\x{1F5B2}\x{1F5BC}\x{1F5C2}-\x{1F5C4}\x{1F5D1}-\x{1F5D3}\x{1F5DC}-\x{1F5DE}\x{1F5E1}\x{1F5E3}\x{1F5E8}\x{1F5EF}\x{1F5F3}\x{1F5FA}-\x{1F64F}\x{1F680}-\x{1F6C5}\x{1F6CB}-\x{1F6D2}\x{1F6D5}\x{1F6E0}-\x{1F6E5}\x{1F6E9}\x{1F6EB}-\x{1F6EC}\x{1F6F0}\x{1F6F3}-\x{1F6FA}\x{1F7E0}-\x{1F7EB}\x{1F90D}-\x{1F93A}\x{1F93C}-\x{1F945}\x{1F947}-\x{1F971}\x{1F973}-\x{1F976}\x{1F97A}-\x{1F9A2}\x{1F9A5}-\x{1F9AA}\x{1F9AE}-\x{1F9CA}\x{1F9CD}-\x{1F9FF}\x{1FA70}-\x{1FA73}\x{1FA78}-\x{1FA7A}\x{1FA80}-\x{1FA82}\x{1FA90}-\x{1FA95}]/u',"", $value));
113
+ }
114
 
115
+ public function output( $rec ) {
116
+ //$rows = parent::output( $rec ); //we can't change parent because of html
117
+ $is_summary_mode = $this->summary_report_products || $this->summary_report_customers;
 
 
 
118
 
119
+ //was taken from parent::output()
120
+ $rec = WOE_Formatter::output( $rec );
121
+ if ($is_summary_mode) {
122
+ $rows = array($rec);
123
+ } else {
124
+ $rows = apply_filters( 'woe_fetch_order_data', $this->maybe_multiple_fields( $rec ) );
125
  }
126
 
127
+ if ($this->settings['remove_emojis']) {
128
+ foreach ($rows as &$row) {
129
+ $this->remove_emojis_from_array($row);
130
+ }
131
+ }
132
 
133
+ if ( $this->mode !== 'preview' || $is_summary_mode ) {
134
+ if ( ! $this->storage->getColumns() ) {
135
+ $tmpLabels = $this->make_header( "" ); //it filters labels
136
+ $tmpRow = $this->extractRowForHeaderProcess($rows);
 
137
 
138
+ $tmpLabels = apply_filters( "woe_xls_header_filter", $tmpLabels );
 
139
 
140
+ foreach ( array_keys( $tmpRow ) as $index => $key ) {
141
+ $column = new WOE_Formatter_Storage_Column();
142
+ $column->setKey( $key );
143
+ if ( $this->field_format_is( $key, $this->image_format_fields ) ) {
144
+ $column->setMetaItem( "image", true );
145
+ }
146
+ if ( $this->field_format_is( $key, $this->link_format_fields ) ) {
147
+ $column->setMetaItem( "link", true );
 
148
  }
149
+ if ( $this->field_format_is( $key, $this->string_format_fields ) ) {
150
+ $column->setMetaItem( "string", true );
151
+ }
152
+ if ( $this->field_format_is( $key, $this->date_format_fields ) ) {
153
+ $column->setMetaItem( "date", true );
154
+ }
155
+ if ( $this->field_format_is( $key, $this->number_format_fields ) ) {
156
+ $column->setMetaItem( "number", true );
157
+ }
158
+ if( $this->field_format_is( $key, $this->money_format_fields ) ) {
159
+ $column->setMetaItem( "money", true );
160
+ }
161
+ if ( isset( $tmpLabels[ $index ] ) ) {
162
+ $column->setMetaItem( "label", $tmpLabels[ $index ] );
163
+ }
164
+ $this->storage->insertColumn( $column );
165
  }
166
+
167
+ $this->storage->saveHeader();
168
  }
169
+
170
+ foreach ( $rows as $row ) {
171
+ if (!$row = $this->applyOutputRowFilter($row)) {
 
 
 
172
  continue;
173
  }
174
+ $rowObj = new WOE_Formatter_Storage_Row();
175
+ $rowObj->setData($row);
176
+ $rowObj->setMetaItem("order_id", (int)WC_Order_Export_Engine::$order_id);
177
+ $this->insertRowAndSave($rowObj);
178
+ }
179
+ } else {
180
+ foreach($rows as $row) {
181
+ if (!$row = $this->applyOutputRowFilter($row)) {
182
+ continue;
183
+ }
184
+ $this->rows[] = $row;
185
+ }
186
+ }
187
+
188
+ return $rows;
189
+ }
190
+
191
+ public function finish_partial()
192
+ {
193
+ parent::finish_partial();
194
+ $this->storage->close();
195
+ }
196
+
197
+ public function finish() {
198
+ if ( $this->mode === 'preview' ) {
199
+ if($this->summary_report_products || $this->summary_report_customers) {
200
+ $this->rows = $this->storage->processDataForPreview($this->rows);
201
  }
202
+ $this->rows = apply_filters( "woe_{$this->format}_preview_rows", $this->rows );
203
 
204
+ $image_preview_multiply = 5;
205
+ $max_columns = 0;
206
 
207
+ fwrite( $this->handle, '<table>' );
208
+ if ( $this->settings['display_column_names'] && count( $this->rows ) < 2 || count( $this->rows ) < 1 ) {
209
+ $this->rows[] = array( '<td colspan=10><b>' . __( 'No results', 'woo-order-export-lite' ) . '</b></td>' );
210
+ }
211
+ $image_preview_multiply = 5;
212
+ $max_columns = 0;
213
+ foreach ( $this->rows as $num => &$row ) {
214
+ $row = array_map( "nl2br", $row );
215
  foreach ( $row as $column => &$cell ) {
216
  if ( $this->field_format_is( $column, $this->image_format_fields ) ) {
217
  $html = $this->make_img_html_from_path(
223
  }
224
  }
225
 
226
+ $max_columns = max( $max_columns, count( $row ) );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
227
 
228
+ //adds extra space for RTL
229
+ if ( $this->settings['direction_rtl'] ) {
230
+ while ( count( $row ) < $max_columns ) {
231
+ $row[] = '';
 
 
 
232
  }
233
+ $row = array_reverse( $row );
234
+ }
235
+
236
+ if ( $num == 0 AND ! empty( $this->settings['display_column_names'] ) ) {
237
+ fwrite( $this->handle,
238
+ '<tr style="font-weight:bold"><td>' . join( '</td><td>', $row ) . "</td><tr>\n" );
239
+ } else {
240
+ fwrite( $this->handle, '<tr><td>' . join( '</td><td>', $row ) . "</td><tr>\n" );
241
  }
242
  }
243
+ fwrite( $this->handle, '</table>' );
244
  }
245
 
246
+ parent::finish();
247
 
248
  if ( $this->mode != 'preview' ) {
249
+ $this->storage->close(); // //if it's full export, storage hasn't been closed
 
 
 
250
 
251
+ //more memory for XLS?
252
+ ini_set( 'memory_limit', '512M' );
253
+ //fallback to PCLZip
254
+ if ( ! class_exists( 'ZipArchive' ) ) {
255
+ PHPExcel_Settings::setZipClass( PHPExcel_Settings::PCLZIP );
256
+ }
257
+
258
+ $this->objPHPExcel = new PHPExcel();
259
 
260
+ $this->objPHPExcel->setActiveSheetIndex( 0 );
261
+
262
+ $sheet = $this->objPHPExcel->getActiveSheet();
263
+
264
+ do_action( 'woe_xls_PHPExcel_setup', $this->objPHPExcel, $this->settings );
265
+
266
+ $this->last_row = $sheet->getHighestRow();
267
+
268
+ //fix bug, row=1 if we have 0 records
269
+ if ( $this->last_row == 1 AND $sheet->getHighestColumn() == "A" ) {
270
+ $this->last_row = 0;
271
  }
 
 
272
 
273
+ $this->storage->initRowIterator();
274
+ $row = array();
275
+ foreach ($this->storage->getColumns() as $column) {
276
+ if ($label = $column->getMetaItem("label")) {
277
+ $row[] = $label;
 
278
  }
279
+ }
280
+
281
+ if ( ! empty( $this->settings['display_column_names'] ) AND $row ) {
282
+ $row = apply_filters( "woe_xls_header_filter_final", $row );
283
+ $this->last_row ++;
284
+ foreach ( $row as $pos => $text ) {
285
+ $sheet->setCellValueByColumnAndRow( $pos, $this->last_row, $text );
286
  }
287
+
288
+ //make first bold
289
+ $last_column = $sheet->getHighestDataColumn();
290
+ $sheet->getStyle( "A1:" . $last_column . "1" )->getFont()->setBold( true );
291
+
292
+ //freeze
293
+ $sheet->freezePane( 'A2' );
294
  }
295
+
296
+ //rename Sheet1
297
+ if ( empty( $this->settings['sheet_name'] ) ) {
298
+ $this->settings['sheet_name'] = __( 'Orders', 'woo-order-export-lite' );
299
+ }
300
+ $sheet_name = WC_Order_Export_Engine::make_filename( $this->settings['sheet_name'] );
301
+ $sheet->setTitle( $sheet_name );
302
+
303
+ // right-to-left worksheet?
304
+ if ( $this->settings['direction_rtl'] ) {
305
+ $sheet->setRightToLeft( true );
306
+ }
307
+
308
+ do_action( 'woe_xls_print_header', $this->objPHPExcel, $this );
309
+
310
+ $imageColumns = array();
311
+ foreach ( $this->storage->getColumns() as $columnIndex => $column ) {
312
+ $columnLetter = PHPExcel_Cell::stringFromColumnIndex($columnIndex);
313
+ $numberFormat = $sheet->getStyle("$columnLetter:$columnLetter")->getNumberFormat();
314
+
315
+ if ( $column->getMetaItem("image") === true ) {
316
+ $imageColumns[] = $columnIndex;
317
+ }
318
+ if ( $this->string_format_force OR $column->getMetaItem("string") === true ) {
319
+ $numberFormat->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_TEXT);
320
+ } elseif ( $this->format_number_fields_original AND $column->getMetaItem("money") ) { // MONEY
321
+ $$numberFormat->setFormatCode( $this->money_format );
322
+ } elseif ( $this->format_number_fields_original AND $column->getMetaItem("number") ) { // NUMBER
323
+ $numberFormat->setFormatCode( $this->number_format );
324
+ } elseif ( $column->getMetaItem("date") ) {// DATE!
325
+ $numberFormat->setFormatCode( $this->date_format );
326
+ } elseif ( $column->getMetaItem("link") ) {
327
+ $numberFormat->setFormatCode( PHPExcel_Style_NumberFormat::FORMAT_TEXT );
328
+ }
329
+ }
330
+
331
+ $rows = array();
332
+ while( $rowObj = $this->storage->getNextRow() ) {
333
+ $row = $rowObj->getData();
334
+ $row[] = $rowObj->getMetaItem('order_id');
335
+ $rows[] = $row;
336
+ if( count( $rows ) == self::CHUNK_SIZE ) {
337
+ $this->fromArray( $sheet, $rows, NULL, 'A' . ++ $this->last_row );
338
+ $rows = array();
339
+ }
340
+ }
341
+ if( count( $rows ) ) { //last chunk
342
+ $this->fromArray( $sheet, $rows, NULL, 'A' . ++ $this->last_row );
343
+ }
344
+
345
  if ( $this->settings['auto_width'] ) {
346
  try {
 
347
  $cellIterator = $sheet->getRowIterator()->current()->getCellIterator();
348
  $cellIterator->setIterateOnlyExistingCells( true );
349
  foreach ( $cellIterator as $cell ) {
355
  }
356
  }
357
 
 
358
  $start_row = $this->settings['display_column_names'] ? 2 : 1;
359
 
360
+ foreach ( $imageColumns as $column_index ) {
361
  $columnIterator = $sheet->getColumnIterator()
362
+ ->seek(PHPExcel_Cell::stringFromColumnIndex($column_index))
363
+ ->current()
364
+ ->getCellIterator($start_row);
365
 
366
  $columnIterator->setIterateOnlyExistingCells( true );
367
  foreach ( $columnIterator as $cell ) {
399
  $row_image_height = $this->settings['row_images_height'];
400
 
401
 
402
+ $sheet->getColumnDimension( $col )->setWidth( $row_image_width );
403
+ $sheet->getRowDimension( $row )->setRowHeight( $row_image_height );
404
 
405
  $objDrawing->setResizeProportional( false ); // ignore proportional
406
  $objDrawing->setWidth( $row_image_width ); //set width, height
407
  $objDrawing->setHeight( $row_image_height );
408
 
409
+ $objDrawing->setWorksheet( $sheet ); //save
410
  $cell->setValue("");
411
  }
412
  }
417
  $this->settings['use_xls_format'] ? 'Excel5' : 'Excel2007' );
418
  $objWriter->save( $this->filename );
419
 
420
+ $this->storage->close();
421
  }
422
  }
423
 
 
 
 
 
 
 
 
 
 
 
 
 
 
424
  public function convert_php_date_format( $date_format ) {
425
  $replacements = array(
426
  //Day
450
  return strtr( $date_format, $replacements );
451
  }
452
 
453
+ public function fromArray($sheet, $source = null, $nullValue = null, $startCell = 'A1', $strictNullComparison = false)
454
+ {
455
+ if (is_array($source)) {
456
+ // Convert a 1-D array to 2-D (for ease of looping)
457
+ if (!is_array(end($source))) {
458
+ $source = array($source);
459
+ }
460
+
461
+ // start coordinate
462
+ list ($startColumn, $startRow) = PHPExcel_Cell::coordinateFromString($startCell);
463
+
464
+ $stored_columns = $this->storage->getColumns();
465
+ // Loop through $source
466
+ foreach ($source as $rowData) {
467
+ $currentColumn = $startColumn;
468
+
469
+ WC_Order_Export_Engine::$order_id = array_pop( $rowData );
470
+
471
+ foreach ($rowData as $cellValue) {
472
+
473
+ $columnIndex = PHPExcel_Cell::columnIndexFromString( $currentColumn ) - 1;
474
+
475
+ if( isset($stored_columns[$columnIndex]) )
476
+ $column = $stored_columns[$columnIndex];
477
+ else {
478
+ $column = new WOE_Formatter_Storage_Column();
479
+ $column->setKey( "unnamed_".$columnIndex);
480
+ }
481
+
482
+ if ( $column->getMetaItem("date") === true ) {
483
+ if ( $cellValue ) {
484
+ if ( empty( $this->settings['global_job_settings']['time_format'] ) ) { // must remove time!
485
+ if ( WOE_Formatter::is_valid_time_stamp( $cellValue ) ) {
486
+ $cellValue = date( "Y-m-d", $cellValue );
487
+ } else {
488
+ $cellValue = date( "Y-m-d", strtotime( $cellValue ) );
489
+ }
490
+ }
491
+ try {
492
+ $cellValue = PHPExcel_Shared_Date::PHPToExcel( new DateTime( $cellValue ) );
493
+ } catch (Exception $e) {}
494
+ }
495
+ }
496
+ if ($strictNullComparison) {
497
+ if ($cellValue !== $nullValue) {
498
+ // Set cell value
499
+ if ( $this->string_format_force OR $column->getMetaItem("string") OR
500
+ $column->getMetaItem("link") ) {
501
+ $sheet->getCell($currentColumn . $startRow)->setValueExplicit($cellValue);
502
+ } else {
503
+ $sheet->getCell($currentColumn . $startRow)->setValue($cellValue);
504
+ }
505
+ }
506
+ } else {
507
+ if ($cellValue != $nullValue) {
508
+ // Set cell value
509
+ if ( $this->string_format_force OR $column->getMetaItem("string") OR
510
+ $column->getMetaItem("link") ) {
511
+ $sheet->getCell($currentColumn . $startRow)->setValueExplicit($cellValue);
512
+ } else {
513
+ $sheet->getCell($currentColumn . $startRow)->setValue($cellValue);
514
+ }
515
+ }
516
+ }
517
+ do_action( "woe_xls_format_cell", $this, $column->getKey(), $cellValue, $rowData, $columnIndex );
518
+ ++$currentColumn;
519
+ }
520
+ ++$startRow;
521
+ ++$this->last_row;
522
+ }
523
+ } else {
524
+ throw new PHPExcel_Exception("Parameter \$source should be an array.");
525
+ }
526
+ return $this;
527
+ }
528
  }
classes/formats/storage/class-woe-formatter-storage-column.php ADDED
@@ -0,0 +1,78 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ if ( ! defined( 'ABSPATH' ) ) {
3
+ exit; // Exit if accessed directly
4
+ }
5
+
6
+ class WOE_Formatter_Storage_Column {
7
+ /**
8
+ * @var string
9
+ */
10
+ protected $key;
11
+
12
+ /**
13
+ * @var array<string, mixed>
14
+ */
15
+ protected $meta;
16
+
17
+ public function __construct() {
18
+ $this->key = "";
19
+ $this->meta = array();
20
+ }
21
+
22
+ /**
23
+ * @param string $key
24
+ */
25
+ public function setKey( $key ) {
26
+ if ( is_string( $key ) ) {
27
+ $this->key = $key;
28
+ }
29
+ }
30
+
31
+ /**
32
+ * @param array $meta
33
+ */
34
+ public function setMeta( $meta ) {
35
+ if ( is_array( $meta ) ) {
36
+ $this->meta = array();
37
+
38
+ foreach ( $meta as $key => $item ) {
39
+ if ( is_string( $key ) ) {
40
+ $this->meta[ $key ] = $item;
41
+ }
42
+ }
43
+ }
44
+ }
45
+
46
+ /**
47
+ * @param string $key
48
+ * @param mixed $value
49
+ */
50
+ public function setMetaItem( $key, $value ) {
51
+ if ( is_string( $key ) ) {
52
+ $this->meta[ $key ] = $value;
53
+ }
54
+ }
55
+
56
+ /**
57
+ * @return string
58
+ */
59
+ public function getKey() {
60
+ return $this->key;
61
+ }
62
+
63
+ /**
64
+ * @return array<int, mixed>
65
+ */
66
+ public function getMeta() {
67
+ return $this->meta;
68
+ }
69
+
70
+ /**
71
+ * @param string
72
+ *
73
+ * @return mixed|null
74
+ */
75
+ public function getMetaItem( $key ) {
76
+ return is_string( $key ) && isset( $this->meta[ $key ] ) ? $this->meta[ $key ] : null;
77
+ }
78
+ }
classes/formats/storage/class-woe-formatter-storage-csv.php ADDED
@@ -0,0 +1,272 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ if ( ! defined( 'ABSPATH' ) ) {
3
+ exit; // Exit if accessed directly
4
+ }
5
+
6
+ class WOE_Formatter_Storage_Csv implements WOE_Formatter_Storage {
7
+ /**
8
+ * @var array<int, WOE_Formatter_Storage_Column>
9
+ */
10
+ protected $header;
11
+
12
+ /**
13
+ * @var array<int, WOE_Formatter_Storage_Row>
14
+ */
15
+ protected $rowsBuffer;
16
+
17
+ protected $delimiter = ',';
18
+ protected $enclosure = '"';
19
+
20
+ protected $filename;
21
+
22
+ /**
23
+ * @var resource|null
24
+ */
25
+ protected $handle;
26
+
27
+ public function __construct($filename) {
28
+ $this->header = array();
29
+ $this->rowsBuffer = array();
30
+ $this->filename = $filename;
31
+ }
32
+
33
+ public function insertRowAndSave( $row ) {
34
+ if ( $row instanceof WOE_Formatter_Storage_Row ) {
35
+ if ( ! $this->handle ) {
36
+ $this->handle = fopen( $this->filename, 'a' );
37
+ }
38
+ $data = array_map( 'serialize', array( $row->getKey(), $row->getMeta(), $row->getData() ) );
39
+ fputcsv( $this->handle, $data, $this->delimiter, $this->enclosure );
40
+ }
41
+ }
42
+
43
+ public function getRow( $key ) {
44
+ $row = null;
45
+
46
+ foreach ( $this->rowsBuffer as $tmpRow ) {
47
+ if ( $tmpRow->getKey() === $key ) {
48
+ $row = $tmpRow;
49
+ break;
50
+ }
51
+ }
52
+
53
+ return $row;
54
+ }
55
+
56
+ public function getRawRows() {
57
+ $result = array();
58
+
59
+ foreach ( $this->rowsBuffer as $row ) {
60
+ $result[ $row->getKey() ] = $row->getData();
61
+ }
62
+
63
+ return $result;
64
+ }
65
+
66
+ public function saveHeader() {
67
+ $this->handle = fopen( $this->filename, 'w' );
68
+
69
+ if ( ! $this->handle ) {
70
+ return;
71
+ }
72
+
73
+ $rawHeader = array();
74
+ foreach ( $this->header as $column ) {
75
+ $rawHeader[] = serialize( array( $column->getKey(), $column->getMeta() ) );
76
+ }
77
+ fputcsv( $this->handle, $rawHeader, $this->delimiter, $this->enclosure );
78
+ }
79
+
80
+ public function forceSave() {
81
+ $handle = fopen( $this->filename, 'w' );
82
+
83
+ if ( ! $handle ) {
84
+ return;
85
+ }
86
+
87
+ $rawHeader = array();
88
+ foreach ( $this->header as $column ) {
89
+ $rawHeader[] = serialize( array( $column->getKey(), $column->getMeta() ) );
90
+ }
91
+ fputcsv( $handle, $rawHeader, $this->delimiter, $this->enclosure );
92
+
93
+ foreach ( $this->rowsBuffer as $row ) {
94
+ $data = array_map( 'serialize', array( $row->getKey(), $row->getMeta(), $row->getData() ) );
95
+ fputcsv( $handle, $data, $this->delimiter, $this->enclosure );
96
+ }
97
+
98
+ fclose( $handle );
99
+ }
100
+
101
+ /**
102
+ * @param string $filename
103
+ */
104
+ public function loadFull() {
105
+ $handle = fopen( $this->filename, 'a+' );
106
+
107
+ if ( ! $handle ) {
108
+ return;
109
+ }
110
+
111
+ $header = fgetcsv( $handle, 0, $this->delimiter, $this->enclosure );
112
+ if ( ! $header ) {
113
+ return;
114
+ }
115
+
116
+ $this->header = array();
117
+ foreach ( $header as $rawItem ) {
118
+ $item = array_map( 'unserialize', $rawItem );
119
+ $column = new WOE_Formatter_Storage_Column();
120
+ $column->setKey( $item[0] );
121
+ $column->setMeta( $item[1] );
122
+ $this->header[] = $column;
123
+ }
124
+
125
+ $this->rowsBuffer = array();
126
+ while ( $rawRow = fgetcsv( $handle, 0, $this->delimiter, $this->enclosure ) ) {
127
+ $row = array_map( 'unserialize', $rawRow );
128
+ $rowObj = new WOE_Formatter_Storage_Row();
129
+ $rowObj->setKey( $row[0] );
130
+ $rowObj->setMeta( $row[1] );
131
+ $rowObj->setData( $row[2] );
132
+ $this->rowsBuffer[] = $rowObj;
133
+ }
134
+
135
+ fclose( $handle );
136
+ }
137
+
138
+ public function load() {
139
+ if ( ! file_exists( $this->filename ) ) {
140
+ return;
141
+ }
142
+
143
+ $handle = fopen( $this->filename, 'a+' );
144
+
145
+ if ( ! $handle ) {
146
+ return;
147
+ }
148
+
149
+ $header = fgetcsv( $handle, 0, $this->delimiter, $this->enclosure );
150
+ if ( ! $header ) {
151
+ return;
152
+ }
153
+
154
+ $this->header = array();
155
+ foreach ( $header as $rawItem ) {
156
+ $item = unserialize( $rawItem );
157
+ $column = new WOE_Formatter_Storage_Column();
158
+ $column->setKey( $item[0] );
159
+ $column->setMeta( $item[1] );
160
+ $this->header[] = $column;
161
+ }
162
+
163
+ fclose( $handle );
164
+ }
165
+
166
+ /**
167
+ * @param string $filename
168
+ */
169
+ public function save() {
170
+ if(empty($this->rowsBuffer)) {
171
+ return;
172
+ }
173
+ if ( ! file_exists( $this->filename ) ) {
174
+ $this->forceSave();
175
+
176
+ return;
177
+ }
178
+
179
+ $handle = fopen( $this->filename, 'a' );
180
+
181
+ if ( ! $handle ) {
182
+ return;
183
+ }
184
+
185
+ foreach ( $this->rowsBuffer as $row ) {
186
+ $data = array_map( 'serialize', array( $row->getKey(), $row->getMeta(), $row->getData() ) );
187
+ fputcsv( $handle, $data, $this->delimiter, $this->enclosure );
188
+ }
189
+
190
+ fclose( $handle );
191
+ }
192
+
193
+ public function insertColumn( $column ) {
194
+ if ( $column instanceof WOE_Formatter_Storage_Column ) {
195
+ $this->header[] = $column;
196
+ }
197
+ }
198
+
199
+ public function getColumns() {
200
+ return $this->header;
201
+ }
202
+
203
+ /**
204
+ * @param string $filename
205
+ *
206
+ * @return bool
207
+ */
208
+ public function initRowIterator() {
209
+ if ( ! file_exists( $this->filename ) ) {
210
+ return false;
211
+ }
212
+
213
+ $handle = fopen( $this->filename, 'a+' );
214
+
215
+ if ( ! $handle ) {
216
+ return false;
217
+ }
218
+
219
+ $header = fgetcsv( $handle, 0, $this->delimiter, $this->enclosure );
220
+ if ( ! $header ) {
221
+ return false;
222
+ }
223
+
224
+ $this->header = array();
225
+ foreach ( $header as $rawItem ) {
226
+ $item = unserialize( $rawItem );
227
+ $column = new WOE_Formatter_Storage_Column();
228
+ $column->setKey( $item[0] );
229
+ $column->setMeta( $item[1] );
230
+ $this->header[] = $column;
231
+ }
232
+
233
+ $this->handle = $handle;
234
+
235
+ return true;
236
+ }
237
+
238
+ /**
239
+ * @return WOE_Formatter_Storage_Row|null
240
+ */
241
+ public function getNextRow() {
242
+ if ( ! $this->handle ) {
243
+ return null;
244
+ }
245
+
246
+ $rawRow = fgetcsv( $this->handle, 0, $this->delimiter, $this->enclosure );
247
+
248
+ if ( ! $rawRow ) {
249
+ return null;
250
+ }
251
+
252
+ $row = array_map( 'unserialize', $rawRow );
253
+ $rowObj = new WOE_Formatter_Storage_Row();
254
+ $rowObj->setKey( $row[0] );
255
+ $rowObj->setMeta( $row[1] );
256
+ $rowObj->setData( $row[2] );
257
+
258
+ return $rowObj;
259
+ }
260
+
261
+ public function close() {
262
+ if( $this->handle ) {
263
+ fclose( $this->handle );
264
+ $this->handle = null;
265
+ }
266
+ }
267
+
268
+ public function processDataForPreview($rows)
269
+ {
270
+ return $rows;
271
+ }
272
+ }
classes/formats/storage/class-woe-formatter-storage-row.php ADDED
@@ -0,0 +1,100 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ if ( ! defined( 'ABSPATH' ) ) {
3
+ exit; // Exit if accessed directly
4
+ }
5
+
6
+ class WOE_Formatter_Storage_Row {
7
+ /**
8
+ * @var int
9
+ */
10
+ protected $key;
11
+
12
+ /**
13
+ * @var array
14
+ */
15
+ protected $data;
16
+
17
+ /**
18
+ * @var array<string, mixed>
19
+ */
20
+ protected $meta;
21
+
22
+ public function __construct() {
23
+ $this->key = 0;
24
+ $this->data = array();
25
+ $this->meta = array();
26
+ }
27
+
28
+ /**
29
+ * @param int|string $key
30
+ */
31
+ public function setKey( $key ) {
32
+ if ( is_int( $key ) || is_string( $key ) ) { //summary customers use string keys
33
+ $this->key = $key;
34
+ }
35
+ }
36
+
37
+ /**
38
+ * @param array $data
39
+ */
40
+ public function setData( $data ) {
41
+ if ( is_array( $data ) ) {
42
+ $this->data = $data;
43
+ }
44
+ }
45
+
46
+ /**
47
+ * @param array $meta
48
+ */
49
+ public function setMeta( $meta ) {
50
+ if ( is_array( $meta ) ) {
51
+ $this->meta = array();
52
+
53
+ foreach ( $meta as $key => $item ) {
54
+ if ( is_string( $key ) ) {
55
+ $this->meta[ $key ] = $item;
56
+ }
57
+ }
58
+ }
59
+ }
60
+
61
+ /**
62
+ * @param string $key
63
+ * @param mixed $value
64
+ */
65
+ public function setMetaItem( $key, $value ) {
66
+ if ( is_string( $key ) ) {
67
+ $this->meta[ $key ] = $value;
68
+ }
69
+ }
70
+
71
+ /**
72
+ * @return int
73
+ */
74
+ public function getKey() {
75
+ return $this->key;
76
+ }
77
+
78
+ /**
79
+ * @return array
80
+ */
81
+ public function getData() {
82
+ return $this->data;
83
+ }
84
+
85
+ /**
86
+ * @return array<int, mixed>
87
+ */
88
+ public function getMeta() {
89
+ return $this->meta;
90
+ }
91
+
92
+ /**
93
+ * @param string
94
+ *
95
+ * @return mixed|null
96
+ */
97
+ public function getMetaItem( $key ) {
98
+ return is_string( $key ) && isset( $this->meta[ $key ] ) ? $this->meta[ $key ] : null;
99
+ }
100
+ }
classes/formats/storage/class-woe-formatter-storage-summary-session.php ADDED
@@ -0,0 +1,159 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ if ( ! defined( 'ABSPATH' ) ) {
3
+ exit; // Exit if accessed directly
4
+ }
5
+
6
+ class WOE_Formatter_Storage_Summary_Session implements WOE_Formatter_Storage {
7
+ const SUMMARY_PRODUCTS_KEY = 'woe_summary_products';
8
+ const SUMMARY_CUSTOMERS_KEY = 'woe_summary_customers';
9
+
10
+ private $summaryProducts = false;
11
+ private $summaryCustomers = false;
12
+ private $summaryKey;
13
+
14
+ /**
15
+ * @var array<int, WOE_Formatter_Storage_Column>
16
+ */
17
+ protected $header;
18
+
19
+ public function __construct($summaryKey)
20
+ {
21
+ $this->summaryKey = $summaryKey;
22
+ if ($this->summaryKey == self::SUMMARY_PRODUCTS_KEY) {
23
+ $this->summaryProducts = true;
24
+ } else if ($this->summaryKey == self::SUMMARY_CUSTOMERS_KEY) {
25
+ $this->summaryCustomers = true;
26
+ }
27
+ self::checkCreateSession();
28
+ }
29
+
30
+ private static function checkCreateSession() {
31
+ if ( ! session_id() ) {
32
+ @session_start();
33
+ }
34
+ }
35
+
36
+ public function load() {
37
+ if (!isset($_SESSION[$this->summaryKey . '_header'])) {
38
+ return;
39
+ }
40
+ $header = $_SESSION[$this->summaryKey . '_header'];
41
+ $this->header = array();
42
+
43
+ foreach ($header as $item) {
44
+ $column = new WOE_Formatter_Storage_Column();
45
+ $column->setKey($item['key']);
46
+ $column->setMeta($item['meta']);
47
+ $this->header[] = $column;
48
+ }
49
+ }
50
+
51
+ public function getColumns()
52
+ {
53
+ return $this->header;
54
+ }
55
+
56
+ public function insertColumn( $column ) {
57
+ if ( $column instanceof WOE_Formatter_Storage_Column ) {
58
+ $this->header[] = $column;
59
+ }
60
+ }
61
+
62
+ public function saveHeader()
63
+ {
64
+ $rawHeader = array();
65
+ foreach($this->header as $column) {
66
+ $rawHeader[] = array('key' => $column->getKey(), 'meta' => $column->getMeta());
67
+ }
68
+ $_SESSION[$this->summaryKey . '_header'] = $rawHeader;
69
+ }
70
+
71
+ public function close() {}
72
+
73
+ public function initRowIterator() {
74
+ $this->sortByName();
75
+ do_action('woe_summary_before_output');
76
+ reset($_SESSION[$this->summaryKey]);
77
+ }
78
+
79
+ public function getNextRow() {
80
+ $row = current($_SESSION[$this->summaryKey]);
81
+ if (!$row) { //all rows were returned
82
+ unset($_SESSION[$this->summaryKey . '_header']);
83
+ unset($_SESSION[$this->summaryKey]);
84
+ return $row;
85
+ }
86
+
87
+ $meta = $row['woe_internal_meta'];
88
+ unset($row['woe_internal_meta']);
89
+
90
+ $rowObj = new WOE_Formatter_Storage_Row();
91
+ $rowObj->setKey(key($_SESSION[$this->summaryKey]));
92
+ $rowObj->setMeta($meta);
93
+ $rowObj->setData($row);
94
+
95
+ next($_SESSION[$this->summaryKey]);
96
+
97
+ return $rowObj;
98
+ }
99
+
100
+ /**
101
+ * @return WOE_Formatter_Storage_Row
102
+ */
103
+ public function getRow($key) {
104
+ if(!isset($_SESSION[$this->summaryKey][$key])) {
105
+ return null;
106
+ }
107
+
108
+ $row = $_SESSION[$this->summaryKey][$key];
109
+
110
+ $meta = $row['woe_internal_meta'];
111
+ unset($row['woe_internal_meta']);
112
+
113
+ $rowObj = new WOE_Formatter_Storage_Row();
114
+ $rowObj->setKey($key);
115
+ $rowObj->setMeta($meta);
116
+ $rowObj->setData($row);
117
+
118
+ return $rowObj;
119
+ }
120
+
121
+ /**
122
+ * @param WOE_Formatter_Storage_Row $rowObj
123
+ */
124
+ public function setRow($rowObj) {
125
+ $key = $rowObj->getKey();
126
+ $row = $rowObj->getData();
127
+ $row['woe_internal_meta'] = $rowObj->getMeta();
128
+ $_SESSION[$this->summaryKey][$key] = $row;
129
+ }
130
+
131
+ public function processDataForPreview($rows) {
132
+ $this->sortByName();
133
+
134
+ do_action( 'woe_summary_before_output' );
135
+
136
+ foreach ($_SESSION[$this->summaryKey] as $row) {
137
+ unset($row['woe_internal_meta']);
138
+ $rows[] = $row;
139
+ }
140
+ // reset non-numerical indexes -- 0 will be bold in preview
141
+ $rows = array_values($rows);
142
+
143
+ unset($_SESSION[$this->summaryKey . '_header']);
144
+ unset($_SESSION[$this->summaryKey]);
145
+
146
+ return $rows;
147
+ }
148
+
149
+ public function insertRowAndSave($row) {}
150
+
151
+ private function sortByName() {
152
+ $first_row = array_column($_SESSION[$this->summaryKey . '_header'], 'key');
153
+ if ( in_array('product_name', $first_row) ) {
154
+ uasort( $_SESSION[$this->summaryKey], function ( $a, $b ) {
155
+ return strcasecmp( $a['product_name'], $b['product_name'] );
156
+ } );
157
+ }
158
+ }
159
+ }
classes/formats/storage/interface-woe-formatter-storage.php ADDED
@@ -0,0 +1,41 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ if ( ! defined( 'ABSPATH' ) ) {
3
+ exit; // Exit if accessed directly
4
+ }
5
+
6
+ interface WOE_Formatter_Storage {
7
+ /**
8
+ * @param WOE_Formatter_Storage_Column $column
9
+ */
10
+ public function insertColumn( $column );
11
+
12
+
13
+ /**
14
+ * @return array<int, WOE_Formatter_Storage_Column>
15
+ */
16
+ public function getColumns();
17
+
18
+ /**
19
+ * @param WOE_Formatter_Storage_Row $row
20
+ */
21
+ public function insertRowAndSave( $row );
22
+
23
+ public function saveHeader();
24
+
25
+ public function load();
26
+
27
+ /**
28
+ * @return WOE_Formatter_Storage_Row
29
+ */
30
+ public function getNextRow();
31
+
32
+ public function initRowIterator();
33
+
34
+ public function close();
35
+
36
+ /**
37
+ * @param array $rows
38
+ * @return array
39
+ */
40
+ public function processDataForPreview($rows);
41
+ }
i18n/languages/woo-order-export-lite.pot CHANGED
@@ -3,7 +3,7 @@ msgid ""
3
  msgstr ""
4
  "Project-Id-Version: Advanced Order Export For WooCommerce\n"
5
  "Report-Msgid-Bugs-To: \n"
6
- "POT-Creation-Date: 2021-06-21 05:00+0000\n"
7
  "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
8
  "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
9
  "Language-Team: \n"
@@ -13,7 +13,7 @@ msgstr ""
13
  "Content-Type: text/plain; charset=UTF-8\n"
14
  "Content-Transfer-Encoding: 8bit\n"
15
  "X-Generator: Loco https://localise.biz/\n"
16
- "X-Loco-Version: 2.5.2; wp-5.7.2\n"
17
  "X-Domain: woo-order-export-lite"
18
 
19
  #: classes/class-wc-order-export-admin.php:578
@@ -30,16 +30,16 @@ msgid_plural "%s orders unmarked."
30
  msgstr[0] ""
31
  msgstr[1] ""
32
 
33
- #: view/settings-form.php:46 view/settings-form.php:752
34
- #: view/settings-form.php:778
35
  msgid "-"
36
  msgstr ""
37
 
38
- #: view/settings-form.php:841
39
  msgid "- don't modify -"
40
  msgstr ""
41
 
42
- #: view/settings-form.php:591
43
  msgid "0 - auto scale"
44
  msgstr ""
45
 
@@ -47,11 +47,11 @@ msgstr ""
47
  msgid "1st row only"
48
  msgstr ""
49
 
50
- #: classes/core/class-wc-order-export-data-extractor.php:1894
51
  msgid "[Rest of the World]"
52
  msgstr ""
53
 
54
- #: view/settings-form.php:1617 view/settings-form.php:1628
55
  msgid "Actions"
56
  msgstr ""
57
 
@@ -64,51 +64,55 @@ msgstr ""
64
  msgid "Add %s fields"
65
  msgstr ""
66
 
67
- #: view/settings-form.php:1631
 
 
 
 
68
  msgid "Add fee"
69
  msgstr ""
70
 
71
- #: view/settings-form.php:1620
72
  msgid "Add field"
73
  msgstr ""
74
 
75
- #: view/settings-form.php:624 view/settings-form.php:717
76
  msgid "Add links to images"
77
  msgstr ""
78
 
79
- #: view/settings-form.php:1634
80
  msgid "Add shipping"
81
  msgstr ""
82
 
83
- #: view/settings-form.php:1623
84
  msgid "Add static field"
85
  msgstr ""
86
 
87
- #: view/settings-form.php:1637
88
  msgid "Add tax"
89
  msgstr ""
90
 
91
- #: classes/core/class-wc-order-export-data-extractor-ui.php:814
92
  msgid "Address 1 (Billing)"
93
  msgstr ""
94
 
95
- #: classes/core/class-wc-order-export-data-extractor-ui.php:904
96
  msgid "Address 1 (Shipping)"
97
  msgstr ""
98
 
99
- #: classes/core/class-wc-order-export-data-extractor-ui.php:809
100
  msgid "Address 1&2 (Billing)"
101
  msgstr ""
102
 
103
- #: classes/core/class-wc-order-export-data-extractor-ui.php:899
104
  msgid "Address 1&2 (Shipping)"
105
  msgstr ""
106
 
107
- #: classes/core/class-wc-order-export-data-extractor-ui.php:819
108
  msgid "Address 2 (Billing)"
109
  msgstr ""
110
 
111
- #: classes/core/class-wc-order-export-data-extractor-ui.php:909
112
  msgid "Address 2 (Shipping)"
113
  msgstr ""
114
 
@@ -134,11 +138,11 @@ msgstr ""
134
  msgid "all rows"
135
  msgstr ""
136
 
137
- #: view/settings-form.php:1348
138
  msgid "Any coupon used"
139
  msgstr ""
140
 
141
- #: view/settings-form.php:362
142
  msgid "Append XML"
143
  msgstr ""
144
 
@@ -150,20 +154,20 @@ msgstr ""
150
  msgid "as"
151
  msgstr ""
152
 
153
- #: view/settings-form.php:822
154
  msgid "Ascending"
155
  msgstr ""
156
 
157
- #: view/settings-form.php:266
158
  msgid "Auto column width"
159
  msgstr ""
160
 
161
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1326
162
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1350
163
  msgid "Billing Address"
164
  msgstr ""
165
 
166
- #: view/settings-form.php:1374
167
  msgid "Billing locations"
168
  msgstr ""
169
 
@@ -190,33 +194,35 @@ msgstr ""
190
  msgid "Can't create temporary file"
191
  msgstr ""
192
 
193
- #: classes/admin/tabs/ajax/trait-wc-order-export-ajax-helpers.php:118
194
  msgid "Can't find exported file"
195
  msgstr ""
196
 
197
- #: view/settings-form.php:1674 view/settings-form.php:1695
198
- #: view/settings-form.php:1731 view/settings-form.php:1771
199
- #: view/settings-form.php:1793 view/settings-form.php:1824
200
- #: view/settings-form.php:1846 view/settings-form.php:1872
201
- #: view/settings-form.php:1895 view/settings-form.php:1917
202
- #: view/settings-form.php:1939 view/settings-form.php:1961
 
 
203
  msgid "Cancel"
204
  msgstr ""
205
 
206
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1332
207
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1357
208
  msgid "Cart"
209
  msgstr ""
210
 
211
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1155
212
  msgid "Cart Discount Amount"
213
  msgstr ""
214
 
215
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1160
216
  msgid "Cart Discount Amount Tax"
217
  msgstr ""
218
 
219
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1190
220
  msgid "Cart Tax Amount"
221
  msgstr ""
222
 
@@ -224,47 +230,51 @@ msgstr ""
224
  msgid "Category"
225
  msgstr ""
226
 
227
- #: view/settings-form.php:478
228
  msgid "Center align"
229
  msgstr ""
230
 
231
- #: view/settings-form.php:836
232
  msgid "Change order status to"
233
  msgstr ""
234
 
235
- #: view/settings-form.php:331 view/settings-form.php:420
236
  msgid "Character encoding"
237
  msgstr ""
238
 
239
- #: classes/core/class-wc-order-export-data-extractor-ui.php:824
 
 
 
 
240
  msgid "City (Billing)"
241
  msgstr ""
242
 
243
- #: classes/core/class-wc-order-export-data-extractor-ui.php:914
244
  msgid "City (Shipping)"
245
  msgstr ""
246
 
247
- #: classes/core/class-wc-order-export-data-extractor-ui.php:839
248
  msgid "City, State Zip (Billing)"
249
  msgstr ""
250
 
251
- #: classes/core/class-wc-order-export-data-extractor-ui.php:929
252
  msgid "City, State Zip (Shipping)"
253
  msgstr ""
254
 
255
- #: classes/core/class-wc-order-export-data-extractor-ui.php:834
256
  msgid "City, State, Zip (Billing)"
257
  msgstr ""
258
 
259
- #: classes/core/class-wc-order-export-data-extractor-ui.php:924
260
  msgid "City, State, Zip (Shipping)"
261
  msgstr ""
262
 
263
- #: view/settings-form.php:890
264
  msgid "Cleanup phone (export only digits)"
265
  msgstr ""
266
 
267
- #: view/settings-form.php:2046
268
  msgid "Click here to download"
269
  msgstr ""
270
 
@@ -272,12 +282,12 @@ msgstr ""
272
  msgid "code snippets"
273
  msgstr ""
274
 
275
- #: view/settings-form.php:1664 view/settings-form.php:1680
276
- #: view/settings-form.php:1721 view/settings-form.php:1763
277
- #: view/settings-form.php:1777 view/settings-form.php:1816
278
- #: view/settings-form.php:1830 view/settings-form.php:1863
279
- #: view/settings-form.php:1878 view/settings-form.php:1907
280
- #: view/settings-form.php:1929 view/settings-form.php:1951
281
  msgid "Column name"
282
  msgstr ""
283
 
@@ -285,54 +295,56 @@ msgstr ""
285
  msgid "columns"
286
  msgstr ""
287
 
288
- #: view/settings-form.php:651
289
  msgid "Columns align"
290
  msgstr ""
291
 
292
- #: view/settings-form.php:507
293
  msgid "Columns horizontal align"
294
  msgstr ""
295
 
296
- #: view/settings-form.php:518
297
  msgid "Columns vertical align"
298
  msgstr ""
299
 
300
- #: view/settings-form.php:497
301
  msgid "Columns width"
302
  msgstr ""
303
 
304
- #: view/settings-form.php:498 view/settings-form.php:652
305
  msgid "comma separated list"
306
  msgstr ""
307
 
308
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1324
309
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1348
310
  msgid "Common"
311
  msgstr ""
312
 
313
- #: classes/core/class-wc-order-export-data-extractor-ui.php:804
314
  msgid "Company (Billing)"
315
  msgstr ""
316
 
317
- #: classes/core/class-wc-order-export-data-extractor-ui.php:894
318
  msgid "Company (Shipping)"
319
  msgstr ""
320
 
321
  #: view/settings-form.php:167
322
- #: classes/core/class-wc-order-export-data-extractor-ui.php:639
323
  msgid "Completed Date"
324
  msgstr ""
325
 
326
- #: view/settings-form.php:1672 view/settings-form.php:1693
327
- #: view/settings-form.php:1729 view/settings-form.php:1769
328
- #: view/settings-form.php:1791 view/settings-form.php:1822
329
- #: view/settings-form.php:1844 view/settings-form.php:1870
330
- #: view/settings-form.php:1892 view/settings-form.php:1914
331
- #: view/settings-form.php:1936 view/settings-form.php:1958
 
 
332
  msgid "Confirm"
333
  msgstr ""
334
 
335
- #: view/settings-form.php:312
336
  msgid "Convert line breaks to literals"
337
  msgstr ""
338
 
@@ -342,19 +354,23 @@ msgid ""
342
  "install."
343
  msgstr ""
344
 
345
- #: classes/core/class-wc-order-export-data-extractor-ui.php:854
 
 
 
 
346
  msgid "Country Code (Billing)"
347
  msgstr ""
348
 
349
- #: classes/core/class-wc-order-export-data-extractor-ui.php:944
350
  msgid "Country Code (Shipping)"
351
  msgstr ""
352
 
353
- #: classes/core/class-wc-order-export-data-extractor-ui.php:859
354
  msgid "Country Name (Billing)"
355
  msgstr ""
356
 
357
- #: classes/core/class-wc-order-export-data-extractor-ui.php:949
358
  msgid "Country Name (Shipping)"
359
  msgstr ""
360
 
@@ -370,7 +386,7 @@ msgstr ""
370
  msgid "Coupon Description"
371
  msgstr ""
372
 
373
- #: view/settings-form.php:359
374
  msgid "Coupon tag"
375
  msgstr ""
376
 
@@ -378,11 +394,11 @@ msgstr ""
378
  msgid "Coupon Type"
379
  msgstr ""
380
 
381
- #: view/settings-form.php:1351
382
- #: classes/admin/class-wc-order-export-manage.php:727
383
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1129
384
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1330
385
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1355
386
  msgid "Coupons"
387
  msgstr ""
388
 
@@ -390,77 +406,77 @@ msgstr ""
390
  msgid "coupons"
391
  msgstr ""
392
 
393
- #: view/settings-form.php:290
394
  msgid "CSV options"
395
  msgstr ""
396
 
397
- #: classes/core/class-wc-order-export-data-extractor-ui.php:634
398
  msgid "Currency"
399
  msgstr ""
400
 
401
- #: view/settings-form.php:756 view/settings-form.php:782
402
  msgid "custom"
403
  msgstr ""
404
 
405
- #: view/settings-form.php:728
406
  msgid "Custom css"
407
  msgstr ""
408
 
409
- #: view/settings-form.php:988 view/settings-form.php:1299
410
  msgid "Custom fields"
411
  msgstr ""
412
 
413
- #: view/settings-form.php:914
414
  msgid "Custom PHP code to modify output"
415
  msgstr ""
416
 
417
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1325
418
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1349
419
  msgid "Customer"
420
  msgstr ""
421
 
422
- #: classes/core/class-wc-order-export-data-extractor-ui.php:714
423
  msgid "Customer first order date"
424
  msgstr ""
425
 
426
- #: classes/core/class-wc-order-export-data-extractor-ui.php:674
427
  msgid "Customer IP address"
428
  msgstr ""
429
 
430
- #: classes/core/class-wc-order-export-data-extractor-ui.php:719
431
  msgid "Customer last order date"
432
  msgstr ""
433
 
434
- #: classes/core/class-wc-order-export-data-extractor-ui.php:654
435
  msgid "Customer Note"
436
  msgstr ""
437
 
438
- #: classes/core/class-wc-order-export-data-extractor-ui.php:699
439
  msgid "Customer Role"
440
  msgstr ""
441
 
442
- #: classes/core/class-wc-order-export-data-extractor-ui.php:704
443
  msgid "Customer Total Orders"
444
  msgstr ""
445
 
446
- #: classes/core/class-wc-order-export-data-extractor-ui.php:709
447
  msgid "Customer Total Spent"
448
  msgstr ""
449
 
450
- #: classes/core/class-wc-order-export-data-extractor-ui.php:694
451
  msgid "Customer User Email"
452
  msgstr ""
453
 
454
- #: classes/core/class-wc-order-export-data-extractor-ui.php:679
455
  msgid "Customer User ID"
456
  msgstr ""
457
 
458
- #: classes/core/class-wc-order-export-data-extractor-ui.php:684
459
  msgid "Customer Username"
460
  msgstr ""
461
 
462
- #: view/settings-form.php:738
463
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1382
464
  msgid "Date"
465
  msgstr ""
466
 
@@ -468,15 +484,19 @@ msgstr ""
468
  msgid "Date From is greater than Date To"
469
  msgstr ""
470
 
471
- #: classes/core/class-wc-order-export-data-extractor-ui.php:649
472
  msgid "Date of first refund"
473
  msgstr ""
474
 
 
 
 
 
475
  #: view/settings-form.php:175
476
  msgid "Date range"
477
  msgstr ""
478
 
479
- #: view/settings-form.php:820
480
  msgid "Descending"
481
  msgstr ""
482
 
@@ -500,15 +520,15 @@ msgstr ""
500
  msgid "Docs"
501
  msgstr ""
502
 
503
- #: view/settings-form.php:396
504
  msgid "Don't encode unicode chars"
505
  msgstr ""
506
 
507
- #: view/settings-form.php:386
508
  msgid "Don't escape /"
509
  msgstr ""
510
 
511
- #: view/settings-form.php:949
512
  msgid "Don't export child orders"
513
  msgstr ""
514
 
@@ -519,11 +539,11 @@ msgid ""
519
  "reduce reply time :)"
520
  msgstr ""
521
 
522
- #: classes/core/class-wc-order-export-engine.php:370
523
  msgid "Don't Panic"
524
  msgstr ""
525
 
526
- #: view/settings-form.php:616
527
  msgid "Don't put page break between order lines"
528
  msgstr ""
529
 
@@ -531,15 +551,15 @@ msgstr ""
531
  msgid "Download URL"
532
  msgstr ""
533
 
534
- #: view/settings-form.php:1578
535
  msgid "Drag rows to reorder exported fields"
536
  msgstr ""
537
 
538
- #: classes/core/class-wc-order-export-order-fields.php:411
539
  msgid "Edit order"
540
  msgstr ""
541
 
542
- #: classes/core/class-wc-order-export-data-extractor-ui.php:864
543
  msgid "Email (Billing)"
544
  msgstr ""
545
 
@@ -568,39 +588,39 @@ msgstr ""
568
  msgid "empty value"
569
  msgstr ""
570
 
571
- #: view/settings-form.php:908
572
  msgid "Enable debug output"
573
  msgstr ""
574
 
575
- #: view/settings-form.php:318
576
  msgid "Enclosure"
577
  msgstr ""
578
 
579
- #: view/settings-form.php:391
580
  msgid "Encode numeric strings as numbers"
581
  msgstr ""
582
 
583
- #: view/settings-form.php:381
584
  msgid "End tag"
585
  msgstr ""
586
 
587
- #: view/settings-form.php:1248
588
  msgid "Exclude products"
589
  msgstr ""
590
 
591
- #: view/settings-form.php:2015
592
  msgid "Export"
593
  msgstr ""
594
 
595
- #: view/settings-form.php:2019
596
  msgid "Export [w/o progressbar]"
597
  msgstr ""
598
 
599
- #: view/settings-form.php:866
600
  msgid "Export all order notes"
601
  msgstr ""
602
 
603
- #: view/settings-form.php:1040
604
  msgid "Export all products from the order"
605
  msgstr ""
606
 
@@ -609,7 +629,7 @@ msgstr ""
609
  msgid "Export as %s"
610
  msgstr ""
611
 
612
- #: view/settings-form.php:254
613
  msgid "Export as .xls (Binary File Format)"
614
  msgstr ""
615
 
@@ -627,7 +647,7 @@ msgstr ""
627
  msgid "Export now"
628
  msgstr ""
629
 
630
- #: view/settings-form.php:1474
631
  msgid "Export only matched product items"
632
  msgstr ""
633
 
@@ -642,11 +662,11 @@ msgstr ""
642
  msgid "Export orders from WooCommerce with ease (Excel/CSV/XML/JSON supported)"
643
  msgstr ""
644
 
645
- #: view/settings-form.php:872
646
  msgid "Export refund notes as Customer Note"
647
  msgstr ""
648
 
649
- #: view/settings-form.php:961
650
  msgid "Export refunds"
651
  msgstr ""
652
 
@@ -658,16 +678,16 @@ msgstr ""
658
  msgid "Export Status"
659
  msgstr ""
660
 
661
- #: view/settings-form.php:2031
662
  #, php-format
663
  msgid "Export total: %s orders"
664
  msgstr ""
665
 
666
- #: view/settings-form.php:972
667
  msgid "Export unmarked orders only"
668
  msgstr ""
669
 
670
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1113
671
  msgid "Exported items"
672
  msgstr ""
673
 
@@ -675,11 +695,11 @@ msgstr ""
675
  msgid "Express export"
676
  msgstr ""
677
 
678
- #: view/settings-form.php:1901
679
  msgid "Fee name"
680
  msgstr ""
681
 
682
- #: view/settings-form.php:322
683
  msgid "Field Delimiter"
684
  msgstr ""
685
 
@@ -691,27 +711,31 @@ msgstr ""
691
  msgid "Fill order columns for"
692
  msgstr ""
693
 
694
- #: view/settings-form.php:1369
695
  msgid "Filter by billing"
696
  msgstr ""
697
 
698
- #: view/settings-form.php:1342
699
  msgid "Filter by coupon"
700
  msgstr ""
701
 
702
- #: view/settings-form.php:1269
703
  msgid "Filter by customer"
704
  msgstr ""
705
 
706
- #: view/settings-form.php:1469
707
  msgid "Filter by item and metadata"
708
  msgstr ""
709
 
710
- #: view/settings-form.php:1035
 
 
 
 
711
  msgid "Filter by product"
712
  msgstr ""
713
 
714
- #: view/settings-form.php:1419
715
  msgid "Filter by shipping"
716
  msgstr ""
717
 
@@ -719,47 +743,47 @@ msgstr ""
719
  msgid "Filter orders by"
720
  msgstr ""
721
 
722
- #: classes/core/class-wc-order-export-data-extractor-ui.php:789
723
  msgid "First Name (Billing)"
724
  msgstr ""
725
 
726
- #: classes/core/class-wc-order-export-data-extractor-ui.php:879
727
  msgid "First Name (Shipping)"
728
  msgstr ""
729
 
730
- #: view/settings-form.php:512
731
  msgid "Fit table to page width"
732
  msgstr ""
733
 
734
- #: view/settings-form.php:468 view/settings-form.php:645
735
  msgid "Font size"
736
  msgstr ""
737
 
738
- #: view/settings-form.php:661
739
  msgid "Footer text"
740
  msgstr ""
741
 
742
- #: view/settings-form.php:693
743
  msgid "Footer text color"
744
  msgstr ""
745
 
746
- #: view/settings-form.php:308
747
  msgid "Force enclosure for all values"
748
  msgstr ""
749
 
750
- #: view/settings-form.php:274
751
  msgid "Force general format for all cells"
752
  msgstr ""
753
 
754
- #: view/settings-form.php:228
755
  msgid "Format"
756
  msgstr ""
757
 
758
- #: view/settings-form.php:860
759
  msgid "Format numbers (use WC decimal separator)"
760
  msgstr ""
761
 
762
- #: view/settings-form.php:370
763
  msgid "Format output"
764
  msgstr ""
765
 
@@ -767,11 +791,11 @@ msgstr ""
767
  msgid "Fri"
768
  msgstr ""
769
 
770
- #: classes/core/class-wc-order-export-data-extractor-ui.php:799
771
  msgid "Full Name (Billing)"
772
  msgstr ""
773
 
774
- #: classes/core/class-wc-order-export-data-extractor-ui.php:889
775
  msgid "Full Name (Shipping)"
776
  msgstr ""
777
 
@@ -779,6 +803,10 @@ msgstr ""
779
  msgid "Full names for categories"
780
  msgstr ""
781
 
 
 
 
 
782
  #: classes/class-wc-order-export-admin.php:303
783
  msgid "Grouping by coupon"
784
  msgstr ""
@@ -787,11 +815,11 @@ msgstr ""
787
  msgid "Grouping by product"
788
  msgstr ""
789
 
790
- #: view/settings-form.php:656
791
  msgid "Header text"
792
  msgstr ""
793
 
794
- #: view/settings-form.php:688
795
  msgid "Header text color"
796
  msgstr ""
797
 
@@ -807,13 +835,13 @@ msgstr ""
807
  msgid "helpdesk system"
808
  msgstr ""
809
 
810
- #: view/settings-form.php:1660 view/settings-form.php:1717
811
- #: view/settings-form.php:1747 view/settings-form.php:1811
812
- #: view/settings-form.php:1854
813
  msgid "Hide unused fields"
814
  msgstr ""
815
 
816
- #: view/settings-form.php:629
817
  msgid "Html options"
818
  msgstr ""
819
 
@@ -821,7 +849,7 @@ msgstr ""
821
  msgid "https://algolplus.com/"
822
  msgstr ""
823
 
824
- #: view/settings-form.php:1995
825
  #, php-format
826
  msgid ""
827
  "If you see this message after page load, user interface won't work correctly!"
@@ -829,7 +857,7 @@ msgid ""
829
  "it). Probably, it's a conflict with another plugin or active theme."
830
  msgstr ""
831
 
832
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1383
833
  msgid "Image"
834
  msgstr ""
835
 
@@ -837,13 +865,13 @@ msgstr ""
837
  msgid "Image URL"
838
  msgstr ""
839
 
840
- #: view/settings-form.php:284 view/settings-form.php:605
841
- #: view/settings-form.php:706
842
  msgid "Images height"
843
  msgstr ""
844
 
845
- #: view/settings-form.php:277 view/settings-form.php:598
846
- #: view/settings-form.php:699
847
  msgid "Images width"
848
  msgstr ""
849
 
@@ -855,71 +883,71 @@ msgstr ""
855
  msgid "Import settings"
856
  msgstr ""
857
 
858
- #: view/settings-form.php:2020
859
  msgid "It might not work for huge datasets!"
860
  msgstr ""
861
 
862
- #: classes/core/class-wc-order-export-data-extractor-ui.php:976
863
  msgid "Item #"
864
  msgstr ""
865
 
866
- #: classes/core/class-wc-order-export-data-extractor-ui.php:996
867
  msgid "Item Cost"
868
  msgstr ""
869
 
870
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1001
871
  msgid "Item Cost (inc. tax)"
872
  msgstr ""
873
 
874
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1006
875
  msgid "Item Cost Before Discount"
876
  msgstr ""
877
 
878
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1061
879
  msgid "Item Discount Amount"
880
  msgstr ""
881
 
882
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1086
883
  msgid "Item Discount Amount + Tax"
884
  msgstr ""
885
 
886
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1081
887
  msgid "Item Discount Tax"
888
  msgstr ""
889
 
890
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1071
891
  msgid "Item download URL"
892
  msgstr ""
893
 
894
- #: classes/core/class-wc-order-export-data-extractor-ui.php:971
895
  msgid "Item ID"
896
  msgstr ""
897
 
898
- #: view/settings-form.php:1212
899
  msgid "Item meta data"
900
  msgstr ""
901
 
902
- #: view/settings-form.php:1511
903
  msgid "Item metadata"
904
  msgstr ""
905
 
906
- #: classes/core/class-wc-order-export-data-extractor-ui.php:981
907
  msgid "Item Name"
908
  msgstr ""
909
 
910
- #: view/settings-form.php:1478
911
  msgid "Item names"
912
  msgstr ""
913
 
914
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1066
915
  msgid "Item Tax Rate"
916
  msgstr ""
917
 
918
- #: view/settings-form.php:884
919
  msgid "Item Tax Rate as an integer"
920
  msgstr ""
921
 
922
- #: view/settings-form.php:376
923
  msgid "JSON options"
924
  msgstr ""
925
 
@@ -927,27 +955,44 @@ msgstr ""
927
  msgid "Just click inside the textarea and copy (Ctrl+C)"
928
  msgstr ""
929
 
930
- #: view/settings-form.php:508
931
  msgid "L,C or R. Comma separated list"
932
  msgstr ""
933
 
934
- #: classes/core/class-wc-order-export-data-extractor-ui.php:794
 
 
 
 
 
 
 
 
 
935
  msgid "Last Name (Billing)"
936
  msgstr ""
937
 
938
- #: classes/core/class-wc-order-export-data-extractor-ui.php:884
939
  msgid "Last Name (Shipping)"
940
  msgstr ""
941
 
942
- #: view/settings-form.php:477
943
  msgid "Left align"
944
  msgstr ""
945
 
 
 
 
 
946
  #: classes/core/class-wc-order-export-data-extractor-ui.php:418
947
  msgid "Length"
948
  msgstr ""
949
 
950
- #: view/settings-form.php:326 view/settings-form.php:415
 
 
 
 
951
  msgid "Line Break"
952
  msgstr ""
953
 
@@ -955,23 +1000,23 @@ msgstr ""
955
  msgid "Line number"
956
  msgstr ""
957
 
958
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1384
959
  msgid "Link"
960
  msgstr ""
961
 
962
- #: classes/core/class-wc-order-export-data-extractor-ui.php:664
963
  msgid "Link to edit order"
964
  msgstr ""
965
 
966
- #: view/settings-form.php:576
967
  msgid "Logo align"
968
  msgstr ""
969
 
970
- #: view/settings-form.php:584
971
  msgid "Logo height"
972
  msgstr ""
973
 
974
- #: view/settings-form.php:590
975
  msgid "Logo width"
976
  msgstr ""
977
 
@@ -981,7 +1026,7 @@ msgid ""
981
  "Look at %s for popular plugins or check %s to study how to extend the plugin."
982
  msgstr ""
983
 
984
- #: classes/core/class-wc-order-export-engine.php:509
985
  msgid "Main SQL queries are listed below"
986
  msgstr ""
987
 
@@ -989,25 +1034,26 @@ msgstr ""
989
  msgid "Mark exported"
990
  msgstr ""
991
 
992
- #: view/settings-form.php:968
993
  msgid "Mark exported orders"
994
  msgstr ""
995
 
996
- #: view/settings-form.php:1644 view/settings-form.php:1701
997
- #: view/settings-form.php:1851
 
998
  msgid "Meta key"
999
  msgstr ""
1000
 
1001
- #: view/settings-form.php:2002
1002
  msgid "Might be different from actual export!"
1003
  msgstr ""
1004
 
1005
- #: view/settings-form.php:854
1006
  msgid "Misc settings"
1007
  msgstr ""
1008
 
1009
- #: view/settings-form.php:153 view/settings-form.php:798
1010
- #: classes/core/class-wc-order-export-data-extractor-ui.php:624
1011
  msgid "Modification Date"
1012
  msgstr ""
1013
 
@@ -1015,7 +1061,7 @@ msgstr ""
1015
  msgid "Mon"
1016
  msgstr ""
1017
 
1018
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1380
1019
  msgid "Money"
1020
  msgstr ""
1021
 
@@ -1024,17 +1070,18 @@ msgstr ""
1024
  msgid "Need help? Create ticket in %s ."
1025
  msgstr ""
1026
 
1027
- #: view/settings-form.php:514
1028
  msgid "No"
1029
  msgstr ""
1030
 
1031
- #: view/settings-form.php:484
1032
  msgid "No page numbers"
1033
  msgstr ""
1034
 
 
1035
  #: classes/formats/class-woe-formatter-html.php:144
1036
  #: classes/formats/abstract-class-woe-formatter-sv.php:107
1037
- #: classes/formats/class-woe-formatter-xls.php:255
1038
  msgid "No results"
1039
  msgstr ""
1040
 
@@ -1043,15 +1090,15 @@ msgid "Non variation attributes"
1043
  msgstr ""
1044
 
1045
  #: classes/class-wc-order-export-admin.php:370
1046
- #: classes/admin/tabs/ajax/trait-wc-order-export-admin-tab-abstract-ajax-export.php:125
1047
  msgid "Nothing to export. Please, adjust your filters"
1048
  msgstr ""
1049
 
1050
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1381
1051
  msgid "Number"
1052
  msgstr ""
1053
 
1054
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1150
1055
  msgid "Number of coupons used"
1056
  msgstr ""
1057
 
@@ -1059,75 +1106,75 @@ msgstr ""
1059
  msgid "one row"
1060
  msgstr ""
1061
 
1062
- #: view/settings-form.php:1750
1063
  msgid "OR"
1064
  msgstr ""
1065
 
1066
- #: view/settings-form.php:1655 view/settings-form.php:1712
1067
- #: view/settings-form.php:1742 view/settings-form.php:1806
1068
- #: view/settings-form.php:1860
1069
  msgid "or type meta key here"
1070
  msgstr ""
1071
 
1072
- #: view/settings-form.php:146 view/settings-form.php:797
1073
  #: classes/core/class-wc-order-export-data-extractor-ui.php:619
1074
  msgid "Order Date"
1075
  msgstr ""
1076
 
1077
- #: view/settings-form.php:796
1078
  #: classes/core/class-wc-order-export-data-extractor-ui.php:604
1079
  msgid "Order ID"
1080
  msgstr ""
1081
 
1082
- #: view/settings-form.php:1800
1083
  msgid "Order item fields"
1084
  msgstr ""
1085
 
1086
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1076
1087
  msgid "Order Item Metadata"
1088
  msgstr ""
1089
 
1090
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1011
1091
  msgid "Order Line (w/o tax)"
1092
  msgstr ""
1093
 
1094
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1031
1095
  msgid "Order Line Subtotal"
1096
  msgstr ""
1097
 
1098
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1036
1099
  msgid "Order Line Subtotal Tax"
1100
  msgstr ""
1101
 
1102
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1016
1103
  msgid "Order Line Tax"
1104
  msgstr ""
1105
 
1106
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1026
1107
  msgid "Order Line Tax (- Refund)"
1108
  msgstr ""
1109
 
1110
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1021
1111
  msgid "Order Line Tax Refunded"
1112
  msgstr ""
1113
 
1114
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1041
1115
  msgid "Order Line Total"
1116
  msgstr ""
1117
 
1118
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1056
1119
  msgid "Order Line Total (- Refund)"
1120
  msgstr ""
1121
 
1122
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1046
1123
  msgid "Order Line Total (include tax)"
1124
  msgstr ""
1125
 
1126
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1051
1127
  msgid "Order Line Total Refunded"
1128
  msgstr ""
1129
 
1130
- #: classes/core/class-wc-order-export-data-extractor-ui.php:659
1131
  msgid "Order Notes"
1132
  msgstr ""
1133
 
@@ -1139,35 +1186,35 @@ msgstr ""
1139
  msgid "Order Refund"
1140
  msgstr ""
1141
 
1142
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1265
1143
  msgid "Order Refund Amount"
1144
  msgstr ""
1145
 
1146
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1225
1147
  msgid "Order Shipping + Tax Amount"
1148
  msgstr ""
1149
 
1150
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1220
1151
  msgid "Order Shipping Amount"
1152
  msgstr ""
1153
 
1154
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1235
1155
  msgid "Order Shipping Amount (- Refund)"
1156
  msgstr ""
1157
 
1158
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1230
1159
  msgid "Order Shipping Amount Refunded"
1160
  msgstr ""
1161
 
1162
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1240
1163
  msgid "Order Shipping Tax Amount"
1164
  msgstr ""
1165
 
1166
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1250
1167
  msgid "Order Shipping Tax Amount (- Refund)"
1168
  msgstr ""
1169
 
1170
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1245
1171
  msgid "Order Shipping Tax Refunded"
1172
  msgstr ""
1173
 
@@ -1175,11 +1222,11 @@ msgstr ""
1175
  msgid "Order Status"
1176
  msgstr ""
1177
 
1178
- #: view/settings-form.php:799
1179
  msgid "Order status"
1180
  msgstr ""
1181
 
1182
- #: view/settings-form.php:974
1183
  msgid "Order statuses"
1184
  msgstr ""
1185
 
@@ -1187,55 +1234,55 @@ msgstr ""
1187
  msgid "Order Subscription"
1188
  msgstr ""
1189
 
1190
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1175
1191
  msgid "Order Subtotal - Cart Discount"
1192
  msgstr ""
1193
 
1194
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1165
1195
  msgid "Order Subtotal Amount"
1196
  msgstr ""
1197
 
1198
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1185
1199
  msgid "Order Subtotal Amount (- Refund)"
1200
  msgstr ""
1201
 
1202
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1170
1203
  msgid "Order Subtotal Amount + Cart Tax"
1204
  msgstr ""
1205
 
1206
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1180
1207
  msgid "Order Subtotal Amount Refunded"
1208
  msgstr ""
1209
 
1210
- #: view/settings-form.php:353
1211
  msgid "Order tag"
1212
  msgstr ""
1213
 
1214
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1275
1215
  msgid "Order Total Amount"
1216
  msgstr ""
1217
 
1218
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1270
1219
  msgid "Order Total Amount (- Refund)"
1220
  msgstr ""
1221
 
1222
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1280
1223
  msgid "Order Total Amount without Tax"
1224
  msgstr ""
1225
 
1226
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1260
1227
  msgid "Order Total Fee"
1228
  msgstr ""
1229
 
1230
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1285
1231
  msgid "Order Total Tax Amount"
1232
  msgstr ""
1233
 
1234
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1295
1235
  msgid "Order Total Tax Amount (- Refund)"
1236
  msgstr ""
1237
 
1238
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1290
1239
  msgid "Order Total Tax Amount Refunded"
1240
  msgstr ""
1241
 
@@ -1244,7 +1291,7 @@ msgid "Order Type"
1244
  msgstr ""
1245
 
1246
  #: classes/admin/class-wc-order-export-manage.php:250
1247
- #: classes/formats/class-woe-formatter-xls.php:135
1248
  msgid "Orders"
1249
  msgstr ""
1250
 
@@ -1252,27 +1299,27 @@ msgstr ""
1252
  msgid "Orders range"
1253
  msgstr ""
1254
 
1255
- #: view/settings-form.php:450
1256
  msgid "Orientation"
1257
  msgstr ""
1258
 
1259
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1331
1260
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1356
1261
  msgid "Other items"
1262
  msgstr ""
1263
 
1264
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1335
1265
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1360
1266
  msgid "Others"
1267
  msgstr ""
1268
 
1269
- #: view/settings-form.php:262 view/settings-form.php:304
1270
- #: view/settings-form.php:410 view/settings-form.php:434
1271
- #: view/settings-form.php:635
1272
  msgid "Output column titles as first line"
1273
  msgstr ""
1274
 
1275
- #: view/settings-form.php:300 view/settings-form.php:406
1276
  msgid "Output UTF-8 BOM"
1277
  msgstr ""
1278
 
@@ -1281,32 +1328,32 @@ msgstr ""
1281
  msgid "Page %s / %s"
1282
  msgstr ""
1283
 
1284
- #: view/settings-form.php:502
1285
  msgid "Page footer text"
1286
  msgstr ""
1287
 
1288
- #: view/settings-form.php:552
1289
  msgid "Page footer text color"
1290
  msgstr ""
1291
 
1292
- #: view/settings-form.php:492
1293
  msgid "Page header text"
1294
  msgstr ""
1295
 
1296
- #: view/settings-form.php:547
1297
  msgid "Page header text color"
1298
  msgstr ""
1299
 
1300
- #: view/settings-form.php:474
1301
  msgid "Page numbers"
1302
  msgstr ""
1303
 
1304
- #: view/settings-form.php:459
1305
  msgid "Page size"
1306
  msgstr ""
1307
 
1308
  #: view/settings-form.php:160
1309
- #: classes/core/class-wc-order-export-data-extractor-ui.php:644
1310
  msgid "Paid Date"
1311
  msgstr ""
1312
 
@@ -1316,27 +1363,27 @@ msgid ""
1316
  "install."
1317
  msgstr ""
1318
 
1319
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1145
1320
  msgid "Payment Method"
1321
  msgstr ""
1322
 
1323
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1140
1324
  msgid "Payment Method Title"
1325
  msgstr ""
1326
 
1327
- #: view/settings-form.php:1403
1328
  msgid "Payment methods"
1329
  msgstr ""
1330
 
1331
- #: view/settings-form.php:428
1332
  msgid "PDF options"
1333
  msgstr ""
1334
 
1335
- #: classes/core/class-wc-order-export-data-extractor-ui.php:869
1336
  msgid "Phone (Billing)"
1337
  msgstr ""
1338
 
1339
- #: view/settings-form.php:919
1340
  msgid ""
1341
  "Please check permissions for your role. You must have capability "
1342
  "“edit_themes” to use this box."
@@ -1348,17 +1395,17 @@ msgid ""
1348
  "Order Export For WooCommerce!"
1349
  msgstr ""
1350
 
1351
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1390
1352
  msgid "Please, choose the template"
1353
  msgstr ""
1354
 
1355
- #: view/settings-form.php:244
1356
  #: classes/admin/tabs/ajax/trait-wc-order-export-admin-tab-abstract-ajax-export.php:48
1357
  #: classes/admin/tabs/ajax/trait-wc-order-export-admin-tab-abstract-ajax-export.php:103
1358
  msgid "Please, install/enable PHP mbstring extension!"
1359
  msgstr ""
1360
 
1361
- #: view/settings-form.php:343
1362
  msgid "Please, install/enable PHP XML extension!"
1363
  msgstr ""
1364
 
@@ -1371,27 +1418,35 @@ msgstr ""
1371
  msgid "Please, set up fields to export"
1372
  msgstr ""
1373
 
1374
- #: classes/core/class-wc-order-export-data-extractor-ui.php:849
 
 
 
 
 
 
 
 
1375
  msgid "Postcode (Billing)"
1376
  msgstr ""
1377
 
1378
- #: classes/core/class-wc-order-export-data-extractor-ui.php:939
1379
  msgid "Postcode (Shipping)"
1380
  msgstr ""
1381
 
1382
- #: view/settings-form.php:347
1383
  msgid "Prepend XML"
1384
  msgstr ""
1385
 
1386
- #: view/settings-form.php:2045
1387
  msgid "Press 'Esc' to cancel the export"
1388
  msgstr ""
1389
 
1390
- #: view/settings-form.php:2001
1391
  msgid "Preview"
1392
  msgstr ""
1393
 
1394
- #: view/settings-form.php:2033
1395
  msgid "Preview size"
1396
  msgstr ""
1397
 
@@ -1400,7 +1455,7 @@ msgstr ""
1400
  msgid "Pro version"
1401
  msgstr ""
1402
 
1403
- #: view/settings-form.php:1046
1404
  msgid "Product categories"
1405
  msgstr ""
1406
 
@@ -1408,11 +1463,11 @@ msgstr ""
1408
  msgid "Product Current Price"
1409
  msgstr ""
1410
 
1411
- #: view/settings-form.php:1136
1412
  msgid "Product custom fields"
1413
  msgstr ""
1414
 
1415
- #: view/settings-form.php:1736
1416
  msgid "Product fields"
1417
  msgstr ""
1418
 
@@ -1428,11 +1483,11 @@ msgstr ""
1428
  msgid "Product Name (main)"
1429
  msgstr ""
1430
 
1431
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1353
1432
  msgid "Product order items"
1433
  msgstr ""
1434
 
1435
- #: view/settings-form.php:316 view/settings-form.php:414
1436
  msgid "Product rows start with a new line"
1437
  msgstr ""
1438
 
@@ -1444,20 +1499,20 @@ msgstr ""
1444
  msgid "Product Shipping Class"
1445
  msgstr ""
1446
 
1447
- #: view/settings-form.php:1095
1448
  msgid "Product SKU"
1449
  msgstr ""
1450
 
1451
- #: view/settings-form.php:356
1452
  msgid "Product tag"
1453
  msgstr ""
1454
 
1455
- #: view/settings-form.php:1101
1456
  msgid "Product taxonomies"
1457
  msgstr ""
1458
 
1459
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1329
1460
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1354
1461
  msgid "Product totals"
1462
  msgstr ""
1463
 
@@ -1469,11 +1524,11 @@ msgstr ""
1469
  msgid "Product Variation"
1470
  msgstr ""
1471
 
1472
- #: view/settings-form.php:1080
1473
- #: classes/admin/class-wc-order-export-manage.php:684
1474
- #: classes/core/class-wc-order-export-data-extractor-ui.php:960
1475
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1328
1476
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1352
1477
  msgid "Products"
1478
  msgstr ""
1479
 
@@ -1489,19 +1544,19 @@ msgstr ""
1489
  msgid "Profiles"
1490
  msgstr ""
1491
 
1492
- #: classes/core/class-wc-order-export-data-extractor-ui.php:986
1493
  msgid "Quantity"
1494
  msgstr ""
1495
 
1496
- #: classes/core/class-wc-order-export-data-extractor-ui.php:991
1497
  msgid "Quantity (- Refund)"
1498
  msgstr ""
1499
 
1500
- #: view/settings-form.php:924
1501
  msgid "Read how to fix it"
1502
  msgstr ""
1503
 
1504
- #: view/settings-form.php:1584
1505
  msgid "Remove all fields"
1506
  msgstr ""
1507
 
@@ -1509,23 +1564,31 @@ msgstr ""
1509
  msgid "Remove all fields?"
1510
  msgstr ""
1511
 
1512
- #: view/settings-form.php:573
 
 
 
 
 
 
 
 
1513
  msgid "Remove logo"
1514
  msgstr ""
1515
 
1516
- #: view/settings-form.php:441
1517
  msgid "repeat at each page"
1518
  msgstr ""
1519
 
1520
- #: view/settings-form.php:641
1521
  msgid "repeat header as last line"
1522
  msgstr ""
1523
 
1524
- #: view/settings-form.php:2027
1525
  msgid "Reset settings"
1526
  msgstr ""
1527
 
1528
- #: classes/core/class-wc-order-export-data-extractor.php:1903
1529
  msgid "Rest of the World"
1530
  msgstr ""
1531
 
@@ -1534,15 +1597,15 @@ msgstr ""
1534
  msgid "Result: %s"
1535
  msgstr ""
1536
 
1537
- #: view/settings-form.php:479
1538
  msgid "Right align"
1539
  msgstr ""
1540
 
1541
- #: view/settings-form.php:270 view/settings-form.php:447
1542
  msgid "Right-to-Left direction"
1543
  msgstr ""
1544
 
1545
- #: view/settings-form.php:350
1546
  msgid "Root tag"
1547
  msgstr ""
1548
 
@@ -1554,11 +1617,11 @@ msgstr ""
1554
  msgid "Sat"
1555
  msgstr ""
1556
 
1557
- #: view/settings-form.php:2008
1558
  msgid "Save & Exit"
1559
  msgstr ""
1560
 
1561
- #: view/settings-form.php:2005 view/settings-form.php:2010
1562
  msgid "Save settings"
1563
  msgstr ""
1564
 
@@ -1570,7 +1633,7 @@ msgstr ""
1570
  msgid "select item field"
1571
  msgstr ""
1572
 
1573
- #: view/settings-form.php:561
1574
  msgid "Select logo"
1575
  msgstr ""
1576
 
@@ -1578,7 +1641,7 @@ msgstr ""
1578
  msgid "select product field or taxonomy"
1579
  msgstr ""
1580
 
1581
- #: view/settings-form.php:365
1582
  msgid "Self closing tags"
1583
  msgstr ""
1584
 
@@ -1586,7 +1649,7 @@ msgstr ""
1586
  msgid "Set up coupon fields"
1587
  msgstr ""
1588
 
1589
- #: view/settings-form.php:1558
1590
  msgid "Set up fields to export"
1591
  msgstr ""
1592
 
@@ -1606,49 +1669,49 @@ msgstr ""
1606
  msgid "Settings saved"
1607
  msgstr ""
1608
 
1609
- #: view/settings-form.php:2040 view/tab/tools.php:86
1610
  msgid "Settings were successfully updated!"
1611
  msgstr ""
1612
 
1613
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1333
1614
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1358
1615
  msgid "Shipping"
1616
  msgstr ""
1617
 
1618
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1327
1619
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1351
1620
  msgid "Shipping Address"
1621
  msgstr ""
1622
 
1623
- #: view/settings-form.php:896
1624
  msgid "Shipping fields use billing details (if shipping address is empty)"
1625
  msgstr ""
1626
 
1627
- #: view/settings-form.php:1424
1628
  msgid "Shipping locations"
1629
  msgstr ""
1630
 
1631
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1205
1632
  msgid "Shipping Method"
1633
  msgstr ""
1634
 
1635
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1210
1636
  msgid "Shipping Method (no id)"
1637
  msgstr ""
1638
 
1639
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1200
1640
  msgid "Shipping Method Title"
1641
  msgstr ""
1642
 
1643
- #: view/settings-form.php:1453
1644
  msgid "Shipping methods"
1645
  msgstr ""
1646
 
1647
- #: view/settings-form.php:1923
1648
  msgid "Shipping name"
1649
  msgstr ""
1650
 
1651
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1215
1652
  msgid "Shipping Zone"
1653
  msgstr ""
1654
 
@@ -1656,7 +1719,7 @@ msgstr ""
1656
  msgid "Short Description"
1657
  msgstr ""
1658
 
1659
- #: view/settings-form.php:1044
1660
  msgid "Skip fully refunded items"
1661
  msgstr ""
1662
 
@@ -1668,7 +1731,7 @@ msgstr ""
1668
  msgid "SKU (parent)"
1669
  msgstr ""
1670
 
1671
- #: view/settings-form.php:827
1672
  #, php-format
1673
  msgid "Sort orders by %s in %s order"
1674
  msgstr ""
@@ -1677,23 +1740,27 @@ msgstr ""
1677
  msgid "Split values by"
1678
  msgstr ""
1679
 
1680
- #: view/settings-form.php:378
1681
  msgid "Start tag"
1682
  msgstr ""
1683
 
1684
- #: classes/core/class-wc-order-export-data-extractor-ui.php:829
 
 
 
 
1685
  msgid "State Code (Billing)"
1686
  msgstr ""
1687
 
1688
- #: classes/core/class-wc-order-export-data-extractor-ui.php:919
1689
  msgid "State Code (Shipping)"
1690
  msgstr ""
1691
 
1692
- #: classes/core/class-wc-order-export-data-extractor-ui.php:844
1693
  msgid "State Name (Billing)"
1694
  msgstr ""
1695
 
1696
- #: classes/core/class-wc-order-export-data-extractor-ui.php:934
1697
  msgid "State Name (Shipping)"
1698
  msgstr ""
1699
 
@@ -1709,11 +1776,11 @@ msgstr ""
1709
  msgid "Stock Status"
1710
  msgstr ""
1711
 
1712
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1379
1713
  msgid "String"
1714
  msgstr ""
1715
 
1716
- #: view/settings-form.php:878
1717
  msgid "Strip tags from Product Description/Variation"
1718
  msgstr ""
1719
 
@@ -1725,37 +1792,37 @@ msgstr ""
1725
  msgid "Summary Report By Products"
1726
  msgstr ""
1727
 
1728
- #: classes/core/class-wc-order-export-data-extractor-ui.php:739
1729
  msgid "Summary Report Sum of Items (Exported)"
1730
  msgstr ""
1731
 
1732
  #: classes/core/class-wc-order-export-data-extractor-ui.php:488
1733
- #: classes/core/class-wc-order-export-data-extractor-ui.php:744
1734
  msgid "Summary Report Total Amount"
1735
  msgstr ""
1736
 
1737
- #: classes/core/class-wc-order-export-data-extractor-ui.php:749
1738
  msgid "Summary Report Total Amount Paid"
1739
  msgstr ""
1740
 
1741
  #: classes/core/class-wc-order-export-data-extractor-ui.php:503
1742
- #: classes/core/class-wc-order-export-data-extractor-ui.php:759
1743
  msgid "Summary Report Total Discount"
1744
  msgstr ""
1745
 
1746
- #: classes/core/class-wc-order-export-data-extractor-ui.php:779
1747
  msgid "Summary Report Total Fee Amount"
1748
  msgstr ""
1749
 
1750
- #: classes/core/class-wc-order-export-data-extractor-ui.php:729
1751
  msgid "Summary Report Total Items"
1752
  msgstr ""
1753
 
1754
- #: classes/core/class-wc-order-export-data-extractor-ui.php:734
1755
  msgid "Summary Report Total Items (Exported)"
1756
  msgstr ""
1757
 
1758
- #: classes/core/class-wc-order-export-data-extractor-ui.php:724
1759
  msgid "Summary Report Total Orders"
1760
  msgstr ""
1761
 
@@ -1764,20 +1831,20 @@ msgid "Summary Report Total Quantity"
1764
  msgstr ""
1765
 
1766
  #: classes/core/class-wc-order-export-data-extractor-ui.php:513
1767
- #: classes/core/class-wc-order-export-data-extractor-ui.php:769
1768
  msgid "Summary Report Total Refund Amount"
1769
  msgstr ""
1770
 
1771
  #: classes/core/class-wc-order-export-data-extractor-ui.php:508
1772
- #: classes/core/class-wc-order-export-data-extractor-ui.php:764
1773
  msgid "Summary Report Total Refund Count"
1774
  msgstr ""
1775
 
1776
- #: classes/core/class-wc-order-export-data-extractor-ui.php:754
1777
  msgid "Summary Report Total Shipping"
1778
  msgstr ""
1779
 
1780
- #: classes/core/class-wc-order-export-data-extractor-ui.php:774
1781
  msgid "Summary Report Total Tax Amount"
1782
  msgstr ""
1783
 
@@ -1793,23 +1860,27 @@ msgstr ""
1793
  msgid "Support"
1794
  msgstr ""
1795
 
1796
- #: view/settings-form.php:519
 
 
 
 
1797
  msgid "T,C or B. Comma separated list"
1798
  msgstr ""
1799
 
1800
- #: view/settings-form.php:530 view/settings-form.php:671
1801
  msgid "Table header background color"
1802
  msgstr ""
1803
 
1804
- #: view/settings-form.php:525 view/settings-form.php:666
1805
  msgid "Table header text color"
1806
  msgstr ""
1807
 
1808
- #: view/settings-form.php:541 view/settings-form.php:682
1809
  msgid "Table row background color"
1810
  msgstr ""
1811
 
1812
- #: view/settings-form.php:536 view/settings-form.php:677
1813
  msgid "Table row text color"
1814
  msgstr ""
1815
 
@@ -1817,26 +1888,26 @@ msgstr ""
1817
  msgid "Tags"
1818
  msgstr ""
1819
 
1820
- #: view/settings-form.php:1945
1821
  msgid "Tax name"
1822
  msgstr ""
1823
 
1824
- #: view/settings-form.php:1752
1825
  msgid "Taxonomy"
1826
  msgstr ""
1827
 
1828
- #: classes/core/class-wc-order-export-engine.php:371
1829
  #, php-format
1830
  msgid "The code you are trying to save produced a fatal error on line %d:"
1831
  msgstr ""
1832
 
1833
- #: view/settings-form.php:1033
1834
  msgid ""
1835
  "The filters won't work correctly.<br>Another plugin(or theme) has loaded "
1836
  "outdated Select2.js"
1837
  msgstr ""
1838
 
1839
- #: view/settings-form.php:1642 view/settings-form.php:1798
1840
  msgid ""
1841
  "The plugin fetches meta keys from the existing orders. So you should create "
1842
  "fake order if you've added new field just now."
@@ -1852,7 +1923,7 @@ msgstr ""
1852
  msgid "This date range should not be saved in the scheduled task"
1853
  msgstr ""
1854
 
1855
- #: view/settings-form.php:730
1856
  msgid "This option cancels UI settings(above) and don't applied to Preview"
1857
  msgstr ""
1858
 
@@ -1870,7 +1941,7 @@ msgstr ""
1870
  msgid "Thu"
1871
  msgstr ""
1872
 
1873
- #: view/settings-form.php:765
1874
  msgid "Time"
1875
  msgstr ""
1876
 
@@ -1886,32 +1957,36 @@ msgstr ""
1886
  msgid "Tools"
1887
  msgstr ""
1888
 
1889
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1108
1890
  msgid "Total items"
1891
  msgstr ""
1892
 
1893
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1118
1894
  msgid "Total products"
1895
  msgstr ""
1896
 
1897
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1103
 
 
 
 
1898
  msgid "Total weight"
1899
  msgstr ""
1900
 
1901
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1334
1902
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1359
1903
  msgid "Totals"
1904
  msgstr ""
1905
 
1906
- #: classes/core/class-wc-order-export-data-extractor-ui.php:629
1907
  msgid "Transaction ID"
1908
  msgstr ""
1909
 
1910
- #: view/settings-form.php:902
1911
  msgid "Try to convert serialized values"
1912
  msgstr ""
1913
 
1914
- #: view/settings-form.php:398
1915
  msgid "TSV options"
1916
  msgstr ""
1917
 
@@ -1919,7 +1994,7 @@ msgstr ""
1919
  msgid "Tue"
1920
  msgstr ""
1921
 
1922
- #: view/settings-form.php:1571
1923
  msgid "Turn off mode Summary report to export order fields"
1924
  msgstr ""
1925
 
@@ -1941,23 +2016,23 @@ msgstr ""
1941
  msgid "Unmark exported"
1942
  msgstr ""
1943
 
1944
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1367
1945
  msgid "Use \"Add field\" to export specific product attribute"
1946
  msgstr ""
1947
 
1948
- #: view/settings-form.php:928
1949
  msgid "Use only unnamed functions!"
1950
  msgstr ""
1951
 
1952
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1373
1953
  msgid "Use section \"Product order item\" to add item meta"
1954
  msgstr ""
1955
 
1956
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1366
1957
  msgid "Use section \"Product order items\" to add attributes"
1958
  msgstr ""
1959
 
1960
- #: view/settings-form.php:256
1961
  msgid "Use sheet name"
1962
  msgstr ""
1963
 
@@ -1965,24 +2040,24 @@ msgstr ""
1965
  msgid "user guide"
1966
  msgstr ""
1967
 
1968
- #: view/settings-form.php:1287
1969
  msgid "User roles"
1970
  msgstr ""
1971
 
1972
- #: classes/core/class-wc-order-export-data-extractor-ui.php:689
1973
  msgid "User Website"
1974
  msgstr ""
1975
 
1976
- #: view/settings-form.php:1273
1977
  msgid "Usernames"
1978
  msgstr ""
1979
 
1980
- #: view/settings-form.php:1685 view/settings-form.php:1782
1981
- #: view/settings-form.php:1835 view/settings-form.php:1883
1982
  msgid "Value"
1983
  msgstr ""
1984
 
1985
- #: view/settings-form.php:1177
1986
  msgid "Variable product attributes"
1987
  msgstr ""
1988
 
@@ -1990,7 +2065,7 @@ msgstr ""
1990
  msgid "Variation Id"
1991
  msgstr ""
1992
 
1993
- #: view/settings-form.php:1064
1994
  msgid "Vendors/creators"
1995
  msgstr ""
1996
 
@@ -2010,15 +2085,15 @@ msgstr ""
2010
  msgid "Wrong nonce"
2011
  msgstr ""
2012
 
2013
- #: view/settings-form.php:241
2014
  msgid "XLS options"
2015
  msgstr ""
2016
 
2017
- #: view/settings-form.php:340
2018
  msgid "XML options"
2019
  msgstr ""
2020
 
2021
- #: view/settings-form.php:513
2022
  msgid "Yes"
2023
  msgstr ""
2024
 
@@ -2026,6 +2101,11 @@ msgstr ""
2026
  msgid "You can not do it"
2027
  msgstr ""
2028
 
 
 
 
 
 
2029
  #: view/settings-form.php:163
2030
  msgid "You will export only completed orders"
2031
  msgstr ""
3
  msgstr ""
4
  "Project-Id-Version: Advanced Order Export For WooCommerce\n"
5
  "Report-Msgid-Bugs-To: \n"
6
+ "POT-Creation-Date: 2021-11-08 13:37+0000\n"
7
  "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
8
  "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
9
  "Language-Team: \n"
13
  "Content-Type: text/plain; charset=UTF-8\n"
14
  "Content-Transfer-Encoding: 8bit\n"
15
  "X-Generator: Loco https://localise.biz/\n"
16
+ "X-Loco-Version: 2.5.5; wp-5.8.1\n"
17
  "X-Domain: woo-order-export-lite"
18
 
19
  #: classes/class-wc-order-export-admin.php:578
30
  msgstr[0] ""
31
  msgstr[1] ""
32
 
33
+ #: view/settings-form.php:46 view/settings-form.php:764
34
+ #: view/settings-form.php:790
35
  msgid "-"
36
  msgstr ""
37
 
38
+ #: view/settings-form.php:853
39
  msgid "- don't modify -"
40
  msgstr ""
41
 
42
+ #: view/settings-form.php:603
43
  msgid "0 - auto scale"
44
  msgstr ""
45
 
47
  msgid "1st row only"
48
  msgstr ""
49
 
50
+ #: classes/core/class-wc-order-export-data-extractor.php:1902
51
  msgid "[Rest of the World]"
52
  msgstr ""
53
 
54
+ #: view/settings-form.php:1629 view/settings-form.php:1643
55
  msgid "Actions"
56
  msgstr ""
57
 
64
  msgid "Add %s fields"
65
  msgstr ""
66
 
67
+ #: view/settings-form.php:1638
68
+ msgid "Add calculated field"
69
+ msgstr ""
70
+
71
+ #: view/settings-form.php:1646
72
  msgid "Add fee"
73
  msgstr ""
74
 
75
+ #: view/settings-form.php:1632
76
  msgid "Add field"
77
  msgstr ""
78
 
79
+ #: view/settings-form.php:636 view/settings-form.php:729
80
  msgid "Add links to images"
81
  msgstr ""
82
 
83
+ #: view/settings-form.php:1649
84
  msgid "Add shipping"
85
  msgstr ""
86
 
87
+ #: view/settings-form.php:1635
88
  msgid "Add static field"
89
  msgstr ""
90
 
91
+ #: view/settings-form.php:1652
92
  msgid "Add tax"
93
  msgstr ""
94
 
95
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:819
96
  msgid "Address 1 (Billing)"
97
  msgstr ""
98
 
99
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:909
100
  msgid "Address 1 (Shipping)"
101
  msgstr ""
102
 
103
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:814
104
  msgid "Address 1&2 (Billing)"
105
  msgstr ""
106
 
107
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:904
108
  msgid "Address 1&2 (Shipping)"
109
  msgstr ""
110
 
111
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:824
112
  msgid "Address 2 (Billing)"
113
  msgstr ""
114
 
115
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:914
116
  msgid "Address 2 (Shipping)"
117
  msgstr ""
118
 
138
  msgid "all rows"
139
  msgstr ""
140
 
141
+ #: view/settings-form.php:1360
142
  msgid "Any coupon used"
143
  msgstr ""
144
 
145
+ #: view/settings-form.php:374
146
  msgid "Append XML"
147
  msgstr ""
148
 
154
  msgid "as"
155
  msgstr ""
156
 
157
+ #: view/settings-form.php:834
158
  msgid "Ascending"
159
  msgstr ""
160
 
161
+ #: view/settings-form.php:269
162
  msgid "Auto column width"
163
  msgstr ""
164
 
165
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1336
166
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1360
167
  msgid "Billing Address"
168
  msgstr ""
169
 
170
+ #: view/settings-form.php:1386
171
  msgid "Billing locations"
172
  msgstr ""
173
 
194
  msgid "Can't create temporary file"
195
  msgstr ""
196
 
197
+ #: classes/admin/tabs/ajax/trait-wc-order-export-ajax-helpers.php:121
198
  msgid "Can't find exported file"
199
  msgstr ""
200
 
201
+ #: view/settings-form.php:1689 view/settings-form.php:1710
202
+ #: view/settings-form.php:1746 view/settings-form.php:1786
203
+ #: view/settings-form.php:1808 view/settings-form.php:1839
204
+ #: view/settings-form.php:1861 view/settings-form.php:1887
205
+ #: view/settings-form.php:1910 view/settings-form.php:1932
206
+ #: view/settings-form.php:1954 view/settings-form.php:1976
207
+ #: view/settings-form.php:2006 view/settings-form.php:2036
208
+ #: view/settings-form.php:2066
209
  msgid "Cancel"
210
  msgstr ""
211
 
212
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1342
213
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1367
214
  msgid "Cart"
215
  msgstr ""
216
 
217
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1165
218
  msgid "Cart Discount Amount"
219
  msgstr ""
220
 
221
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1170
222
  msgid "Cart Discount Amount Tax"
223
  msgstr ""
224
 
225
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1200
226
  msgid "Cart Tax Amount"
227
  msgstr ""
228
 
230
  msgid "Category"
231
  msgstr ""
232
 
233
+ #: view/settings-form.php:490
234
  msgid "Center align"
235
  msgstr ""
236
 
237
+ #: view/settings-form.php:848
238
  msgid "Change order status to"
239
  msgstr ""
240
 
241
+ #: view/settings-form.php:343 view/settings-form.php:432
242
  msgid "Character encoding"
243
  msgstr ""
244
 
245
+ #: view/settings-form.php:1390 view/settings-form.php:1440
246
+ msgid "City"
247
+ msgstr ""
248
+
249
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:829
250
  msgid "City (Billing)"
251
  msgstr ""
252
 
253
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:919
254
  msgid "City (Shipping)"
255
  msgstr ""
256
 
257
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:844
258
  msgid "City, State Zip (Billing)"
259
  msgstr ""
260
 
261
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:934
262
  msgid "City, State Zip (Shipping)"
263
  msgstr ""
264
 
265
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:839
266
  msgid "City, State, Zip (Billing)"
267
  msgstr ""
268
 
269
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:929
270
  msgid "City, State, Zip (Shipping)"
271
  msgstr ""
272
 
273
+ #: view/settings-form.php:902
274
  msgid "Cleanup phone (export only digits)"
275
  msgstr ""
276
 
277
+ #: view/settings-form.php:2151
278
  msgid "Click here to download"
279
  msgstr ""
280
 
282
  msgid "code snippets"
283
  msgstr ""
284
 
285
+ #: view/settings-form.php:1679 view/settings-form.php:1695
286
+ #: view/settings-form.php:1736 view/settings-form.php:1778
287
+ #: view/settings-form.php:1792 view/settings-form.php:1831
288
+ #: view/settings-form.php:1845 view/settings-form.php:1878
289
+ #: view/settings-form.php:1893 view/settings-form.php:1922
290
+ #: view/settings-form.php:1944 view/settings-form.php:1966
291
  msgid "Column name"
292
  msgstr ""
293
 
295
  msgid "columns"
296
  msgstr ""
297
 
298
+ #: view/settings-form.php:663
299
  msgid "Columns align"
300
  msgstr ""
301
 
302
+ #: view/settings-form.php:519
303
  msgid "Columns horizontal align"
304
  msgstr ""
305
 
306
+ #: view/settings-form.php:530
307
  msgid "Columns vertical align"
308
  msgstr ""
309
 
310
+ #: view/settings-form.php:509
311
  msgid "Columns width"
312
  msgstr ""
313
 
314
+ #: view/settings-form.php:510 view/settings-form.php:664
315
  msgid "comma separated list"
316
  msgstr ""
317
 
318
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1334
319
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1358
320
  msgid "Common"
321
  msgstr ""
322
 
323
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:809
324
  msgid "Company (Billing)"
325
  msgstr ""
326
 
327
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:899
328
  msgid "Company (Shipping)"
329
  msgstr ""
330
 
331
  #: view/settings-form.php:167
332
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:644
333
  msgid "Completed Date"
334
  msgstr ""
335
 
336
+ #: view/settings-form.php:1687 view/settings-form.php:1708
337
+ #: view/settings-form.php:1744 view/settings-form.php:1784
338
+ #: view/settings-form.php:1806 view/settings-form.php:1837
339
+ #: view/settings-form.php:1859 view/settings-form.php:1885
340
+ #: view/settings-form.php:1907 view/settings-form.php:1929
341
+ #: view/settings-form.php:1951 view/settings-form.php:1973
342
+ #: view/settings-form.php:2003 view/settings-form.php:2033
343
+ #: view/settings-form.php:2063
344
  msgid "Confirm"
345
  msgstr ""
346
 
347
+ #: view/settings-form.php:320
348
  msgid "Convert line breaks to literals"
349
  msgstr ""
350
 
354
  "install."
355
  msgstr ""
356
 
357
+ #: view/settings-form.php:1393 view/settings-form.php:1443
358
+ msgid "Country"
359
+ msgstr ""
360
+
361
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:859
362
  msgid "Country Code (Billing)"
363
  msgstr ""
364
 
365
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:949
366
  msgid "Country Code (Shipping)"
367
  msgstr ""
368
 
369
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:864
370
  msgid "Country Name (Billing)"
371
  msgstr ""
372
 
373
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:954
374
  msgid "Country Name (Shipping)"
375
  msgstr ""
376
 
386
  msgid "Coupon Description"
387
  msgstr ""
388
 
389
+ #: view/settings-form.php:371
390
  msgid "Coupon tag"
391
  msgstr ""
392
 
394
  msgid "Coupon Type"
395
  msgstr ""
396
 
397
+ #: view/settings-form.php:1363
398
+ #: classes/admin/class-wc-order-export-manage.php:737
399
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1139
400
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1340
401
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1365
402
  msgid "Coupons"
403
  msgstr ""
404
 
406
  msgid "coupons"
407
  msgstr ""
408
 
409
+ #: view/settings-form.php:297
410
  msgid "CSV options"
411
  msgstr ""
412
 
413
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:639
414
  msgid "Currency"
415
  msgstr ""
416
 
417
+ #: view/settings-form.php:768 view/settings-form.php:794
418
  msgid "custom"
419
  msgstr ""
420
 
421
+ #: view/settings-form.php:740
422
  msgid "Custom css"
423
  msgstr ""
424
 
425
+ #: view/settings-form.php:1000 view/settings-form.php:1311
426
  msgid "Custom fields"
427
  msgstr ""
428
 
429
+ #: view/settings-form.php:926
430
  msgid "Custom PHP code to modify output"
431
  msgstr ""
432
 
433
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1335
434
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1359
435
  msgid "Customer"
436
  msgstr ""
437
 
438
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:719
439
  msgid "Customer first order date"
440
  msgstr ""
441
 
442
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:679
443
  msgid "Customer IP address"
444
  msgstr ""
445
 
446
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:724
447
  msgid "Customer last order date"
448
  msgstr ""
449
 
450
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:659
451
  msgid "Customer Note"
452
  msgstr ""
453
 
454
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:704
455
  msgid "Customer Role"
456
  msgstr ""
457
 
458
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:709
459
  msgid "Customer Total Orders"
460
  msgstr ""
461
 
462
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:714
463
  msgid "Customer Total Spent"
464
  msgstr ""
465
 
466
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:699
467
  msgid "Customer User Email"
468
  msgstr ""
469
 
470
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:684
471
  msgid "Customer User ID"
472
  msgstr ""
473
 
474
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:689
475
  msgid "Customer Username"
476
  msgstr ""
477
 
478
+ #: view/settings-form.php:750
479
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1392
480
  msgid "Date"
481
  msgstr ""
482
 
484
  msgid "Date From is greater than Date To"
485
  msgstr ""
486
 
487
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:654
488
  msgid "Date of first refund"
489
  msgstr ""
490
 
491
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:624
492
+ msgid "Date of original order"
493
+ msgstr ""
494
+
495
  #: view/settings-form.php:175
496
  msgid "Date range"
497
  msgstr ""
498
 
499
+ #: view/settings-form.php:832
500
  msgid "Descending"
501
  msgstr ""
502
 
520
  msgid "Docs"
521
  msgstr ""
522
 
523
+ #: view/settings-form.php:408
524
  msgid "Don't encode unicode chars"
525
  msgstr ""
526
 
527
+ #: view/settings-form.php:398
528
  msgid "Don't escape /"
529
  msgstr ""
530
 
531
+ #: view/settings-form.php:961
532
  msgid "Don't export child orders"
533
  msgstr ""
534
 
539
  "reduce reply time :)"
540
  msgstr ""
541
 
542
+ #: classes/core/class-wc-order-export-engine.php:375
543
  msgid "Don't Panic"
544
  msgstr ""
545
 
546
+ #: view/settings-form.php:628
547
  msgid "Don't put page break between order lines"
548
  msgstr ""
549
 
551
  msgid "Download URL"
552
  msgstr ""
553
 
554
+ #: view/settings-form.php:1590
555
  msgid "Drag rows to reorder exported fields"
556
  msgstr ""
557
 
558
+ #: classes/core/class-wc-order-export-order-fields.php:425
559
  msgid "Edit order"
560
  msgstr ""
561
 
562
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:869
563
  msgid "Email (Billing)"
564
  msgstr ""
565
 
588
  msgid "empty value"
589
  msgstr ""
590
 
591
+ #: view/settings-form.php:920
592
  msgid "Enable debug output"
593
  msgstr ""
594
 
595
+ #: view/settings-form.php:330
596
  msgid "Enclosure"
597
  msgstr ""
598
 
599
+ #: view/settings-form.php:403
600
  msgid "Encode numeric strings as numbers"
601
  msgstr ""
602
 
603
+ #: view/settings-form.php:393
604
  msgid "End tag"
605
  msgstr ""
606
 
607
+ #: view/settings-form.php:1260
608
  msgid "Exclude products"
609
  msgstr ""
610
 
611
+ #: view/settings-form.php:2120
612
  msgid "Export"
613
  msgstr ""
614
 
615
+ #: view/settings-form.php:2124
616
  msgid "Export [w/o progressbar]"
617
  msgstr ""
618
 
619
+ #: view/settings-form.php:878
620
  msgid "Export all order notes"
621
  msgstr ""
622
 
623
+ #: view/settings-form.php:1052
624
  msgid "Export all products from the order"
625
  msgstr ""
626
 
629
  msgid "Export as %s"
630
  msgstr ""
631
 
632
+ #: view/settings-form.php:257
633
  msgid "Export as .xls (Binary File Format)"
634
  msgstr ""
635
 
647
  msgid "Export now"
648
  msgstr ""
649
 
650
+ #: view/settings-form.php:1486
651
  msgid "Export only matched product items"
652
  msgstr ""
653
 
662
  msgid "Export orders from WooCommerce with ease (Excel/CSV/XML/JSON supported)"
663
  msgstr ""
664
 
665
+ #: view/settings-form.php:884
666
  msgid "Export refund notes as Customer Note"
667
  msgstr ""
668
 
669
+ #: view/settings-form.php:973
670
  msgid "Export refunds"
671
  msgstr ""
672
 
678
  msgid "Export Status"
679
  msgstr ""
680
 
681
+ #: view/settings-form.php:2136
682
  #, php-format
683
  msgid "Export total: %s orders"
684
  msgstr ""
685
 
686
+ #: view/settings-form.php:984
687
  msgid "Export unmarked orders only"
688
  msgstr ""
689
 
690
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1118
691
  msgid "Exported items"
692
  msgstr ""
693
 
695
  msgid "Express export"
696
  msgstr ""
697
 
698
+ #: view/settings-form.php:1916
699
  msgid "Fee name"
700
  msgstr ""
701
 
702
+ #: view/settings-form.php:334
703
  msgid "Field Delimiter"
704
  msgstr ""
705
 
711
  msgid "Fill order columns for"
712
  msgstr ""
713
 
714
+ #: view/settings-form.php:1381
715
  msgid "Filter by billing"
716
  msgstr ""
717
 
718
+ #: view/settings-form.php:1354
719
  msgid "Filter by coupon"
720
  msgstr ""
721
 
722
+ #: view/settings-form.php:1281
723
  msgid "Filter by customer"
724
  msgstr ""
725
 
726
+ #: view/settings-form.php:1481
727
  msgid "Filter by item and metadata"
728
  msgstr ""
729
 
730
+ #: view/settings-form.php:956
731
+ msgid "Filter by order"
732
+ msgstr ""
733
+
734
+ #: view/settings-form.php:1047
735
  msgid "Filter by product"
736
  msgstr ""
737
 
738
+ #: view/settings-form.php:1431
739
  msgid "Filter by shipping"
740
  msgstr ""
741
 
743
  msgid "Filter orders by"
744
  msgstr ""
745
 
746
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:794
747
  msgid "First Name (Billing)"
748
  msgstr ""
749
 
750
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:884
751
  msgid "First Name (Shipping)"
752
  msgstr ""
753
 
754
+ #: view/settings-form.php:524
755
  msgid "Fit table to page width"
756
  msgstr ""
757
 
758
+ #: view/settings-form.php:480 view/settings-form.php:657
759
  msgid "Font size"
760
  msgstr ""
761
 
762
+ #: view/settings-form.php:673
763
  msgid "Footer text"
764
  msgstr ""
765
 
766
+ #: view/settings-form.php:705
767
  msgid "Footer text color"
768
  msgstr ""
769
 
770
+ #: view/settings-form.php:316
771
  msgid "Force enclosure for all values"
772
  msgstr ""
773
 
774
+ #: view/settings-form.php:277
775
  msgid "Force general format for all cells"
776
  msgstr ""
777
 
778
+ #: view/settings-form.php:230
779
  msgid "Format"
780
  msgstr ""
781
 
782
+ #: view/settings-form.php:872
783
  msgid "Format numbers (use WC decimal separator)"
784
  msgstr ""
785
 
786
+ #: view/settings-form.php:382
787
  msgid "Format output"
788
  msgstr ""
789
 
791
  msgid "Fri"
792
  msgstr ""
793
 
794
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:804
795
  msgid "Full Name (Billing)"
796
  msgstr ""
797
 
798
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:894
799
  msgid "Full Name (Shipping)"
800
  msgstr ""
801
 
803
  msgid "Full names for categories"
804
  msgstr ""
805
 
806
+ #: view/settings-form.php:2156
807
+ msgid "Generating file..."
808
+ msgstr ""
809
+
810
  #: classes/class-wc-order-export-admin.php:303
811
  msgid "Grouping by coupon"
812
  msgstr ""
815
  msgid "Grouping by product"
816
  msgstr ""
817
 
818
+ #: view/settings-form.php:668
819
  msgid "Header text"
820
  msgstr ""
821
 
822
+ #: view/settings-form.php:700
823
  msgid "Header text color"
824
  msgstr ""
825
 
835
  msgid "helpdesk system"
836
  msgstr ""
837
 
838
+ #: view/settings-form.php:1675 view/settings-form.php:1732
839
+ #: view/settings-form.php:1762 view/settings-form.php:1826
840
+ #: view/settings-form.php:1869
841
  msgid "Hide unused fields"
842
  msgstr ""
843
 
844
+ #: view/settings-form.php:641
845
  msgid "Html options"
846
  msgstr ""
847
 
849
  msgid "https://algolplus.com/"
850
  msgstr ""
851
 
852
+ #: view/settings-form.php:2100
853
  #, php-format
854
  msgid ""
855
  "If you see this message after page load, user interface won't work correctly!"
857
  "it). Probably, it's a conflict with another plugin or active theme."
858
  msgstr ""
859
 
860
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1393
861
  msgid "Image"
862
  msgstr ""
863
 
865
  msgid "Image URL"
866
  msgstr ""
867
 
868
+ #: view/settings-form.php:291 view/settings-form.php:617
869
+ #: view/settings-form.php:718
870
  msgid "Images height"
871
  msgstr ""
872
 
873
+ #: view/settings-form.php:284 view/settings-form.php:610
874
+ #: view/settings-form.php:711
875
  msgid "Images width"
876
  msgstr ""
877
 
883
  msgid "Import settings"
884
  msgstr ""
885
 
886
+ #: view/settings-form.php:2125
887
  msgid "It might not work for huge datasets!"
888
  msgstr ""
889
 
890
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:981
891
  msgid "Item #"
892
  msgstr ""
893
 
894
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1001
895
  msgid "Item Cost"
896
  msgstr ""
897
 
898
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1006
899
  msgid "Item Cost (inc. tax)"
900
  msgstr ""
901
 
902
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1011
903
  msgid "Item Cost Before Discount"
904
  msgstr ""
905
 
906
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1066
907
  msgid "Item Discount Amount"
908
  msgstr ""
909
 
910
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1091
911
  msgid "Item Discount Amount + Tax"
912
  msgstr ""
913
 
914
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1086
915
  msgid "Item Discount Tax"
916
  msgstr ""
917
 
918
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1076
919
  msgid "Item download URL"
920
  msgstr ""
921
 
922
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:976
923
  msgid "Item ID"
924
  msgstr ""
925
 
926
+ #: view/settings-form.php:1224
927
  msgid "Item meta data"
928
  msgstr ""
929
 
930
+ #: view/settings-form.php:1523
931
  msgid "Item metadata"
932
  msgstr ""
933
 
934
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:986
935
  msgid "Item Name"
936
  msgstr ""
937
 
938
+ #: view/settings-form.php:1490
939
  msgid "Item names"
940
  msgstr ""
941
 
942
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1071
943
  msgid "Item Tax Rate"
944
  msgstr ""
945
 
946
+ #: view/settings-form.php:896
947
  msgid "Item Tax Rate as an integer"
948
  msgstr ""
949
 
950
+ #: view/settings-form.php:388
951
  msgid "JSON options"
952
  msgstr ""
953
 
955
  msgid "Just click inside the textarea and copy (Ctrl+C)"
956
  msgstr ""
957
 
958
+ #: view/settings-form.php:520
959
  msgid "L,C or R. Comma separated list"
960
  msgstr ""
961
 
962
+ #: view/settings-form.php:1994 view/settings-form.php:2024
963
+ #: view/settings-form.php:2054
964
+ msgid "Label"
965
+ msgstr ""
966
+
967
+ #: view/settings-form.php:22
968
+ msgid "Landscape"
969
+ msgstr ""
970
+
971
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:799
972
  msgid "Last Name (Billing)"
973
  msgstr ""
974
 
975
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:889
976
  msgid "Last Name (Shipping)"
977
  msgstr ""
978
 
979
+ #: view/settings-form.php:489
980
  msgid "Left align"
981
  msgstr ""
982
 
983
+ #: view/settings-form.php:29
984
+ msgid "Legal"
985
+ msgstr ""
986
+
987
  #: classes/core/class-wc-order-export-data-extractor-ui.php:418
988
  msgid "Length"
989
  msgstr ""
990
 
991
+ #: view/settings-form.php:28
992
+ msgid "Letter"
993
+ msgstr ""
994
+
995
+ #: view/settings-form.php:338 view/settings-form.php:427
996
  msgid "Line Break"
997
  msgstr ""
998
 
1000
  msgid "Line number"
1001
  msgstr ""
1002
 
1003
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1394
1004
  msgid "Link"
1005
  msgstr ""
1006
 
1007
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:669
1008
  msgid "Link to edit order"
1009
  msgstr ""
1010
 
1011
+ #: view/settings-form.php:588
1012
  msgid "Logo align"
1013
  msgstr ""
1014
 
1015
+ #: view/settings-form.php:596
1016
  msgid "Logo height"
1017
  msgstr ""
1018
 
1019
+ #: view/settings-form.php:602
1020
  msgid "Logo width"
1021
  msgstr ""
1022
 
1026
  "Look at %s for popular plugins or check %s to study how to extend the plugin."
1027
  msgstr ""
1028
 
1029
+ #: classes/core/class-wc-order-export-engine.php:514
1030
  msgid "Main SQL queries are listed below"
1031
  msgstr ""
1032
 
1034
  msgid "Mark exported"
1035
  msgstr ""
1036
 
1037
+ #: view/settings-form.php:980
1038
  msgid "Mark exported orders"
1039
  msgstr ""
1040
 
1041
+ #: view/settings-form.php:1659 view/settings-form.php:1716
1042
+ #: view/settings-form.php:1866 view/settings-form.php:1988
1043
+ #: view/settings-form.php:2018 view/settings-form.php:2048
1044
  msgid "Meta key"
1045
  msgstr ""
1046
 
1047
+ #: view/settings-form.php:2107
1048
  msgid "Might be different from actual export!"
1049
  msgstr ""
1050
 
1051
+ #: view/settings-form.php:866
1052
  msgid "Misc settings"
1053
  msgstr ""
1054
 
1055
+ #: view/settings-form.php:153 view/settings-form.php:810
1056
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:629
1057
  msgid "Modification Date"
1058
  msgstr ""
1059
 
1061
  msgid "Mon"
1062
  msgstr ""
1063
 
1064
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1390
1065
  msgid "Money"
1066
  msgstr ""
1067
 
1070
  msgid "Need help? Create ticket in %s ."
1071
  msgstr ""
1072
 
1073
+ #: view/settings-form.php:526
1074
  msgid "No"
1075
  msgstr ""
1076
 
1077
+ #: view/settings-form.php:496
1078
  msgid "No page numbers"
1079
  msgstr ""
1080
 
1081
+ #: classes/formats/class-woe-formatter-pdf.php:168
1082
  #: classes/formats/class-woe-formatter-html.php:144
1083
  #: classes/formats/abstract-class-woe-formatter-sv.php:107
1084
+ #: classes/formats/class-woe-formatter-xls.php:209
1085
  msgid "No results"
1086
  msgstr ""
1087
 
1090
  msgstr ""
1091
 
1092
  #: classes/class-wc-order-export-admin.php:370
1093
+ #: classes/admin/tabs/ajax/trait-wc-order-export-admin-tab-abstract-ajax-export.php:127
1094
  msgid "Nothing to export. Please, adjust your filters"
1095
  msgstr ""
1096
 
1097
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1391
1098
  msgid "Number"
1099
  msgstr ""
1100
 
1101
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1160
1102
  msgid "Number of coupons used"
1103
  msgstr ""
1104
 
1106
  msgid "one row"
1107
  msgstr ""
1108
 
1109
+ #: view/settings-form.php:1765
1110
  msgid "OR"
1111
  msgstr ""
1112
 
1113
+ #: view/settings-form.php:1670 view/settings-form.php:1727
1114
+ #: view/settings-form.php:1757 view/settings-form.php:1821
1115
+ #: view/settings-form.php:1875
1116
  msgid "or type meta key here"
1117
  msgstr ""
1118
 
1119
+ #: view/settings-form.php:146 view/settings-form.php:809
1120
  #: classes/core/class-wc-order-export-data-extractor-ui.php:619
1121
  msgid "Order Date"
1122
  msgstr ""
1123
 
1124
+ #: view/settings-form.php:808
1125
  #: classes/core/class-wc-order-export-data-extractor-ui.php:604
1126
  msgid "Order ID"
1127
  msgstr ""
1128
 
1129
+ #: view/settings-form.php:1815
1130
  msgid "Order item fields"
1131
  msgstr ""
1132
 
1133
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1081
1134
  msgid "Order Item Metadata"
1135
  msgstr ""
1136
 
1137
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1016
1138
  msgid "Order Line (w/o tax)"
1139
  msgstr ""
1140
 
1141
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1036
1142
  msgid "Order Line Subtotal"
1143
  msgstr ""
1144
 
1145
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1041
1146
  msgid "Order Line Subtotal Tax"
1147
  msgstr ""
1148
 
1149
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1021
1150
  msgid "Order Line Tax"
1151
  msgstr ""
1152
 
1153
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1031
1154
  msgid "Order Line Tax (- Refund)"
1155
  msgstr ""
1156
 
1157
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1026
1158
  msgid "Order Line Tax Refunded"
1159
  msgstr ""
1160
 
1161
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1046
1162
  msgid "Order Line Total"
1163
  msgstr ""
1164
 
1165
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1061
1166
  msgid "Order Line Total (- Refund)"
1167
  msgstr ""
1168
 
1169
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1051
1170
  msgid "Order Line Total (include tax)"
1171
  msgstr ""
1172
 
1173
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1056
1174
  msgid "Order Line Total Refunded"
1175
  msgstr ""
1176
 
1177
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:664
1178
  msgid "Order Notes"
1179
  msgstr ""
1180
 
1186
  msgid "Order Refund"
1187
  msgstr ""
1188
 
1189
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1275
1190
  msgid "Order Refund Amount"
1191
  msgstr ""
1192
 
1193
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1235
1194
  msgid "Order Shipping + Tax Amount"
1195
  msgstr ""
1196
 
1197
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1230
1198
  msgid "Order Shipping Amount"
1199
  msgstr ""
1200
 
1201
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1245
1202
  msgid "Order Shipping Amount (- Refund)"
1203
  msgstr ""
1204
 
1205
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1240
1206
  msgid "Order Shipping Amount Refunded"
1207
  msgstr ""
1208
 
1209
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1250
1210
  msgid "Order Shipping Tax Amount"
1211
  msgstr ""
1212
 
1213
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1260
1214
  msgid "Order Shipping Tax Amount (- Refund)"
1215
  msgstr ""
1216
 
1217
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1255
1218
  msgid "Order Shipping Tax Refunded"
1219
  msgstr ""
1220
 
1222
  msgid "Order Status"
1223
  msgstr ""
1224
 
1225
+ #: view/settings-form.php:811
1226
  msgid "Order status"
1227
  msgstr ""
1228
 
1229
+ #: view/settings-form.php:986
1230
  msgid "Order statuses"
1231
  msgstr ""
1232
 
1234
  msgid "Order Subscription"
1235
  msgstr ""
1236
 
1237
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1185
1238
  msgid "Order Subtotal - Cart Discount"
1239
  msgstr ""
1240
 
1241
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1175
1242
  msgid "Order Subtotal Amount"
1243
  msgstr ""
1244
 
1245
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1195
1246
  msgid "Order Subtotal Amount (- Refund)"
1247
  msgstr ""
1248
 
1249
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1180
1250
  msgid "Order Subtotal Amount + Cart Tax"
1251
  msgstr ""
1252
 
1253
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1190
1254
  msgid "Order Subtotal Amount Refunded"
1255
  msgstr ""
1256
 
1257
+ #: view/settings-form.php:365
1258
  msgid "Order tag"
1259
  msgstr ""
1260
 
1261
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1285
1262
  msgid "Order Total Amount"
1263
  msgstr ""
1264
 
1265
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1280
1266
  msgid "Order Total Amount (- Refund)"
1267
  msgstr ""
1268
 
1269
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1290
1270
  msgid "Order Total Amount without Tax"
1271
  msgstr ""
1272
 
1273
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1270
1274
  msgid "Order Total Fee"
1275
  msgstr ""
1276
 
1277
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1295
1278
  msgid "Order Total Tax Amount"
1279
  msgstr ""
1280
 
1281
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1305
1282
  msgid "Order Total Tax Amount (- Refund)"
1283
  msgstr ""
1284
 
1285
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1300
1286
  msgid "Order Total Tax Amount Refunded"
1287
  msgstr ""
1288
 
1291
  msgstr ""
1292
 
1293
  #: classes/admin/class-wc-order-export-manage.php:250
1294
+ #: classes/formats/class-woe-formatter-xls.php:298
1295
  msgid "Orders"
1296
  msgstr ""
1297
 
1299
  msgid "Orders range"
1300
  msgstr ""
1301
 
1302
+ #: view/settings-form.php:462
1303
  msgid "Orientation"
1304
  msgstr ""
1305
 
1306
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1341
1307
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1366
1308
  msgid "Other items"
1309
  msgstr ""
1310
 
1311
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1345
1312
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1370
1313
  msgid "Others"
1314
  msgstr ""
1315
 
1316
+ #: view/settings-form.php:265 view/settings-form.php:312
1317
+ #: view/settings-form.php:422 view/settings-form.php:446
1318
+ #: view/settings-form.php:647
1319
  msgid "Output column titles as first line"
1320
  msgstr ""
1321
 
1322
+ #: view/settings-form.php:308 view/settings-form.php:418
1323
  msgid "Output UTF-8 BOM"
1324
  msgstr ""
1325
 
1328
  msgid "Page %s / %s"
1329
  msgstr ""
1330
 
1331
+ #: view/settings-form.php:514
1332
  msgid "Page footer text"
1333
  msgstr ""
1334
 
1335
+ #: view/settings-form.php:564
1336
  msgid "Page footer text color"
1337
  msgstr ""
1338
 
1339
+ #: view/settings-form.php:504
1340
  msgid "Page header text"
1341
  msgstr ""
1342
 
1343
+ #: view/settings-form.php:559
1344
  msgid "Page header text color"
1345
  msgstr ""
1346
 
1347
+ #: view/settings-form.php:486
1348
  msgid "Page numbers"
1349
  msgstr ""
1350
 
1351
+ #: view/settings-form.php:471
1352
  msgid "Page size"
1353
  msgstr ""
1354
 
1355
  #: view/settings-form.php:160
1356
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:649
1357
  msgid "Paid Date"
1358
  msgstr ""
1359
 
1363
  "install."
1364
  msgstr ""
1365
 
1366
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1155
1367
  msgid "Payment Method"
1368
  msgstr ""
1369
 
1370
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1150
1371
  msgid "Payment Method Title"
1372
  msgstr ""
1373
 
1374
+ #: view/settings-form.php:1415
1375
  msgid "Payment methods"
1376
  msgstr ""
1377
 
1378
+ #: view/settings-form.php:440
1379
  msgid "PDF options"
1380
  msgstr ""
1381
 
1382
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:874
1383
  msgid "Phone (Billing)"
1384
  msgstr ""
1385
 
1386
+ #: view/settings-form.php:931
1387
  msgid ""
1388
  "Please check permissions for your role. You must have capability "
1389
  "“edit_themes” to use this box."
1395
  "Order Export For WooCommerce!"
1396
  msgstr ""
1397
 
1398
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1400
1399
  msgid "Please, choose the template"
1400
  msgstr ""
1401
 
1402
+ #: view/settings-form.php:246
1403
  #: classes/admin/tabs/ajax/trait-wc-order-export-admin-tab-abstract-ajax-export.php:48
1404
  #: classes/admin/tabs/ajax/trait-wc-order-export-admin-tab-abstract-ajax-export.php:103
1405
  msgid "Please, install/enable PHP mbstring extension!"
1406
  msgstr ""
1407
 
1408
+ #: view/settings-form.php:355
1409
  msgid "Please, install/enable PHP XML extension!"
1410
  msgstr ""
1411
 
1418
  msgid "Please, set up fields to export"
1419
  msgstr ""
1420
 
1421
+ #: view/settings-form.php:21
1422
+ msgid "Portrait"
1423
+ msgstr ""
1424
+
1425
+ #: view/settings-form.php:1392 view/settings-form.php:1442
1426
+ msgid "Postcode"
1427
+ msgstr ""
1428
+
1429
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:854
1430
  msgid "Postcode (Billing)"
1431
  msgstr ""
1432
 
1433
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:944
1434
  msgid "Postcode (Shipping)"
1435
  msgstr ""
1436
 
1437
+ #: view/settings-form.php:359
1438
  msgid "Prepend XML"
1439
  msgstr ""
1440
 
1441
+ #: view/settings-form.php:2150
1442
  msgid "Press 'Esc' to cancel the export"
1443
  msgstr ""
1444
 
1445
+ #: view/settings-form.php:2106
1446
  msgid "Preview"
1447
  msgstr ""
1448
 
1449
+ #: view/settings-form.php:2138
1450
  msgid "Preview size"
1451
  msgstr ""
1452
 
1455
  msgid "Pro version"
1456
  msgstr ""
1457
 
1458
+ #: view/settings-form.php:1058
1459
  msgid "Product categories"
1460
  msgstr ""
1461
 
1463
  msgid "Product Current Price"
1464
  msgstr ""
1465
 
1466
+ #: view/settings-form.php:1148
1467
  msgid "Product custom fields"
1468
  msgstr ""
1469
 
1470
+ #: view/settings-form.php:1751
1471
  msgid "Product fields"
1472
  msgstr ""
1473
 
1483
  msgid "Product Name (main)"
1484
  msgstr ""
1485
 
1486
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1363
1487
  msgid "Product order items"
1488
  msgstr ""
1489
 
1490
+ #: view/settings-form.php:328 view/settings-form.php:426
1491
  msgid "Product rows start with a new line"
1492
  msgstr ""
1493
 
1499
  msgid "Product Shipping Class"
1500
  msgstr ""
1501
 
1502
+ #: view/settings-form.php:1107
1503
  msgid "Product SKU"
1504
  msgstr ""
1505
 
1506
+ #: view/settings-form.php:368
1507
  msgid "Product tag"
1508
  msgstr ""
1509
 
1510
+ #: view/settings-form.php:1113
1511
  msgid "Product taxonomies"
1512
  msgstr ""
1513
 
1514
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1339
1515
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1364
1516
  msgid "Product totals"
1517
  msgstr ""
1518
 
1524
  msgid "Product Variation"
1525
  msgstr ""
1526
 
1527
+ #: view/settings-form.php:1092
1528
+ #: classes/admin/class-wc-order-export-manage.php:694
1529
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:965
1530
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1338
1531
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1362
1532
  msgid "Products"
1533
  msgstr ""
1534
 
1544
  msgid "Profiles"
1545
  msgstr ""
1546
 
1547
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:991
1548
  msgid "Quantity"
1549
  msgstr ""
1550
 
1551
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:996
1552
  msgid "Quantity (- Refund)"
1553
  msgstr ""
1554
 
1555
+ #: view/settings-form.php:936
1556
  msgid "Read how to fix it"
1557
  msgstr ""
1558
 
1559
+ #: view/settings-form.php:1596
1560
  msgid "Remove all fields"
1561
  msgstr ""
1562
 
1564
  msgid "Remove all fields?"
1565
  msgstr ""
1566
 
1567
+ #: view/settings-form.php:281
1568
+ msgid "Remove emojis"
1569
+ msgstr ""
1570
+
1571
+ #: view/settings-form.php:324
1572
+ msgid "Remove line breaks"
1573
+ msgstr ""
1574
+
1575
+ #: view/settings-form.php:585
1576
  msgid "Remove logo"
1577
  msgstr ""
1578
 
1579
+ #: view/settings-form.php:453
1580
  msgid "repeat at each page"
1581
  msgstr ""
1582
 
1583
+ #: view/settings-form.php:653
1584
  msgid "repeat header as last line"
1585
  msgstr ""
1586
 
1587
+ #: view/settings-form.php:2132
1588
  msgid "Reset settings"
1589
  msgstr ""
1590
 
1591
+ #: classes/core/class-wc-order-export-data-extractor.php:1911
1592
  msgid "Rest of the World"
1593
  msgstr ""
1594
 
1597
  msgid "Result: %s"
1598
  msgstr ""
1599
 
1600
+ #: view/settings-form.php:491
1601
  msgid "Right align"
1602
  msgstr ""
1603
 
1604
+ #: view/settings-form.php:273 view/settings-form.php:459
1605
  msgid "Right-to-Left direction"
1606
  msgstr ""
1607
 
1608
+ #: view/settings-form.php:362
1609
  msgid "Root tag"
1610
  msgstr ""
1611
 
1617
  msgid "Sat"
1618
  msgstr ""
1619
 
1620
+ #: view/settings-form.php:2113
1621
  msgid "Save & Exit"
1622
  msgstr ""
1623
 
1624
+ #: view/settings-form.php:2110 view/settings-form.php:2115
1625
  msgid "Save settings"
1626
  msgstr ""
1627
 
1633
  msgid "select item field"
1634
  msgstr ""
1635
 
1636
+ #: view/settings-form.php:573
1637
  msgid "Select logo"
1638
  msgstr ""
1639
 
1641
  msgid "select product field or taxonomy"
1642
  msgstr ""
1643
 
1644
+ #: view/settings-form.php:377
1645
  msgid "Self closing tags"
1646
  msgstr ""
1647
 
1649
  msgid "Set up coupon fields"
1650
  msgstr ""
1651
 
1652
+ #: view/settings-form.php:1570
1653
  msgid "Set up fields to export"
1654
  msgstr ""
1655
 
1669
  msgid "Settings saved"
1670
  msgstr ""
1671
 
1672
+ #: view/settings-form.php:2145 view/tab/tools.php:86
1673
  msgid "Settings were successfully updated!"
1674
  msgstr ""
1675
 
1676
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1343
1677
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1368
1678
  msgid "Shipping"
1679
  msgstr ""
1680
 
1681
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1337
1682
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1361
1683
  msgid "Shipping Address"
1684
  msgstr ""
1685
 
1686
+ #: view/settings-form.php:908
1687
  msgid "Shipping fields use billing details (if shipping address is empty)"
1688
  msgstr ""
1689
 
1690
+ #: view/settings-form.php:1436
1691
  msgid "Shipping locations"
1692
  msgstr ""
1693
 
1694
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1215
1695
  msgid "Shipping Method"
1696
  msgstr ""
1697
 
1698
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1220
1699
  msgid "Shipping Method (no id)"
1700
  msgstr ""
1701
 
1702
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1210
1703
  msgid "Shipping Method Title"
1704
  msgstr ""
1705
 
1706
+ #: view/settings-form.php:1465
1707
  msgid "Shipping methods"
1708
  msgstr ""
1709
 
1710
+ #: view/settings-form.php:1938
1711
  msgid "Shipping name"
1712
  msgstr ""
1713
 
1714
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1225
1715
  msgid "Shipping Zone"
1716
  msgstr ""
1717
 
1719
  msgid "Short Description"
1720
  msgstr ""
1721
 
1722
+ #: view/settings-form.php:1056
1723
  msgid "Skip fully refunded items"
1724
  msgstr ""
1725
 
1731
  msgid "SKU (parent)"
1732
  msgstr ""
1733
 
1734
+ #: view/settings-form.php:839
1735
  #, php-format
1736
  msgid "Sort orders by %s in %s order"
1737
  msgstr ""
1740
  msgid "Split values by"
1741
  msgstr ""
1742
 
1743
+ #: view/settings-form.php:390
1744
  msgid "Start tag"
1745
  msgstr ""
1746
 
1747
+ #: view/settings-form.php:1391 view/settings-form.php:1441
1748
+ msgid "State"
1749
+ msgstr ""
1750
+
1751
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:834
1752
  msgid "State Code (Billing)"
1753
  msgstr ""
1754
 
1755
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:924
1756
  msgid "State Code (Shipping)"
1757
  msgstr ""
1758
 
1759
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:849
1760
  msgid "State Name (Billing)"
1761
  msgstr ""
1762
 
1763
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:939
1764
  msgid "State Name (Shipping)"
1765
  msgstr ""
1766
 
1776
  msgid "Stock Status"
1777
  msgstr ""
1778
 
1779
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1389
1780
  msgid "String"
1781
  msgstr ""
1782
 
1783
+ #: view/settings-form.php:890
1784
  msgid "Strip tags from Product Description/Variation"
1785
  msgstr ""
1786
 
1792
  msgid "Summary Report By Products"
1793
  msgstr ""
1794
 
1795
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:744
1796
  msgid "Summary Report Sum of Items (Exported)"
1797
  msgstr ""
1798
 
1799
  #: classes/core/class-wc-order-export-data-extractor-ui.php:488
1800
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:749
1801
  msgid "Summary Report Total Amount"
1802
  msgstr ""
1803
 
1804
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:754
1805
  msgid "Summary Report Total Amount Paid"
1806
  msgstr ""
1807
 
1808
  #: classes/core/class-wc-order-export-data-extractor-ui.php:503
1809
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:764
1810
  msgid "Summary Report Total Discount"
1811
  msgstr ""
1812
 
1813
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:784
1814
  msgid "Summary Report Total Fee Amount"
1815
  msgstr ""
1816
 
1817
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:734
1818
  msgid "Summary Report Total Items"
1819
  msgstr ""
1820
 
1821
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:739
1822
  msgid "Summary Report Total Items (Exported)"
1823
  msgstr ""
1824
 
1825
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:729
1826
  msgid "Summary Report Total Orders"
1827
  msgstr ""
1828
 
1831
  msgstr ""
1832
 
1833
  #: classes/core/class-wc-order-export-data-extractor-ui.php:513
1834
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:774
1835
  msgid "Summary Report Total Refund Amount"
1836
  msgstr ""
1837
 
1838
  #: classes/core/class-wc-order-export-data-extractor-ui.php:508
1839
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:769
1840
  msgid "Summary Report Total Refund Count"
1841
  msgstr ""
1842
 
1843
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:759
1844
  msgid "Summary Report Total Shipping"
1845
  msgstr ""
1846
 
1847
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:779
1848
  msgid "Summary Report Total Tax Amount"
1849
  msgstr ""
1850
 
1860
  msgid "Support"
1861
  msgstr ""
1862
 
1863
+ #: view/settings-form.php:219
1864
+ msgid "supported tags"
1865
+ msgstr ""
1866
+
1867
+ #: view/settings-form.php:531
1868
  msgid "T,C or B. Comma separated list"
1869
  msgstr ""
1870
 
1871
+ #: view/settings-form.php:542 view/settings-form.php:683
1872
  msgid "Table header background color"
1873
  msgstr ""
1874
 
1875
+ #: view/settings-form.php:537 view/settings-form.php:678
1876
  msgid "Table header text color"
1877
  msgstr ""
1878
 
1879
+ #: view/settings-form.php:553 view/settings-form.php:694
1880
  msgid "Table row background color"
1881
  msgstr ""
1882
 
1883
+ #: view/settings-form.php:548 view/settings-form.php:689
1884
  msgid "Table row text color"
1885
  msgstr ""
1886
 
1888
  msgid "Tags"
1889
  msgstr ""
1890
 
1891
+ #: view/settings-form.php:1960
1892
  msgid "Tax name"
1893
  msgstr ""
1894
 
1895
+ #: view/settings-form.php:1767
1896
  msgid "Taxonomy"
1897
  msgstr ""
1898
 
1899
+ #: classes/core/class-wc-order-export-engine.php:376
1900
  #, php-format
1901
  msgid "The code you are trying to save produced a fatal error on line %d:"
1902
  msgstr ""
1903
 
1904
+ #: view/settings-form.php:1045
1905
  msgid ""
1906
  "The filters won't work correctly.<br>Another plugin(or theme) has loaded "
1907
  "outdated Select2.js"
1908
  msgstr ""
1909
 
1910
+ #: view/settings-form.php:1657 view/settings-form.php:1813
1911
  msgid ""
1912
  "The plugin fetches meta keys from the existing orders. So you should create "
1913
  "fake order if you've added new field just now."
1923
  msgid "This date range should not be saved in the scheduled task"
1924
  msgstr ""
1925
 
1926
+ #: view/settings-form.php:742
1927
  msgid "This option cancels UI settings(above) and don't applied to Preview"
1928
  msgstr ""
1929
 
1941
  msgid "Thu"
1942
  msgstr ""
1943
 
1944
+ #: view/settings-form.php:777
1945
  msgid "Time"
1946
  msgstr ""
1947
 
1957
  msgid "Tools"
1958
  msgstr ""
1959
 
1960
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1113
1961
  msgid "Total items"
1962
  msgstr ""
1963
 
1964
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1123
1965
  msgid "Total products"
1966
  msgstr ""
1967
 
1968
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1128
1969
+ msgid "Total volume"
1970
+ msgstr ""
1971
+
1972
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1108
1973
  msgid "Total weight"
1974
  msgstr ""
1975
 
1976
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1344
1977
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1369
1978
  msgid "Totals"
1979
  msgstr ""
1980
 
1981
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:634
1982
  msgid "Transaction ID"
1983
  msgstr ""
1984
 
1985
+ #: view/settings-form.php:914
1986
  msgid "Try to convert serialized values"
1987
  msgstr ""
1988
 
1989
+ #: view/settings-form.php:410
1990
  msgid "TSV options"
1991
  msgstr ""
1992
 
1994
  msgid "Tue"
1995
  msgstr ""
1996
 
1997
+ #: view/settings-form.php:1583
1998
  msgid "Turn off mode Summary report to export order fields"
1999
  msgstr ""
2000
 
2016
  msgid "Unmark exported"
2017
  msgstr ""
2018
 
2019
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1377
2020
  msgid "Use \"Add field\" to export specific product attribute"
2021
  msgstr ""
2022
 
2023
+ #: view/settings-form.php:940
2024
  msgid "Use only unnamed functions!"
2025
  msgstr ""
2026
 
2027
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1383
2028
  msgid "Use section \"Product order item\" to add item meta"
2029
  msgstr ""
2030
 
2031
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1376
2032
  msgid "Use section \"Product order items\" to add attributes"
2033
  msgstr ""
2034
 
2035
+ #: view/settings-form.php:259
2036
  msgid "Use sheet name"
2037
  msgstr ""
2038
 
2040
  msgid "user guide"
2041
  msgstr ""
2042
 
2043
+ #: view/settings-form.php:1299
2044
  msgid "User roles"
2045
  msgstr ""
2046
 
2047
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:694
2048
  msgid "User Website"
2049
  msgstr ""
2050
 
2051
+ #: view/settings-form.php:1285
2052
  msgid "Usernames"
2053
  msgstr ""
2054
 
2055
+ #: view/settings-form.php:1700 view/settings-form.php:1797
2056
+ #: view/settings-form.php:1850 view/settings-form.php:1898
2057
  msgid "Value"
2058
  msgstr ""
2059
 
2060
+ #: view/settings-form.php:1189
2061
  msgid "Variable product attributes"
2062
  msgstr ""
2063
 
2065
  msgid "Variation Id"
2066
  msgstr ""
2067
 
2068
+ #: view/settings-form.php:1076
2069
  msgid "Vendors/creators"
2070
  msgstr ""
2071
 
2085
  msgid "Wrong nonce"
2086
  msgstr ""
2087
 
2088
+ #: view/settings-form.php:243
2089
  msgid "XLS options"
2090
  msgstr ""
2091
 
2092
+ #: view/settings-form.php:352
2093
  msgid "XML options"
2094
  msgstr ""
2095
 
2096
+ #: view/settings-form.php:525
2097
  msgid "Yes"
2098
  msgstr ""
2099
 
2101
  msgid "You can not do it"
2102
  msgstr ""
2103
 
2104
+ #: view/settings-form.php:1983 view/settings-form.php:2013
2105
+ #: view/settings-form.php:2043
2106
+ msgid "You should add code to section \"Misc Settings\". Read the guide"
2107
+ msgstr ""
2108
+
2109
  #: view/settings-form.php:163
2110
  msgid "You will export only completed orders"
2111
  msgstr ""
readme.txt CHANGED
@@ -5,7 +5,7 @@ Tags: woocommerce,export,order,xls,csv,xml,woo export lite,export orders,orders
5
  Requires PHP: 5.4.0
6
  Requires at least: 4.7
7
  Tested up to: 5.8
8
- Stable tag: 3.1.9
9
  License: GPLv2 or later
10
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
11
 
@@ -117,6 +117,18 @@ Yes, you can email a request to aprokaev@gmail.com. We intensively develop this
117
 
118
  == Changelog ==
119
 
 
 
 
 
 
 
 
 
 
 
 
 
120
  = 3.1.9 - 2021-06-22 =
121
  * New field "Sum of Items (Exported)" for mode "Summary Report By Customers"
122
  * Added extra operators for filter by item meta
5
  Requires PHP: 5.4.0
6
  Requires at least: 4.7
7
  Tested up to: 5.8
8
+ Stable tag: 3.2.0
9
  License: GPLv2 or later
10
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
11
 
117
 
118
  == Changelog ==
119
 
120
+ = 3.2.0 - 2021-11-09 =
121
+ * Speeded up XLS export
122
+ * Added option "Remove emojis" (XLS format)
123
+ * Added option "Remove line breaks" (CSV format)
124
+ * Added field "Total volume"
125
+ * New button "Add calculated field" in section "Setup Fields"
126
+ * Fixed bug - photo missed in product search
127
+ * Fixed bug - can't filter items if item has "&" in name
128
+ * Fixed bug - PHP warnings for deleted taxonomy
129
+ * Fixed bug - long links broke PDF cells
130
+ * Fixed bug - ignored capability "export_woocommerce_orders"
131
+
132
  = 3.1.9 - 2021-06-22 =
133
  * New field "Sum of Items (Exported)" for mode "Summary Report By Customers"
134
  * Added extra operators for filter by item meta
view/settings-form.php CHANGED
@@ -18,20 +18,20 @@ $options = WC_Order_Export_Main_Settings::get_settings();
18
 
19
  $pdf_format_available_options = array(
20
  'orientation' => array(
21
- 'P' => 'Portrait',
22
- 'L' => 'Landscape',
23
  ),
24
  'page_size' => array(
25
  'A3' => 'A3',
26
  'A4' => 'A4',
27
  'A5' => 'A5',
28
- 'letter' => 'Letter',
29
- 'legal' => 'Legal',
30
  ),
31
  );
32
 
33
  function print_formats_field( $type, $segment = "", $selected = "", $custom_key = "" ) {
34
- if ( ! $type && $type !== 'meta' && $type !== 'field' ) {
35
  return '';
36
  }
37
  $margin_left = 'meta' == $type ? '1px' : '4px';
@@ -214,7 +214,9 @@ function remove_time_from_date( $datetime ) {
214
 
215
  <div id="my-export-file" class="my-block">
216
  <div class="wc-oe-header">
217
- <?php _e( 'Export filename', 'woo-order-export-lite' ) ?>:
 
 
218
  </div>
219
  <label id="export_filename" class="width-100">
220
  <input type="text" name="settings[export_filename]" class="width-100"
@@ -248,6 +250,7 @@ function remove_time_from_date( $datetime ) {
248
  <input type=hidden name="settings[format_xls_auto_width]" value=0>
249
  <input type=hidden name="settings[format_xls_direction_rtl]" value=0>
250
  <input type=hidden name="settings[format_xls_force_general_format]" value=0>
 
251
  <input type=checkbox name="settings[format_xls_use_xls_format]"
252
  value=1 <?php if ( @$settings['format_xls_use_xls_format'] ) {
253
  echo 'checked';
@@ -272,6 +275,10 @@ function remove_time_from_date( $datetime ) {
272
  value=1 <?php if ( @$settings['format_xls_force_general_format'] ) {
273
  echo 'checked';
274
  } ?> > <?php _e( 'Force general format for all cells', 'woo-order-export-lite' ) ?><br>
 
 
 
 
275
 
276
  <div class="pdf_two_col_block">
277
  <?php _e( 'Images width', 'woo-order-export-lite' ) ?>
@@ -293,6 +300,7 @@ function remove_time_from_date( $datetime ) {
293
  <input type=hidden name="settings[format_csv_display_column_names]" value=0>
294
  <input type=hidden name="settings[format_csv_force_quotes]" value=0>
295
  <input type=hidden name="settings[format_csv_delete_linebreaks]" value=0>
 
296
  <input type=hidden name="settings[format_csv_item_rows_start_from_new_line]" value=0>
297
  <input type=checkbox name="settings[format_csv_add_utf8_bom]"
298
  value=1 <?php if ( @$settings['format_csv_add_utf8_bom'] ) {
@@ -310,6 +318,10 @@ function remove_time_from_date( $datetime ) {
310
  value=1 <?php if ( @$settings['format_csv_delete_linebreaks'] ) {
311
  echo 'checked';
312
  } ?> > <?php _e( 'Convert line breaks to literals', 'woo-order-export-lite' ) ?><br>
 
 
 
 
313
  <input type=checkbox name="settings[format_csv_item_rows_start_from_new_line]"
314
  value=1 <?php if ( @$settings['format_csv_item_rows_start_from_new_line'] ) {
315
  echo 'checked';
@@ -941,7 +953,7 @@ function remove_time_from_date( $datetime ) {
941
  include_once WOE_PRO_PLUGIN_BASEPATH . '/view/filter-by-subscription.php';
942
  } else {
943
  ?>
944
- <span class="my-hide-next "><?php _e( 'Filter by order', 'export' ); ?>
945
  <span class="ui-icon ui-icon-triangle-1-s my-icon-triangle"></span></span>
946
  <div id="my-order" class="hide">
947
  <div><input type="hidden" name="settings[skip_suborders]" value="0"/><label><input type="checkbox"
@@ -1375,10 +1387,10 @@ function remove_time_from_date( $datetime ) {
1375
  </div>
1376
  <div class="custom-fields__condotion-wrapper custom-fields__condotion-wrapper_position">
1377
  <select id="billing_locations" class="select2-i18n" data-select2-i18n-width="150">
1378
- <option>City</option>
1379
- <option>State</option>
1380
- <option>Postcode</option>
1381
- <option>Country</option>
1382
  </select>
1383
  <select id="billing_compare" class="select_compare">
1384
  <option>=</option>
@@ -1425,10 +1437,10 @@ function remove_time_from_date( $datetime ) {
1425
  </div>
1426
  <div class="custom-fields__condotion-wrapper custom-fields__condotion-wrapper_position">
1427
  <select id="shipping_locations" class="select2-i18n" data-select2-i18n-width="150">
1428
- <option>City</option>
1429
- <option>State</option>
1430
- <option>Postcode</option>
1431
- <option>Country</option>
1432
  </select>
1433
  <select id="shipping_compare" class="select_compare">
1434
  <option>=</option>
@@ -1622,6 +1634,9 @@ function remove_time_from_date( $datetime ) {
1622
  <button class='button-secondary add-custom'>
1623
  <?php _e( 'Add static field', 'woo-order-export-lite' ) ?>
1624
  </button>
 
 
 
1625
  </div>
1626
  <div class="tab-actions-buttons other_items-actions-buttons">
1627
  <span class="tab-actions-buttons__title">
@@ -1772,7 +1787,7 @@ function remove_time_from_date( $datetime ) {
1772
  'woo-order-export-lite' ) ?></button>
1773
  </div>
1774
  </div>
1775
- <div class='div_custom products-segment segment-form products-add-static-field'>
1776
  <div>
1777
  <label for="colname_custom_field_products"><?php _e( 'Column name',
1778
  'woo-order-export-lite' ) ?>:</label>
@@ -1816,7 +1831,7 @@ function remove_time_from_date( $datetime ) {
1816
  <label><?php _e( 'Column name', 'woo-order-export-lite' ) ?>:</label><input
1817
  type='text' id='colname_custom_meta_product_items'/>
1818
  <div style="margin-top: 15px;"></div>
1819
- <?php echo print_formats_field( 'meta', 'products_items' ); ?>
1820
  <div style="text-align: right;">
1821
  <button id='button_custom_meta_product_items'
1822
  class='button-secondary'><?php _e( 'Confirm',
@@ -1837,7 +1852,7 @@ function remove_time_from_date( $datetime ) {
1837
  <input type='text' class="set-up__selects_sm" id='value_custom_field_product_items'/>
1838
  </div>
1839
  <div>
1840
- <?php echo print_formats_field( 'field', 'products_items' ); ?>
1841
  </div>
1842
  <div style="text-align: right;">
1843
  <button id='button_custom_field_product_items'
@@ -1898,67 +1913,157 @@ function remove_time_from_date( $datetime ) {
1898
  </div>
1899
  <div class='div_custom other-items-segment segment-form other-items-add-fee-form'>
1900
  <label>
1901
- <?php _e( 'Fee name', 'woo-order-export-lite' ) ?>:
1902
- </label>
1903
- <br/>
1904
  <select id='select_fee_items'></select>
1905
- <br/>
1906
- <br/>
1907
- <label><?php _e( 'Column name', 'woo-order-export-lite' ) ?>:</label>
1908
- <input type='text' id='colname_fee_item_other_items'/>
1909
  <div style="margin-top: 20px;">
1910
- <?php echo print_formats_field( 'field', 'other_items', 'money', 'format_fee_item_other_items'); ?>
1911
  </div>
1912
  <div style="text-align: right;">
1913
  <button id='button_other_items_add_fee_field' class='button-secondary'>
1914
- <?php _e( 'Confirm', 'woo-order-export-lite' ) ?>
1915
  </button>
1916
  <button class='button-secondary button-cancel'>
1917
- <?php _e( 'Cancel', 'woo-order-export-lite' ) ?>
1918
  </button>
1919
  </div>
1920
  </div>
1921
  <div class='div_custom other-items-segment segment-form other-items-add-shipping-form'>
1922
  <label>
1923
- <?php _e( 'Shipping name', 'woo-order-export-lite' ) ?>:
1924
- </label>
1925
- <br/>
1926
- <select id='select_shipping_items'></select>
1927
- <br/>
1928
- <br/>
1929
- <label><?php _e( 'Column name', 'woo-order-export-lite' ) ?>:</label>
1930
- <input type='text' id='colname_shipping_item_other_items'/>
1931
  <div style="margin-top: 20px;">
1932
- <?php echo print_formats_field( 'field', 'other_items', 'money', 'format_shipping_item_other_items'); ?>
1933
  </div>
1934
  <div style="text-align: right;">
1935
  <button id='button_other_items_add_shipping_field' class='button-secondary'>
1936
- <?php _e( 'Confirm', 'woo-order-export-lite' ) ?>
1937
  </button>
1938
  <button class='button-secondary button-cancel'>
1939
- <?php _e( 'Cancel', 'woo-order-export-lite' ) ?>
1940
  </button>
1941
  </div>
1942
  </div>
1943
  <div class='div_custom other-items-segment segment-form other-items-add-tax-form'>
1944
  <label>
1945
- <?php _e( 'Tax name', 'woo-order-export-lite' ) ?>:
1946
- </label>
1947
- <br/>
1948
  <select id='select_tax_items'></select>
1949
- <br/>
1950
- <br/>
1951
- <label><?php _e( 'Column name', 'woo-order-export-lite' ) ?>:</label>
1952
- <input type='text' id='colname_tax_item_other_items'/>
1953
  <div style="margin-top: 20px;">
1954
- <?php echo print_formats_field( 'field', 'other_items', 'money', 'format_tax_item_other_items'); ?>
1955
  </div>
1956
  <div style="text-align: right;">
1957
  <button id='button_other_items_add_tax_field' class='button-secondary'>
1958
- <?php _e( 'Confirm', 'woo-order-export-lite' ) ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1959
  </button>
1960
  <button class='button-secondary button-cancel'>
1961
- <?php _e( 'Cancel', 'woo-order-export-lite' ) ?>
1962
  </button>
1963
  </div>
1964
  </div>
@@ -2048,6 +2153,7 @@ function remove_time_from_date( $datetime ) {
2048
  <div id="progressBar">
2049
  <div></div>
2050
  </div>
 
2051
  </div>
2052
  <div id="background"></div>
2053
  <?php } ?>
18
 
19
  $pdf_format_available_options = array(
20
  'orientation' => array(
21
+ 'P' => __( 'Portrait', 'woo-order-export-lite' ),
22
+ 'L' => __( 'Landscape', 'woo-order-export-lite' ),
23
  ),
24
  'page_size' => array(
25
  'A3' => 'A3',
26
  'A4' => 'A4',
27
  'A5' => 'A5',
28
+ 'letter' => __( 'Letter', 'woo-order-export-lite' ),
29
+ 'legal' => __( 'Legal', 'woo-order-export-lite' ),
30
  ),
31
  );
32
 
33
  function print_formats_field( $type, $segment = "", $selected = "", $custom_key = "" ) {
34
+ if ( ! $type && $type !== 'meta' && $type !== 'field' && $type !== 'calculated' ) {
35
  return '';
36
  }
37
  $margin_left = 'meta' == $type ? '1px' : '4px';
214
 
215
  <div id="my-export-file" class="my-block">
216
  <div class="wc-oe-header">
217
+ <?php _e( 'Export filename', 'woo-order-export-lite' ) ?> :
218
+ <a style="float:right;font-weight:normal" target="_blank" href="https://docs.algolplus.com/algol_order_export/the-export-filename-block/">
219
+ <?php _e('supported tags', 'woo-order-export-lite' ) ?></a>
220
  </div>
221
  <label id="export_filename" class="width-100">
222
  <input type="text" name="settings[export_filename]" class="width-100"
250
  <input type=hidden name="settings[format_xls_auto_width]" value=0>
251
  <input type=hidden name="settings[format_xls_direction_rtl]" value=0>
252
  <input type=hidden name="settings[format_xls_force_general_format]" value=0>
253
+ <input type=hidden name="settings[format_xls_remove_emojis]" value=0>
254
  <input type=checkbox name="settings[format_xls_use_xls_format]"
255
  value=1 <?php if ( @$settings['format_xls_use_xls_format'] ) {
256
  echo 'checked';
275
  value=1 <?php if ( @$settings['format_xls_force_general_format'] ) {
276
  echo 'checked';
277
  } ?> > <?php _e( 'Force general format for all cells', 'woo-order-export-lite' ) ?><br>
278
+ <input type=checkbox name="settings[format_xls_remove_emojis]"
279
+ value=1 <?php if ( @$settings['format_xls_remove_emojis'] ) {
280
+ echo 'checked';
281
+ } ?> > <?php _e( 'Remove emojis', 'woo-order-export-lite' ) ?><br>
282
 
283
  <div class="pdf_two_col_block">
284
  <?php _e( 'Images width', 'woo-order-export-lite' ) ?>
300
  <input type=hidden name="settings[format_csv_display_column_names]" value=0>
301
  <input type=hidden name="settings[format_csv_force_quotes]" value=0>
302
  <input type=hidden name="settings[format_csv_delete_linebreaks]" value=0>
303
+ <input type=hidden name="settings[format_csv_remove_linebreaks]" value=0>
304
  <input type=hidden name="settings[format_csv_item_rows_start_from_new_line]" value=0>
305
  <input type=checkbox name="settings[format_csv_add_utf8_bom]"
306
  value=1 <?php if ( @$settings['format_csv_add_utf8_bom'] ) {
318
  value=1 <?php if ( @$settings['format_csv_delete_linebreaks'] ) {
319
  echo 'checked';
320
  } ?> > <?php _e( 'Convert line breaks to literals', 'woo-order-export-lite' ) ?><br>
321
+ <input type=checkbox name="settings[format_csv_remove_linebreaks]"
322
+ value=1 <?php if ( @$settings['format_csv_remove_linebreaks'] ) {
323
+ echo 'checked';
324
+ } ?> > <?php _e( 'Remove line breaks', 'woo-order-export-lite' ) ?><br>
325
  <input type=checkbox name="settings[format_csv_item_rows_start_from_new_line]"
326
  value=1 <?php if ( @$settings['format_csv_item_rows_start_from_new_line'] ) {
327
  echo 'checked';
953
  include_once WOE_PRO_PLUGIN_BASEPATH . '/view/filter-by-subscription.php';
954
  } else {
955
  ?>
956
+ <span class="my-hide-next "><?php _e( 'Filter by order', 'woo-order-export-lite' ); ?>
957
  <span class="ui-icon ui-icon-triangle-1-s my-icon-triangle"></span></span>
958
  <div id="my-order" class="hide">
959
  <div><input type="hidden" name="settings[skip_suborders]" value="0"/><label><input type="checkbox"
1387
  </div>
1388
  <div class="custom-fields__condotion-wrapper custom-fields__condotion-wrapper_position">
1389
  <select id="billing_locations" class="select2-i18n" data-select2-i18n-width="150">
1390
+ <option value="City"><?php _e( 'City', 'woo-order-export-lite' );?></option>
1391
+ <option value="State"><?php _e( 'State', 'woo-order-export-lite' );?></option>
1392
+ <option value="Postcode"><?php _e( 'Postcode', 'woo-order-export-lite' );?></option>
1393
+ <option value="Country"><?php _e( 'Country', 'woo-order-export-lite' );?></option>
1394
  </select>
1395
  <select id="billing_compare" class="select_compare">
1396
  <option>=</option>
1437
  </div>
1438
  <div class="custom-fields__condotion-wrapper custom-fields__condotion-wrapper_position">
1439
  <select id="shipping_locations" class="select2-i18n" data-select2-i18n-width="150">
1440
+ <option value="City"><?php _e( 'City', 'woo-order-export-lite' );?></option>
1441
+ <option value="State"><?php _e( 'State', 'woo-order-export-lite' );?></option>
1442
+ <option value="Postcode"><?php _e( 'Postcode', 'woo-order-export-lite' );?></option>
1443
+ <option value="Country"><?php _e( 'Country', 'woo-order-export-lite' );?></option>
1444
  </select>
1445
  <select id="shipping_compare" class="select_compare">
1446
  <option>=</option>
1634
  <button class='button-secondary add-custom'>
1635
  <?php _e( 'Add static field', 'woo-order-export-lite' ) ?>
1636
  </button>
1637
+ <button class='button-secondary add-calculated'>
1638
+ <?php _e( 'Add calculated field', 'woo-order-export-lite' ) ?>
1639
+ </button>
1640
  </div>
1641
  <div class="tab-actions-buttons other_items-actions-buttons">
1642
  <span class="tab-actions-buttons__title">
1787
  'woo-order-export-lite' ) ?></button>
1788
  </div>
1789
  </div>
1790
+ <div class='div_custom products-segment segment-form products-add-static-field'>
1791
  <div>
1792
  <label for="colname_custom_field_products"><?php _e( 'Column name',
1793
  'woo-order-export-lite' ) ?>:</label>
1831
  <label><?php _e( 'Column name', 'woo-order-export-lite' ) ?>:</label><input
1832
  type='text' id='colname_custom_meta_product_items'/>
1833
  <div style="margin-top: 15px;"></div>
1834
+ <?php echo print_formats_field( 'meta', 'product_items' ); ?>
1835
  <div style="text-align: right;">
1836
  <button id='button_custom_meta_product_items'
1837
  class='button-secondary'><?php _e( 'Confirm',
1852
  <input type='text' class="set-up__selects_sm" id='value_custom_field_product_items'/>
1853
  </div>
1854
  <div>
1855
+ <?php echo print_formats_field( 'field', 'product_items' ); ?>
1856
  </div>
1857
  <div style="text-align: right;">
1858
  <button id='button_custom_field_product_items'
1913
  </div>
1914
  <div class='div_custom other-items-segment segment-form other-items-add-fee-form'>
1915
  <label>
1916
+ <?php _e( 'Fee name', 'woo-order-export-lite' ) ?>:
1917
+ </label>
1918
+ <br/>
1919
  <select id='select_fee_items'></select>
1920
+ <br/>
1921
+ <br/>
1922
+ <label><?php _e( 'Column name', 'woo-order-export-lite' ) ?>:</label>
1923
+ <input type='text' id='colname_fee_item_other_items'/>
1924
  <div style="margin-top: 20px;">
1925
+ <?php echo print_formats_field( 'field', 'other_items', 'money', 'format_fee_item_other_items'); ?>
1926
  </div>
1927
  <div style="text-align: right;">
1928
  <button id='button_other_items_add_fee_field' class='button-secondary'>
1929
+ <?php _e( 'Confirm', 'woo-order-export-lite' ) ?>
1930
  </button>
1931
  <button class='button-secondary button-cancel'>
1932
+ <?php _e( 'Cancel', 'woo-order-export-lite' ) ?>
1933
  </button>
1934
  </div>
1935
  </div>
1936
  <div class='div_custom other-items-segment segment-form other-items-add-shipping-form'>
1937
  <label>
1938
+ <?php _e( 'Shipping name', 'woo-order-export-lite' ) ?>:
1939
+ </label>
1940
+ <br/>
1941
+ <select id='select_shipping_items'></select>
1942
+ <br/>
1943
+ <br/>
1944
+ <label><?php _e( 'Column name', 'woo-order-export-lite' ) ?>:</label>
1945
+ <input type='text' id='colname_shipping_item_other_items'/>
1946
  <div style="margin-top: 20px;">
1947
+ <?php echo print_formats_field( 'field', 'other_items', 'money', 'format_shipping_item_other_items'); ?>
1948
  </div>
1949
  <div style="text-align: right;">
1950
  <button id='button_other_items_add_shipping_field' class='button-secondary'>
1951
+ <?php _e( 'Confirm', 'woo-order-export-lite' ) ?>
1952
  </button>
1953
  <button class='button-secondary button-cancel'>
1954
+ <?php _e( 'Cancel', 'woo-order-export-lite' ) ?>
1955
  </button>
1956
  </div>
1957
  </div>
1958
  <div class='div_custom other-items-segment segment-form other-items-add-tax-form'>
1959
  <label>
1960
+ <?php _e( 'Tax name', 'woo-order-export-lite' ) ?>:
1961
+ </label>
1962
+ <br/>
1963
  <select id='select_tax_items'></select>
1964
+ <br/>
1965
+ <br/>
1966
+ <label><?php _e( 'Column name', 'woo-order-export-lite' ) ?>:</label>
1967
+ <input type='text' id='colname_tax_item_other_items'/>
1968
  <div style="margin-top: 20px;">
1969
+ <?php echo print_formats_field( 'field', 'other_items', 'money', 'format_tax_item_other_items'); ?>
1970
  </div>
1971
  <div style="text-align: right;">
1972
  <button id='button_other_items_add_tax_field' class='button-secondary'>
1973
+ <?php _e( 'Confirm', 'woo-order-export-lite' ) ?>
1974
+ </button>
1975
+ <button class='button-secondary button-cancel'>
1976
+ <?php _e( 'Cancel', 'woo-order-export-lite' ) ?>
1977
+ </button>
1978
+ </div>
1979
+ </div>
1980
+ <div class="div_calculated segment-form all-segments">
1981
+ <div style="padding-bottom: 0.4rem">
1982
+ <a class='add_form_tip' href="https://docs.algolplus.com/algol_order_export/fields/" target="_blank">
1983
+ <?php _e( "You should add code to section \"Misc Settings\". Read the guide", 'woo-order-export-lite' )?>
1984
+ </a>
1985
+ </div>
1986
+ <div>
1987
+ <label for="metakey_custom_calculated">
1988
+ <?php _e('Meta key', 'woo-order-export-lite') ?>:
1989
+ </label>
1990
+ <input type="text" id="metakey_custom_calculated"/>
1991
+ </div>
1992
+ <div>
1993
+ <label for="label_custom_calculated">
1994
+ <?php _e('Label', 'woo-order-export-lite') ?>:
1995
+ </label>
1996
+ <input type="text" id="label_custom_calculated"/>
1997
+ </div>
1998
+ <div>
1999
+ <?php echo print_formats_field('calculated'); ?>
2000
+ </div>
2001
+ <div style="text-align: right;">
2002
+ <button id='button_custom_calculated' class='button-secondary'>
2003
+ <?php _e( 'Confirm', 'woo-order-export-lite' ) ?>
2004
+ </button>
2005
+ <button class='button-secondary button-cancel'>
2006
+ <?php _e( 'Cancel', 'woo-order-export-lite' ) ?>
2007
+ </button>
2008
+ </div>
2009
+ </div>
2010
+ <div class="div_calculated segment-form products-segment">
2011
+ <div style="padding-bottom: 0.4rem">
2012
+ <a class='add_form_tip' href="https://docs.algolplus.com/algol_order_export/add-calculated-field-for-product/" target="_blank">
2013
+ <?php _e( "You should add code to section \"Misc Settings\". Read the guide", 'woo-order-export-lite' )?>
2014
+ </a>
2015
+ </div>
2016
+ <div>
2017
+ <label for="metakey_custom_calculated_products">
2018
+ <?php _e('Meta key', 'woo-order-export-lite') ?>:
2019
+ </label>
2020
+ <input type="text" id="metakey_custom_calculated_products"/>
2021
+ </div>
2022
+ <div>
2023
+ <label for="label_custom_calculated_products">
2024
+ <?php _e('Label', 'woo-order-export-lite') ?>:
2025
+ </label>
2026
+ <input type="text" id="label_custom_calculated_products"/>
2027
+ </div>
2028
+ <div>
2029
+ <?php echo print_formats_field('calculated', 'products'); ?>
2030
+ </div>
2031
+ <div style="text-align: right;">
2032
+ <button id='button_custom_calculated_products' class='button-secondary'>
2033
+ <?php _e( 'Confirm', 'woo-order-export-lite' ) ?>
2034
+ </button>
2035
+ <button class='button-secondary button-cancel'>
2036
+ <?php _e( 'Cancel', 'woo-order-export-lite' ) ?>
2037
+ </button>
2038
+ </div>
2039
+ </div>
2040
+ <div class="div_calculated segment-form product_items-segment">
2041
+ <div style="padding-bottom: 0.4rem">
2042
+ <a class='add_form_tip' href="https://docs.algolplus.com/algol_order_export/add-calculated-field-for-product/" target="_blank">
2043
+ <?php _e( "You should add code to section \"Misc Settings\". Read the guide", 'woo-order-export-lite' )?>
2044
+ </a>
2045
+ </div>
2046
+ <div>
2047
+ <label for="metakey_custom_calculated_product_items">
2048
+ <?php _e('Meta key', 'woo-order-export-lite') ?>:
2049
+ </label>
2050
+ <input type="text" id="metakey_custom_calculated_product_items"/>
2051
+ </div>
2052
+ <div>
2053
+ <label for="label_custom_calculated_product_items">
2054
+ <?php _e('Label', 'woo-order-export-lite') ?>:
2055
+ </label>
2056
+ <input type="text" id="label_custom_calculated_product_items"/>
2057
+ </div>
2058
+ <div>
2059
+ <?php echo print_formats_field('calculated', 'product_items'); ?>
2060
+ </div>
2061
+ <div style="text-align: right;">
2062
+ <button id='button_custom_calculated_product_items' class='button-secondary'>
2063
+ <?php _e( 'Confirm', 'woo-order-export-lite' ) ?>
2064
  </button>
2065
  <button class='button-secondary button-cancel'>
2066
+ <?php _e( 'Cancel', 'woo-order-export-lite' ) ?>
2067
  </button>
2068
  </div>
2069
  </div>
2153
  <div id="progressBar">
2154
  <div></div>
2155
  </div>
2156
+ <h3 class="title-gen-file"><?php _e( "Generating file...", 'woo-order-export-lite' ) ?></h3>
2157
  </div>
2158
  <div id="background"></div>
2159
  <?php } ?>
woo-order-export-lite.php CHANGED
@@ -5,11 +5,11 @@
5
  * Description: Export orders from WooCommerce with ease (Excel/CSV/XML/JSON supported)
6
  * Author: AlgolPlus
7
  * Author URI: https://algolplus.com/
8
- * Version: 3.1.9
9
  * Text Domain: woo-order-export-lite
10
  * Domain Path: /i18n/languages/
11
- * WC requires at least: 2.6.0
12
- * WC tested up to: 5.4
13
  *
14
  * Copyright: (c) 2015 AlgolPlus LLC. (algol.plus@gmail.com)
15
  *
@@ -40,7 +40,7 @@ if ( class_exists( 'WC_Order_Export_Admin' ) ) {
40
  }
41
 
42
  if ( ! defined( 'WOE_VERSION' ) ) {
43
- define( 'WOE_VERSION', '3.1.9' );
44
  define( 'WOE_PLUGIN_BASENAME', plugin_basename( __FILE__ ) );
45
  define( 'WOE_PLUGIN_BASEPATH', dirname( __FILE__ ) );
46
  }
5
  * Description: Export orders from WooCommerce with ease (Excel/CSV/XML/JSON supported)
6
  * Author: AlgolPlus
7
  * Author URI: https://algolplus.com/
8
+ * Version: 3.2.0
9
  * Text Domain: woo-order-export-lite
10
  * Domain Path: /i18n/languages/
11
+ * WC requires at least: 3.0.0
12
+ * WC tested up to: 5.8
13
  *
14
  * Copyright: (c) 2015 AlgolPlus LLC. (algol.plus@gmail.com)
15
  *
40
  }
41
 
42
  if ( ! defined( 'WOE_VERSION' ) ) {
43
+ define( 'WOE_VERSION', '3.2.0' );
44
  define( 'WOE_PLUGIN_BASENAME', plugin_basename( __FILE__ ) );
45
  define( 'WOE_PLUGIN_BASEPATH', dirname( __FILE__ ) );
46
  }