Advanced Order Export For WooCommerce - Version 3.1.5

Version Description

  • 2020-08-24 =
  • Compatible with PHP 7.4
  • Added option "Format output" (XML format)
  • Added option "Don't break order lines by 2 pages" (PDF format)
  • Added option "Add links to images" (PDF format)
  • Added option "Try to convert serialized values" (Misc Settings)
  • Added fields "Summary Report Total Fee Amount", "Summary Report Total Tax Amount"
  • Fixed bug - 'wc doing it wrong' notice (direct access to product parent property)
  • Fixed bug - option "Change order status" worked only for button "Export w/o progress"
  • Fixed bug - option "Add products as "
Download this release

Release Info

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

Code changes from version 3.1.4 to 3.1.5

Files changed (49) hide show
  1. assets/css/export.css +4 -5
  2. assets/js/buttons.js +6 -0
  3. assets/js/export-fields.js +6 -0
  4. assets/js/select2-i18n.js +1 -1
  5. assets/js/settings-form.js +1 -1
  6. classes/FPDF/class-woe-fpdf.php +4 -0
  7. classes/FPDF/class-woe-pdf-mc-table.php +75 -7
  8. classes/PHPExcel/Calculation.php +18 -18
  9. classes/PHPExcel/Calculation/Engineering.php +5 -5
  10. classes/PHPExcel/Calculation/FormulaParser.php +30 -30
  11. classes/PHPExcel/Calculation/Functions.php +4 -4
  12. classes/PHPExcel/Calculation/TextData.php +13 -13
  13. classes/PHPExcel/Cell.php +7 -7
  14. classes/PHPExcel/Cell/DefaultValueBinder.php +2 -2
  15. classes/PHPExcel/Reader/Excel2003XML.php +2 -2
  16. classes/PHPExcel/Reader/Excel5.php +48 -48
  17. classes/PHPExcel/Reader/Excel5/Escher.php +6 -6
  18. classes/PHPExcel/Reader/OOCalc.php +1 -1
  19. classes/PHPExcel/Reader/SYLK.php +9 -9
  20. classes/PHPExcel/ReferenceHelper.php +2 -2
  21. classes/PHPExcel/Shared/OLE.php +1 -1
  22. classes/PHPExcel/Shared/String.php +6 -6
  23. classes/PHPExcel/Shared/ZipStreamWrapper.php +1 -1
  24. classes/PHPExcel/Worksheet/AutoFilter.php +1 -1
  25. classes/PHPExcel/Writer/Excel5/Parser.php +8 -8
  26. classes/PHPExcel/Writer/Excel5/Workbook.php +1 -1
  27. classes/PHPExcel/Writer/Excel5/Worksheet.php +1 -1
  28. classes/admin/class-wc-order-export-labels.php +4 -0
  29. classes/admin/class-wc-order-export-manage.php +12 -1
  30. classes/admin/tabs/ajax/trait-wc-order-export-admin-tab-abstract-ajax-export.php +10 -2
  31. classes/core/class-wc-order-export-data-extractor-ui.php +27 -11
  32. classes/core/class-wc-order-export-data-extractor.php +75 -23
  33. classes/core/class-wc-order-export-engine.php +20 -9
  34. classes/core/class-wc-order-export-order-coupon-fields.php +14 -10
  35. classes/core/class-wc-order-export-order-fields.php +6 -3
  36. classes/core/class-wc-order-export-order-product-fields.php +42 -16
  37. classes/formats/abstract-class-woe-formatter-plain-format.php +40 -8
  38. classes/formats/abstract-class-woe-formatter-sv.php +8 -3
  39. classes/formats/abstract-class-woe-formatter.php +12 -1
  40. classes/formats/class-woe-formatter-html.php +5 -5
  41. classes/formats/class-woe-formatter-pdf.php +117 -4
  42. classes/formats/class-woe-formatter-xls.php +11 -1
  43. classes/formats/class-woe-formatter-xml.php +2 -2
  44. i18n/languages/woo-order-export-lite.pot +439 -401
  45. readme.txt +26 -4
  46. view/settings-form.php +126 -87
  47. view/tab/help.php +12 -6
  48. view/tab/tools.php +2 -2
  49. woo-order-export-lite.php +3 -3
assets/css/export.css CHANGED
@@ -98,19 +98,19 @@ input.date {
98
  padding-bottom: 5px;
99
  }
100
 
101
- .clearfix:before,
102
- .clearfix:after,
103
  .wc_oe-row:after {
104
  content: "";
105
  display: table;
106
  }
107
 
108
- .clearfix:after,
109
  .wc_oe-row:after {
110
  clear: both;
111
  }
112
 
113
- .clearfix,
114
  .wc_oe-row:after {
115
  zoom: 1; /* For IE 6/7 (trigger hasLayout) */
116
  }
@@ -407,7 +407,6 @@ input.date {
407
  -moz-user-select: none;
408
  -ms-user-select: none;
409
  user-select: none;
410
- cursor: not-allowed;
411
  opacity: 0.65;
412
  background-color: #fff;
413
  border-color: #ccc;
98
  padding-bottom: 5px;
99
  }
100
 
101
+ .weo_clearfix:before,
102
+ .weo_clearfix:after,
103
  .wc_oe-row:after {
104
  content: "";
105
  display: table;
106
  }
107
 
108
+ .weo_clearfix:after,
109
  .wc_oe-row:after {
110
  clear: both;
111
  }
112
 
113
+ .weo_clearfix,
114
  .wc_oe-row:after {
115
  zoom: 1; /* For IE 6/7 (trigger hasLayout) */
116
  }
407
  -moz-user-select: none;
408
  -ms-user-select: none;
409
  user-select: none;
 
410
  opacity: 0.65;
411
  background-color: #fff;
412
  border-color: #ccc;
assets/js/buttons.js CHANGED
@@ -188,6 +188,10 @@ function woe_get_all( start, percent, method ) {
188
  data.push( {name: 'file_id', value: window.file_id} );
189
  data.push( {name: 'woe_nonce', value: settings_form.woe_nonce} );
190
  data.push( {name: 'tab', value: settings_form.woe_active_tab} );
 
 
 
 
191
 
192
  jQuery.ajax( {
193
  type: "post",
@@ -317,6 +321,8 @@ jQuery( document ).ready( function ( $ ) {
317
  }
318
  window.count = response['total'];
319
  window.file_id = response['file_id'];
 
 
320
  console.log( window.count );
321
 
322
  if ( window.count > 0 ) {
188
  data.push( {name: 'file_id', value: window.file_id} );
189
  data.push( {name: 'woe_nonce', value: settings_form.woe_nonce} );
190
  data.push( {name: 'tab', value: settings_form.woe_active_tab} );
191
+ if( method == 'export_part' ) {
192
+ data.push( {name: 'max_line_items', value: window.max_line_items} );
193
+ data.push( {name: 'max_coupons', value: window.max_coupons} );
194
+ }
195
 
196
  jQuery.ajax( {
197
  type: "post",
321
  }
322
  window.count = response['total'];
323
  window.file_id = response['file_id'];
324
+ window.max_line_items = response['max_line_items'];
325
+ window.max_coupons = response['max_coupons'];
326
  console.log( window.count );
327
 
328
  if ( window.count > 0 ) {
assets/js/export-fields.js CHANGED
@@ -1688,6 +1688,8 @@ jQuery( document ).ready( function ( $ ) {
1688
  summary_report_fields.push( $( '#user_unselected_segment input[value="summary_report_total_discount"]' ).parents( 'li' ) );
1689
  summary_report_fields.push( $( '#user_unselected_segment input[value="summary_report_total_refund_count"]' ).parents( 'li' ) );
1690
  summary_report_fields.push( $( '#user_unselected_segment input[value="summary_report_total_refund_amount"]' ).parents( 'li' ) );
 
 
1691
 
1692
  jQuery( '#manage_fields' ).toggleClass( 'summary-customers-report', ! ! jQuery( this ).prop( 'checked' ) );
1693
 
@@ -1711,6 +1713,8 @@ jQuery( document ).ready( function ( $ ) {
1711
  $( '#order_fields .segment_user input[value="summary_report_total_discount"]' ).closest( '.mapping_row' ).remove();
1712
  $( '#order_fields .segment_user input[value="summary_report_total_refund_count"]' ).closest( '.mapping_row' ).remove();
1713
  $( '#order_fields .segment_user input[value="summary_report_total_refund_amount"]' ).closest( '.mapping_row' ).remove();
 
 
1714
 
1715
  // insert summary report fields
1716
  jQuery.each( summary_report_fields, function ( i, value ) {
@@ -1742,6 +1746,8 @@ jQuery( document ).ready( function ( $ ) {
1742
  $( '#order_fields .segment_user input[value="summary_report_total_discount"]' ).closest( '.mapping_row' ).remove();
1743
  $( '#order_fields .segment_user input[value="summary_report_total_refund_count"]' ).closest( '.mapping_row' ).remove();
1744
  $( '#order_fields .segment_user input[value="summary_report_total_refund_amount"]' ).closest( '.mapping_row' ).remove();
 
 
1745
 
1746
  jQuery.each( summary_report_fields, function ( i, value ) {
1747
  $( value ).hide();
1688
  summary_report_fields.push( $( '#user_unselected_segment input[value="summary_report_total_discount"]' ).parents( 'li' ) );
1689
  summary_report_fields.push( $( '#user_unselected_segment input[value="summary_report_total_refund_count"]' ).parents( 'li' ) );
1690
  summary_report_fields.push( $( '#user_unselected_segment input[value="summary_report_total_refund_amount"]' ).parents( 'li' ) );
1691
+ summary_report_fields.push( $( '#user_unselected_segment input[value="summary_report_total_tax_amount"]' ).parents( 'li' ) );
1692
+ summary_report_fields.push( $( '#user_unselected_segment input[value="summary_report_total_fee_amount"]' ).parents( 'li' ) );
1693
 
1694
  jQuery( '#manage_fields' ).toggleClass( 'summary-customers-report', ! ! jQuery( this ).prop( 'checked' ) );
1695
 
1713
  $( '#order_fields .segment_user input[value="summary_report_total_discount"]' ).closest( '.mapping_row' ).remove();
1714
  $( '#order_fields .segment_user input[value="summary_report_total_refund_count"]' ).closest( '.mapping_row' ).remove();
1715
  $( '#order_fields .segment_user input[value="summary_report_total_refund_amount"]' ).closest( '.mapping_row' ).remove();
1716
+ $( '#order_fields .segment_user input[value="summary_report_total_tax_amount"]' ).closest( '.mapping_row' ).remove();
1717
+ $( '#order_fields .segment_user input[value="summary_report_total_fee_amount"]' ).closest( '.mapping_row' ).remove();
1718
 
1719
  // insert summary report fields
1720
  jQuery.each( summary_report_fields, function ( i, value ) {
1746
  $( '#order_fields .segment_user input[value="summary_report_total_discount"]' ).closest( '.mapping_row' ).remove();
1747
  $( '#order_fields .segment_user input[value="summary_report_total_refund_count"]' ).closest( '.mapping_row' ).remove();
1748
  $( '#order_fields .segment_user input[value="summary_report_total_refund_amount"]' ).closest( '.mapping_row' ).remove();
1749
+ $( '#order_fields .segment_user input[value="summary_report_total_tax_amount"]' ).closest( '.mapping_row' ).remove();
1750
+ $( '#order_fields .segment_user input[value="summary_report_total_fee_amount"]' ).closest( '.mapping_row' ).remove();
1751
 
1752
  jQuery.each( summary_report_fields, function ( i, value ) {
1753
  $( value ).hide();
assets/js/select2-i18n.js CHANGED
@@ -46,7 +46,7 @@ jQuery.fn.extend( {
46
  minimumInputLength: 3,
47
  templateResult: function ( item ) {
48
 
49
- var markup = '<div class="clearfix">' +
50
  '<div>';
51
 
52
  if ( typeof item.photo_url !== "undefined" ) {
46
  minimumInputLength: 3,
47
  templateResult: function ( item ) {
48
 
49
+ var markup = '<div class="weo_clearfix">' +
50
  '<div>';
51
 
52
  if ( typeof item.photo_url !== "undefined" ) {
assets/js/settings-form.js CHANGED
@@ -185,7 +185,7 @@ jQuery( document ).ready( function ( $ ) {
185
 
186
  $( '.my-hide-next' ).click( function () {
187
 
188
- $( this ).next().toggle();
189
 
190
  var is_shown = ! $( this ).next().is( ':hidden' );
191
 
185
 
186
  $( '.my-hide-next' ).click( function () {
187
 
188
+ $( this ).next().toggleClass('hide');
189
 
190
  var is_shown = ! $( this ).next().is( ':hidden' );
191
 
classes/FPDF/class-woe-fpdf.php CHANGED
@@ -2738,6 +2738,10 @@ class WOE_FPDF {
2738
  $cwlen = $maxUni + 1;
2739
  // for each character
2740
  for ( $cid = $startcid; $cid < $cwlen; $cid ++ ) {
 
 
 
 
2741
  if ( $font['cw'][ $cid * 2 ] == "\00" && $font['cw'][ $cid * 2 + 1 ] == "\00" ) {
2742
  continue;
2743
  }
2738
  $cwlen = $maxUni + 1;
2739
  // for each character
2740
  for ( $cid = $startcid; $cid < $cwlen; $cid ++ ) {
2741
+ if( !isset($font['cw'][ $cid * 2 ]) ) {
2742
+ continue;
2743
+ }
2744
+
2745
  if ( $font['cw'][ $cid * 2 ] == "\00" && $font['cw'][ $cid * 2 + 1 ] == "\00" ) {
2746
  continue;
2747
  }
classes/FPDF/class-woe-pdf-mc-table.php CHANGED
@@ -98,14 +98,26 @@ class WOE_PDF_MC_Table extends WOE_FPDF {
98
  }
99
 
100
  public function Header() {
101
- if ( ! empty( $this->header_props['title'] ) ) {
102
- $this->changeBrushToDraw( 'header' );
103
- $this->Cell( 0, 0, $this->header_props['title'], 0, 0, 'C' );
104
- $this->Ln( 2 );
105
- }
 
106
 
107
- if ( $this->drawLogo() ) {
108
- $this->Ln( 1 );
 
 
 
 
 
 
 
 
 
 
 
109
  }
110
  }
111
 
@@ -177,6 +189,30 @@ class WOE_PDF_MC_Table extends WOE_FPDF {
177
  $this->Row( $data, $widths, $h, $style );
178
  }
179
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
180
  protected function Row( $data, $widths = null, $h = null, $style = null ) {
181
  if ( ! $data ) {
182
  return;
@@ -233,8 +269,20 @@ class WOE_PDF_MC_Table extends WOE_FPDF {
233
  }
234
 
235
  $source = $data[ $i ]['value'];
 
 
236
  $type = strtoupper( pathinfo( $source, PATHINFO_EXTENSION ) );
237
  $this->Image( $source, $x + $margin, $y + $margin + $y_offset, $w - 2 * $margin, $image_height - 2 * $margin, $type );
 
 
 
 
 
 
 
 
 
 
238
  } elseif ( ! is_array( $data[ $i ] ) ) {
239
  //Print the text
240
  $this->MultiCell( $w, $h, $data[ $i ], 0, $horizontal_align, $vertical_align );
@@ -271,6 +319,15 @@ class WOE_PDF_MC_Table extends WOE_FPDF {
271
  return isset( $value['type'], $value['value'] ) && 'image' === $value['type'] && file_exists( $value['value'] );
272
  }
273
 
 
 
 
 
 
 
 
 
 
274
  protected function getColumnCountInPage( $widths ) {
275
  $count = count( $widths );
276
  if ( $this->table_props['stretch'] ) {
@@ -375,6 +432,17 @@ class WOE_PDF_MC_Table extends WOE_FPDF {
375
  return 5 * $nb;
376
  }
377
 
 
 
 
 
 
 
 
 
 
 
 
378
  public function CheckPageBreak( $h ) {
379
  //If the height h would cause an overflow, add a new page immediately
380
  if ( $this->GetY() + $h > $this->flt_page_break_trigger ) {
98
  }
99
 
100
  public function Header() {
101
+ if ( apply_filters( 'woe_formatter_pdf_title_before_logo', true ) ) {
102
+ if ( ! empty( $this->header_props['title'] ) ) {
103
+ $this->changeBrushToDraw( 'header' );
104
+ $this->Cell( 0, 0, $this->header_props['title'], 0, 0, 'C' );
105
+ $this->Ln( 2 );
106
+ }
107
 
108
+ if ( $this->drawLogo() ) {
109
+ $this->Ln( 1 );
110
+ }
111
+ } else {
112
+ if ( $this->drawLogo() ) {
113
+ $this->Ln( 1 );
114
+ }
115
+
116
+ if ( ! empty( $this->header_props['title'] ) ) {
117
+ $this->changeBrushToDraw( 'header' );
118
+ $this->Cell( 0, 0, $this->header_props['title'], 0, 0, 'C' );
119
+ $this->Ln( 2 );
120
+ }
121
  }
122
  }
123
 
189
  $this->Row( $data, $widths, $h, $style );
190
  }
191
 
192
+ public function isEnoughSpace( $data, $heights ) {
193
+ $widths = $this->getRowWidths( $data );
194
+ $baseHeight = $this->getRowHeight( $widths, $data );
195
+ $image_height = floatval( $this->table_row_props['image_height'] );
196
+ $height = floatval( 0 );
197
+
198
+ foreach ( $data as $index => $row ) {
199
+ $h = $baseHeight;
200
+
201
+ if ( $image_height && $this->isRowWithImage( $row ) && $h < $image_height ) {
202
+ $h = $image_height;
203
+ }
204
+
205
+ $customHeight = isset( $heights[ $index ] ) ? $heights[ $index ] : null;
206
+ if ( $customHeight && $h < $customHeight ) {
207
+ $h = $customHeight;
208
+ }
209
+
210
+ $height += $h;
211
+ }
212
+
213
+ return $this->GetY() + $height < $this->flt_page_break_trigger;
214
+ }
215
+
216
  protected function Row( $data, $widths = null, $h = null, $style = null ) {
217
  if ( ! $data ) {
218
  return;
269
  }
270
 
271
  $source = $data[ $i ]['value'];
272
+ $link = isset( $data[ $i ]['link'] ) ? $data[ $i ]['link'] : "";
273
+
274
  $type = strtoupper( pathinfo( $source, PATHINFO_EXTENSION ) );
275
  $this->Image( $source, $x + $margin, $y + $margin + $y_offset, $w - 2 * $margin, $image_height - 2 * $margin, $type );
276
+
277
+ if ( $link ) {
278
+ $this->Link($x + $margin, $y + $margin, $w - 2 * $margin, $h - 2 * $margin, $link);
279
+ }
280
+ } elseif ( $this->isLinkCell( $data[ $i ] ) ) {
281
+ $margin = 1 / 2;
282
+ $link = $data[ $i ]['link'];
283
+
284
+ $this->MultiCell( $w, $h, $link, $link, $horizontal_align, $vertical_align, false, 0 );
285
+ $this->Link( $x + 3 * $margin, $y + 3 * $margin, $w - 2 * $margin, $h - 2 * $margin, $link );
286
  } elseif ( ! is_array( $data[ $i ] ) ) {
287
  //Print the text
288
  $this->MultiCell( $w, $h, $data[ $i ], 0, $horizontal_align, $vertical_align );
319
  return isset( $value['type'], $value['value'] ) && 'image' === $value['type'] && file_exists( $value['value'] );
320
  }
321
 
322
+ /**
323
+ * @param mixed $value
324
+ *
325
+ * @return bool
326
+ */
327
+ protected function isLinkCell( $value ) {
328
+ return isset( $value['type'], $value['link'] ) && 'link' === $value['type'];
329
+ }
330
+
331
  protected function getColumnCountInPage( $widths ) {
332
  $count = count( $widths );
333
  if ( $this->table_props['stretch'] ) {
432
  return 5 * $nb;
433
  }
434
 
435
+ public function addPageBreak() {
436
+ $this->flush_buffer();
437
+
438
+ $this->AddPage( $this->str_current_orientation );
439
+ if ( $this->table_header_props['repeat'] && $this->table_header ) {
440
+ $this->changeBrushToDraw( 'table_header' );
441
+ $this->Row( $this->table_header );
442
+ $this->changeBrushToDraw( 'table_row' );
443
+ }
444
+ }
445
+
446
  public function CheckPageBreak( $h ) {
447
  //If the height h would cause an overflow, add a new page immediately
448
  if ( $this->GetY() + $h > $this->flt_page_break_trigger ) {
classes/PHPExcel/Calculation.php CHANGED
@@ -2548,7 +2548,7 @@ class PHPExcel_Calculation
2548
  public static function unwrapResult($value)
2549
  {
2550
  if (is_string($value)) {
2551
- if ((isset($value{0})) && ($value{0} == '"') && (substr($value, -1) == '"')) {
2552
  return substr($value, 1, -1);
2553
  }
2554
  // Convert numeric errors to NaN error
@@ -2669,11 +2669,11 @@ class PHPExcel_Calculation
2669
  // Basic validation that this is indeed a formula
2670
  // We return an empty array if not
2671
  $formula = trim($formula);
2672
- if ((!isset($formula{0})) || ($formula{0} != '=')) {
2673
  return array();
2674
  }
2675
  $formula = ltrim(substr($formula, 1));
2676
- if (!isset($formula{0})) {
2677
  return array();
2678
  }
2679
 
@@ -2761,11 +2761,11 @@ class PHPExcel_Calculation
2761
  // Basic validation that this is indeed a formula
2762
  // We simply return the cell value if not
2763
  $formula = trim($formula);
2764
- if ($formula{0} != '=') {
2765
  return self::wrapResult($formula);
2766
  }
2767
  $formula = ltrim(substr($formula, 1));
2768
- if (!isset($formula{0})) {
2769
  return self::wrapResult($formula);
2770
  }
2771
 
@@ -2777,7 +2777,7 @@ class PHPExcel_Calculation
2777
  return $cellValue;
2778
  }
2779
 
2780
- if (($wsTitle{0} !== "\x00") && ($this->cyclicReferenceStack->onStack($wsCellReference))) {
2781
  if ($this->cyclicFormulaCount <= 0) {
2782
  $this->cyclicFormulaCell = '';
2783
  return $this->raiseFormulaError('Cyclic Reference in Formula');
@@ -3031,7 +3031,7 @@ class PHPExcel_Calculation
3031
  } else {
3032
  if ($value == '') {
3033
  return 'an empty string';
3034
- } elseif ($value{0} == '#') {
3035
  return 'a '.$value.' error';
3036
  } else {
3037
  $typeString = 'a string';
@@ -3163,10 +3163,10 @@ class PHPExcel_Calculation
3163
  // Loop through the formula extracting each operator and operand in turn
3164
  while (true) {
3165
  //echo 'Assessing Expression '.substr($formula, $index), PHP_EOL;
3166
- $opCharacter = $formula{$index}; // Get the first character of the value at the current index position
3167
  //echo 'Initial character of expression block is '.$opCharacter, PHP_EOL;
3168
- if ((isset(self::$comparisonOperators[$opCharacter])) && (strlen($formula) > $index) && (isset(self::$comparisonOperators[$formula{$index+1}]))) {
3169
- $opCharacter .= $formula{++$index};
3170
  //echo 'Initial character of expression block is comparison operator '.$opCharacter.PHP_EOL;
3171
  }
3172
 
@@ -3454,11 +3454,11 @@ class PHPExcel_Calculation
3454
  }
3455
  }
3456
  // Ignore white space
3457
- while (($formula{$index} == "\n") || ($formula{$index} == "\r")) {
3458
  ++$index;
3459
  }
3460
- if ($formula{$index} == ' ') {
3461
- while ($formula{$index} == ' ') {
3462
  ++$index;
3463
  }
3464
  // If we're expecting an operator, but only have a space between the previous and next operands (and both are
@@ -3888,7 +3888,7 @@ class PHPExcel_Calculation
3888
  // echo 'Token is a PHPExcel constant: '.$excelConstant.'<br />';
3889
  $stack->push('Constant Value', self::$excelConstants[$excelConstant]);
3890
  $this->_debugLog->writeDebugLog('Evaluating Constant ', $excelConstant, ' as ', $this->showTypeDetails(self::$excelConstants[$excelConstant]));
3891
- } elseif ((is_numeric($token)) || ($token === null) || (is_bool($token)) || ($token == '') || ($token{0} == '"') || ($token{0} == '#')) {
3892
  // echo 'Token is a number, boolean, string, null or an Excel error<br />';
3893
  $stack->push('Value', $token);
3894
  // if the token is a named range, push the named range name onto the stack
@@ -3933,13 +3933,13 @@ class PHPExcel_Calculation
3933
  if (is_string($operand)) {
3934
  // We only need special validations for the operand if it is a string
3935
  // Start by stripping off the quotation marks we use to identify true excel string values internally
3936
- if ($operand > '' && $operand{0} == '"') {
3937
  $operand = self::unwrapResult($operand);
3938
  }
3939
  // If the string is a numeric value, we treat it as a numeric, so no further testing
3940
  if (!is_numeric($operand)) {
3941
  // If not a numeric, test to see if the value is an Excel error, and so can't be used in normal binary operations
3942
- if ($operand > '' && $operand{0} == '#') {
3943
  $stack->push('Value', $operand);
3944
  $this->_debugLog->writeDebugLog('Evaluation Result is ', $this->showTypeDetails($operand));
3945
  return false;
@@ -3995,10 +3995,10 @@ class PHPExcel_Calculation
3995
  }
3996
 
3997
  // Simple validate the two operands if they are string values
3998
- if (is_string($operand1) && $operand1 > '' && $operand1{0} == '"') {
3999
  $operand1 = self::unwrapResult($operand1);
4000
  }
4001
- if (is_string($operand2) && $operand2 > '' && $operand2{0} == '"') {
4002
  $operand2 = self::unwrapResult($operand2);
4003
  }
4004
 
2548
  public static function unwrapResult($value)
2549
  {
2550
  if (is_string($value)) {
2551
+ if ((isset($value[0])) && ($value[0] == '"') && (substr($value, -1) == '"')) {
2552
  return substr($value, 1, -1);
2553
  }
2554
  // Convert numeric errors to NaN error
2669
  // Basic validation that this is indeed a formula
2670
  // We return an empty array if not
2671
  $formula = trim($formula);
2672
+ if ((!isset($formula[0])) || ($formula[0] != '=')) {
2673
  return array();
2674
  }
2675
  $formula = ltrim(substr($formula, 1));
2676
+ if (!isset($formula[0])) {
2677
  return array();
2678
  }
2679
 
2761
  // Basic validation that this is indeed a formula
2762
  // We simply return the cell value if not
2763
  $formula = trim($formula);
2764
+ if ($formula[0] != '=') {
2765
  return self::wrapResult($formula);
2766
  }
2767
  $formula = ltrim(substr($formula, 1));
2768
+ if (!isset($formula[0])) {
2769
  return self::wrapResult($formula);
2770
  }
2771
 
2777
  return $cellValue;
2778
  }
2779
 
2780
+ if (($wsTitle[0] !== "\x00") && ($this->cyclicReferenceStack->onStack($wsCellReference))) {
2781
  if ($this->cyclicFormulaCount <= 0) {
2782
  $this->cyclicFormulaCell = '';
2783
  return $this->raiseFormulaError('Cyclic Reference in Formula');
3031
  } else {
3032
  if ($value == '') {
3033
  return 'an empty string';
3034
+ } elseif ($value[0] == '#') {
3035
  return 'a '.$value.' error';
3036
  } else {
3037
  $typeString = 'a string';
3163
  // Loop through the formula extracting each operator and operand in turn
3164
  while (true) {
3165
  //echo 'Assessing Expression '.substr($formula, $index), PHP_EOL;
3166
+ $opCharacter = $formula[$index]; // Get the first character of the value at the current index position
3167
  //echo 'Initial character of expression block is '.$opCharacter, PHP_EOL;
3168
+ if ((isset(self::$comparisonOperators[$opCharacter])) && (strlen($formula) > $index) && (isset(self::$comparisonOperators[$formula[$index+1]]))) {
3169
+ $opCharacter .= $formula[++$index];
3170
  //echo 'Initial character of expression block is comparison operator '.$opCharacter.PHP_EOL;
3171
  }
3172
 
3454
  }
3455
  }
3456
  // Ignore white space
3457
+ while (($formula[$index] == "\n") || ($formula[$index] == "\r")) {
3458
  ++$index;
3459
  }
3460
+ if ($formula[$index] == ' ') {
3461
+ while ($formula[$index] == ' ') {
3462
  ++$index;
3463
  }
3464
  // If we're expecting an operator, but only have a space between the previous and next operands (and both are
3888
  // echo 'Token is a PHPExcel constant: '.$excelConstant.'<br />';
3889
  $stack->push('Constant Value', self::$excelConstants[$excelConstant]);
3890
  $this->_debugLog->writeDebugLog('Evaluating Constant ', $excelConstant, ' as ', $this->showTypeDetails(self::$excelConstants[$excelConstant]));
3891
+ } elseif ((is_numeric($token)) || ($token === null) || (is_bool($token)) || ($token == '') || ($token[0] == '"') || ($token[0] == '#')) {
3892
  // echo 'Token is a number, boolean, string, null or an Excel error<br />';
3893
  $stack->push('Value', $token);
3894
  // if the token is a named range, push the named range name onto the stack
3933
  if (is_string($operand)) {
3934
  // We only need special validations for the operand if it is a string
3935
  // Start by stripping off the quotation marks we use to identify true excel string values internally
3936
+ if ($operand > '' && $operand[0] == '"') {
3937
  $operand = self::unwrapResult($operand);
3938
  }
3939
  // If the string is a numeric value, we treat it as a numeric, so no further testing
3940
  if (!is_numeric($operand)) {
3941
  // If not a numeric, test to see if the value is an Excel error, and so can't be used in normal binary operations
3942
+ if ($operand > '' && $operand[0] == '#') {
3943
  $stack->push('Value', $operand);
3944
  $this->_debugLog->writeDebugLog('Evaluation Result is ', $this->showTypeDetails($operand));
3945
  return false;
3995
  }
3996
 
3997
  // Simple validate the two operands if they are string values
3998
+ if (is_string($operand1) && $operand1 > '' && $operand1[0] == '"') {
3999
  $operand1 = self::unwrapResult($operand1);
4000
  }
4001
+ if (is_string($operand2) && $operand2 > '' && $operand2[0] == '"') {
4002
  $operand2 = self::unwrapResult($operand2);
4003
  }
4004
 
classes/PHPExcel/Calculation/Engineering.php CHANGED
@@ -768,7 +768,7 @@ class PHPExcel_Calculation_Engineering
768
  // Split the input into its Real and Imaginary components
769
  $leadingSign = 0;
770
  if (strlen($workString) > 0) {
771
- $leadingSign = (($workString{0} == '+') || ($workString{0} == '-')) ? 1 : 0;
772
  }
773
  $power = '';
774
  $realNumber = strtok($workString, '+-');
@@ -809,16 +809,16 @@ class PHPExcel_Calculation_Engineering
809
  */
810
  private static function cleanComplex($complexNumber)
811
  {
812
- if ($complexNumber{0} == '+') {
813
  $complexNumber = substr($complexNumber, 1);
814
  }
815
- if ($complexNumber{0} == '0') {
816
  $complexNumber = substr($complexNumber, 1);
817
  }
818
- if ($complexNumber{0} == '.') {
819
  $complexNumber = '0'.$complexNumber;
820
  }
821
- if ($complexNumber{0} == '+') {
822
  $complexNumber = substr($complexNumber, 1);
823
  }
824
  return $complexNumber;
768
  // Split the input into its Real and Imaginary components
769
  $leadingSign = 0;
770
  if (strlen($workString) > 0) {
771
+ $leadingSign = (($workString[0] == '+') || ($workString[0] == '-')) ? 1 : 0;
772
  }
773
  $power = '';
774
  $realNumber = strtok($workString, '+-');
809
  */
810
  private static function cleanComplex($complexNumber)
811
  {
812
+ if ($complexNumber[0] == '+') {
813
  $complexNumber = substr($complexNumber, 1);
814
  }
815
+ if ($complexNumber[0] == '0') {
816
  $complexNumber = substr($complexNumber, 1);
817
  }
818
+ if ($complexNumber[0] == '.') {
819
  $complexNumber = '0'.$complexNumber;
820
  }
821
+ if ($complexNumber[0] == '+') {
822
  $complexNumber = substr($complexNumber, 1);
823
  }
824
  return $complexNumber;
classes/PHPExcel/Calculation/FormulaParser.php CHANGED
@@ -159,7 +159,7 @@ class PHPExcel_Calculation_FormulaParser
159
 
160
  // Check if the formula has a valid starting =
161
  $formulaLength = strlen($this->formula);
162
- if ($formulaLength < 2 || $this->formula{0} != '=') {
163
  return;
164
  }
165
 
@@ -181,8 +181,8 @@ class PHPExcel_Calculation_FormulaParser
181
  // embeds are doubled
182
  // end marks token
183
  if ($inString) {
184
- if ($this->formula{$index} == PHPExcel_Calculation_FormulaParser::QUOTE_DOUBLE) {
185
- if ((($index + 2) <= $formulaLength) && ($this->formula{$index + 1} == PHPExcel_Calculation_FormulaParser::QUOTE_DOUBLE)) {
186
  $value .= PHPExcel_Calculation_FormulaParser::QUOTE_DOUBLE;
187
  ++$index;
188
  } else {
@@ -191,7 +191,7 @@ class PHPExcel_Calculation_FormulaParser
191
  $value = "";
192
  }
193
  } else {
194
- $value .= $this->formula{$index};
195
  }
196
  ++$index;
197
  continue;
@@ -201,15 +201,15 @@ class PHPExcel_Calculation_FormulaParser
201
  // embeds are double
202
  // end does not mark a token
203
  if ($inPath) {
204
- if ($this->formula{$index} == PHPExcel_Calculation_FormulaParser::QUOTE_SINGLE) {
205
- if ((($index + 2) <= $formulaLength) && ($this->formula{$index + 1} == PHPExcel_Calculation_FormulaParser::QUOTE_SINGLE)) {
206
  $value .= PHPExcel_Calculation_FormulaParser::QUOTE_SINGLE;
207
  ++$index;
208
  } else {
209
  $inPath = false;
210
  }
211
  } else {
212
- $value .= $this->formula{$index};
213
  }
214
  ++$index;
215
  continue;
@@ -219,10 +219,10 @@ class PHPExcel_Calculation_FormulaParser
219
  // no embeds (changed to "()" by Excel)
220
  // end does not mark a token
221
  if ($inRange) {
222
- if ($this->formula{$index} == PHPExcel_Calculation_FormulaParser::BRACKET_CLOSE) {
223
  $inRange = false;
224
  }
225
- $value .= $this->formula{$index};
226
  ++$index;
227
  continue;
228
  }
@@ -230,7 +230,7 @@ class PHPExcel_Calculation_FormulaParser
230
  // error values
231
  // end marks a token, determined from absolute list of values
232
  if ($inError) {
233
- $value .= $this->formula{$index};
234
  ++$index;
235
  if (in_array($value, $ERRORS)) {
236
  $inError = false;
@@ -241,10 +241,10 @@ class PHPExcel_Calculation_FormulaParser
241
  }
242
 
243
  // scientific notation check
244
- if (strpos(PHPExcel_Calculation_FormulaParser::OPERATORS_SN, $this->formula{$index}) !== false) {
245
  if (strlen($value) > 1) {
246
- if (preg_match("/^[1-9]{1}(\.[0-9]+)?E{1}$/", $this->formula{$index}) != 0) {
247
- $value .= $this->formula{$index};
248
  ++$index;
249
  continue;
250
  }
@@ -254,7 +254,7 @@ class PHPExcel_Calculation_FormulaParser
254
  // independent character evaluation (order not important)
255
 
256
  // establish state-dependent character evaluations
257
- if ($this->formula{$index} == PHPExcel_Calculation_FormulaParser::QUOTE_DOUBLE) {
258
  if (strlen($value > 0)) {
259
  // unexpected
260
  $tokens1[] = new PHPExcel_Calculation_FormulaToken($value, PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_UNKNOWN);
@@ -265,7 +265,7 @@ class PHPExcel_Calculation_FormulaParser
265
  continue;
266
  }
267
 
268
- if ($this->formula{$index} == PHPExcel_Calculation_FormulaParser::QUOTE_SINGLE) {
269
  if (strlen($value) > 0) {
270
  // unexpected
271
  $tokens1[] = new PHPExcel_Calculation_FormulaToken($value, PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_UNKNOWN);
@@ -276,14 +276,14 @@ class PHPExcel_Calculation_FormulaParser
276
  continue;
277
  }
278
 
279
- if ($this->formula{$index} == PHPExcel_Calculation_FormulaParser::BRACKET_OPEN) {
280
  $inRange = true;
281
  $value .= PHPExcel_Calculation_FormulaParser::BRACKET_OPEN;
282
  ++$index;
283
  continue;
284
  }
285
 
286
- if ($this->formula{$index} == PHPExcel_Calculation_FormulaParser::ERROR_START) {
287
  if (strlen($value) > 0) {
288
  // unexpected
289
  $tokens1[] = new PHPExcel_Calculation_FormulaToken($value, PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_UNKNOWN);
@@ -296,7 +296,7 @@ class PHPExcel_Calculation_FormulaParser
296
  }
297
 
298
  // mark start and end of arrays and array rows
299
- if ($this->formula{$index} == PHPExcel_Calculation_FormulaParser::BRACE_OPEN) {
300
  if (strlen($value) > 0) {
301
  // unexpected
302
  $tokens1[] = new PHPExcel_Calculation_FormulaToken($value, PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_UNKNOWN);
@@ -315,7 +315,7 @@ class PHPExcel_Calculation_FormulaParser
315
  continue;
316
  }
317
 
318
- if ($this->formula{$index} == PHPExcel_Calculation_FormulaParser::SEMICOLON) {
319
  if (strlen($value) > 0) {
320
  $tokens1[] = new PHPExcel_Calculation_FormulaToken($value, PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_OPERAND);
321
  $value = "";
@@ -337,7 +337,7 @@ class PHPExcel_Calculation_FormulaParser
337
  continue;
338
  }
339
 
340
- if ($this->formula{$index} == PHPExcel_Calculation_FormulaParser::BRACE_CLOSE) {
341
  if (strlen($value) > 0) {
342
  $tokens1[] = new PHPExcel_Calculation_FormulaToken($value, PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_OPERAND);
343
  $value = "";
@@ -358,14 +358,14 @@ class PHPExcel_Calculation_FormulaParser
358
  }
359
 
360
  // trim white-space
361
- if ($this->formula{$index} == PHPExcel_Calculation_FormulaParser::WHITESPACE) {
362
  if (strlen($value) > 0) {
363
  $tokens1[] = new PHPExcel_Calculation_FormulaToken($value, PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_OPERAND);
364
  $value = "";
365
  }
366
  $tokens1[] = new PHPExcel_Calculation_FormulaToken("", PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_WHITESPACE);
367
  ++$index;
368
- while (($this->formula{$index} == PHPExcel_Calculation_FormulaParser::WHITESPACE) && ($index < $formulaLength)) {
369
  ++$index;
370
  }
371
  continue;
@@ -385,29 +385,29 @@ class PHPExcel_Calculation_FormulaParser
385
  }
386
 
387
  // standard infix operators
388
- if (strpos(PHPExcel_Calculation_FormulaParser::OPERATORS_INFIX, $this->formula{$index}) !== false) {
389
  if (strlen($value) > 0) {
390
  $tokens1[] =new PHPExcel_Calculation_FormulaToken($value, PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_OPERAND);
391
  $value = "";
392
  }
393
- $tokens1[] = new PHPExcel_Calculation_FormulaToken($this->formula{$index}, PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_OPERATORINFIX);
394
  ++$index;
395
  continue;
396
  }
397
 
398
  // standard postfix operators (only one)
399
- if (strpos(PHPExcel_Calculation_FormulaParser::OPERATORS_POSTFIX, $this->formula{$index}) !== false) {
400
  if (strlen($value) > 0) {
401
  $tokens1[] = new PHPExcel_Calculation_FormulaToken($value, PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_OPERAND);
402
  $value = "";
403
  }
404
- $tokens1[] = new PHPExcel_Calculation_FormulaToken($this->formula{$index}, PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_OPERATORPOSTFIX);
405
  ++$index;
406
  continue;
407
  }
408
 
409
  // start subexpression or function
410
- if ($this->formula{$index} == PHPExcel_Calculation_FormulaParser::PAREN_OPEN) {
411
  if (strlen($value) > 0) {
412
  $tmp = new PHPExcel_Calculation_FormulaToken($value, PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_FUNCTION, PHPExcel_Calculation_FormulaToken::TOKEN_SUBTYPE_START);
413
  $tokens1[] = $tmp;
@@ -423,7 +423,7 @@ class PHPExcel_Calculation_FormulaParser
423
  }
424
 
425
  // function, subexpression, or array parameters, or operand unions
426
- if ($this->formula{$index} == PHPExcel_Calculation_FormulaParser::COMMA) {
427
  if (strlen($value) > 0) {
428
  $tokens1[] = new PHPExcel_Calculation_FormulaToken($value, PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_OPERAND);
429
  $value = "";
@@ -444,7 +444,7 @@ class PHPExcel_Calculation_FormulaParser
444
  }
445
 
446
  // stop subexpression
447
- if ($this->formula{$index} == PHPExcel_Calculation_FormulaParser::PAREN_CLOSE) {
448
  if (strlen($value) > 0) {
449
  $tokens1[] = new PHPExcel_Calculation_FormulaToken($value, PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_OPERAND);
450
  $value = "";
@@ -460,7 +460,7 @@ class PHPExcel_Calculation_FormulaParser
460
  }
461
 
462
  // token accumulation
463
- $value .= $this->formula{$index};
464
  ++$index;
465
  }
466
 
159
 
160
  // Check if the formula has a valid starting =
161
  $formulaLength = strlen($this->formula);
162
+ if ($formulaLength < 2 || $this->formula[0] != '=') {
163
  return;
164
  }
165
 
181
  // embeds are doubled
182
  // end marks token
183
  if ($inString) {
184
+ if ($this->formula[$index] == PHPExcel_Calculation_FormulaParser::QUOTE_DOUBLE) {
185
+ if ((($index + 2) <= $formulaLength) && ($this->formula[$index + 1] == PHPExcel_Calculation_FormulaParser::QUOTE_DOUBLE)) {
186
  $value .= PHPExcel_Calculation_FormulaParser::QUOTE_DOUBLE;
187
  ++$index;
188
  } else {
191
  $value = "";
192
  }
193
  } else {
194
+ $value .= $this->formula[$index];
195
  }
196
  ++$index;
197
  continue;
201
  // embeds are double
202
  // end does not mark a token
203
  if ($inPath) {
204
+ if ($this->formula[$index] == PHPExcel_Calculation_FormulaParser::QUOTE_SINGLE) {
205
+ if ((($index + 2) <= $formulaLength) && ($this->formula[$index + 1] == PHPExcel_Calculation_FormulaParser::QUOTE_SINGLE)) {
206
  $value .= PHPExcel_Calculation_FormulaParser::QUOTE_SINGLE;
207
  ++$index;
208
  } else {
209
  $inPath = false;
210
  }
211
  } else {
212
+ $value .= $this->formula[$index];
213
  }
214
  ++$index;
215
  continue;
219
  // no embeds (changed to "()" by Excel)
220
  // end does not mark a token
221
  if ($inRange) {
222
+ if ($this->formula[$index] == PHPExcel_Calculation_FormulaParser::BRACKET_CLOSE) {
223
  $inRange = false;
224
  }
225
+ $value .= $this->formula[$index];
226
  ++$index;
227
  continue;
228
  }
230
  // error values
231
  // end marks a token, determined from absolute list of values
232
  if ($inError) {
233
+ $value .= $this->formula[$index];
234
  ++$index;
235
  if (in_array($value, $ERRORS)) {
236
  $inError = false;
241
  }
242
 
243
  // scientific notation check
244
+ if (strpos(PHPExcel_Calculation_FormulaParser::OPERATORS_SN, $this->formula[$index]) !== false) {
245
  if (strlen($value) > 1) {
246
+ if (preg_match("/^[1-9]{1}(\.[0-9]+)?E{1}$/", $this->formula[$index]) != 0) {
247
+ $value .= $this->formula[$index];
248
  ++$index;
249
  continue;
250
  }
254
  // independent character evaluation (order not important)
255
 
256
  // establish state-dependent character evaluations
257
+ if ($this->formula[$index] == PHPExcel_Calculation_FormulaParser::QUOTE_DOUBLE) {
258
  if (strlen($value > 0)) {
259
  // unexpected
260
  $tokens1[] = new PHPExcel_Calculation_FormulaToken($value, PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_UNKNOWN);
265
  continue;
266
  }
267
 
268
+ if ($this->formula[$index] == PHPExcel_Calculation_FormulaParser::QUOTE_SINGLE) {
269
  if (strlen($value) > 0) {
270
  // unexpected
271
  $tokens1[] = new PHPExcel_Calculation_FormulaToken($value, PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_UNKNOWN);
276
  continue;
277
  }
278
 
279
+ if ($this->formula[$index] == PHPExcel_Calculation_FormulaParser::BRACKET_OPEN) {
280
  $inRange = true;
281
  $value .= PHPExcel_Calculation_FormulaParser::BRACKET_OPEN;
282
  ++$index;
283
  continue;
284
  }
285
 
286
+ if ($this->formula[$index] == PHPExcel_Calculation_FormulaParser::ERROR_START) {
287
  if (strlen($value) > 0) {
288
  // unexpected
289
  $tokens1[] = new PHPExcel_Calculation_FormulaToken($value, PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_UNKNOWN);
296
  }
297
 
298
  // mark start and end of arrays and array rows
299
+ if ($this->formula[$index] == PHPExcel_Calculation_FormulaParser::BRACE_OPEN) {
300
  if (strlen($value) > 0) {
301
  // unexpected
302
  $tokens1[] = new PHPExcel_Calculation_FormulaToken($value, PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_UNKNOWN);
315
  continue;
316
  }
317
 
318
+ if ($this->formula[$index] == PHPExcel_Calculation_FormulaParser::SEMICOLON) {
319
  if (strlen($value) > 0) {
320
  $tokens1[] = new PHPExcel_Calculation_FormulaToken($value, PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_OPERAND);
321
  $value = "";
337
  continue;
338
  }
339
 
340
+ if ($this->formula[$index] == PHPExcel_Calculation_FormulaParser::BRACE_CLOSE) {
341
  if (strlen($value) > 0) {
342
  $tokens1[] = new PHPExcel_Calculation_FormulaToken($value, PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_OPERAND);
343
  $value = "";
358
  }
359
 
360
  // trim white-space
361
+ if ($this->formula[$index] == PHPExcel_Calculation_FormulaParser::WHITESPACE) {
362
  if (strlen($value) > 0) {
363
  $tokens1[] = new PHPExcel_Calculation_FormulaToken($value, PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_OPERAND);
364
  $value = "";
365
  }
366
  $tokens1[] = new PHPExcel_Calculation_FormulaToken("", PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_WHITESPACE);
367
  ++$index;
368
+ while (($this->formula[$index] == PHPExcel_Calculation_FormulaParser::WHITESPACE) && ($index < $formulaLength)) {
369
  ++$index;
370
  }
371
  continue;
385
  }
386
 
387
  // standard infix operators
388
+ if (strpos(PHPExcel_Calculation_FormulaParser::OPERATORS_INFIX, $this->formula[$index]) !== false) {
389
  if (strlen($value) > 0) {
390
  $tokens1[] =new PHPExcel_Calculation_FormulaToken($value, PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_OPERAND);
391
  $value = "";
392
  }
393
+ $tokens1[] = new PHPExcel_Calculation_FormulaToken($this->formula[$index], PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_OPERATORINFIX);
394
  ++$index;
395
  continue;
396
  }
397
 
398
  // standard postfix operators (only one)
399
+ if (strpos(PHPExcel_Calculation_FormulaParser::OPERATORS_POSTFIX, $this->formula[$index]) !== false) {
400
  if (strlen($value) > 0) {
401
  $tokens1[] = new PHPExcel_Calculation_FormulaToken($value, PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_OPERAND);
402
  $value = "";
403
  }
404
+ $tokens1[] = new PHPExcel_Calculation_FormulaToken($this->formula[$index], PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_OPERATORPOSTFIX);
405
  ++$index;
406
  continue;
407
  }
408
 
409
  // start subexpression or function
410
+ if ($this->formula[$index] == PHPExcel_Calculation_FormulaParser::PAREN_OPEN) {
411
  if (strlen($value) > 0) {
412
  $tmp = new PHPExcel_Calculation_FormulaToken($value, PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_FUNCTION, PHPExcel_Calculation_FormulaToken::TOKEN_SUBTYPE_START);
413
  $tokens1[] = $tmp;
423
  }
424
 
425
  // function, subexpression, or array parameters, or operand unions
426
+ if ($this->formula[$index] == PHPExcel_Calculation_FormulaParser::COMMA) {
427
  if (strlen($value) > 0) {
428
  $tokens1[] = new PHPExcel_Calculation_FormulaToken($value, PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_OPERAND);
429
  $value = "";
444
  }
445
 
446
  // stop subexpression
447
+ if ($this->formula[$index] == PHPExcel_Calculation_FormulaParser::PAREN_CLOSE) {
448
  if (strlen($value) > 0) {
449
  $tokens1[] = new PHPExcel_Calculation_FormulaToken($value, PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_OPERAND);
450
  $value = "";
460
  }
461
 
462
  // token accumulation
463
+ $value .= $this->formula[$index];
464
  ++$index;
465
  }
466
 
classes/PHPExcel/Calculation/Functions.php CHANGED
@@ -318,10 +318,10 @@ class PHPExcel_Calculation_Functions
318
  public static function ifCondition($condition)
319
  {
320
  $condition = PHPExcel_Calculation_Functions::flattenSingleValue($condition);
321
- if (!isset($condition{0})) {
322
  $condition = '=""';
323
  }
324
- if (!in_array($condition{0}, array('>', '<', '='))) {
325
  if (!is_numeric($condition)) {
326
  $condition = PHPExcel_Calculation::wrapResult(strtoupper($condition));
327
  }
@@ -559,7 +559,7 @@ class PHPExcel_Calculation_Functions
559
  return (integer) $value;
560
  case 'string':
561
  // Errors
562
- if ((strlen($value) > 0) && ($value{0} == '#')) {
563
  return $value;
564
  }
565
  break;
@@ -609,7 +609,7 @@ class PHPExcel_Calculation_Functions
609
  return 64;
610
  } elseif (is_string($value)) {
611
  // Errors
612
- if ((strlen($value) > 0) && ($value{0} == '#')) {
613
  return 16;
614
  }
615
  return 2;
318
  public static function ifCondition($condition)
319
  {
320
  $condition = PHPExcel_Calculation_Functions::flattenSingleValue($condition);
321
+ if (!isset($condition[0])) {
322
  $condition = '=""';
323
  }
324
+ if (!in_array($condition[0], array('>', '<', '='))) {
325
  if (!is_numeric($condition)) {
326
  $condition = PHPExcel_Calculation::wrapResult(strtoupper($condition));
327
  }
559
  return (integer) $value;
560
  case 'string':
561
  // Errors
562
+ if ((strlen($value) > 0) && ($value[0] == '#')) {
563
  return $value;
564
  }
565
  break;
609
  return 64;
610
  } elseif (is_string($value)) {
611
  // Errors
612
+ if ((strlen($value) > 0) && ($value[0] == '#')) {
613
  return 16;
614
  }
615
  return 2;
classes/PHPExcel/Calculation/TextData.php CHANGED
@@ -40,19 +40,19 @@ class PHPExcel_Calculation_TextData
40
 
41
  private static function unicodeToOrd($c)
42
  {
43
- if (ord($c{0}) >=0 && ord($c{0}) <= 127) {
44
- return ord($c{0});
45
- } elseif (ord($c{0}) >= 192 && ord($c{0}) <= 223) {
46
- return (ord($c{0})-192)*64 + (ord($c{1})-128);
47
- } elseif (ord($c{0}) >= 224 && ord($c{0}) <= 239) {
48
- return (ord($c{0})-224)*4096 + (ord($c{1})-128)*64 + (ord($c{2})-128);
49
- } elseif (ord($c{0}) >= 240 && ord($c{0}) <= 247) {
50
- return (ord($c{0})-240)*262144 + (ord($c{1})-128)*4096 + (ord($c{2})-128)*64 + (ord($c{3})-128);
51
- } elseif (ord($c{0}) >= 248 && ord($c{0}) <= 251) {
52
- return (ord($c{0})-248)*16777216 + (ord($c{1})-128)*262144 + (ord($c{2})-128)*4096 + (ord($c{3})-128)*64 + (ord($c{4})-128);
53
- } elseif (ord($c{0}) >= 252 && ord($c{0}) <= 253) {
54
- return (ord($c{0})-252)*1073741824 + (ord($c{1})-128)*16777216 + (ord($c{2})-128)*262144 + (ord($c{3})-128)*4096 + (ord($c{4})-128)*64 + (ord($c{5})-128);
55
- } elseif (ord($c{0}) >= 254 && ord($c{0}) <= 255) {
56
  // error
57
  return PHPExcel_Calculation_Functions::VALUE();
58
  }
40
 
41
  private static function unicodeToOrd($c)
42
  {
43
+ if (ord($c[0]) >=0 && ord($c[0]) <= 127) {
44
+ return ord($c[0]);
45
+ } elseif (ord($c[0]) >= 192 && ord($c[0]) <= 223) {
46
+ return (ord($c[0])-192)*64 + (ord($c[1])-128);
47
+ } elseif (ord($c[0]) >= 224 && ord($c[0]) <= 239) {
48
+ return (ord($c[0])-224)*4096 + (ord($c[1])-128)*64 + (ord($c[2])-128);
49
+ } elseif (ord($c[0]) >= 240 && ord($c[0]) <= 247) {
50
+ return (ord($c[0])-240)*262144 + (ord($c[1])-128)*4096 + (ord($c[2])-128)*64 + (ord($c[3])-128);
51
+ } elseif (ord($c[0]) >= 248 && ord($c[0]) <= 251) {
52
+ return (ord($c[0])-248)*16777216 + (ord($c[1])-128)*262144 + (ord($c[2])-128)*4096 + (ord($c[3])-128)*64 + (ord($c[4])-128);
53
+ } elseif (ord($c[0]) >= 252 && ord($c[0]) <= 253) {
54
+ return (ord($c[0])-252)*1073741824 + (ord($c[1])-128)*16777216 + (ord($c[2])-128)*262144 + (ord($c[3])-128)*4096 + (ord($c[4])-128)*64 + (ord($c[5])-128);
55
+ } elseif (ord($c[0]) >= 254 && ord($c[0]) <= 255) {
56
  // error
57
  return PHPExcel_Calculation_Functions::VALUE();
58
  }
classes/PHPExcel/Cell.php CHANGED
@@ -809,19 +809,19 @@ class PHPExcel_Cell
809
 
810
  // We also use the language construct isset() rather than the more costly strlen() function to match the length of $pString
811
  // for improved performance
812
- if (isset($pString{0})) {
813
- if (!isset($pString{1})) {
814
  $_indexCache[$pString] = $_columnLookup[$pString];
815
  return $_indexCache[$pString];
816
- } elseif (!isset($pString{2})) {
817
- $_indexCache[$pString] = $_columnLookup[$pString{0}] * 26 + $_columnLookup[$pString{1}];
818
  return $_indexCache[$pString];
819
- } elseif (!isset($pString{3})) {
820
- $_indexCache[$pString] = $_columnLookup[$pString{0}] * 676 + $_columnLookup[$pString{1}] * 26 + $_columnLookup[$pString{2}];
821
  return $_indexCache[$pString];
822
  }
823
  }
824
- throw new PHPExcel_Exception("Column string index can not be " . ((isset($pString{0})) ? "longer than 3 characters" : "empty"));
825
  }
826
 
827
  /**
809
 
810
  // We also use the language construct isset() rather than the more costly strlen() function to match the length of $pString
811
  // for improved performance
812
+ if (isset($pString[0])) {
813
+ if (!isset($pString[1])) {
814
  $_indexCache[$pString] = $_columnLookup[$pString];
815
  return $_indexCache[$pString];
816
+ } elseif (!isset($pString[2])) {
817
+ $_indexCache[$pString] = $_columnLookup[$pString[0]] * 26 + $_columnLookup[$pString[1]];
818
  return $_indexCache[$pString];
819
+ } elseif (!isset($pString[3])) {
820
+ $_indexCache[$pString] = $_columnLookup[$pString[0]] * 676 + $_columnLookup[$pString[1]] * 26 + $_columnLookup[$pString[2]];
821
  return $_indexCache[$pString];
822
  }
823
  }
824
+ throw new PHPExcel_Exception("Column string index can not be " . ((isset($pString[0])) ? "longer than 3 characters" : "empty"));
825
  }
826
 
827
  /**
classes/PHPExcel/Cell/DefaultValueBinder.php CHANGED
@@ -79,7 +79,7 @@ class PHPExcel_Cell_DefaultValueBinder implements PHPExcel_Cell_IValueBinder
79
  return PHPExcel_Cell_DataType::TYPE_STRING;
80
  } elseif ($pValue instanceof PHPExcel_RichText) {
81
  return PHPExcel_Cell_DataType::TYPE_INLINE;
82
- } elseif ($pValue{0} === '=' && strlen($pValue) > 1) {
83
  return PHPExcel_Cell_DataType::TYPE_FORMULA;
84
  } elseif (is_bool($pValue)) {
85
  return PHPExcel_Cell_DataType::TYPE_BOOL;
@@ -87,7 +87,7 @@ class PHPExcel_Cell_DefaultValueBinder implements PHPExcel_Cell_IValueBinder
87
  return PHPExcel_Cell_DataType::TYPE_NUMERIC;
88
  } elseif (preg_match('/^[\+\-]?([0-9]+\\.?[0-9]*|[0-9]*\\.?[0-9]+)([Ee][\-\+]?[0-2]?\d{1,3})?$/', $pValue)) {
89
  $tValue = ltrim($pValue, '+-');
90
- if (is_string($pValue) && $tValue{0} === '0' && strlen($tValue) > 1 && $tValue{1} !== '.') {
91
  return PHPExcel_Cell_DataType::TYPE_STRING;
92
  } elseif ((strpos($pValue, '.') === false) && ($pValue > PHP_INT_MAX)) {
93
  return PHPExcel_Cell_DataType::TYPE_STRING;
79
  return PHPExcel_Cell_DataType::TYPE_STRING;
80
  } elseif ($pValue instanceof PHPExcel_RichText) {
81
  return PHPExcel_Cell_DataType::TYPE_INLINE;
82
+ } elseif ( is_string($pValue) && $pValue[0] === '=' && strlen($pValue) > 1) {
83
  return PHPExcel_Cell_DataType::TYPE_FORMULA;
84
  } elseif (is_bool($pValue)) {
85
  return PHPExcel_Cell_DataType::TYPE_BOOL;
87
  return PHPExcel_Cell_DataType::TYPE_NUMERIC;
88
  } elseif (preg_match('/^[\+\-]?([0-9]+\\.?[0-9]*|[0-9]*\\.?[0-9]+)([Ee][\-\+]?[0-2]?\d{1,3})?$/', $pValue)) {
89
  $tValue = ltrim($pValue, '+-');
90
+ if (is_string($pValue) && $tValue[0] === '0' && strlen($tValue) > 1 && $tValue[1] !== '.') {
91
  return PHPExcel_Cell_DataType::TYPE_STRING;
92
  } elseif ((strpos($pValue, '.') === false) && ($pValue > PHP_INT_MAX)) {
93
  return PHPExcel_Cell_DataType::TYPE_STRING;
classes/PHPExcel/Reader/Excel2003XML.php CHANGED
@@ -689,7 +689,7 @@ class PHPExcel_Reader_Excel2003XML extends PHPExcel_Reader_Abstract implements P
689
  $rowReference = $rowID;
690
  }
691
  // Bracketed R references are relative to the current row
692
- if ($rowReference{0} == '[') {
693
  $rowReference = $rowID + trim($rowReference, '[]');
694
  }
695
  $columnReference = $cellReference[4][0];
@@ -698,7 +698,7 @@ class PHPExcel_Reader_Excel2003XML extends PHPExcel_Reader_Abstract implements P
698
  $columnReference = $columnNumber;
699
  }
700
  // Bracketed C references are relative to the current column
701
- if ($columnReference{0} == '[') {
702
  $columnReference = $columnNumber + trim($columnReference, '[]');
703
  }
704
  $A1CellReference = PHPExcel_Cell::stringFromColumnIndex($columnReference-1).$rowReference;
689
  $rowReference = $rowID;
690
  }
691
  // Bracketed R references are relative to the current row
692
+ if ($rowReference[0] == '[') {
693
  $rowReference = $rowID + trim($rowReference, '[]');
694
  }
695
  $columnReference = $cellReference[4][0];
698
  $columnReference = $columnNumber;
699
  }
700
  // Bracketed C references are relative to the current column
701
+ if ($columnReference[0] == '[') {
702
  $columnReference = $columnNumber + trim($columnReference, '[]');
703
  }
704
  $A1CellReference = PHPExcel_Cell::stringFromColumnIndex($columnReference-1).$rowReference;
classes/PHPExcel/Reader/Excel5.php CHANGED
@@ -1925,7 +1925,7 @@ class PHPExcel_Reader_Excel5 extends PHPExcel_Reader_Abstract implements PHPExce
1925
 
1926
  // offset: 0; size: 2; 0 = base 1900, 1 = base 1904
1927
  PHPExcel_Shared_Date::setExcelCalendar(PHPExcel_Shared_Date::CALENDAR_WINDOWS_1900);
1928
- if (ord($recordData{0}) == 1) {
1929
  PHPExcel_Shared_Date::setExcelCalendar(PHPExcel_Shared_Date::CALENDAR_MAC_1904);
1930
  }
1931
  }
@@ -1988,7 +1988,7 @@ class PHPExcel_Reader_Excel5 extends PHPExcel_Reader_Abstract implements PHPExce
1988
  }
1989
 
1990
  // offset: 10; size: 1; underline type
1991
- $underlineType = ord($recordData{10});
1992
  switch ($underlineType) {
1993
  case 0x00:
1994
  break; // no underline
@@ -2125,7 +2125,7 @@ class PHPExcel_Reader_Excel5 extends PHPExcel_Reader_Abstract implements PHPExce
2125
 
2126
  // offset: 6; size: 1; Alignment and text break
2127
  // bit 2-0, mask 0x07; horizontal alignment
2128
- $horAlign = (0x07 & ord($recordData{6})) >> 0;
2129
  switch ($horAlign) {
2130
  case 0:
2131
  $objStyle->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_GENERAL);
@@ -2150,7 +2150,7 @@ class PHPExcel_Reader_Excel5 extends PHPExcel_Reader_Abstract implements PHPExce
2150
  break;
2151
  }
2152
  // bit 3, mask 0x08; wrap text
2153
- $wrapText = (0x08 & ord($recordData{6})) >> 3;
2154
  switch ($wrapText) {
2155
  case 0:
2156
  $objStyle->getAlignment()->setWrapText(false);
@@ -2160,7 +2160,7 @@ class PHPExcel_Reader_Excel5 extends PHPExcel_Reader_Abstract implements PHPExce
2160
  break;
2161
  }
2162
  // bit 6-4, mask 0x70; vertical alignment
2163
- $vertAlign = (0x70 & ord($recordData{6})) >> 4;
2164
  switch ($vertAlign) {
2165
  case 0:
2166
  $objStyle->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_TOP);
@@ -2178,7 +2178,7 @@ class PHPExcel_Reader_Excel5 extends PHPExcel_Reader_Abstract implements PHPExce
2178
 
2179
  if ($this->version == self::XLS_BIFF8) {
2180
  // offset: 7; size: 1; XF_ROTATION: Text rotation angle
2181
- $angle = ord($recordData{7});
2182
  $rotation = 0;
2183
  if ($angle <= 90) {
2184
  $rotation = $angle;
@@ -2191,11 +2191,11 @@ class PHPExcel_Reader_Excel5 extends PHPExcel_Reader_Abstract implements PHPExce
2191
 
2192
  // offset: 8; size: 1; Indentation, shrink to cell size, and text direction
2193
  // bit: 3-0; mask: 0x0F; indent level
2194
- $indent = (0x0F & ord($recordData{8})) >> 0;
2195
  $objStyle->getAlignment()->setIndent($indent);
2196
 
2197
  // bit: 4; mask: 0x10; 1 = shrink content to fit into cell
2198
- $shrinkToFit = (0x10 & ord($recordData{8})) >> 4;
2199
  switch ($shrinkToFit) {
2200
  case 0:
2201
  $objStyle->getAlignment()->setShrinkToFit(false);
@@ -2275,7 +2275,7 @@ class PHPExcel_Reader_Excel5 extends PHPExcel_Reader_Abstract implements PHPExce
2275
  // BIFF5
2276
 
2277
  // offset: 7; size: 1; Text orientation and flags
2278
- $orientationAndFlags = ord($recordData{7});
2279
 
2280
  // bit: 1-0; mask: 0x03; XF_ORIENTATION: Text orientation
2281
  $xfOrientation = (0x03 & $orientationAndFlags) >> 0;
@@ -2399,7 +2399,7 @@ class PHPExcel_Reader_Excel5 extends PHPExcel_Reader_Abstract implements PHPExce
2399
  $xclrValue = substr($extData, 4, 4); // color value (value based on color type)
2400
 
2401
  if ($xclfType == 2) {
2402
- $rgb = sprintf('%02X%02X%02X', ord($xclrValue{0}), ord($xclrValue{1}), ord($xclrValue{2}));
2403
 
2404
  // modify the relevant style property
2405
  if (isset($this->mapCellXfIndex[$ixfe])) {
@@ -2414,7 +2414,7 @@ class PHPExcel_Reader_Excel5 extends PHPExcel_Reader_Abstract implements PHPExce
2414
  $xclrValue = substr($extData, 4, 4); // color value (value based on color type)
2415
 
2416
  if ($xclfType == 2) {
2417
- $rgb = sprintf('%02X%02X%02X', ord($xclrValue{0}), ord($xclrValue{1}), ord($xclrValue{2}));
2418
 
2419
  // modify the relevant style property
2420
  if (isset($this->mapCellXfIndex[$ixfe])) {
@@ -2429,7 +2429,7 @@ class PHPExcel_Reader_Excel5 extends PHPExcel_Reader_Abstract implements PHPExce
2429
  $xclrValue = substr($extData, 4, 4); // color value (value based on color type)
2430
 
2431
  if ($xclfType == 2) {
2432
- $rgb = sprintf('%02X%02X%02X', ord($xclrValue{0}), ord($xclrValue{1}), ord($xclrValue{2}));
2433
 
2434
  // modify the relevant style property
2435
  if (isset($this->mapCellXfIndex[$ixfe])) {
@@ -2444,7 +2444,7 @@ class PHPExcel_Reader_Excel5 extends PHPExcel_Reader_Abstract implements PHPExce
2444
  $xclrValue = substr($extData, 4, 4); // color value (value based on color type)
2445
 
2446
  if ($xclfType == 2) {
2447
- $rgb = sprintf('%02X%02X%02X', ord($xclrValue{0}), ord($xclrValue{1}), ord($xclrValue{2}));
2448
 
2449
  // modify the relevant style property
2450
  if (isset($this->mapCellXfIndex[$ixfe])) {
@@ -2459,7 +2459,7 @@ class PHPExcel_Reader_Excel5 extends PHPExcel_Reader_Abstract implements PHPExce
2459
  $xclrValue = substr($extData, 4, 4); // color value (value based on color type)
2460
 
2461
  if ($xclfType == 2) {
2462
- $rgb = sprintf('%02X%02X%02X', ord($xclrValue{0}), ord($xclrValue{1}), ord($xclrValue{2}));
2463
 
2464
  // modify the relevant style property
2465
  if (isset($this->mapCellXfIndex[$ixfe])) {
@@ -2474,7 +2474,7 @@ class PHPExcel_Reader_Excel5 extends PHPExcel_Reader_Abstract implements PHPExce
2474
  $xclrValue = substr($extData, 4, 4); // color value (value based on color type)
2475
 
2476
  if ($xclfType == 2) {
2477
- $rgb = sprintf('%02X%02X%02X', ord($xclrValue{0}), ord($xclrValue{1}), ord($xclrValue{2}));
2478
 
2479
  // modify the relevant style property
2480
  if (isset($this->mapCellXfIndex[$ixfe])) {
@@ -2489,7 +2489,7 @@ class PHPExcel_Reader_Excel5 extends PHPExcel_Reader_Abstract implements PHPExce
2489
  $xclrValue = substr($extData, 4, 4); // color value (value based on color type)
2490
 
2491
  if ($xclfType == 2) {
2492
- $rgb = sprintf('%02X%02X%02X', ord($xclrValue{0}), ord($xclrValue{1}), ord($xclrValue{2}));
2493
 
2494
  // modify the relevant style property
2495
  if (isset($this->mapCellXfIndex[$ixfe])) {
@@ -2504,7 +2504,7 @@ class PHPExcel_Reader_Excel5 extends PHPExcel_Reader_Abstract implements PHPExce
2504
  $xclrValue = substr($extData, 4, 4); // color value (value based on color type)
2505
 
2506
  if ($xclfType == 2) {
2507
- $rgb = sprintf('%02X%02X%02X', ord($xclrValue{0}), ord($xclrValue{1}), ord($xclrValue{2}));
2508
 
2509
  // modify the relevant style property
2510
  if (isset($this->mapCellXfIndex[$ixfe])) {
@@ -2546,7 +2546,7 @@ class PHPExcel_Reader_Excel5 extends PHPExcel_Reader_Abstract implements PHPExce
2546
 
2547
  if ($isBuiltIn) {
2548
  // offset: 2; size: 1; identifier for built-in style
2549
- $builtInId = ord($recordData{2});
2550
 
2551
  switch ($builtInId) {
2552
  case 0x00:
@@ -2611,7 +2611,7 @@ class PHPExcel_Reader_Excel5 extends PHPExcel_Reader_Abstract implements PHPExce
2611
  $this->pos += 4 + $length;
2612
 
2613
  // offset: 4; size: 1; sheet state
2614
- switch (ord($recordData{4})) {
2615
  case 0x00:
2616
  $sheetState = PHPExcel_Worksheet::SHEETSTATE_VISIBLE;
2617
  break;
@@ -2627,7 +2627,7 @@ class PHPExcel_Reader_Excel5 extends PHPExcel_Reader_Abstract implements PHPExce
2627
  }
2628
 
2629
  // offset: 5; size: 1; sheet type
2630
- $sheetType = ord($recordData{5});
2631
 
2632
  // offset: 6; size: var; sheet name
2633
  if ($this->version == self::XLS_BIFF8) {
@@ -2805,7 +2805,7 @@ class PHPExcel_Reader_Excel5 extends PHPExcel_Reader_Abstract implements PHPExce
2805
  // offset: 2; size: 1; keyboard shortcut
2806
 
2807
  // offset: 3; size: 1; length of the name (character count)
2808
- $nlen = ord($recordData{3});
2809
 
2810
  // offset: 4; size: 2; size of the formula data (it can happen that this is zero)
2811
  // note: there can also be additional data, this is not included in $flen
@@ -2888,7 +2888,7 @@ class PHPExcel_Reader_Excel5 extends PHPExcel_Reader_Abstract implements PHPExce
2888
  $pos += 2;
2889
 
2890
  // option flags
2891
- $optionFlags = ord($recordData{$pos});
2892
  ++$pos;
2893
 
2894
  // bit: 0; mask: 0x01; 0 = compressed; 1 = uncompressed
@@ -2955,7 +2955,7 @@ class PHPExcel_Reader_Excel5 extends PHPExcel_Reader_Abstract implements PHPExce
2955
 
2956
  // repeated option flags
2957
  // OpenOffice.org documentation 5.21
2958
- $option = ord($recordData{$pos});
2959
  ++$pos;
2960
 
2961
  if ($isCompressed && ($option == 0)) {
@@ -2977,7 +2977,7 @@ class PHPExcel_Reader_Excel5 extends PHPExcel_Reader_Abstract implements PHPExce
2977
  // this fragment compressed
2978
  $len = min($charsLeft, $limitpos - $pos);
2979
  for ($j = 0; $j < $len; ++$j) {
2980
- $retstr .= $recordData{$pos + $j} . chr(0);
2981
  }
2982
  $charsLeft -= $len;
2983
  $isCompressed = false;
@@ -3883,7 +3883,7 @@ class PHPExcel_Reader_Excel5 extends PHPExcel_Reader_Abstract implements PHPExce
3883
  // We can apparently not rely on $isPartOfSharedFormula. Even when $isPartOfSharedFormula = true
3884
  // the formula data may be ordinary formula data, therefore we need to check
3885
  // explicitly for the tExp token (0x01)
3886
- $isPartOfSharedFormula = $isPartOfSharedFormula && ord($formulaStructure{2}) == 0x01;
3887
 
3888
  if ($isPartOfSharedFormula) {
3889
  // part of shared formula which means there will be a formula with a tExp token and nothing else
@@ -3906,7 +3906,7 @@ class PHPExcel_Reader_Excel5 extends PHPExcel_Reader_Abstract implements PHPExce
3906
  $xfIndex = self::getInt2d($recordData, 4);
3907
 
3908
  // offset: 6; size: 8; result of the formula
3909
- if ((ord($recordData{6}) == 0) && (ord($recordData{12}) == 255) && (ord($recordData{13}) == 255)) {
3910
  // String formula. Result follows in appended STRING record
3911
  $dataType = PHPExcel_Cell_DataType::TYPE_STRING;
3912
 
@@ -3918,21 +3918,21 @@ class PHPExcel_Reader_Excel5 extends PHPExcel_Reader_Abstract implements PHPExce
3918
 
3919
  // read STRING record
3920
  $value = $this->readString();
3921
- } elseif ((ord($recordData{6}) == 1)
3922
- && (ord($recordData{12}) == 255)
3923
- && (ord($recordData{13}) == 255)) {
3924
  // Boolean formula. Result is in +2; 0=false, 1=true
3925
  $dataType = PHPExcel_Cell_DataType::TYPE_BOOL;
3926
- $value = (bool) ord($recordData{8});
3927
- } elseif ((ord($recordData{6}) == 2)
3928
- && (ord($recordData{12}) == 255)
3929
- && (ord($recordData{13}) == 255)) {
3930
  // Error formula. Error code is in +2
3931
  $dataType = PHPExcel_Cell_DataType::TYPE_ERROR;
3932
- $value = PHPExcel_Reader_Excel5_ErrorCode::lookup(ord($recordData{8}));
3933
- } elseif ((ord($recordData{6}) == 3)
3934
- && (ord($recordData{12}) == 255)
3935
- && (ord($recordData{13}) == 255)) {
3936
  // Formula result is a null string
3937
  $dataType = PHPExcel_Cell_DataType::TYPE_NULL;
3938
  $value = '';
@@ -3996,7 +3996,7 @@ class PHPExcel_Reader_Excel5 extends PHPExcel_Reader_Abstract implements PHPExce
3996
  // offset: 6, size: 1; not used
3997
 
3998
  // offset: 7, size: 1; number of existing FORMULA records for this shared formula
3999
- $no = ord($recordData{7});
4000
 
4001
  // offset: 8, size: var; Binary token array of the shared formula
4002
  $formula = substr($recordData, 8);
@@ -4062,10 +4062,10 @@ class PHPExcel_Reader_Excel5 extends PHPExcel_Reader_Abstract implements PHPExce
4062
  $xfIndex = self::getInt2d($recordData, 4);
4063
 
4064
  // offset: 6; size: 1; the boolean value or error value
4065
- $boolErr = ord($recordData{6});
4066
 
4067
  // offset: 7; size: 1; 0=boolean; 1=error
4068
- $isError = ord($recordData{7});
4069
 
4070
  $cell = $this->phpSheet->getCell($columnString . ($row + 1));
4071
  switch ($isError) {
@@ -4447,7 +4447,7 @@ class PHPExcel_Reader_Excel5 extends PHPExcel_Reader_Abstract implements PHPExce
4447
 
4448
  if (!$this->readDataOnly) {
4449
  // offset: 0; size: 1; pane identifier
4450
- $paneId = ord($recordData{0});
4451
 
4452
  // offset: 1; size: 2; index to row of the active cell
4453
  $r = self::getInt2d($recordData, 1);
@@ -4598,9 +4598,9 @@ class PHPExcel_Reader_Excel5 extends PHPExcel_Reader_Abstract implements PHPExce
4598
  $hyperlinkType = 'UNC';
4599
  } elseif (!$isFileLinkOrUrl) {
4600
  $hyperlinkType = 'workbook';
4601
- } elseif (ord($recordData{$offset}) == 0x03) {
4602
  $hyperlinkType = 'local';
4603
- } elseif (ord($recordData{$offset}) == 0xE0) {
4604
  $hyperlinkType = 'URL';
4605
  }
4606
 
@@ -6886,10 +6886,10 @@ class PHPExcel_Reader_Excel5 extends PHPExcel_Reader_Abstract implements PHPExce
6886
  $lr = self::getInt2d($subData, 2) + 1;
6887
 
6888
  // offset: 4; size: 1; index to first column
6889
- $fc = ord($subData{4});
6890
 
6891
  // offset: 5; size: 1; index to last column
6892
- $lc = ord($subData{5});
6893
 
6894
  // check values
6895
  if ($fr > $lr || $fc > $lc) {
@@ -7294,13 +7294,13 @@ class PHPExcel_Reader_Excel5 extends PHPExcel_Reader_Abstract implements PHPExce
7294
  private static function readRGB($rgb)
7295
  {
7296
  // offset: 0; size 1; Red component
7297
- $r = ord($rgb{0});
7298
 
7299
  // offset: 1; size: 1; Green component
7300
- $g = ord($rgb{1});
7301
 
7302
  // offset: 2; size: 1; Blue component
7303
- $b = ord($rgb{2});
7304
 
7305
  // HEX notation, e.g. 'FF00FC'
7306
  $rgb = sprintf('%02X%02X%02X', $r, $g, $b);
1925
 
1926
  // offset: 0; size: 2; 0 = base 1900, 1 = base 1904
1927
  PHPExcel_Shared_Date::setExcelCalendar(PHPExcel_Shared_Date::CALENDAR_WINDOWS_1900);
1928
+ if (ord($recordData[0]) == 1) {
1929
  PHPExcel_Shared_Date::setExcelCalendar(PHPExcel_Shared_Date::CALENDAR_MAC_1904);
1930
  }
1931
  }
1988
  }
1989
 
1990
  // offset: 10; size: 1; underline type
1991
+ $underlineType = ord($recordData[10]);
1992
  switch ($underlineType) {
1993
  case 0x00:
1994
  break; // no underline
2125
 
2126
  // offset: 6; size: 1; Alignment and text break
2127
  // bit 2-0, mask 0x07; horizontal alignment
2128
+ $horAlign = (0x07 & ord($recordData[6])) >> 0;
2129
  switch ($horAlign) {
2130
  case 0:
2131
  $objStyle->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_GENERAL);
2150
  break;
2151
  }
2152
  // bit 3, mask 0x08; wrap text
2153
+ $wrapText = (0x08 & ord($recordData[6])) >> 3;
2154
  switch ($wrapText) {
2155
  case 0:
2156
  $objStyle->getAlignment()->setWrapText(false);
2160
  break;
2161
  }
2162
  // bit 6-4, mask 0x70; vertical alignment
2163
+ $vertAlign = (0x70 & ord($recordData[6])) >> 4;
2164
  switch ($vertAlign) {
2165
  case 0:
2166
  $objStyle->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_TOP);
2178
 
2179
  if ($this->version == self::XLS_BIFF8) {
2180
  // offset: 7; size: 1; XF_ROTATION: Text rotation angle
2181
+ $angle = ord($recordData[7]);
2182
  $rotation = 0;
2183
  if ($angle <= 90) {
2184
  $rotation = $angle;
2191
 
2192
  // offset: 8; size: 1; Indentation, shrink to cell size, and text direction
2193
  // bit: 3-0; mask: 0x0F; indent level
2194
+ $indent = (0x0F & ord($recordData[8])) >> 0;
2195
  $objStyle->getAlignment()->setIndent($indent);
2196
 
2197
  // bit: 4; mask: 0x10; 1 = shrink content to fit into cell
2198
+ $shrinkToFit = (0x10 & ord($recordData[8])) >> 4;
2199
  switch ($shrinkToFit) {
2200
  case 0:
2201
  $objStyle->getAlignment()->setShrinkToFit(false);
2275
  // BIFF5
2276
 
2277
  // offset: 7; size: 1; Text orientation and flags
2278
+ $orientationAndFlags = ord($recordData[7]);
2279
 
2280
  // bit: 1-0; mask: 0x03; XF_ORIENTATION: Text orientation
2281
  $xfOrientation = (0x03 & $orientationAndFlags) >> 0;
2399
  $xclrValue = substr($extData, 4, 4); // color value (value based on color type)
2400
 
2401
  if ($xclfType == 2) {
2402
+ $rgb = sprintf('%02X%02X%02X', ord($xclrValue[0]), ord($xclrValue[1]), ord($xclrValue[2]));
2403
 
2404
  // modify the relevant style property
2405
  if (isset($this->mapCellXfIndex[$ixfe])) {
2414
  $xclrValue = substr($extData, 4, 4); // color value (value based on color type)
2415
 
2416
  if ($xclfType == 2) {
2417
+ $rgb = sprintf('%02X%02X%02X', ord($xclrValue[0]), ord($xclrValue[1]), ord($xclrValue[2]));
2418
 
2419
  // modify the relevant style property
2420
  if (isset($this->mapCellXfIndex[$ixfe])) {
2429
  $xclrValue = substr($extData, 4, 4); // color value (value based on color type)
2430
 
2431
  if ($xclfType == 2) {
2432
+ $rgb = sprintf('%02X%02X%02X', ord($xclrValue[0]), ord($xclrValue[1]), ord($xclrValue[2]));
2433
 
2434
  // modify the relevant style property
2435
  if (isset($this->mapCellXfIndex[$ixfe])) {
2444
  $xclrValue = substr($extData, 4, 4); // color value (value based on color type)
2445
 
2446
  if ($xclfType == 2) {
2447
+ $rgb = sprintf('%02X%02X%02X', ord($xclrValue[0]), ord($xclrValue[1]), ord($xclrValue[2]));
2448
 
2449
  // modify the relevant style property
2450
  if (isset($this->mapCellXfIndex[$ixfe])) {
2459
  $xclrValue = substr($extData, 4, 4); // color value (value based on color type)
2460
 
2461
  if ($xclfType == 2) {
2462
+ $rgb = sprintf('%02X%02X%02X', ord($xclrValue[0]), ord($xclrValue[1]), ord($xclrValue[2]));
2463
 
2464
  // modify the relevant style property
2465
  if (isset($this->mapCellXfIndex[$ixfe])) {
2474
  $xclrValue = substr($extData, 4, 4); // color value (value based on color type)
2475
 
2476
  if ($xclfType == 2) {
2477
+ $rgb = sprintf('%02X%02X%02X', ord($xclrValue[0]), ord($xclrValue[1]), ord($xclrValue[2]));
2478
 
2479
  // modify the relevant style property
2480
  if (isset($this->mapCellXfIndex[$ixfe])) {
2489
  $xclrValue = substr($extData, 4, 4); // color value (value based on color type)
2490
 
2491
  if ($xclfType == 2) {
2492
+ $rgb = sprintf('%02X%02X%02X', ord($xclrValue[0]), ord($xclrValue[1]), ord($xclrValue[2]));
2493
 
2494
  // modify the relevant style property
2495
  if (isset($this->mapCellXfIndex[$ixfe])) {
2504
  $xclrValue = substr($extData, 4, 4); // color value (value based on color type)
2505
 
2506
  if ($xclfType == 2) {
2507
+ $rgb = sprintf('%02X%02X%02X', ord($xclrValue[0]), ord($xclrValue[1]), ord($xclrValue[2]));
2508
 
2509
  // modify the relevant style property
2510
  if (isset($this->mapCellXfIndex[$ixfe])) {
2546
 
2547
  if ($isBuiltIn) {
2548
  // offset: 2; size: 1; identifier for built-in style
2549
+ $builtInId = ord($recordData[2]);
2550
 
2551
  switch ($builtInId) {
2552
  case 0x00:
2611
  $this->pos += 4 + $length;
2612
 
2613
  // offset: 4; size: 1; sheet state
2614
+ switch (ord($recordData[4])) {
2615
  case 0x00:
2616
  $sheetState = PHPExcel_Worksheet::SHEETSTATE_VISIBLE;
2617
  break;
2627
  }
2628
 
2629
  // offset: 5; size: 1; sheet type
2630
+ $sheetType = ord($recordData[5]);
2631
 
2632
  // offset: 6; size: var; sheet name
2633
  if ($this->version == self::XLS_BIFF8) {
2805
  // offset: 2; size: 1; keyboard shortcut
2806
 
2807
  // offset: 3; size: 1; length of the name (character count)
2808
+ $nlen = ord($recordData[3]);
2809
 
2810
  // offset: 4; size: 2; size of the formula data (it can happen that this is zero)
2811
  // note: there can also be additional data, this is not included in $flen
2888
  $pos += 2;
2889
 
2890
  // option flags
2891
+ $optionFlags = ord($recordData[$pos]);
2892
  ++$pos;
2893
 
2894
  // bit: 0; mask: 0x01; 0 = compressed; 1 = uncompressed
2955
 
2956
  // repeated option flags
2957
  // OpenOffice.org documentation 5.21
2958
+ $option = ord($recordData[$pos]);
2959
  ++$pos;
2960
 
2961
  if ($isCompressed && ($option == 0)) {
2977
  // this fragment compressed
2978
  $len = min($charsLeft, $limitpos - $pos);
2979
  for ($j = 0; $j < $len; ++$j) {
2980
+ $retstr .= $recordData[$pos + $j] . chr(0);
2981
  }
2982
  $charsLeft -= $len;
2983
  $isCompressed = false;
3883
  // We can apparently not rely on $isPartOfSharedFormula. Even when $isPartOfSharedFormula = true
3884
  // the formula data may be ordinary formula data, therefore we need to check
3885
  // explicitly for the tExp token (0x01)
3886
+ $isPartOfSharedFormula = $isPartOfSharedFormula && ord($formulaStructure[2]) == 0x01;
3887
 
3888
  if ($isPartOfSharedFormula) {
3889
  // part of shared formula which means there will be a formula with a tExp token and nothing else
3906
  $xfIndex = self::getInt2d($recordData, 4);
3907
 
3908
  // offset: 6; size: 8; result of the formula
3909
+ if ((ord($recordData[6]) == 0) && (ord($recordData[12]) == 255) && (ord($recordData[13]) == 255)) {
3910
  // String formula. Result follows in appended STRING record
3911
  $dataType = PHPExcel_Cell_DataType::TYPE_STRING;
3912
 
3918
 
3919
  // read STRING record
3920
  $value = $this->readString();
3921
+ } elseif ((ord($recordData[6]) == 1)
3922
+ && (ord($recordData[12]) == 255)
3923
+ && (ord($recordData[13]) == 255)) {
3924
  // Boolean formula. Result is in +2; 0=false, 1=true
3925
  $dataType = PHPExcel_Cell_DataType::TYPE_BOOL;
3926
+ $value = (bool) ord($recordData[8]);
3927
+ } elseif ((ord($recordData[6]) == 2)
3928
+ && (ord($recordData[12]) == 255)
3929
+ && (ord($recordData[13]) == 255)) {
3930
  // Error formula. Error code is in +2
3931
  $dataType = PHPExcel_Cell_DataType::TYPE_ERROR;
3932
+ $value = PHPExcel_Reader_Excel5_ErrorCode::lookup(ord($recordData[8]));
3933
+ } elseif ((ord($recordData[6]) == 3)
3934
+ && (ord($recordData[12]) == 255)
3935
+ && (ord($recordData[13]) == 255)) {
3936
  // Formula result is a null string
3937
  $dataType = PHPExcel_Cell_DataType::TYPE_NULL;
3938
  $value = '';
3996
  // offset: 6, size: 1; not used
3997
 
3998
  // offset: 7, size: 1; number of existing FORMULA records for this shared formula
3999
+ $no = ord($recordData[7]);
4000
 
4001
  // offset: 8, size: var; Binary token array of the shared formula
4002
  $formula = substr($recordData, 8);
4062
  $xfIndex = self::getInt2d($recordData, 4);
4063
 
4064
  // offset: 6; size: 1; the boolean value or error value
4065
+ $boolErr = ord($recordData[6]);
4066
 
4067
  // offset: 7; size: 1; 0=boolean; 1=error
4068
+ $isError = ord($recordData[7]);
4069
 
4070
  $cell = $this->phpSheet->getCell($columnString . ($row + 1));
4071
  switch ($isError) {
4447
 
4448
  if (!$this->readDataOnly) {
4449
  // offset: 0; size: 1; pane identifier
4450
+ $paneId = ord($recordData[0]);
4451
 
4452
  // offset: 1; size: 2; index to row of the active cell
4453
  $r = self::getInt2d($recordData, 1);
4598
  $hyperlinkType = 'UNC';
4599
  } elseif (!$isFileLinkOrUrl) {
4600
  $hyperlinkType = 'workbook';
4601
+ } elseif (ord($recordData[$offset]) == 0x03) {
4602
  $hyperlinkType = 'local';
4603
+ } elseif (ord($recordData[$offset]) == 0xE0) {
4604
  $hyperlinkType = 'URL';
4605
  }
4606
 
6886
  $lr = self::getInt2d($subData, 2) + 1;
6887
 
6888
  // offset: 4; size: 1; index to first column
6889
+ $fc = ord($subData[4]);
6890
 
6891
  // offset: 5; size: 1; index to last column
6892
+ $lc = ord($subData[5]);
6893
 
6894
  // check values
6895
  if ($fr > $lr || $fc > $lc) {
7294
  private static function readRGB($rgb)
7295
  {
7296
  // offset: 0; size 1; Red component
7297
+ $r = ord($rgb[0]);
7298
 
7299
  // offset: 1; size: 1; Green component
7300
+ $g = ord($rgb[1]);
7301
 
7302
  // offset: 2; size: 1; Blue component
7303
+ $b = ord($rgb[2]);
7304
 
7305
  // HEX notation, e.g. 'FF00FC'
7306
  $rgb = sprintf('%02X%02X%02X', $r, $g, $b);
classes/PHPExcel/Reader/Excel5/Escher.php CHANGED
@@ -280,16 +280,16 @@ class PHPExcel_Reader_Excel5_Escher
280
  $foDelay = PHPExcel_Reader_Excel5::getInt4d($recordData, 28);
281
 
282
  // offset: 32; size: 1; unused1
283
- $unused1 = ord($recordData{32});
284
 
285
  // offset: 33; size: 1; size of nameData in bytes (including null terminator)
286
- $cbName = ord($recordData{33});
287
 
288
  // offset: 34; size: 1; unused2
289
- $unused2 = ord($recordData{34});
290
 
291
  // offset: 35; size: 1; unused3
292
- $unused3 = ord($recordData{35});
293
 
294
  // offset: 36; size: $cbName; nameData
295
  $nameData = substr($recordData, 36, $cbName);
@@ -331,7 +331,7 @@ class PHPExcel_Reader_Excel5_Escher
331
  }
332
 
333
  // offset: var; size: 1; tag
334
- $tag = ord($recordData{$pos});
335
  $pos += 1;
336
 
337
  // offset: var; size: var; the raw image data
@@ -372,7 +372,7 @@ class PHPExcel_Reader_Excel5_Escher
372
  }
373
 
374
  // offset: var; size: 1; tag
375
- $tag = ord($recordData{$pos});
376
  $pos += 1;
377
 
378
  // offset: var; size: var; the raw image data
280
  $foDelay = PHPExcel_Reader_Excel5::getInt4d($recordData, 28);
281
 
282
  // offset: 32; size: 1; unused1
283
+ $unused1 = ord($recordData[32]);
284
 
285
  // offset: 33; size: 1; size of nameData in bytes (including null terminator)
286
+ $cbName = ord($recordData[33]);
287
 
288
  // offset: 34; size: 1; unused2
289
+ $unused2 = ord($recordData[34]);
290
 
291
  // offset: 35; size: 1; unused3
292
+ $unused3 = ord($recordData[35]);
293
 
294
  // offset: 36; size: $cbName; nameData
295
  $nameData = substr($recordData, 36, $cbName);
331
  }
332
 
333
  // offset: var; size: 1; tag
334
+ $tag = ord($recordData[$pos]);
335
  $pos += 1;
336
 
337
  // offset: var; size: var; the raw image data
372
  }
373
 
374
  // offset: var; size: 1; tag
375
+ $tag = ord($recordData[$pos]);
376
  $pos += 1;
377
 
378
  // offset: var; size: var; the raw image data
classes/PHPExcel/Reader/OOCalc.php CHANGED
@@ -535,7 +535,7 @@ class PHPExcel_Reader_OOCalc extends PHPExcel_Reader_Abstract implements PHPExce
535
  array_push($dataArray, $pData);
536
  }
537
  }
538
- $allCellDataText = implode($dataArray, "\n");
539
 
540
  // echo 'Value Type is '.$cellDataOfficeAttributes['value-type'].'<br />';
541
  switch ($cellDataOfficeAttributes['value-type']) {
535
  array_push($dataArray, $pData);
536
  }
537
  }
538
+ $allCellDataText = implode( "\n", $dataArray );
539
 
540
  // echo 'Value Type is '.$cellDataOfficeAttributes['value-type'].'<br />';
541
  switch ($cellDataOfficeAttributes['value-type']) {
classes/PHPExcel/Reader/SYLK.php CHANGED
@@ -161,7 +161,7 @@ class PHPExcel_Reader_SYLK extends PHPExcel_Reader_Abstract implements PHPExcel_
161
  if ($dataType == 'C') {
162
  // Read cell value data
163
  foreach ($rowData as $rowDatum) {
164
- switch ($rowDatum{0}) {
165
  case 'C':
166
  case 'X':
167
  $columnIndex = substr($rowDatum, 1) - 1;
@@ -249,7 +249,7 @@ class PHPExcel_Reader_SYLK extends PHPExcel_Reader_Abstract implements PHPExcel_
249
  if ($dataType == 'P') {
250
  $formatArray = array();
251
  foreach ($rowData as $rowDatum) {
252
- switch ($rowDatum{0}) {
253
  case 'P':
254
  $formatArray['numberformat']['code'] = str_replace($fromFormats, $toFormats, substr($rowDatum, 1));
255
  break;
@@ -263,7 +263,7 @@ class PHPExcel_Reader_SYLK extends PHPExcel_Reader_Abstract implements PHPExcel_
263
  case 'S':
264
  $styleSettings = substr($rowDatum, 1);
265
  for ($i=0; $i<strlen($styleSettings); ++$i) {
266
- switch ($styleSettings{$i}) {
267
  case 'I':
268
  $formatArray['font']['italic'] = true;
269
  break;
@@ -293,7 +293,7 @@ class PHPExcel_Reader_SYLK extends PHPExcel_Reader_Abstract implements PHPExcel_
293
  $hasCalculatedValue = false;
294
  $cellData = $cellDataFormula = '';
295
  foreach ($rowData as $rowDatum) {
296
- switch ($rowDatum{0}) {
297
  case 'C':
298
  case 'X':
299
  $column = substr($rowDatum, 1);
@@ -327,7 +327,7 @@ class PHPExcel_Reader_SYLK extends PHPExcel_Reader_Abstract implements PHPExcel_
327
  $rowReference = $row;
328
  }
329
  // Bracketed R references are relative to the current row
330
- if ($rowReference{0} == '[') {
331
  $rowReference = $row + trim($rowReference, '[]');
332
  }
333
  $columnReference = $cellReference[4][0];
@@ -336,7 +336,7 @@ class PHPExcel_Reader_SYLK extends PHPExcel_Reader_Abstract implements PHPExcel_
336
  $columnReference = $column;
337
  }
338
  // Bracketed C references are relative to the current column
339
- if ($columnReference{0} == '[') {
340
  $columnReference = $column + trim($columnReference, '[]');
341
  }
342
  $A1CellReference = PHPExcel_Cell::stringFromColumnIndex($columnReference-1).$rowReference;
@@ -366,7 +366,7 @@ class PHPExcel_Reader_SYLK extends PHPExcel_Reader_Abstract implements PHPExcel_
366
  $formatStyle = $columnWidth = $styleSettings = '';
367
  $styleData = array();
368
  foreach ($rowData as $rowDatum) {
369
- switch ($rowDatum{0}) {
370
  case 'C':
371
  case 'X':
372
  $column = substr($rowDatum, 1);
@@ -384,7 +384,7 @@ class PHPExcel_Reader_SYLK extends PHPExcel_Reader_Abstract implements PHPExcel_
384
  case 'S':
385
  $styleSettings = substr($rowDatum, 1);
386
  for ($i=0; $i<strlen($styleSettings); ++$i) {
387
- switch ($styleSettings{$i}) {
388
  case 'I':
389
  $styleData['font']['italic'] = true;
390
  break;
@@ -433,7 +433,7 @@ class PHPExcel_Reader_SYLK extends PHPExcel_Reader_Abstract implements PHPExcel_
433
  }
434
  } else {
435
  foreach ($rowData as $rowDatum) {
436
- switch ($rowDatum{0}) {
437
  case 'C':
438
  case 'X':
439
  $column = substr($rowDatum, 1);
161
  if ($dataType == 'C') {
162
  // Read cell value data
163
  foreach ($rowData as $rowDatum) {
164
+ switch ($rowDatum[0]) {
165
  case 'C':
166
  case 'X':
167
  $columnIndex = substr($rowDatum, 1) - 1;
249
  if ($dataType == 'P') {
250
  $formatArray = array();
251
  foreach ($rowData as $rowDatum) {
252
+ switch ($rowDatum[0]) {
253
  case 'P':
254
  $formatArray['numberformat']['code'] = str_replace($fromFormats, $toFormats, substr($rowDatum, 1));
255
  break;
263
  case 'S':
264
  $styleSettings = substr($rowDatum, 1);
265
  for ($i=0; $i<strlen($styleSettings); ++$i) {
266
+ switch ($styleSettings[$i]) {
267
  case 'I':
268
  $formatArray['font']['italic'] = true;
269
  break;
293
  $hasCalculatedValue = false;
294
  $cellData = $cellDataFormula = '';
295
  foreach ($rowData as $rowDatum) {
296
+ switch ($rowDatum[0]) {
297
  case 'C':
298
  case 'X':
299
  $column = substr($rowDatum, 1);
327
  $rowReference = $row;
328
  }
329
  // Bracketed R references are relative to the current row
330
+ if ($rowReference[0] == '[') {
331
  $rowReference = $row + trim($rowReference, '[]');
332
  }
333
  $columnReference = $cellReference[4][0];
336
  $columnReference = $column;
337
  }
338
  // Bracketed C references are relative to the current column
339
+ if ($columnReference[0] == '[') {
340
  $columnReference = $column + trim($columnReference, '[]');
341
  }
342
  $A1CellReference = PHPExcel_Cell::stringFromColumnIndex($columnReference-1).$rowReference;
366
  $formatStyle = $columnWidth = $styleSettings = '';
367
  $styleData = array();
368
  foreach ($rowData as $rowDatum) {
369
+ switch ($rowDatum[0]) {
370
  case 'C':
371
  case 'X':
372
  $column = substr($rowDatum, 1);
384
  case 'S':
385
  $styleSettings = substr($rowDatum, 1);
386
  for ($i=0; $i<strlen($styleSettings); ++$i) {
387
+ switch ($styleSettings[$i]) {
388
  case 'I':
389
  $styleData['font']['italic'] = true;
390
  break;
433
  }
434
  } else {
435
  foreach ($rowData as $rowDatum) {
436
+ switch ($rowDatum[0]) {
437
  case 'C':
438
  case 'X':
439
  $column = substr($rowDatum, 1);
classes/PHPExcel/ReferenceHelper.php CHANGED
@@ -881,8 +881,8 @@ class PHPExcel_ReferenceHelper
881
  list($newColumn, $newRow) = PHPExcel_Cell::coordinateFromString($pCellReference);
882
 
883
  // Verify which parts should be updated
884
- $updateColumn = (($newColumn{0} != '$') && ($beforeColumn{0} != '$') && (PHPExcel_Cell::columnIndexFromString($newColumn) >= PHPExcel_Cell::columnIndexFromString($beforeColumn)));
885
- $updateRow = (($newRow{0} != '$') && ($beforeRow{0} != '$') && $newRow >= $beforeRow);
886
 
887
  // Create new column reference
888
  if ($updateColumn) {
881
  list($newColumn, $newRow) = PHPExcel_Cell::coordinateFromString($pCellReference);
882
 
883
  // Verify which parts should be updated
884
+ $updateColumn = (($newColumn[0] != '$') && ($beforeColumn[0] != '$') && (PHPExcel_Cell::columnIndexFromString($newColumn) >= PHPExcel_Cell::columnIndexFromString($beforeColumn)));
885
+ $updateRow = (($newRow[0] != '$') && ($beforeRow[0] != '$') && $newRow >= $beforeRow);
886
 
887
  // Create new column reference
888
  if ($updateColumn) {
classes/PHPExcel/Shared/OLE.php CHANGED
@@ -443,7 +443,7 @@ class PHPExcel_Shared_OLE
443
  {
444
  $rawname = '';
445
  for ($i = 0; $i < strlen($ascii); ++$i) {
446
- $rawname .= $ascii{$i} . "\x00";
447
  }
448
  return $rawname;
449
  }
443
  {
444
  $rawname = '';
445
  for ($i = 0; $i < strlen($ascii); ++$i) {
446
+ $rawname .= $ascii[$i] . "\x00";
447
  }
448
  return $rawname;
449
  }
classes/PHPExcel/Shared/String.php CHANGED
@@ -523,8 +523,8 @@ class PHPExcel_Shared_String
523
  if (strlen($str) < 2) {
524
  return $str;
525
  }
526
- $c0 = ord($str{0});
527
- $c1 = ord($str{1});
528
  if ($c0 == 0xfe && $c1 == 0xff) {
529
  $str = substr($str, 2);
530
  } elseif ($c0 == 0xff && $c1 == 0xfe) {
@@ -535,11 +535,11 @@ class PHPExcel_Shared_String
535
  $newstr = '';
536
  for ($i=0; $i<$len; $i+=2) {
537
  if ($bom_be) {
538
- $val = ord($str{$i}) << 4;
539
- $val += ord($str{$i+1});
540
  } else {
541
- $val = ord($str{$i+1}) << 4;
542
- $val += ord($str{$i});
543
  }
544
  $newstr .= ($val == 0x228) ? "\n" : chr($val);
545
  }
523
  if (strlen($str) < 2) {
524
  return $str;
525
  }
526
+ $c0 = ord($str[0]);
527
+ $c1 = ord($str[1]);
528
  if ($c0 == 0xfe && $c1 == 0xff) {
529
  $str = substr($str, 2);
530
  } elseif ($c0 == 0xff && $c1 == 0xfe) {
535
  $newstr = '';
536
  for ($i=0; $i<$len; $i+=2) {
537
  if ($bom_be) {
538
+ $val = ord($str[$i]) << 4;
539
+ $val += ord($str[$i+1]);
540
  } else {
541
+ $val = ord($str[$i+1]) << 4;
542
+ $val += ord($str[$i]);
543
  }
544
  $newstr .= ($val == 0x228) ? "\n" : chr($val);
545
  }
classes/PHPExcel/Shared/ZipStreamWrapper.php CHANGED
@@ -76,7 +76,7 @@ class PHPExcel_Shared_ZipStreamWrapper
76
  public function stream_open($path, $mode, $options, &$opened_path)
77
  {
78
  // Check for mode
79
- if ($mode{0} != 'r') {
80
  throw new PHPExcel_Reader_Exception('Mode ' . $mode . ' is not supported. Only read mode is supported.');
81
  }
82
 
76
  public function stream_open($path, $mode, $options, &$opened_path)
77
  {
78
  // Check for mode
79
+ if ($mode[0] != 'r') {
80
  throw new PHPExcel_Reader_Exception('Mode ' . $mode . ' is not supported. Only read mode is supported.');
81
  }
82
 
classes/PHPExcel/Worksheet/AutoFilter.php CHANGED
@@ -717,7 +717,7 @@ class PHPExcel_Worksheet_AutoFilter
717
  );
718
  } else {
719
  // Date based
720
- if ($dynamicRuleType{0} == 'M' || $dynamicRuleType{0} == 'Q') {
721
  // Month or Quarter
722
  sscanf($dynamicRuleType, '%[A-Z]%d', $periodType, $period);
723
  if ($periodType == 'M') {
717
  );
718
  } else {
719
  // Date based
720
+ if ($dynamicRuleType[0] == 'M' || $dynamicRuleType[0] == 'Q') {
721
  // Month or Quarter
722
  sscanf($dynamicRuleType, '%[A-Z]%d', $periodType, $period);
723
  if ($periodType == 'M') {
classes/PHPExcel/Writer/Excel5/Parser.php CHANGED
@@ -1020,7 +1020,7 @@ class PHPExcel_Writer_Excel5_Parser
1020
  $col = 0;
1021
  $col_ref_length = strlen($col_ref);
1022
  for ($i = 0; $i < $col_ref_length; ++$i) {
1023
- $col += (ord($col_ref{$i}) - 64) * pow(26, $expn);
1024
  --$expn;
1025
  }
1026
 
@@ -1042,28 +1042,28 @@ class PHPExcel_Writer_Excel5_Parser
1042
  $formula_length = strlen($this->formula);
1043
  // eat up white spaces
1044
  if ($i < $formula_length) {
1045
- while ($this->formula{$i} == " ") {
1046
  ++$i;
1047
  }
1048
 
1049
  if ($i < ($formula_length - 1)) {
1050
- $this->lookAhead = $this->formula{$i+1};
1051
  }
1052
  $token = '';
1053
  }
1054
 
1055
  while ($i < $formula_length) {
1056
- $token .= $this->formula{$i};
1057
 
1058
  if ($i < ($formula_length - 1)) {
1059
- $this->lookAhead = $this->formula{$i+1};
1060
  } else {
1061
  $this->lookAhead = '';
1062
  }
1063
 
1064
  if ($this->match($token) != '') {
1065
  //if ($i < strlen($this->formula) - 1) {
1066
- // $this->lookAhead = $this->formula{$i+1};
1067
  //}
1068
  $this->currentCharacter = $i + 1;
1069
  $this->currentToken = $token;
@@ -1071,7 +1071,7 @@ class PHPExcel_Writer_Excel5_Parser
1071
  }
1072
 
1073
  if ($i < ($formula_length - 2)) {
1074
- $this->lookAhead = $this->formula{$i+2};
1075
  } else { // if we run out of characters lookAhead becomes empty
1076
  $this->lookAhead = '';
1077
  }
@@ -1172,7 +1172,7 @@ class PHPExcel_Writer_Excel5_Parser
1172
  {
1173
  $this->currentCharacter = 0;
1174
  $this->formula = $formula;
1175
- $this->lookAhead = isset($formula{1}) ? $formula{1} : '';
1176
  $this->advance();
1177
  $this->parseTree = $this->condition();
1178
  return true;
1020
  $col = 0;
1021
  $col_ref_length = strlen($col_ref);
1022
  for ($i = 0; $i < $col_ref_length; ++$i) {
1023
+ $col += (ord($col_ref[$i]) - 64) * pow(26, $expn);
1024
  --$expn;
1025
  }
1026
 
1042
  $formula_length = strlen($this->formula);
1043
  // eat up white spaces
1044
  if ($i < $formula_length) {
1045
+ while ($this->formula[$i] == " ") {
1046
  ++$i;
1047
  }
1048
 
1049
  if ($i < ($formula_length - 1)) {
1050
+ $this->lookAhead = $this->formula[$i+1];
1051
  }
1052
  $token = '';
1053
  }
1054
 
1055
  while ($i < $formula_length) {
1056
+ $token .= $this->formula[$i];
1057
 
1058
  if ($i < ($formula_length - 1)) {
1059
+ $this->lookAhead = $this->formula[$i+1];
1060
  } else {
1061
  $this->lookAhead = '';
1062
  }
1063
 
1064
  if ($this->match($token) != '') {
1065
  //if ($i < strlen($this->formula) - 1) {
1066
+ // $this->lookAhead = $this->formula[$i+1];
1067
  //}
1068
  $this->currentCharacter = $i + 1;
1069
  $this->currentToken = $token;
1071
  }
1072
 
1073
  if ($i < ($formula_length - 2)) {
1074
+ $this->lookAhead = $this->formula[$i+2];
1075
  } else { // if we run out of characters lookAhead becomes empty
1076
  $this->lookAhead = '';
1077
  }
1172
  {
1173
  $this->currentCharacter = 0;
1174
  $this->formula = $formula;
1175
+ $this->lookAhead = isset($formula[1]) ? $formula[1] : '';
1176
  $this->advance();
1177
  $this->parseTree = $this->condition();
1178
  return true;
classes/PHPExcel/Writer/Excel5/Workbook.php CHANGED
@@ -664,7 +664,7 @@ class PHPExcel_Writer_Excel5_Workbook extends PHPExcel_Writer_Excel5_BIFFwriter
664
  $formulaData = $this->parser->toReversePolish();
665
 
666
  // make sure tRef3d is of type tRef3dR (0x3A)
667
- if (isset($formulaData{0}) and ($formulaData{0} == "\x7A" or $formulaData{0} == "\x5A")) {
668
  $formulaData = "\x3A" . substr($formulaData, 1);
669
  }
670
 
664
  $formulaData = $this->parser->toReversePolish();
665
 
666
  // make sure tRef3d is of type tRef3dR (0x3A)
667
+ if (isset($formulaData[0]) and ($formulaData[0] == "\x7A" or $formulaData[0] == "\x5A")) {
668
  $formulaData = "\x3A" . substr($formulaData, 1);
669
  }
670
 
classes/PHPExcel/Writer/Excel5/Worksheet.php CHANGED
@@ -876,7 +876,7 @@ class PHPExcel_Writer_Excel5_Worksheet extends PHPExcel_Writer_Excel5_BIFFwriter
876
  $unknown = 0x0000; // Must be zero
877
 
878
  // Strip the '=' or '@' sign at the beginning of the formula string
879
- if ($formula{0} == '=') {
880
  $formula = substr($formula, 1);
881
  } else {
882
  // Error handling
876
  $unknown = 0x0000; // Must be zero
877
 
878
  // Strip the '=' or '@' sign at the beginning of the formula string
879
+ if ($formula[0] == '=') {
880
  $formula = substr($formula, 1);
881
  } else {
882
  // Error handling
classes/admin/class-wc-order-export-labels.php CHANGED
@@ -140,6 +140,10 @@ class WC_Order_Export_Labels {
140
  return $this->labels;
141
  }
142
 
 
 
 
 
143
  public function get_fetch_fields() {
144
  $fetch_fields = array();
145
  foreach ( $this->labels as $label_data ) {
140
  return $this->labels;
141
  }
142
 
143
+ public function set_labels( $labels ) {
144
+ $this->labels = $labels;
145
+ }
146
+
147
  public function get_fetch_fields() {
148
  $fetch_fields = array();
149
  foreach ( $this->labels as $label_data ) {
classes/admin/class-wc-order-export-manage.php CHANGED
@@ -215,6 +215,12 @@ class WC_Order_Export_Manage {
215
  'statuses' => ($mode == "now" OR $mode == "profiles") ? array("wc-pending","wc-processing","wc-on-hold","wc-completed") : array(),
216
  'from_date' => '',
217
  'to_date' => '',
 
 
 
 
 
 
218
  'from_order_id' => '',
219
  'to_order_id' => '',
220
  'shipping_locations' => array(),
@@ -271,6 +277,7 @@ class WC_Order_Export_Manage {
271
  'format_xml_prepend_raw_xml' => '',
272
  'format_xml_append_raw_xml' => '',
273
  'format_xml_self_closing_tags' => 1,
 
274
 
275
  'format_json_start_tag' => '[',
276
  'format_json_end_tag' => ']',
@@ -279,6 +286,7 @@ class WC_Order_Export_Manage {
279
 
280
  'format_pdf_display_column_names' => 1,
281
  'format_pdf_repeat_header' => 1,
 
282
  'format_pdf_orientation' => 'L',
283
  'format_pdf_page_size' => 'A4',
284
  'format_pdf_font_size' => 8,
@@ -302,6 +310,8 @@ class WC_Order_Export_Manage {
302
  'format_pdf_logo_align' => 'R',
303
  'format_pdf_row_images_width' => 15,
304
  'format_pdf_row_images_height' => 15,
 
 
305
 
306
  'format_html_display_column_names' => 1,
307
  'format_html_repeat_header_last_line' => 0,
@@ -320,7 +330,7 @@ class WC_Order_Export_Manage {
320
  'format_html_custom_css' => $settings['default_html_css'],
321
 
322
  'all_products_from_order' => 1,
323
- 'skip_refunded_items' => 1,
324
  'skip_suborders' => 0,
325
  'export_refunds' => 0,
326
  'export_matched_items' => 0,
@@ -333,6 +343,7 @@ class WC_Order_Export_Manage {
333
  'export_refund_notes' => 0,
334
  'strip_tags_product_fields' => 0,
335
  'cleanup_phone' => 0,
 
336
  'enable_debug' => 0,
337
  'billing_details_for_shipping' => 0,
338
  'custom_php' => 0,
215
  'statuses' => ($mode == "now" OR $mode == "profiles") ? array("wc-pending","wc-processing","wc-on-hold","wc-completed") : array(),
216
  'from_date' => '',
217
  'to_date' => '',
218
+ 'sub_start_from_date' => '',
219
+ 'sub_start_to_date' => '',
220
+ 'sub_end_from_date' => '',
221
+ 'sub_end_to_date' => '',
222
+ 'sub_next_paym_from_date' => '',
223
+ 'sub_next_paym_to_date' => '',
224
  'from_order_id' => '',
225
  'to_order_id' => '',
226
  'shipping_locations' => array(),
277
  'format_xml_prepend_raw_xml' => '',
278
  'format_xml_append_raw_xml' => '',
279
  'format_xml_self_closing_tags' => 1,
280
+ 'format_xml_preview_format' => 0,
281
 
282
  'format_json_start_tag' => '[',
283
  'format_json_end_tag' => ']',
286
 
287
  'format_pdf_display_column_names' => 1,
288
  'format_pdf_repeat_header' => 1,
289
+ 'format_pdf_direction_rtl' => 0,
290
  'format_pdf_orientation' => 'L',
291
  'format_pdf_page_size' => 'A4',
292
  'format_pdf_font_size' => 8,
310
  'format_pdf_logo_align' => 'R',
311
  'format_pdf_row_images_width' => 15,
312
  'format_pdf_row_images_height' => 15,
313
+ 'format_pdf_row_images_add_link' => 0,
314
+ 'format_pdf_row_dont_page_break_order_lines'=> 0,
315
 
316
  'format_html_display_column_names' => 1,
317
  'format_html_repeat_header_last_line' => 0,
330
  'format_html_custom_css' => $settings['default_html_css'],
331
 
332
  'all_products_from_order' => 1,
333
+ 'skip_refunded_items' => 0,
334
  'skip_suborders' => 0,
335
  'export_refunds' => 0,
336
  'export_matched_items' => 0,
343
  'export_refund_notes' => 0,
344
  'strip_tags_product_fields' => 0,
345
  'cleanup_phone' => 0,
346
+ 'convert_serialized_values' => 0,
347
  'enable_debug' => 0,
348
  'billing_details_for_shipping' => 0,
349
  'custom_php' => 0,
classes/admin/tabs/ajax/trait-wc-order-export-admin-tab-abstract-ajax-export.php CHANGED
@@ -52,7 +52,7 @@ trait WC_Order_Export_Admin_Tab_Abstract_Ajax_Export {
52
  try {
53
  file_put_contents( $filename, '' );
54
  do_action( 'woe_start_export_job', $_POST['id'], $settings );
55
- $total = WC_Order_Export_Engine::build_file( $settings, 'start_estimate', 'file', 0, 0, $filename );
56
  } catch ( Exception $e ) {
57
  die( $e->getMessage() );
58
  }
@@ -60,7 +60,12 @@ trait WC_Order_Export_Admin_Tab_Abstract_Ajax_Export {
60
  $file_id = current_time( 'timestamp' );
61
  set_transient( $this->tempfile_prefix . $file_id, $filename, 60 );
62
  $this->stop_prevent_object_cache();
63
- echo json_encode( array( 'total' => $total, 'file_id' => $file_id ) );
 
 
 
 
 
64
  }
65
 
66
 
@@ -69,6 +74,9 @@ trait WC_Order_Export_Admin_Tab_Abstract_Ajax_Export {
69
  $settings = WC_Order_Export_Manage::make_new_settings( $_POST );
70
  $main_settings = WC_Order_Export_Main_Settings::get_settings();
71
 
 
 
 
72
  WC_Order_Export_Engine::build_file( $settings, 'partial', 'file', intval( $_POST['start'] ),
73
  $main_settings['ajax_orders_per_step'],
74
  $this->get_temp_file_name() );
52
  try {
53
  file_put_contents( $filename, '' );
54
  do_action( 'woe_start_export_job', $_POST['id'], $settings );
55
+ $result = WC_Order_Export_Engine::build_file( $settings, 'start_estimate', 'file', 0, 0, $filename );
56
  } catch ( Exception $e ) {
57
  die( $e->getMessage() );
58
  }
60
  $file_id = current_time( 'timestamp' );
61
  set_transient( $this->tempfile_prefix . $file_id, $filename, 60 );
62
  $this->stop_prevent_object_cache();
63
+ echo json_encode( array(
64
+ 'total' => $result['total'],
65
+ 'file_id' => $file_id,
66
+ 'max_line_items' => $result['max_line_items'],
67
+ 'max_coupons' => $result['max_coupons'],
68
+ ) );
69
  }
70
 
71
 
74
  $settings = WC_Order_Export_Manage::make_new_settings( $_POST );
75
  $main_settings = WC_Order_Export_Main_Settings::get_settings();
76
 
77
+ $settings['max_line_items'] = $_POST['max_line_items'];
78
+ $settings['max_coupons'] = $_POST['max_coupons'];
79
+
80
  WC_Order_Export_Engine::build_file( $settings, 'partial', 'file', intval( $_POST['start'] ),
81
  $main_settings['ajax_orders_per_step'],
82
  $this->get_temp_file_name() );
classes/core/class-wc-order-export-data-extractor-ui.php CHANGED
@@ -133,7 +133,7 @@ class WC_Order_Export_Data_Extractor_UI extends WC_Order_Export_Data_Extractor {
133
  LEFT JOIN " . $wpdb->posts . " AS att ON post.ID=att.post_parent AND att.post_type='attachment'
134
  WHERE post.post_title LIKE %s
135
  AND post.post_type = 'product'
136
- AND post.post_status <> 'trash'
137
  GROUP BY post.ID
138
  ORDER BY post.post_title
139
  LIMIT " . intval( $limit );
@@ -370,6 +370,11 @@ class WC_Order_Export_Data_Extractor_UI extends WC_Order_Export_Data_Extractor {
370
  'checked' => 0,
371
  'format' => 'string',
372
  ),
 
 
 
 
 
373
  'variation_id' => array(
374
  'label' => __( 'Variation Id', 'woo-order-export-lite' ),
375
  'checked' => 0,
@@ -423,17 +428,17 @@ class WC_Order_Export_Data_Extractor_UI extends WC_Order_Export_Data_Extractor {
423
  'product_url' => array(
424
  'label' => __( 'Product URL', 'woo-order-export-lite' ),
425
  'checked' => 0,
426
- 'format' => 'string',
427
  ),
428
  'download_url' => array(
429
  'label' => __( 'Download URL', 'woo-order-export-lite' ),
430
  'checked' => 0,
431
- 'format' => 'string',
432
  ),
433
  'image_url' => array(
434
  'label' => __( 'Image URL', 'woo-order-export-lite' ),
435
  'checked' => 0,
436
- 'format' => 'string',
437
  ),
438
  'product_shipping_class' => array(
439
  'label' => __( 'Product Shipping Class', 'woo-order-export-lite' ),
@@ -476,7 +481,7 @@ class WC_Order_Export_Data_Extractor_UI extends WC_Order_Export_Data_Extractor {
476
  'format' => 'money',
477
  ),
478
  'summary_report_total_refund_count' => array(
479
- 'label' => __( 'Summary Report Total Refunds', 'woo-order-export-lite' ),
480
  'checked' => 0,
481
  'format' => 'number',
482
  ),
@@ -634,7 +639,7 @@ class WC_Order_Export_Data_Extractor_UI extends WC_Order_Export_Data_Extractor {
634
  'embedded_edit_order_link' => array(
635
  'label' => __( 'Link to edit order', 'woo-order-export-lite' ),
636
  'checked' => 0,
637
- 'format' => 'string',
638
  ),
639
  );
640
  }
@@ -659,7 +664,7 @@ class WC_Order_Export_Data_Extractor_UI extends WC_Order_Export_Data_Extractor {
659
  'user_url' => array(
660
  'label' => __( 'User Website', 'woo-order-export-lite' ),
661
  'checked' => 0,
662
- 'format' => 'string',
663
  ),
664
  'user_email' => array(
665
  'label' => __( 'Customer User Email', 'woo-order-export-lite' ),
@@ -722,7 +727,7 @@ class WC_Order_Export_Data_Extractor_UI extends WC_Order_Export_Data_Extractor {
722
  'format' => 'money',
723
  ),
724
  'summary_report_total_refund_count' => array(
725
- 'label' => __( 'Summary Report Total Refunds', 'woo-order-export-lite' ),
726
  'checked' => 0,
727
  'format' => 'number',
728
  ),
@@ -731,6 +736,16 @@ class WC_Order_Export_Data_Extractor_UI extends WC_Order_Export_Data_Extractor {
731
  'checked' => 0,
732
  'format' => 'money',
733
  ),
 
 
 
 
 
 
 
 
 
 
734
  );
735
  }
736
 
@@ -1016,7 +1031,7 @@ class WC_Order_Export_Data_Extractor_UI extends WC_Order_Export_Data_Extractor {
1016
  'item_download_url' => array(
1017
  'label' => __( 'Item download URL', 'woo-order-export-lite' ),
1018
  'checked' => 0,
1019
- 'format' => 'string',
1020
  ),
1021
  'product_variation' => array(
1022
  'label' => __( 'Order Item Metadata', 'woo-order-export-lite' ),
@@ -1093,7 +1108,7 @@ class WC_Order_Export_Data_Extractor_UI extends WC_Order_Export_Data_Extractor {
1093
  'format' => 'string',
1094
  ),
1095
  'coupons_used' => array(
1096
- 'label' => __( 'Coupons Used', 'woo-order-export-lite' ),
1097
  'checked' => 0,
1098
  'format' => 'string',
1099
  ),
@@ -1296,7 +1311,7 @@ class WC_Order_Export_Data_Extractor_UI extends WC_Order_Export_Data_Extractor {
1296
  'misc' => __( 'Others', 'woo-order-export-lite' ),
1297
  );
1298
  }
1299
-
1300
  public static function get_segment_hints() {
1301
  return array(
1302
  'products' => __( 'Use section "Product order items" to add attributes', 'woo-order-export-lite' ),
@@ -1311,6 +1326,7 @@ class WC_Order_Export_Data_Extractor_UI extends WC_Order_Export_Data_Extractor {
1311
  'number' => __( 'Number', 'woo-order-export-lite' ),
1312
  'date' => __( 'Date', 'woo-order-export-lite' ),
1313
  'image' => __( 'Image', 'woo-order-export-lite' ),
 
1314
  );
1315
  }
1316
 
133
  LEFT JOIN " . $wpdb->posts . " AS att ON post.ID=att.post_parent AND att.post_type='attachment'
134
  WHERE post.post_title LIKE %s
135
  AND post.post_type = 'product'
136
+ AND post.post_status NOT IN ('trash', 'draft')
137
  GROUP BY post.ID
138
  ORDER BY post.post_title
139
  LIMIT " . intval( $limit );
370
  'checked' => 0,
371
  'format' => 'string',
372
  ),
373
+ 'product_variation' => array(
374
+ 'label' => __( 'Product Variation', 'woo-order-export-lite' ),
375
+ 'checked' => 0,
376
+ 'format' => 'string',
377
+ ),
378
  'variation_id' => array(
379
  'label' => __( 'Variation Id', 'woo-order-export-lite' ),
380
  'checked' => 0,
428
  'product_url' => array(
429
  'label' => __( 'Product URL', 'woo-order-export-lite' ),
430
  'checked' => 0,
431
+ 'format' => 'link',
432
  ),
433
  'download_url' => array(
434
  'label' => __( 'Download URL', 'woo-order-export-lite' ),
435
  'checked' => 0,
436
+ 'format' => 'link',
437
  ),
438
  'image_url' => array(
439
  'label' => __( 'Image URL', 'woo-order-export-lite' ),
440
  'checked' => 0,
441
+ 'format' => 'link',
442
  ),
443
  'product_shipping_class' => array(
444
  'label' => __( 'Product Shipping Class', 'woo-order-export-lite' ),
481
  'format' => 'money',
482
  ),
483
  'summary_report_total_refund_count' => array(
484
+ 'label' => __( 'Summary Report Total Refund Count', 'woo-order-export-lite' ),
485
  'checked' => 0,
486
  'format' => 'number',
487
  ),
639
  'embedded_edit_order_link' => array(
640
  'label' => __( 'Link to edit order', 'woo-order-export-lite' ),
641
  'checked' => 0,
642
+ 'format' => 'link',
643
  ),
644
  );
645
  }
664
  'user_url' => array(
665
  'label' => __( 'User Website', 'woo-order-export-lite' ),
666
  'checked' => 0,
667
+ 'format' => 'link',
668
  ),
669
  'user_email' => array(
670
  'label' => __( 'Customer User Email', 'woo-order-export-lite' ),
727
  'format' => 'money',
728
  ),
729
  'summary_report_total_refund_count' => array(
730
+ 'label' => __( 'Summary Report Total Refund Count', 'woo-order-export-lite' ),
731
  'checked' => 0,
732
  'format' => 'number',
733
  ),
736
  'checked' => 0,
737
  'format' => 'money',
738
  ),
739
+ 'summary_report_total_tax_amount' => array(
740
+ 'label' => __( 'Summary Report Total Tax Amount', 'woo-order-export-lite' ),
741
+ 'checked' => 0,
742
+ 'format' => 'money',
743
+ ),
744
+ 'summary_report_total_fee_amount' => array(
745
+ 'label' => __( 'Summary Report Total Fee Amount', 'woo-order-export-lite' ),
746
+ 'checked' => 0,
747
+ 'format' => 'money',
748
+ ),
749
  );
750
  }
751
 
1031
  'item_download_url' => array(
1032
  'label' => __( 'Item download URL', 'woo-order-export-lite' ),
1033
  'checked' => 0,
1034
+ 'format' => 'link',
1035
  ),
1036
  'product_variation' => array(
1037
  'label' => __( 'Order Item Metadata', 'woo-order-export-lite' ),
1108
  'format' => 'string',
1109
  ),
1110
  'coupons_used' => array(
1111
+ 'label' => __( 'Number of coupons used', 'woo-order-export-lite' ),
1112
  'checked' => 0,
1113
  'format' => 'string',
1114
  ),
1311
  'misc' => __( 'Others', 'woo-order-export-lite' ),
1312
  );
1313
  }
1314
+
1315
  public static function get_segment_hints() {
1316
  return array(
1317
  'products' => __( 'Use section "Product order items" to add attributes', 'woo-order-export-lite' ),
1326
  'number' => __( 'Number', 'woo-order-export-lite' ),
1327
  'date' => __( 'Date', 'woo-order-export-lite' ),
1328
  'image' => __( 'Image', 'woo-order-export-lite' ),
1329
+ 'link' => __( 'Link', 'woo-order-export-lite' ),
1330
  );
1331
  }
1332
 
classes/core/class-wc-order-export-data-extractor.php CHANGED
@@ -24,7 +24,6 @@ class WC_Order_Export_Data_Extractor {
24
  const HUGE_SHOP_PRODUCTS = 1000;// more than 1000 products
25
  const HUGE_SHOP_CUSTOMERS = 1000;// more than 1000 users
26
 
27
-
28
  //Common
29
 
30
  // to parse "item_type:meta_key" strings
@@ -641,7 +640,7 @@ class WC_Order_Export_Data_Extractor {
641
  static function operator_compare_field_and_value( $field, $operator, $value, $public_fieldname='' ) {
642
  $value = esc_sql($value);
643
  if ( $operator == "LIKE" ) {
644
- $value = "'%$value%'";
645
  } else { // compare numbers!
646
  $type = apply_filters( "woe_compare_field_cast_to_type", "signed", $field, $operator, $value, $public_fieldname);
647
  $field = "cast($field as $type)";
@@ -937,7 +936,7 @@ class WC_Order_Export_Data_Extractor {
937
  $pos = 1;
938
  foreach ( $filters as $operator => $fields ) {
939
  foreach ( $fields as $field => $values ) {
940
- $inner_join_user_meta[] = "INNER JOIN {$wpdb->usermeta} AS usermeta_cf_{$pos} ON usermeta_cf_{$pos}.user_id = {$wpdb->users}.ID AND usermeta_cf_{$pos}.meta_key='$field'";
941
  if ( $values ) {
942
  if ( $operator == 'NOT SET' ) {
943
  $user_meta_where[] = " ( usermeta_cf_{$pos}.meta_value IS NULL ) ";
@@ -1039,6 +1038,26 @@ class WC_Order_Export_Data_Extractor {
1039
  $left_join_order_meta[] = "LEFT JOIN {$wpdb->postmeta} AS ordermeta_{$field} ON ordermeta_{$field}.post_id = orders.{$left_join_order_meta_order_id}";
1040
  $order_meta_where [] = " (ordermeta_{$field}.meta_key='_{$field}' AND ordermeta_{$field}.meta_value in ($values)) ";
1041
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1042
  $order_meta_where = join( " AND ",
1043
  apply_filters( "woe_sql_get_order_ids_order_meta_where", $order_meta_where ) );
1044
 
@@ -1074,6 +1093,24 @@ class WC_Order_Export_Data_Extractor {
1074
  return $sql;
1075
  }
1076
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1077
  private static function add_date_filter( &$where, &$where_meta, $date_field, $value ) {
1078
  if ( $date_field == 'date_paid' OR $date_field == 'date_completed' ) // 3.0+ uses timestamp
1079
  {
@@ -1159,6 +1196,27 @@ class WC_Order_Export_Data_Extractor {
1159
  return $ts % ( 24 * 3600 ) > 0;
1160
  }
1161
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1162
  public static function get_date_range( $settings, $is_for_sql, $use_timestamps = false ) {
1163
  $result = array();
1164
  $diff_utc = current_time( "timestamp" ) - current_time( "timestamp", 1 );
@@ -1166,12 +1224,7 @@ class WC_Order_Export_Data_Extractor {
1166
  // fixed date range
1167
  if ( ! empty( $settings['from_date'] ) OR ! empty( $settings['to_date'] ) ) {
1168
  if ( $settings['from_date'] ) {
1169
- $ts = strtotime( $settings['from_date'] );
1170
- if ( self::is_datetime_timestamp( $ts ) ) {
1171
- $from_date = date( 'Y-m-d H:i:s', $ts );
1172
- } else {
1173
- $from_date = date( 'Y-m-d', $ts ) . " 00:00:00";
1174
- }
1175
  if ( $is_for_sql ) {
1176
  if ( $use_timestamps ) {
1177
  $from_date = mysql2date( 'G', $from_date );
@@ -1183,12 +1236,7 @@ class WC_Order_Export_Data_Extractor {
1183
  }
1184
 
1185
  if ( $settings['to_date'] ) {
1186
- $ts = strtotime( $settings['to_date'] );
1187
- if ( self::is_datetime_timestamp( $ts ) ) {
1188
- $to_date = date( 'Y-m-d H:i:s', $ts );
1189
- } else {
1190
- $to_date = date( 'Y-m-d', $ts ) . " 23:59:59";
1191
- }
1192
  if ( $is_for_sql ) {
1193
  if ( $use_timestamps ) {
1194
  $to_date = mysql2date( 'G', $to_date );
@@ -1361,15 +1409,14 @@ class WC_Order_Export_Data_Extractor {
1361
 
1362
  $ids[] = 0; // for safe
1363
  $ids = join( ",", $ids );
1364
-
1365
  $sql = "SELECT COUNT( * ) AS t
1366
- FROM `{$wpdb->prefix}woocommerce_order_items`
1367
- WHERE order_item_type = '$type'
1368
- AND order_id
1369
- IN ( $ids)
1370
- GROUP BY order_id
1371
- ORDER BY t DESC
1372
- LIMIT 1";
1373
 
1374
  $max = $wpdb->get_var( $sql );
1375
  if ( ! $max ) {
@@ -1662,6 +1709,11 @@ class WC_Order_Export_Data_Extractor {
1662
  if ( is_array( $row[ $field ] ) ) {
1663
  $row[ $field ] = json_encode( $row[ $field ] );
1664
  }
 
 
 
 
 
1665
  }
1666
  if ( isset( $row[ $field ] ) ) {
1667
  $row[ $field ] = apply_filters( "woe_get_order_value_{$field}", $row[ $field ], $order, $field );
24
  const HUGE_SHOP_PRODUCTS = 1000;// more than 1000 products
25
  const HUGE_SHOP_CUSTOMERS = 1000;// more than 1000 users
26
 
 
27
  //Common
28
 
29
  // to parse "item_type:meta_key" strings
640
  static function operator_compare_field_and_value( $field, $operator, $value, $public_fieldname='' ) {
641
  $value = esc_sql($value);
642
  if ( $operator == "LIKE" ) {
643
+ $value = "%$value%";
644
  } else { // compare numbers!
645
  $type = apply_filters( "woe_compare_field_cast_to_type", "signed", $field, $operator, $value, $public_fieldname);
646
  $field = "cast($field as $type)";
936
  $pos = 1;
937
  foreach ( $filters as $operator => $fields ) {
938
  foreach ( $fields as $field => $values ) {
939
+ $inner_join_user_meta[] = "LEFT JOIN {$wpdb->usermeta} AS usermeta_cf_{$pos} ON usermeta_cf_{$pos}.user_id = {$wpdb->users}.ID AND usermeta_cf_{$pos}.meta_key='$field'";
940
  if ( $values ) {
941
  if ( $operator == 'NOT SET' ) {
942
  $user_meta_where[] = " ( usermeta_cf_{$pos}.meta_value IS NULL ) ";
1038
  $left_join_order_meta[] = "LEFT JOIN {$wpdb->postmeta} AS ordermeta_{$field} ON ordermeta_{$field}.post_id = orders.{$left_join_order_meta_order_id}";
1039
  $order_meta_where [] = " (ordermeta_{$field}.meta_key='_{$field}' AND ordermeta_{$field}.meta_value in ($values)) ";
1040
  }
1041
+
1042
+ if ( ! empty( $settings['sub_start_from_date'] ) || ! empty( $settings['sub_start_to_date'] ) ) {
1043
+ $field = 'schedule_start';
1044
+ $left_join_order_meta[] = "LEFT JOIN {$wpdb->postmeta} AS ordermeta_{$field} ON ordermeta_{$field}.post_id = orders.ID";
1045
+ $order_meta_where [] = self::get_date_meta_for_subscription_filters( $field, $settings['sub_start_from_date'], $settings['sub_start_to_date'] );
1046
+ }
1047
+
1048
+
1049
+ if ( ! empty( $settings['sub_end_from_date'] ) || ! empty( $settings['sub_end_to_date'] ) ) {
1050
+ $field = 'schedule_end';
1051
+ $left_join_order_meta[] = "LEFT JOIN {$wpdb->postmeta} AS ordermeta_{$field} ON ordermeta_{$field}.post_id = orders.ID";
1052
+ $order_meta_where [] = self::get_date_meta_for_subscription_filters( $field, $settings['sub_end_from_date'], $settings['sub_end_to_date'] );
1053
+ }
1054
+
1055
+ if ( ! empty( $settings['sub_next_paym_from_date'] ) || ! empty( $settings['sub_next_paym_to_date'] ) ) {
1056
+ $field = 'schedule_next_payment';
1057
+ $left_join_order_meta[] = "LEFT JOIN {$wpdb->postmeta} AS ordermeta_{$field} ON ordermeta_{$field}.post_id = orders.ID";
1058
+ $order_meta_where [] = self::get_date_meta_for_subscription_filters( $field, $settings['sub_next_paym_from_date'], $settings['sub_next_paym_to_date'] );
1059
+ }
1060
+
1061
  $order_meta_where = join( " AND ",
1062
  apply_filters( "woe_sql_get_order_ids_order_meta_where", $order_meta_where ) );
1063
 
1093
  return $sql;
1094
  }
1095
 
1096
+ private static function get_date_meta_for_subscription_filters( $field, $date_from, $date_to ) {
1097
+ $order_meta_where_parts[] = "ordermeta_{$field}.meta_key='_{$field}'";
1098
+
1099
+ if ( ! empty( $date_from ) ) {
1100
+ $subsc_from = WC_Order_Export_Data_Extractor::format_date_to_day_start( $date_from );
1101
+ $order_meta_where_parts[] = " CAST(ordermeta_{$field}.meta_value AS DATETIME) >= '{$subsc_from}'";
1102
+ }
1103
+
1104
+ if ( ! empty( $date_to ) ) {
1105
+ $subsc_to = WC_Order_Export_Data_Extractor::format_date_to_day_end( $date_to );
1106
+ $order_meta_where_parts[] = " CAST(ordermeta_{$field}.meta_value AS DATETIME) <= '{$subsc_to}'";
1107
+ }
1108
+
1109
+ $order_meta_where_parts = join( " AND ", $order_meta_where_parts );
1110
+
1111
+ return " ( $order_meta_where_parts ) ";
1112
+ }
1113
+
1114
  private static function add_date_filter( &$where, &$where_meta, $date_field, $value ) {
1115
  if ( $date_field == 'date_paid' OR $date_field == 'date_completed' ) // 3.0+ uses timestamp
1116
  {
1196
  return $ts % ( 24 * 3600 ) > 0;
1197
  }
1198
 
1199
+ public static function format_date_to_day_start( $date ) {
1200
+ $ts = strtotime( $date );
1201
+ if ( self::is_datetime_timestamp( $ts ) ) {
1202
+ $from_date = date( 'Y-m-d H:i:s', $ts );
1203
+ } else {
1204
+ $from_date = date( 'Y-m-d', $ts ) . " 00:00:00";
1205
+ }
1206
+ return $from_date;
1207
+ }
1208
+
1209
+ public static function format_date_to_day_end( $date ) {
1210
+ $ts = strtotime( $date );
1211
+ if ( self::is_datetime_timestamp( $ts ) ) {
1212
+ $to_date = date( 'Y-m-d H:i:s', $ts );
1213
+ } else {
1214
+ $to_date = date( 'Y-m-d', $ts ) . " 23:59:59";
1215
+ }
1216
+
1217
+ return $to_date;
1218
+ }
1219
+
1220
  public static function get_date_range( $settings, $is_for_sql, $use_timestamps = false ) {
1221
  $result = array();
1222
  $diff_utc = current_time( "timestamp" ) - current_time( "timestamp", 1 );
1224
  // fixed date range
1225
  if ( ! empty( $settings['from_date'] ) OR ! empty( $settings['to_date'] ) ) {
1226
  if ( $settings['from_date'] ) {
1227
+ $from_date = self::format_date_to_day_start( $settings['from_date'] );
 
 
 
 
 
1228
  if ( $is_for_sql ) {
1229
  if ( $use_timestamps ) {
1230
  $from_date = mysql2date( 'G', $from_date );
1236
  }
1237
 
1238
  if ( $settings['to_date'] ) {
1239
+ $to_date = self::format_date_to_day_end( $settings['to_date'] );
 
 
 
 
 
1240
  if ( $is_for_sql ) {
1241
  if ( $use_timestamps ) {
1242
  $to_date = mysql2date( 'G', $to_date );
1409
 
1410
  $ids[] = 0; // for safe
1411
  $ids = join( ",", $ids );
 
1412
  $sql = "SELECT COUNT( * ) AS t
1413
+ FROM `{$wpdb->prefix}woocommerce_order_items`
1414
+ WHERE order_item_type = '$type'
1415
+ AND order_id
1416
+ IN ( $ids)
1417
+ GROUP BY order_id
1418
+ ORDER BY t DESC
1419
+ LIMIT 1";
1420
 
1421
  $max = $wpdb->get_var( $sql );
1422
  if ( ! $max ) {
1709
  if ( is_array( $row[ $field ] ) ) {
1710
  $row[ $field ] = json_encode( $row[ $field ] );
1711
  }
1712
+
1713
+ if ( $options['convert_serialized_values'] ) {
1714
+ $arr = maybe_unserialize( $row[ $field ] );
1715
+ if ( is_array($arr) ) $row[$field] = join(",", $arr);
1716
+ }
1717
  }
1718
  if ( isset( $row[ $field ] ) ) {
1719
  $row[ $field ] = apply_filters( "woe_get_order_value_{$field}", $row[ $field ], $order, $field );
classes/core/class-wc-order-export-engine.php CHANGED
@@ -208,7 +208,7 @@ class WC_Order_Export_Engine {
208
  // $field_formats ),
209
  // );
210
 
211
- $field_formats_ar = array( 'money', 'number', 'date', 'string', 'image' );
212
  $labels_data = array(
213
  'order' => self::get_order_labels( $settings, $format, $field_formats_ar ),
214
  'products' => self::get_sub_segment_labels( 'product', $settings, $format, $field_formats_ar ),
@@ -241,6 +241,9 @@ class WC_Order_Export_Engine {
241
  $export['products'] = false;
242
  $export['coupons'] = false;
243
  foreach ( $settings['order_fields'] as $field ) {
 
 
 
244
  if ( 'products' == $field['key'] ) {
245
  $export['products'] = true;
246
  }
@@ -291,12 +294,12 @@ class WC_Order_Export_Engine {
291
  }
292
 
293
  //as is
294
- $options['export_refunds'] = $settings['export_refunds'];
295
- $options['skip_refunded_items'] = $settings['skip_refunded_items'];
296
- $options['export_all_comments'] = $settings['export_all_comments'];
297
- $options['export_refund_notes'] = $settings['export_refund_notes'];
298
- $options['format_number_fields'] = $settings['format_number_fields'];
299
-
300
  if ( $settings['enable_debug'] AND ! ini_get( 'display_errors' ) ) {
301
  ini_set( 'display_errors', 1 );
302
  $old_error_reporting = error_reporting( E_ALL );
@@ -395,6 +398,7 @@ class WC_Order_Export_Engine {
395
  self::kill_buffers();
396
  }
397
  $settings = self::validate_defaults( $settings );
 
398
  self::$current_job_settings = $settings;
399
  self::$date_format = trim( $settings['date_format'] . ' ' . $settings['time_format'] );
400
  //debug sql?
@@ -443,7 +447,7 @@ class WC_Order_Export_Engine {
443
  self::$orders_for_export = $order_ids;
444
 
445
  // prepare for XLS/CSV moved to plain formatter
446
- $formater->adjust_duplicated_fields_settings( $order_ids );
447
 
448
  // check it once
449
  self::_check_products_and_coupons_fields( $settings, $export );
@@ -454,7 +458,12 @@ class WC_Order_Export_Engine {
454
  // self::maybe_init_summary_report( $labels );
455
  $formater->start();
456
  if ( $make_mode == 'start_estimate' ) { //Start return total count
457
- return $wpdb->get_var( str_replace( 'ID AS order_id', 'COUNT(ID) AS order_count', $sql ) );
 
 
 
 
 
458
  }
459
  }
460
  // self::maybe_start_summary_report();
@@ -479,6 +488,7 @@ class WC_Order_Export_Engine {
479
  if ( $make_mode != 'preview' ) {
480
  do_action( "woe_order_exported", $order_id );
481
  self::try_mark_order( $order_id, $settings );
 
482
  } else {
483
  do_action( "woe_order_previewed", $order_id );
484
  }
@@ -513,6 +523,7 @@ class WC_Order_Export_Engine {
513
 
514
  //no need self::kill_buffers();
515
  $settings = self::validate_defaults( $settings );
 
516
  self::$current_job_settings = $settings;
517
  self::$current_job_build_mode = 'full';
518
  self::$date_format = trim( $settings['date_format'] . ' ' . $settings['time_format'] );
208
  // $field_formats ),
209
  // );
210
 
211
+ $field_formats_ar = array( 'money', 'number', 'date', 'string', 'image', 'link' );
212
  $labels_data = array(
213
  'order' => self::get_order_labels( $settings, $format, $field_formats_ar ),
214
  'products' => self::get_sub_segment_labels( 'product', $settings, $format, $field_formats_ar ),
241
  $export['products'] = false;
242
  $export['coupons'] = false;
243
  foreach ( $settings['order_fields'] as $field ) {
244
+ if( ! isset( $field['key'] ) ) {
245
+ continue;
246
+ }
247
  if ( 'products' == $field['key'] ) {
248
  $export['products'] = true;
249
  }
294
  }
295
 
296
  //as is
297
+ $options['export_refunds'] = $settings['export_refunds'];
298
+ $options['skip_refunded_items'] = $settings['skip_refunded_items'];
299
+ $options['export_all_comments'] = $settings['export_all_comments'];
300
+ $options['export_refund_notes'] = $settings['export_refund_notes'];
301
+ $options['format_number_fields'] = $settings['format_number_fields'];
302
+ $options['convert_serialized_values'] = $settings['convert_serialized_values'];
303
  if ( $settings['enable_debug'] AND ! ini_get( 'display_errors' ) ) {
304
  ini_set( 'display_errors', 1 );
305
  $old_error_reporting = error_reporting( E_ALL );
398
  self::kill_buffers();
399
  }
400
  $settings = self::validate_defaults( $settings );
401
+
402
  self::$current_job_settings = $settings;
403
  self::$date_format = trim( $settings['date_format'] . ' ' . $settings['time_format'] );
404
  //debug sql?
447
  self::$orders_for_export = $order_ids;
448
 
449
  // prepare for XLS/CSV moved to plain formatter
450
+ $formater->adjust_duplicated_fields_settings( $order_ids, $make_mode, $settings );
451
 
452
  // check it once
453
  self::_check_products_and_coupons_fields( $settings, $export );
458
  // self::maybe_init_summary_report( $labels );
459
  $formater->start();
460
  if ( $make_mode == 'start_estimate' ) { //Start return total count
461
+ $duplicate_settings = $formater->get_duplicate_settings();
462
+ return array(
463
+ 'total' => $wpdb->get_var( str_replace( 'ID AS order_id', 'COUNT(ID) AS order_count', $sql ) ),
464
+ 'max_line_items' => isset( $duplicate_settings['products']['max_cols'] ) ? $duplicate_settings['products']['max_cols'] : 0,
465
+ 'max_coupons' => isset( $duplicate_settings['coupons']['max_cols'] ) ? $duplicate_settings['coupons']['max_cols'] : 0,
466
+ );
467
  }
468
  }
469
  // self::maybe_start_summary_report();
488
  if ( $make_mode != 'preview' ) {
489
  do_action( "woe_order_exported", $order_id );
490
  self::try_mark_order( $order_id, $settings );
491
+ self::try_modify_status( $order_id, $settings );
492
  } else {
493
  do_action( "woe_order_previewed", $order_id );
494
  }
523
 
524
  //no need self::kill_buffers();
525
  $settings = self::validate_defaults( $settings );
526
+
527
  self::$current_job_settings = $settings;
528
  self::$current_job_build_mode = 'full';
529
  self::$date_format = trim( $settings['date_format'] . ' ' . $settings['time_format'] );
classes/core/class-wc-order-export-order-coupon-fields.php CHANGED
@@ -9,33 +9,37 @@ class WC_Order_Export_Order_Coupon_Fields {
9
 
10
  $this->coupon_meta = array();
11
  $get_coupon_meta = ( array_diff( $labels->get_keys(), array( 'code', 'discount_amount', 'discount_amount_tax', 'excerpt' ) ) );
12
- $coupon_object = new WC_Coupon( $item['name'] );
13
 
14
  if ( $get_coupon_meta ) {
15
  $recs = $wpdb->get_results( $wpdb->prepare( "SELECT meta_value,meta_key FROM {$wpdb->postmeta} AS meta
16
  JOIN {$wpdb->posts} AS posts ON posts.ID = meta.post_id
17
- WHERE posts.post_title=%s", $item['name'] ) );
18
  foreach ( $recs as $rec ) {
19
  $this->coupon_meta[ $rec->meta_key ] = $rec->meta_value;
20
  }
21
 
22
- foreach ( $coupon_object->get_meta_data() as $meta) {
23
- $this->coupon_meta[ $meta->key ] = $meta->value;
24
- };
 
 
 
 
 
25
  }
26
  $this->item = $item;
27
  $this->static_vals = $static_vals;
28
  }
29
 
30
  public function get($field) {
31
- if ( isset( $this->item[ $field ] ) ) {
32
- return $this->item[ $field ];
33
  } elseif ( $field == 'code' ) {
34
- return $this->item["name"];
35
  } elseif ( $field == 'discount_amount_plus_tax' ) {
36
- return $this->item["discount_amount"] + $this->item["discount_amount_tax"];
37
  } elseif ( $field == 'excerpt' ) {
38
- $post = get_page_by_title( $this->item['name'], OBJECT, 'shop_' . $this->item['type'] );
39
  return $post ? $post->post_excerpt : '';
40
  } elseif ( isset( $this->coupon_meta[ $field ] ) ) {
41
  return $this->coupon_meta[ $field ];
9
 
10
  $this->coupon_meta = array();
11
  $get_coupon_meta = ( array_diff( $labels->get_keys(), array( 'code', 'discount_amount', 'discount_amount_tax', 'excerpt' ) ) );
 
12
 
13
  if ( $get_coupon_meta ) {
14
  $recs = $wpdb->get_results( $wpdb->prepare( "SELECT meta_value,meta_key FROM {$wpdb->postmeta} AS meta
15
  JOIN {$wpdb->posts} AS posts ON posts.ID = meta.post_id
16
+ WHERE posts.post_title=%s", $item->get_name() ) );
17
  foreach ( $recs as $rec ) {
18
  $this->coupon_meta[ $rec->meta_key ] = $rec->meta_value;
19
  }
20
 
21
+ try {
22
+ $coupon_object = new WC_Coupon( $item->get_name() );
23
+ foreach ( $coupon_object->get_meta_data() as $meta) {
24
+ $this->coupon_meta[ $meta->key ] = $meta->value;
25
+ };
26
+ } catch (Exception $e) {
27
+ // Invalid coupon. deleted ?
28
+ }
29
  }
30
  $this->item = $item;
31
  $this->static_vals = $static_vals;
32
  }
33
 
34
  public function get($field) {
35
+ if ( method_exists( $this->item, "get_$field" ) ) {
36
+ return $this->item->{"get_$field"}();
37
  } elseif ( $field == 'code' ) {
38
+ return $this->item->get_name();
39
  } elseif ( $field == 'discount_amount_plus_tax' ) {
40
+ return $this->item->get_discount() + $this->item->get_discount_tax();
41
  } elseif ( $field == 'excerpt' ) {
42
+ $post = get_page_by_title( $this->item->get_name(), OBJECT, 'shop_' . $this->item->get_type() );
43
  return $post ? $post->post_excerpt : '';
44
  } elseif ( isset( $this->coupon_meta[ $field ] ) ) {
45
  return $this->coupon_meta[ $field ];
classes/core/class-wc-order-export-order-fields.php CHANGED
@@ -256,7 +256,7 @@ class WC_Order_Export_Order_Fields {
256
  } elseif ( $field == 'order_shipping' ) {
257
  $row[$field] = method_exists($this->order,"get_shipping_total") ? $this->order->get_shipping_total() : $this->order->get_total_shipping();
258
  } elseif ( $field == 'order_shipping_plus_tax' ) {
259
- $row[$field] = ( method_exists($this->order,"get_shipping_total") ? $this->order->get_shipping_total() : $this->order->get_total_shipping() ) + $this->order->get_shipping_tax();
260
  } elseif ( $field == 'order_shipping_refunded' ) {
261
  $row[$field] = $this->order->get_total_shipping_refunded();
262
  } elseif ( $field == 'order_shipping_minus_refund' ) {
@@ -405,6 +405,10 @@ class WC_Order_Export_Order_Fields {
405
  get_edit_post_link($this->order_id),
406
  __( 'Edit order', 'woo-order-export-lite' )
407
  );
 
 
 
 
408
  } elseif ( isset( $this->order_meta[ $field ] ) ) {
409
  $field_data = array();
410
  do_action( 'woocommerce_order_export_add_field_data', $field_data, $this->order_meta[ $field ], $field );
@@ -415,8 +419,7 @@ class WC_Order_Export_Order_Fields {
415
  } elseif ( isset( $this->order_meta[ "_" . $field ] ) ) { // or hidden field
416
  $row[$field] = $this->order_meta[ "_" . $field ];
417
  } else { // order_date...
418
- $row[$field] = method_exists( $this->order,
419
- 'get_' . $field ) ? $this->order->{'get_' . $field}() : get_post_meta( $this->order_id, '_' . $field, true );
420
  //print_r($field."=".$label); echo "debug static!\n\n";
421
  }
422
  return $row;
256
  } elseif ( $field == 'order_shipping' ) {
257
  $row[$field] = method_exists($this->order,"get_shipping_total") ? $this->order->get_shipping_total() : $this->order->get_total_shipping();
258
  } elseif ( $field == 'order_shipping_plus_tax' ) {
259
+ $row[$field] = ( method_exists($this->order,"get_shipping_total") ? $this->order->get_shipping_total() : floatval( $this->order->get_total_shipping() ) ) + floatval( $this->order->get_shipping_tax() );
260
  } elseif ( $field == 'order_shipping_refunded' ) {
261
  $row[$field] = $this->order->get_total_shipping_refunded();
262
  } elseif ( $field == 'order_shipping_minus_refund' ) {
405
  get_edit_post_link($this->order_id),
406
  __( 'Edit order', 'woo-order-export-lite' )
407
  );
408
+ } elseif ( $field == 'order_currency' ) {
409
+ $row[$field] = $this->order->get_currency();
410
+ } elseif( method_exists( $this->order, 'get_' . $field ) ) { // order_date...
411
+ $row[$field] = $this->order->{'get_' . $field}();
412
  } elseif ( isset( $this->order_meta[ $field ] ) ) {
413
  $field_data = array();
414
  do_action( 'woocommerce_order_export_add_field_data', $field_data, $this->order_meta[ $field ], $field );
419
  } elseif ( isset( $this->order_meta[ "_" . $field ] ) ) { // or hidden field
420
  $row[$field] = $this->order_meta[ "_" . $field ];
421
  } else { // order_date...
422
+ $row[$field] = get_post_meta( $this->order_id, '_' . $field, true );
 
423
  //print_r($field."=".$label); echo "debug static!\n\n";
424
  }
425
  return $row;
classes/core/class-wc-order-export-order-product-fields.php CHANGED
@@ -13,6 +13,11 @@ class WC_Order_Export_Order_Product_Fields {
13
  var $options;
14
  var $woe_order;
15
 
 
 
 
 
 
16
  public function __construct($item, $item_meta, $product,
17
  $order, $post, $line_id, $static_vals, $options, $woe_order) {
18
  $this->item = $item;
@@ -28,6 +33,9 @@ class WC_Order_Export_Order_Product_Fields {
28
  $this->variation_id = $this->item->get_variation_id() ? $this->item->get_variation_id() : $this->item->get_product_id();
29
  $this->product_id = $this->item->get_product_id();
30
  $this->product_fields_with_tags = array( 'product_variation', 'post_content', 'post_excerpt' );
 
 
 
31
  }
32
 
33
  private static function get_product_category_full( $product_id ) {
@@ -98,21 +106,35 @@ class WC_Order_Export_Order_Product_Fields {
98
  $field_value = $this->post ? $this->post->post_excerpt : '';
99
  } elseif ( $field == 'embedded_product_image' ) {
100
  $field_value = "";
 
101
 
102
- if ( $this->post && get_post_thumbnail_id( $this->post->ID ) ) {
103
- $attachment_id = get_post_thumbnail_id( $this->post->ID );
104
- } else {
105
- $attachment_id = get_option( 'woocommerce_placeholder_image', 0 );
106
  }
107
 
108
- if ( is_array( $imagedata = wp_get_attachment_metadata( $attachment_id ) ) ) {
109
- $file = get_attached_file( $attachment_id );
110
- if ( ! empty( $imagedata['sizes']['woocommerce_thumbnail']['file'] ) ) {
111
- $thumbnail_base_name = $imagedata['sizes']['woocommerce_thumbnail']['file'];
112
 
113
- if ( ( $thumbfile = str_replace( basename( $file ), $thumbnail_base_name, $file ) ) && file_exists( $thumbfile ) ) {
114
- $field_value = $thumbfile;
115
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
116
  }
117
  }
118
  } elseif ( $field == 'type' ) {
@@ -182,9 +204,10 @@ class WC_Order_Export_Order_Product_Fields {
182
  elseif ( $field == 'sku_parent' ) {
183
  $field_value = '';
184
  if( $this->product ) {
185
- if( $this->product->is_type( 'variation' ) ) {
186
- $parent= wc_get_product( $this->product->get_parent_id() );
187
- $field_value = $parent->get_sku();
 
188
  }
189
  else
190
  $field_value = $this->product->get_sku();
@@ -258,8 +281,11 @@ class WC_Order_Export_Order_Product_Fields {
258
  if ( $field_value === '' AND !empty( $this->item['variation_id'] ) AND $this->product) // 6. try get attribute for variaton
259
  {
260
  $field_value = $this->product->get_attribute( $field );
261
- if( $field_value === '' AND $this->product->parent )
262
- $field_value = $this->product->parent->get_attribute( $field );
 
 
 
263
  }
264
  if ( $field_value === '' ) { //5. read from product/variation hidden field
265
  $field_value = get_post_meta( $this->variation_id, "_" . $field, true );
13
  var $options;
14
  var $woe_order;
15
 
16
+ /**
17
+ * @var int
18
+ */
19
+ public $parent_product_id;
20
+
21
  public function __construct($item, $item_meta, $product,
22
  $order, $post, $line_id, $static_vals, $options, $woe_order) {
23
  $this->item = $item;
33
  $this->variation_id = $this->item->get_variation_id() ? $this->item->get_variation_id() : $this->item->get_product_id();
34
  $this->product_id = $this->item->get_product_id();
35
  $this->product_fields_with_tags = array( 'product_variation', 'post_content', 'post_excerpt' );
36
+
37
+ $this->parent_product_id = method_exists( $product,
38
+ 'get_parent_id' ) ? $product->get_parent_id() : ( isset( $product->parent ) ? $product->parent->id : 0 );
39
  }
40
 
41
  private static function get_product_category_full( $product_id ) {
106
  $field_value = $this->post ? $this->post->post_excerpt : '';
107
  } elseif ( $field == 'embedded_product_image' ) {
108
  $field_value = "";
109
+ $attachment_id = null;
110
 
111
+ if ( $this->product_id ) {
112
+ $attachment_id = get_post_thumbnail_id( $this->product->get_id() );
 
 
113
  }
114
 
115
+ if ( ! $attachment_id && $this->parent_product_id ) {
116
+ $attachment_id = get_post_thumbnail_id( $this->parent_product_id );
117
+ }
 
118
 
119
+ if ( ! $attachment_id ) {
120
+ $attachment_id = get_option( 'woocommerce_placeholder_image', 0 );
121
+ }
122
+
123
+ /**
124
+ * do not use method listed below
125
+ * - @see wp_get_attachment_metadata()
126
+ * $imagedata = wp_get_attachment_metadata( $attachment_id );
127
+ * $file = get_attached_file( $attachment_id );
128
+ * sometimes wp_get_attachment_metadata() is empty!
129
+ * - @see wp_get_attachment_url()
130
+ * do not have 'size' argument
131
+ * - @see get_attached_file()
132
+ * $path = get_attached_file( get_post_thumbnail_id( $post->ID );
133
+ * This code was used in the first implementation.
134
+ */
135
+ if ( $image = wp_get_attachment_image_src( $attachment_id, 'woocommerce_thumbnail' ) ) {
136
+ if ( ( $thumbfile = str_replace( wp_get_upload_dir()['baseurl'], wp_get_upload_dir()['basedir'], $image[0] ) ) && file_exists( $thumbfile ) ) {
137
+ $field_value = $thumbfile;
138
  }
139
  }
140
  } elseif ( $field == 'type' ) {
204
  elseif ( $field == 'sku_parent' ) {
205
  $field_value = '';
206
  if( $this->product ) {
207
+ if ( $this->product->is_type( 'variation' ) && $this->parent_product_id ) {
208
+ if ( $parent = wc_get_product( $this->parent_product_id ) ) {
209
+ $field_value = $parent->get_sku();
210
+ }
211
  }
212
  else
213
  $field_value = $this->product->get_sku();
281
  if ( $field_value === '' AND !empty( $this->item['variation_id'] ) AND $this->product) // 6. try get attribute for variaton
282
  {
283
  $field_value = $this->product->get_attribute( $field );
284
+ if ( $field_value === '' and $this->parent_product_id ) {
285
+ if ( $parent = wc_get_product( $this->parent_product_id ) ) {
286
+ $field_value = $parent->get_attribute( $field );
287
+ }
288
+ }
289
  }
290
  if ( $field_value === '' ) { //5. read from product/variation hidden field
291
  $field_value = get_post_meta( $this->variation_id, "_" . $field, true );
classes/formats/abstract-class-woe-formatter-plain-format.php CHANGED
@@ -46,11 +46,21 @@ abstract class WOE_Formatter_Plain_Format extends WOE_Formatter {
46
  }
47
 
48
  // calculate max columns based on order items
49
- public function adjust_duplicated_fields_settings( $order_ids ){
50
- if( $this->duplicate_settings['products']['repeat'] == 'columns' AND $this->duplicate_settings['products']['max_cols'] == 0 )
51
- $this->duplicate_settings['products']['max_cols'] = WC_Order_Export_Data_Extractor::get_max_order_items( "line_item", $order_ids );
52
- if( $this->duplicate_settings['coupons']['repeat'] == 'columns' AND $this->duplicate_settings['coupons']['max_cols'] == 0 )
53
- $this->duplicate_settings['coupons']['max_cols'] = WC_Order_Export_Data_Extractor::get_max_order_items( "coupon", $order_ids );
 
 
 
 
 
 
 
 
 
 
54
  }
55
 
56
  public function output( $rec ) {
@@ -278,6 +288,7 @@ abstract class WOE_Formatter_Plain_Format extends WOE_Formatter {
278
  $key = $product->get_id();
279
  else
280
  $key = $item_meta['_variation_id'][0] ? $item_meta['_variation_id'][0] : $item_meta['_product_id'][0];
 
281
  $key = apply_filters( "woe_summary_products_adjust_key", $key, $product, $product_item, $order );
282
 
283
  //add new product
@@ -341,6 +352,7 @@ abstract class WOE_Formatter_Plain_Format extends WOE_Formatter {
341
 
342
  do_action( "woe_summary_products_add_item", $key, $product_item, $order );
343
  }
 
344
 
345
  //no lines for order!
346
  return array();
@@ -420,10 +432,14 @@ abstract class WOE_Formatter_Plain_Format extends WOE_Formatter {
420
  $key = $label_data['key'];
421
 
422
  $field_header = apply_filters( 'woe_add_csv_headers', $field_header, $key );
423
- if ( isset($allowed_fields[$key]) ) {
 
 
 
 
424
  $header[] = $field_header;
425
  } else {
426
- unset( $this->labels['order']->$key );
427
  }
428
  }
429
 
@@ -447,7 +463,11 @@ abstract class WOE_Formatter_Plain_Format extends WOE_Formatter {
447
  $new_row = array();
448
  foreach ( $this->labels['order']->get_labels() as $label_data ) {
449
  $original_key = $label_data['key'];
450
- if ( ! isset( $allowed_fields[$original_key] ) ) {
 
 
 
 
451
  continue;
452
  }
453
  $field_key = $label_data['parent_key'] ? $label_data['parent_key'] : $original_key;
@@ -529,6 +549,14 @@ abstract class WOE_Formatter_Plain_Format extends WOE_Formatter {
529
  $_SESSION['woe_summary_customers'][ $key ]['summary_report_total_refund_amount'] += wc_round_tax_total( $order->get_total_refunded() );
530
  }
531
 
 
 
 
 
 
 
 
 
532
  do_action( "woe_summary_customers_add_item", $key, $order, $row );
533
 
534
  //no lines for order!
@@ -550,6 +578,10 @@ abstract class WOE_Formatter_Plain_Format extends WOE_Formatter {
550
  return 'woe_tmp_data_' . $this->filename;
551
  }
552
 
 
 
 
 
553
  protected function make_img_html_from_path( $path, $width = null, $height = null ) {
554
  $uploads_dir = wp_upload_dir();
555
 
46
  }
47
 
48
  // calculate max columns based on order items
49
+ public function adjust_duplicated_fields_settings( $order_ids, $make_mode = '', $settings = array() ) {
50
+ if( $this->duplicate_settings['products']['repeat'] == 'columns' AND $this->duplicate_settings['products']['max_cols'] == 0 ) {
51
+ if( isset( $make_mode ) && $make_mode == 'partial' && isset( $settings['max_line_items'] ) ) {
52
+ $this->duplicate_settings['products']['max_cols'] = $settings['max_line_items'];
53
+ } else {
54
+ $this->duplicate_settings['products']['max_cols'] = WC_Order_Export_Data_Extractor::get_max_order_items( "line_item", $order_ids );
55
+ }
56
+ }
57
+ if( $this->duplicate_settings['coupons']['repeat'] == 'columns' AND $this->duplicate_settings['coupons']['max_cols'] == 0 ) {
58
+ if( isset( $make_mode ) && $make_mode == 'partial' && isset( $settings['max_coupons'] ) ) {
59
+ $this->duplicate_settings['coupons']['max_cols'] = $settings['max_coupons'];
60
+ } else {
61
+ $this->duplicate_settings['coupons']['max_cols'] = WC_Order_Export_Data_Extractor::get_max_order_items( "coupon", $order_ids );
62
+ }
63
+ }
64
  }
65
 
66
  public function output( $rec ) {
288
  $key = $product->get_id();
289
  else
290
  $key = $item_meta['_variation_id'][0] ? $item_meta['_variation_id'][0] : $item_meta['_product_id'][0];
291
+
292
  $key = apply_filters( "woe_summary_products_adjust_key", $key, $product, $product_item, $order );
293
 
294
  //add new product
352
 
353
  do_action( "woe_summary_products_add_item", $key, $product_item, $order );
354
  }
355
+ do_action( "woe_summary_products_added_order", $order );
356
 
357
  //no lines for order!
358
  return array();
432
  $key = $label_data['key'];
433
 
434
  $field_header = apply_filters( 'woe_add_csv_headers', $field_header, $key );
435
+ if ( isset($allowed_fields[$key]) ||
436
+ preg_match( '^\\AUSER_.+^', $key ) ||
437
+ preg_match( '^\\A_billing_.+^', $key ) ||
438
+ preg_match( '^\\A_shipping_.+^', $key ) ||
439
+ preg_match( '^\\Astatic_field.+^', $key ) ) {
440
  $header[] = $field_header;
441
  } else {
442
+ unset( $this->labels['order']->$key ); //here added filed is deleted
443
  }
444
  }
445
 
463
  $new_row = array();
464
  foreach ( $this->labels['order']->get_labels() as $label_data ) {
465
  $original_key = $label_data['key'];
466
+ if ( ! isset( $allowed_fields[$original_key] ) &&
467
+ ! preg_match( '^\\AUSER_.+^', $original_key ) &&
468
+ ! preg_match( '^\\A_billing_.+^', $original_key ) &&
469
+ ! preg_match( '^\\A_shipping_.+^', $original_key) &&
470
+ ! preg_match( '^\\Astatic_field.+^', $original_key ) ) {
471
  continue;
472
  }
473
  $field_key = $label_data['parent_key'] ? $label_data['parent_key'] : $original_key;
549
  $_SESSION['woe_summary_customers'][ $key ]['summary_report_total_refund_amount'] += wc_round_tax_total( $order->get_total_refunded() );
550
  }
551
 
552
+ if( isset( $_SESSION['woe_summary_customers'][ $key ]['summary_report_total_tax_amount'] ) ) {
553
+ $_SESSION['woe_summary_customers'][ $key ]['summary_report_total_tax_amount'] += wc_round_tax_total( $order->get_total_tax() );
554
+ }
555
+
556
+ if( isset( $_SESSION['woe_summary_customers'][ $key ]['summary_report_total_fee_amount'] ) ) {
557
+ $_SESSION['woe_summary_customers'][ $key ]['summary_report_total_fee_amount'] += wc_round_tax_total( $order->get_total_fees() );
558
+ }
559
+
560
  do_action( "woe_summary_customers_add_item", $key, $order, $row );
561
 
562
  //no lines for order!
578
  return 'woe_tmp_data_' . $this->filename;
579
  }
580
 
581
+ public function get_duplicate_settings() {
582
+ return $this->duplicate_settings;
583
+ }
584
+
585
  protected function make_img_html_from_path( $path, $width = null, $height = null ) {
586
  $uploads_dir = wp_upload_dir();
587
 
classes/formats/abstract-class-woe-formatter-sv.php CHANGED
@@ -32,7 +32,7 @@ abstract class WOE_Formatter_sv extends WOE_Formatter_Plain_Format {
32
  // register the filter
33
  WOE_Formatter_sv_crlf_filter::set_linebreak( $this->linebreak );
34
  stream_filter_register( "WOE_Formatter_{$this->format}_crlf", 'WOE_Formatter_sv_crlf_filter' );
35
- // attach to stream
36
  stream_filter_append( $this->handle, "WOE_Formatter_{$this->format}_crlf" );
37
  }
38
 
@@ -41,7 +41,7 @@ abstract class WOE_Formatter_sv extends WOE_Formatter_Plain_Format {
41
  $data = apply_filters( "woe_{$this->format}_header_filter", $data );
42
  $this->prepare_array( $data );
43
  parent::start( $data );
44
-
45
  if ( ! empty( $this->settings['add_utf8_bom'] ) ) {
46
  fwrite( $this->handle, chr( 239 ) . chr( 187 ) . chr( 191 ) );
47
  }
@@ -78,6 +78,11 @@ abstract class WOE_Formatter_sv extends WOE_Formatter_Plain_Format {
78
  if ( $this->mode == 'preview' ) {
79
  $this->rows[] = $row;
80
  } else {
 
 
 
 
 
81
  if ( ! apply_filters( "woe_{$this->format}_custom_output_func", false, $this->handle, $row,
82
  $this->delimiter, $this->linebreak, $this->enclosure, false ) ) {
83
  if ( $this->enclosure !== '' ) {
@@ -98,7 +103,7 @@ abstract class WOE_Formatter_sv extends WOE_Formatter_Plain_Format {
98
  if ( $this->mode == 'preview' ) {
99
  $this->rows = apply_filters( "woe_{$this->format}_preview_rows", $this->rows );
100
  fwrite( $this->handle, '<table>' );
101
- if ( count( $this->rows ) < 2 ) {
102
  $this->rows[] = array( '<td colspan=10><b>' . __( 'No results', 'woo-order-export-lite' ) . '</b></td>' );
103
  }
104
  foreach ( $this->rows as $num => $rec ) {
32
  // register the filter
33
  WOE_Formatter_sv_crlf_filter::set_linebreak( $this->linebreak );
34
  stream_filter_register( "WOE_Formatter_{$this->format}_crlf", 'WOE_Formatter_sv_crlf_filter' );
35
+ // attach to stream
36
  stream_filter_append( $this->handle, "WOE_Formatter_{$this->format}_crlf" );
37
  }
38
 
41
  $data = apply_filters( "woe_{$this->format}_header_filter", $data );
42
  $this->prepare_array( $data );
43
  parent::start( $data );
44
+
45
  if ( ! empty( $this->settings['add_utf8_bom'] ) ) {
46
  fwrite( $this->handle, chr( 239 ) . chr( 187 ) . chr( 191 ) );
47
  }
78
  if ( $this->mode == 'preview' ) {
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,
87
  $this->delimiter, $this->linebreak, $this->enclosure, false ) ) {
88
  if ( $this->enclosure !== '' ) {
103
  if ( $this->mode == 'preview' ) {
104
  $this->rows = apply_filters( "woe_{$this->format}_preview_rows", $this->rows );
105
  fwrite( $this->handle, '<table>' );
106
+ if ( $this->settings['display_column_names'] && count( $this->rows ) < 2 || count( $this->rows ) < 1 ) {
107
  $this->rows[] = array( '<td colspan=10><b>' . __( 'No results', 'woo-order-export-lite' ) . '</b></td>' );
108
  }
109
  foreach ( $this->rows as $num => $rec ) {
classes/formats/abstract-class-woe-formatter.php CHANGED
@@ -151,7 +151,12 @@ abstract class WOE_Formatter {
151
  }
152
 
153
  protected function format_date_field( $field_value ) {
154
- $ts = strtotime( $field_value );
 
 
 
 
 
155
  if ( $ts ) {
156
  $new_value = date( $this->date_format, $ts );
157
  } else {
@@ -163,6 +168,12 @@ abstract class WOE_Formatter {
163
  return $new_value;
164
  }
165
 
 
 
 
 
 
 
166
  protected function format_money_field( $field_value ) {
167
  $new_value = number_format(
168
  floatval( $field_value ),
151
  }
152
 
153
  protected function format_date_field( $field_value ) {
154
+ if ( ! WOE_Formatter::is_valid_time_stamp( $field_value ) ) {
155
+ $ts = strtotime( $field_value );
156
+ } else {
157
+ $ts = $field_value;
158
+ }
159
+
160
  if ( $ts ) {
161
  $new_value = date( $this->date_format, $ts );
162
  } else {
168
  return $new_value;
169
  }
170
 
171
+ public static function is_valid_time_stamp( $timestamp ) {
172
+ return ((string) (int) $timestamp === $timestamp)
173
+ && ($timestamp <= PHP_INT_MAX)
174
+ && ($timestamp >= ~PHP_INT_MAX);
175
+ }
176
+
177
  protected function format_money_field( $field_value ) {
178
  $new_value = number_format(
179
  floatval( $field_value ),
classes/formats/class-woe-formatter-html.php CHANGED
@@ -29,7 +29,7 @@ class WOE_Formatter_Html extends WOE_Formatter_Plain_Format {
29
  parent::__construct( $mode, $filename, $settings, $format, $labels, $field_formats, $date_format, $offset );
30
 
31
  $this->css = $this->get_prepared_css();
32
-
33
  //to support IMAGES
34
  $field_formats = $this->field_formats['order']; // overwrite! probably modified by parent
35
  $this->image_format_fields = isset( $field_formats['image'] ) ? $field_formats['image'] : array();
@@ -51,7 +51,8 @@ class WOE_Formatter_Html extends WOE_Formatter_Plain_Format {
51
  if( $this->settings['custom_css'] )
52
  $this->css['style'] = '';
53
 
54
- fwrite( $this->handle, '<html><head><style type="text/css">'.$this->css['style'].$this->settings['custom_css'].'</style></head><body>' );
 
55
  }
56
 
57
  if ( ! empty( $this->settings['display_column_names'] ) AND $data ) {
@@ -86,7 +87,7 @@ class WOE_Formatter_Html extends WOE_Formatter_Plain_Format {
86
  continue;
87
  }
88
  }
89
-
90
  //to support IMAGES
91
  foreach ( $row as $column => &$cell ) {
92
  if ( $this->field_format_is( $column, $this->image_format_fields ) ) {
@@ -132,8 +133,7 @@ class WOE_Formatter_Html extends WOE_Formatter_Plain_Format {
132
  }
133
 
134
  fwrite( $this->handle, '<table>' );
135
-
136
- if ( count( $this->rows ) < 2 ) {
137
  $this->rows[] = array( '<td colspan=10 style="'.$this->css['inline']['td'].'"><b>' . __( 'No results', 'woo-order-export-lite' ) .'</b></td>' );
138
  }
139
  foreach ( $this->rows as $num => $rec ) {
29
  parent::__construct( $mode, $filename, $settings, $format, $labels, $field_formats, $date_format, $offset );
30
 
31
  $this->css = $this->get_prepared_css();
32
+
33
  //to support IMAGES
34
  $field_formats = $this->field_formats['order']; // overwrite! probably modified by parent
35
  $this->image_format_fields = isset( $field_formats['image'] ) ? $field_formats['image'] : array();
51
  if( $this->settings['custom_css'] )
52
  $this->css['style'] = '';
53
 
54
+ $meta_encoding = apply_filters("woe_html_meta_encoding", '<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />');
55
+ fwrite( $this->handle, '<html><head>' . $meta_encoding . '<style type="text/css">'.$this->css['style'].$this->settings['custom_css'].'</style></head><body>' );
56
  }
57
 
58
  if ( ! empty( $this->settings['display_column_names'] ) AND $data ) {
87
  continue;
88
  }
89
  }
90
+
91
  //to support IMAGES
92
  foreach ( $row as $column => &$cell ) {
93
  if ( $this->field_format_is( $column, $this->image_format_fields ) ) {
133
  }
134
 
135
  fwrite( $this->handle, '<table>' );
136
+ if ( $this->settings['display_column_names'] && count( $this->rows ) < 2 || count( $this->rows ) < 1 ) {
 
137
  $this->rows[] = array( '<td colspan=10 style="'.$this->css['inline']['td'].'"><b>' . __( 'No results', 'woo-order-export-lite' ) .'</b></td>' );
138
  }
139
  foreach ( $this->rows as $num => $rec ) {
classes/formats/class-woe-formatter-pdf.php CHANGED
@@ -26,6 +26,7 @@ class WOE_Formatter_PDF extends WOE_Formatter_Csv {
26
  private $repeat_header = false;
27
 
28
  private $image_positions = array();
 
29
 
30
  public function __construct( $mode, $filename, $settings, $format, $labels, $field_formats, $date_format, $offset ) {
31
 
@@ -53,15 +54,35 @@ class WOE_Formatter_PDF extends WOE_Formatter_Csv {
53
 
54
  $this->image_format_fields = apply_filters( "woe_{$format}_image_format_fields", $this->image_format_fields );
55
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
56
  parent::__construct( $mode, $filename, $settings, $format, $labels, $field_formats, $date_format, $offset );
57
 
58
  $this->image_positions = array();
 
59
  if ( $this->mode != 'preview' ) {
60
  $tmp_data = get_transient( $this->get_tmp_data_transient_name() );
61
 
62
  if ( ! empty( $tmp_data['image_positions'] ) ) {
63
  $this->image_positions = $tmp_data['image_positions'];
64
  }
 
 
 
 
65
  }
66
  }
67
 
@@ -82,7 +103,21 @@ class WOE_Formatter_PDF extends WOE_Formatter_Csv {
82
  }
83
  }
84
 
 
 
 
 
 
 
 
 
 
 
 
 
 
85
  $tmp_data['image_positions'] = $this->image_positions;
 
86
  set_transient( $this->get_tmp_data_transient_name(), $tmp_data );
87
  }
88
 
@@ -202,6 +237,12 @@ class WOE_Formatter_PDF extends WOE_Formatter_Csv {
202
  $row = fgetcsv( $this->handle, 0, $this->delimiter, $this->enclosure );
203
  }
204
 
 
 
 
 
 
 
205
  while ( $row ) {
206
  if ( count( $this->image_positions ) ) {
207
  foreach ( $this->image_positions as $position ) {
@@ -210,14 +251,86 @@ class WOE_Formatter_PDF extends WOE_Formatter_Csv {
210
  'type' => 'image',
211
  'value' => $source,
212
  );
 
 
 
 
213
  }
214
  }
215
-
216
- $row = apply_filters( 'woe_pdf_prepare_row', $row );
217
- $row_style = apply_filters("woe_pdf_before_print_row", null, $row, $this->pdf, $this);
218
- $this->pdf->addRow( $row, null, null, $row_style );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
219
  $row = fgetcsv( $this->handle, 0, $this->delimiter, $this->enclosure );
220
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
221
 
222
  do_action("woe_pdf_finished", $this->pdf, $this);
223
  $this->pdf->output_to_destination( 'f', str_replace( '.csv', '.pdf', $this->filename ) );
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
 
54
 
55
  $this->image_format_fields = apply_filters( "woe_{$format}_image_format_fields", $this->image_format_fields );
56
 
57
+ $this->link_format_fields = array();
58
+ if ( isset( $field_formats['order']['link'] ) ) {
59
+ $this->link_format_fields = array_merge( $this->link_format_fields, $field_formats['order']['link'] );
60
+ }
61
+ if ( isset( $field_formats['products']['link'] ) ) {
62
+ $this->link_format_fields = array_merge( $this->link_format_fields, $field_formats['products']['link'] );
63
+ }
64
+ if( ! empty( $settings['direction_rtl'] ) ) {
65
+ foreach( $labels as $section => $section_labels ) {
66
+ $labels[$section]->set_labels( array_reverse( $section_labels->get_labels() ) );
67
+ }
68
+ }
69
+
70
+ $this->link_format_fields = apply_filters( "woe_{$format}_link_format_fields", $this->link_format_fields );
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
 
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 );
122
  }
123
 
237
  $row = fgetcsv( $this->handle, 0, $this->delimiter, $this->enclosure );
238
  }
239
 
240
+ $pageBreakOrderLines = wc_string_to_bool( $this->settings['row_dont_page_break_order_lines'] );
241
+
242
+ // both are only for option 'row_dont_page_break_order_lines'
243
+ $orderRows = array();
244
+ $orderId = null;
245
+
246
  while ( $row ) {
247
  if ( count( $this->image_positions ) ) {
248
  foreach ( $this->image_positions as $position ) {
251
  'type' => 'image',
252
  'value' => $source,
253
  );
254
+
255
+ if ( ! empty( $this->settings['row_images_add_link'] ) ) {
256
+ $row[ $position ]['link'] = str_replace( wp_get_upload_dir()['basedir'], wp_get_upload_dir()['baseurl'], $source );
257
+ }
258
  }
259
  }
260
+
261
+ if ( count( $this->link_positions ) ) {
262
+ foreach ( $this->link_positions as $position ) {
263
+ $source = $row[ $position ];
264
+
265
+ // fetch "href" attribute from "a" tag if existing
266
+ if ( preg_match( '/<a\s+(?:[^>]*?\s+)?href=(["\'])(.*?)\1/', $source, $matches ) ) {
267
+ if ( isset( $matches[2] ) ) {
268
+ $source = html_entity_decode( $matches[2] );
269
+ }
270
+ }
271
+
272
+ $row[ $position ] = array(
273
+ 'type' => 'link',
274
+ 'link' => $source,
275
+ );
276
+ }
277
+ }
278
+
279
+ $currentOrderId = intval( array_pop( $row ) ); // always pop! even $pageBreakOrderLines is false
280
+ $orderId = ! $orderId ? $currentOrderId : $orderId;
281
+
282
+ $row = apply_filters( 'woe_pdf_prepare_row', $row );
283
+ $row_style = apply_filters( "woe_pdf_before_print_row", null, $row, $this->pdf, $this );
284
+ $row_height = apply_filters( "woe_pdf_row_height", null, $row, $this->pdf, $this );
285
+
286
+ if ( $pageBreakOrderLines ) {
287
+ if ( $orderId !== $currentOrderId ) {
288
+ $rows = array_map( function ( $orderRow ) {
289
+ return $orderRow[0];
290
+ }, $orderRows );
291
+
292
+ $heights = array_map( function ( $orderRow ) {
293
+ return $orderRow[2];
294
+ }, $orderRows );
295
+
296
+ if ( ! $this->pdf->isEnoughSpace( $rows, $heights ) ) {
297
+ $this->pdf->addPageBreak();
298
+ }
299
+
300
+ foreach ( $orderRows as $orderRow ) {
301
+ $this->pdf->addRow( $orderRow[0], null, $orderRow[2], $orderRow[1] );
302
+ }
303
+
304
+ $orderRows = array();
305
+ $orderId = $currentOrderId;
306
+ }
307
+
308
+ $orderRows[] = array( $row, $row_style, $row_height );
309
+ } else {
310
+ $this->pdf->addRow( $row, null, $row_height, $row_style );
311
+ }
312
+
313
  $row = fgetcsv( $this->handle, 0, $this->delimiter, $this->enclosure );
314
  }
315
+
316
+
317
+ if ( count( $orderRows ) ) {
318
+ $rows = array_map( function ( $orderRow ) {
319
+ return $orderRow[0];
320
+ }, $orderRows );
321
+
322
+ $heights = array_map( function ( $orderRow ) {
323
+ return $orderRow[2];
324
+ }, $orderRows );
325
+
326
+ if ( ! $this->pdf->isEnoughSpace( $rows, $heights ) ) {
327
+ $this->pdf->addPageBreak();
328
+ }
329
+
330
+ foreach ( $orderRows as $orderRow ) {
331
+ $this->pdf->addRow( $orderRow[0], null, $orderRow[2], $orderRow[1] );
332
+ }
333
+ }
334
 
335
  do_action("woe_pdf_finished", $this->pdf, $this);
336
  $this->pdf->output_to_destination( 'f', str_replace( '.csv', '.pdf', $this->filename ) );
classes/formats/class-woe-formatter-xls.php CHANGED
@@ -42,7 +42,7 @@ class WOE_Formatter_Xls extends WOE_Formatter_Plain_Format {
42
  $this->string_format_fields = isset( $field_formats['string'] ) ? $field_formats['string'] : array();
43
  $this->string_format_fields = apply_filters( "woe_{$format}_string_format_fields",
44
  $this->string_format_fields );
45
-
46
  $this->date_format_fields = isset( $field_formats['date'] ) ? $field_formats['date'] : array();
47
  $this->date_format_fields = apply_filters( "woe_{$format}_date_format_fields", $this->date_format_fields );
48
 
@@ -54,6 +54,9 @@ class WOE_Formatter_Xls extends WOE_Formatter_Plain_Format {
54
 
55
  $this->image_format_fields = isset( $field_formats['image'] ) ? $field_formats['image'] : array();
56
  $this->image_format_fields = apply_filters( "woe_{$format}_image_format_fields", $this->image_format_fields );
 
 
 
57
 
58
  if ( $mode != 'preview' ) {
59
  //more memory for XLS?
@@ -206,7 +209,11 @@ class WOE_Formatter_Xls extends WOE_Formatter_Plain_Format {
206
  $this->objPHPExcel->getActiveSheet()->getStyleByColumnAndRow( $pos, $this->last_row )->getNumberFormat()->setFormatCode( $this->date_format );
207
  if ( $text ) {
208
  if ( empty( $this->settings['global_job_settings']['time_format'] ) ) { // must remove time!
 
 
 
209
  $text = date( "Y-m-d", strtotime( $text ) );
 
210
  }
211
  try {
212
  $text = PHPExcel_Shared_Date::PHPToExcel( new DateTime( $text ) );
@@ -214,6 +221,9 @@ class WOE_Formatter_Xls extends WOE_Formatter_Plain_Format {
214
 
215
  $this->objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow( $pos, $this->last_row, $text );
216
  }
 
 
 
217
  } else {
218
  $this->objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow( $pos, $this->last_row, $text );
219
  }
42
  $this->string_format_fields = isset( $field_formats['string'] ) ? $field_formats['string'] : array();
43
  $this->string_format_fields = apply_filters( "woe_{$format}_string_format_fields",
44
  $this->string_format_fields );
45
+
46
  $this->date_format_fields = isset( $field_formats['date'] ) ? $field_formats['date'] : array();
47
  $this->date_format_fields = apply_filters( "woe_{$format}_date_format_fields", $this->date_format_fields );
48
 
54
 
55
  $this->image_format_fields = isset( $field_formats['image'] ) ? $field_formats['image'] : array();
56
  $this->image_format_fields = apply_filters( "woe_{$format}_image_format_fields", $this->image_format_fields );
57
+
58
+ $this->link_format_fields = isset( $field_formats['link'] ) ? $field_formats['link'] : array();
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?
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
  }
218
  try {
219
  $text = PHPExcel_Shared_Date::PHPToExcel( new DateTime( $text ) );
221
 
222
  $this->objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow( $pos, $this->last_row, $text );
223
  }
224
+ } elseif ( $this->field_format_is( $field, $this->link_format_fields ) ) {
225
+ $this->objPHPExcel->getActiveSheet()->getStyleByColumnAndRow( $pos, $this->last_row )->getNumberFormat()->setFormatCode( PHPExcel_Style_NumberFormat::FORMAT_TEXT );
226
+ $this->objPHPExcel->getActiveSheet()->setCellValueExplicitByColumnAndRow( $pos, $this->last_row, $text );
227
  } else {
228
  $this->objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow( $pos, $this->last_row, $text );
229
  }
classes/formats/class-woe-formatter-xml.php CHANGED
@@ -72,7 +72,7 @@ class WOE_Formatter_Xml extends WOE_Formatter {
72
  $child_labels = apply_filters( 'woe_xml_child_labels_' . $original_key, $child_labels, $field_value,
73
  $rec );
74
 
75
- if ( $child_labels->is_not_empty() == false ) // can't export!
76
  {
77
  continue;
78
  }
@@ -103,7 +103,7 @@ class WOE_Formatter_Xml extends WOE_Formatter {
103
 
104
  //format it!
105
  $dom = dom_import_simplexml( $xml );
106
- $dom->ownerDocument->formatOutput = ( $this->mode == 'preview' );
107
  $output_flags = ! empty( $this->settings['self_closing_tags'] ) ? null : LIBXML_NOEMPTYTAG;
108
  $xml = $dom->ownerDocument->saveXML( $dom->ownerDocument->documentElement,
109
  $output_flags );
72
  $child_labels = apply_filters( 'woe_xml_child_labels_' . $original_key, $child_labels, $field_value,
73
  $rec );
74
 
75
+ if ( !is_array($child_labels) AND $child_labels->is_not_empty() == false ) // can't export!
76
  {
77
  continue;
78
  }
103
 
104
  //format it!
105
  $dom = dom_import_simplexml( $xml );
106
+ $dom->ownerDocument->formatOutput = ( $this->mode == 'preview' || $this->settings['preview_format'] );
107
  $output_flags = ! empty( $this->settings['self_closing_tags'] ) ? null : LIBXML_NOEMPTYTAG;
108
  $xml = $dom->ownerDocument->saveXML( $dom->ownerDocument->documentElement,
109
  $output_flags );
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: 2020-04-14 12:09+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.3.1; wp-5.4-RC4-47505"
17
 
18
  #: classes/class-wc-order-export-admin.php:511
19
  #, php-format
@@ -29,16 +29,16 @@ msgid_plural "%s orders unmarked."
29
  msgstr[0] ""
30
  msgstr[1] ""
31
 
32
- #: view/settings-form.php:46 view/settings-form.php:703
33
- #: view/settings-form.php:729
34
  msgid "-"
35
  msgstr ""
36
 
37
- #: view/settings-form.php:791
38
  msgid "- don't modify -"
39
  msgstr ""
40
 
41
- #: view/settings-form.php:569
42
  msgid "0 - auto scale"
43
  msgstr ""
44
 
@@ -46,11 +46,11 @@ msgstr ""
46
  msgid "1st row only"
47
  msgstr ""
48
 
49
- #: classes/core/class-wc-order-export-data-extractor.php:1821
50
  msgid "[Rest of the World]"
51
  msgstr ""
52
 
53
- #: view/settings-form.php:1526 view/settings-form.php:1537
54
  msgid "Actions"
55
  msgstr ""
56
 
@@ -63,47 +63,51 @@ msgstr ""
63
  msgid "Add %s fields"
64
  msgstr ""
65
 
66
- #: view/settings-form.php:1540
67
  msgid "Add fee"
68
  msgstr ""
69
 
70
- #: view/settings-form.php:1529
71
  msgid "Add field"
72
  msgstr ""
73
 
74
- #: view/settings-form.php:1543
 
 
 
 
75
  msgid "Add shipping"
76
  msgstr ""
77
 
78
- #: view/settings-form.php:1532
79
  msgid "Add static field"
80
  msgstr ""
81
 
82
- #: view/settings-form.php:1546
83
  msgid "Add tax"
84
  msgstr ""
85
 
86
- #: classes/core/class-wc-order-export-data-extractor-ui.php:765
87
  msgid "Address 1 (Billing)"
88
  msgstr ""
89
 
90
- #: classes/core/class-wc-order-export-data-extractor-ui.php:855
91
  msgid "Address 1 (Shipping)"
92
  msgstr ""
93
 
94
- #: classes/core/class-wc-order-export-data-extractor-ui.php:760
95
  msgid "Address 1&2 (Billing)"
96
  msgstr ""
97
 
98
- #: classes/core/class-wc-order-export-data-extractor-ui.php:850
99
  msgid "Address 1&2 (Shipping)"
100
  msgstr ""
101
 
102
- #: classes/core/class-wc-order-export-data-extractor-ui.php:770
103
  msgid "Address 2 (Billing)"
104
  msgstr ""
105
 
106
- #: classes/core/class-wc-order-export-data-extractor-ui.php:860
107
  msgid "Address 2 (Shipping)"
108
  msgstr ""
109
 
@@ -129,11 +133,11 @@ msgstr ""
129
  msgid "all rows"
130
  msgstr ""
131
 
132
- #: view/settings-form.php:1269
133
  msgid "Any coupon used"
134
  msgstr ""
135
 
136
- #: view/settings-form.php:355
137
  msgid "Append XML"
138
  msgstr ""
139
 
@@ -145,7 +149,7 @@ msgstr ""
145
  msgid "as"
146
  msgstr ""
147
 
148
- #: view/settings-form.php:773
149
  msgid "Ascending"
150
  msgstr ""
151
 
@@ -153,12 +157,12 @@ msgstr ""
153
  msgid "Auto column width"
154
  msgstr ""
155
 
156
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1262
157
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1286
158
  msgid "Billing Address"
159
  msgstr ""
160
 
161
- #: view/settings-form.php:1295
162
  msgid "Billing locations"
163
  msgstr ""
164
 
@@ -189,86 +193,86 @@ msgstr ""
189
  msgid "Can't find exported file"
190
  msgstr ""
191
 
192
- #: view/settings-form.php:1583 view/settings-form.php:1604
193
- #: view/settings-form.php:1640 view/settings-form.php:1680
194
- #: view/settings-form.php:1702 view/settings-form.php:1733
195
- #: view/settings-form.php:1755 view/settings-form.php:1781
196
- #: view/settings-form.php:1804 view/settings-form.php:1826
197
- #: view/settings-form.php:1848 view/settings-form.php:1870
198
  msgid "Cancel"
199
  msgstr ""
200
 
201
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1268
202
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1293
203
  msgid "Cart"
204
  msgstr ""
205
 
206
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1101
207
  msgid "Cart Discount Amount"
208
  msgstr ""
209
 
210
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1106
211
  msgid "Cart Discount Amount Tax"
212
  msgstr ""
213
 
214
- #: classes/core/class-wc-order-export-data-extractor-ui.php:394
215
  msgid "Category"
216
  msgstr ""
217
 
218
- #: view/settings-form.php:456
219
  msgid "Center align"
220
  msgstr ""
221
 
222
- #: view/settings-form.php:786
223
  msgid "Change order status to"
224
  msgstr ""
225
 
226
- #: view/settings-form.php:325 view/settings-form.php:403
227
  msgid "Character encoding"
228
  msgstr ""
229
 
230
- #: classes/core/class-wc-order-export-data-extractor-ui.php:775
231
  msgid "City (Billing)"
232
  msgstr ""
233
 
234
- #: classes/core/class-wc-order-export-data-extractor-ui.php:865
235
  msgid "City (Shipping)"
236
  msgstr ""
237
 
238
- #: classes/core/class-wc-order-export-data-extractor-ui.php:790
239
  msgid "City, State Zip (Billing)"
240
  msgstr ""
241
 
242
- #: classes/core/class-wc-order-export-data-extractor-ui.php:880
243
  msgid "City, State Zip (Shipping)"
244
  msgstr ""
245
 
246
- #: classes/core/class-wc-order-export-data-extractor-ui.php:785
247
  msgid "City, State, Zip (Billing)"
248
  msgstr ""
249
 
250
- #: classes/core/class-wc-order-export-data-extractor-ui.php:875
251
  msgid "City, State, Zip (Shipping)"
252
  msgstr ""
253
 
254
- #: view/settings-form.php:833
255
  msgid "Cleanup phone (export only digits)"
256
  msgstr ""
257
 
258
- #: view/settings-form.php:1955
259
  msgid "Click here to download"
260
  msgstr ""
261
 
262
- #: view/tab/help.php:8
263
  msgid "code snippets"
264
  msgstr ""
265
 
266
- #: view/settings-form.php:1573 view/settings-form.php:1589
267
- #: view/settings-form.php:1630 view/settings-form.php:1672
268
- #: view/settings-form.php:1686 view/settings-form.php:1725
269
- #: view/settings-form.php:1739 view/settings-form.php:1772
270
- #: view/settings-form.php:1787 view/settings-form.php:1816
271
- #: view/settings-form.php:1838 view/settings-form.php:1860
272
  msgid "Column name"
273
  msgstr ""
274
 
@@ -276,50 +280,50 @@ msgstr ""
276
  msgid "columns"
277
  msgstr ""
278
 
279
- #: view/settings-form.php:613
280
  msgid "Columns align"
281
  msgstr ""
282
 
283
- #: view/settings-form.php:485
284
  msgid "Columns horizontal align"
285
  msgstr ""
286
 
287
- #: view/settings-form.php:496
288
  msgid "Columns vertical align"
289
  msgstr ""
290
 
291
- #: view/settings-form.php:475
292
  msgid "Columns width"
293
  msgstr ""
294
 
295
- #: view/settings-form.php:476 view/settings-form.php:614
296
  msgid "comma separated list"
297
  msgstr ""
298
 
299
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1260
300
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1284
301
  msgid "Common"
302
  msgstr ""
303
 
304
- #: classes/core/class-wc-order-export-data-extractor-ui.php:755
305
  msgid "Company (Billing)"
306
  msgstr ""
307
 
308
- #: classes/core/class-wc-order-export-data-extractor-ui.php:845
309
  msgid "Company (Shipping)"
310
  msgstr ""
311
 
312
  #: view/settings-form.php:167
313
- #: classes/core/class-wc-order-export-data-extractor-ui.php:610
314
  msgid "Completed Date"
315
  msgstr ""
316
 
317
- #: view/settings-form.php:1581 view/settings-form.php:1602
318
- #: view/settings-form.php:1638 view/settings-form.php:1678
319
- #: view/settings-form.php:1700 view/settings-form.php:1731
320
- #: view/settings-form.php:1753 view/settings-form.php:1779
321
- #: view/settings-form.php:1801 view/settings-form.php:1823
322
- #: view/settings-form.php:1845 view/settings-form.php:1867
323
  msgid "Confirm"
324
  msgstr ""
325
 
@@ -333,47 +337,47 @@ msgid ""
333
  "install."
334
  msgstr ""
335
 
336
- #: classes/core/class-wc-order-export-data-extractor-ui.php:805
337
  msgid "Country Code (Billing)"
338
  msgstr ""
339
 
340
- #: classes/core/class-wc-order-export-data-extractor-ui.php:895
341
  msgid "Country Code (Shipping)"
342
  msgstr ""
343
 
344
- #: classes/core/class-wc-order-export-data-extractor-ui.php:810
345
  msgid "Country Name (Billing)"
346
  msgstr ""
347
 
348
- #: classes/core/class-wc-order-export-data-extractor-ui.php:900
349
  msgid "Country Name (Shipping)"
350
  msgstr ""
351
 
352
- #: classes/core/class-wc-order-export-data-extractor-ui.php:530
353
  msgid "Coupon Amount"
354
  msgstr ""
355
 
356
- #: classes/core/class-wc-order-export-data-extractor-ui.php:501
357
  msgid "Coupon Code"
358
  msgstr ""
359
 
360
- #: classes/core/class-wc-order-export-data-extractor-ui.php:521
361
  msgid "Coupon Description"
362
  msgstr ""
363
 
364
- #: view/settings-form.php:352
365
  msgid "Coupon tag"
366
  msgstr ""
367
 
368
- #: classes/core/class-wc-order-export-data-extractor-ui.php:525
369
  msgid "Coupon Type"
370
  msgstr ""
371
 
372
- #: view/settings-form.php:1272
373
- #: classes/admin/class-wc-order-export-manage.php:712
374
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1075
375
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1266
376
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1291
377
  msgid "Coupons"
378
  msgstr ""
379
 
@@ -381,72 +385,68 @@ msgstr ""
381
  msgid "coupons"
382
  msgstr ""
383
 
384
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1096
385
- msgid "Coupons Used"
386
- msgstr ""
387
-
388
  #: view/settings-form.php:289
389
  msgid "CSV options"
390
  msgstr ""
391
 
392
- #: classes/core/class-wc-order-export-data-extractor-ui.php:605
393
  msgid "Currency"
394
  msgstr ""
395
 
396
- #: view/settings-form.php:707 view/settings-form.php:733
397
  msgid "custom"
398
  msgstr ""
399
 
400
- #: view/settings-form.php:679
401
  msgid "Custom css"
402
  msgstr ""
403
 
404
- #: view/settings-form.php:910 view/settings-form.php:1220
405
  msgid "Custom fields"
406
  msgstr ""
407
 
408
- #: view/settings-form.php:851
409
  msgid "Custom PHP code to modify output"
410
  msgstr ""
411
 
412
- #: classes/core/class-wc-order-export-data-extractor-ui.php:680
413
  msgid "Customer first order date"
414
  msgstr ""
415
 
416
- #: classes/core/class-wc-order-export-data-extractor-ui.php:645
417
  msgid "Customer IP address"
418
  msgstr ""
419
 
420
- #: classes/core/class-wc-order-export-data-extractor-ui.php:685
421
  msgid "Customer last order date"
422
  msgstr ""
423
 
424
- #: classes/core/class-wc-order-export-data-extractor-ui.php:625
425
  msgid "Customer Note"
426
  msgstr ""
427
 
428
- #: classes/core/class-wc-order-export-data-extractor-ui.php:670
429
  msgid "Customer Role"
430
  msgstr ""
431
 
432
- #: classes/core/class-wc-order-export-data-extractor-ui.php:675
433
  msgid "Customer Total Orders"
434
  msgstr ""
435
 
436
- #: classes/core/class-wc-order-export-data-extractor-ui.php:665
437
  msgid "Customer User Email"
438
  msgstr ""
439
 
440
- #: classes/core/class-wc-order-export-data-extractor-ui.php:650
441
  msgid "Customer User ID"
442
  msgstr ""
443
 
444
- #: classes/core/class-wc-order-export-data-extractor-ui.php:655
445
  msgid "Customer Username"
446
  msgstr ""
447
 
448
- #: view/settings-form.php:689
449
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1312
450
  msgid "Date"
451
  msgstr ""
452
 
@@ -454,7 +454,7 @@ msgstr ""
454
  msgid "Date From is greater than Date To"
455
  msgstr ""
456
 
457
- #: classes/core/class-wc-order-export-data-extractor-ui.php:620
458
  msgid "Date of first refund"
459
  msgstr ""
460
 
@@ -462,23 +462,23 @@ msgstr ""
462
  msgid "Date range"
463
  msgstr ""
464
 
465
- #: view/settings-form.php:771
466
  msgid "Descending"
467
  msgstr ""
468
 
469
- #: classes/core/class-wc-order-export-data-extractor-ui.php:444
470
  msgid "Description"
471
  msgstr ""
472
 
473
- #: classes/core/class-wc-order-export-data-extractor-ui.php:506
474
  msgid "Discount Amount"
475
  msgstr ""
476
 
477
- #: classes/core/class-wc-order-export-data-extractor-ui.php:516
478
  msgid "Discount Amount + Tax"
479
  msgstr ""
480
 
481
- #: classes/core/class-wc-order-export-data-extractor-ui.php:511
482
  msgid "Discount Amount Tax"
483
  msgstr ""
484
 
@@ -486,30 +486,34 @@ msgstr ""
486
  msgid "Docs"
487
  msgstr ""
488
 
489
- #: view/settings-form.php:374
490
  msgid "Don't escape /"
491
  msgstr ""
492
 
493
- #: view/settings-form.php:882
494
  msgid "Don't export child orders"
495
  msgstr ""
496
 
497
- #: view/tab/help.php:21
498
  #, php-format
499
  msgid ""
500
  "Don't forget to attach your %s or some screenshots. It will significantly "
501
  "reduce reply time :)"
502
  msgstr ""
503
 
504
- #: classes/core/class-wc-order-export-engine.php:362
505
  msgid "Don't Panic"
506
  msgstr ""
507
 
508
- #: classes/core/class-wc-order-export-data-extractor-ui.php:429
 
 
 
 
509
  msgid "Download URL"
510
  msgstr ""
511
 
512
- #: view/settings-form.php:1493
513
  msgid "Drag rows to reorder exported fields"
514
  msgstr ""
515
 
@@ -517,16 +521,16 @@ msgstr ""
517
  msgid "Edit order"
518
  msgstr ""
519
 
520
- #: classes/core/class-wc-order-export-data-extractor-ui.php:815
521
  msgid "Email (Billing)"
522
  msgstr ""
523
 
524
- #: classes/core/class-wc-order-export-data-extractor-ui.php:469
525
  msgid "Embedded Product Image"
526
  msgstr ""
527
 
528
  #: classes/class-wc-order-export-admin.php:306
529
- #: classes/core/class-wc-order-export-data-extractor.php:316
530
  msgid "empty"
531
  msgstr ""
532
 
@@ -546,7 +550,7 @@ msgstr ""
546
  msgid "empty value"
547
  msgstr ""
548
 
549
- #: view/settings-form.php:845
550
  msgid "Enable debug output"
551
  msgstr ""
552
 
@@ -554,31 +558,31 @@ msgstr ""
554
  msgid "Enclosure"
555
  msgstr ""
556
 
557
- #: view/settings-form.php:379
558
  msgid "Encode numeric strings as numbers"
559
  msgstr ""
560
 
561
- #: view/settings-form.php:369
562
  msgid "End tag"
563
  msgstr ""
564
 
565
- #: view/settings-form.php:1169
566
  msgid "Exclude products"
567
  msgstr ""
568
 
569
- #: view/settings-form.php:1924
570
  msgid "Export"
571
  msgstr ""
572
 
573
- #: view/settings-form.php:1928
574
  msgid "Export [w/o progressbar]"
575
  msgstr ""
576
 
577
- #: view/settings-form.php:815
578
  msgid "Export all order notes"
579
  msgstr ""
580
 
581
- #: view/settings-form.php:961
582
  msgid "Export all products from the order"
583
  msgstr ""
584
 
@@ -605,7 +609,7 @@ msgstr ""
605
  msgid "Export now"
606
  msgstr ""
607
 
608
- #: view/settings-form.php:1395
609
  msgid "Export only matched product items"
610
  msgstr ""
611
 
@@ -620,11 +624,11 @@ msgstr ""
620
  msgid "Export orders from WooCommerce with ease (Excel/CSV/XML/JSON supported)"
621
  msgstr ""
622
 
623
- #: view/settings-form.php:821
624
  msgid "Export refund notes as Customer Note"
625
  msgstr ""
626
 
627
- #: view/settings-form.php:886
628
  msgid "Export refunds"
629
  msgstr ""
630
 
@@ -636,16 +640,16 @@ msgstr ""
636
  msgid "Export Status"
637
  msgstr ""
638
 
639
- #: view/settings-form.php:1940
640
  #, php-format
641
  msgid "Export total: %s orders"
642
  msgstr ""
643
 
644
- #: view/settings-form.php:894
645
  msgid "Export unmarked orders only"
646
  msgstr ""
647
 
648
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1059
649
  msgid "Exported items"
650
  msgstr ""
651
 
@@ -653,7 +657,7 @@ msgstr ""
653
  msgid "Express export"
654
  msgstr ""
655
 
656
- #: view/settings-form.php:1810
657
  msgid "Fee name"
658
  msgstr ""
659
 
@@ -669,31 +673,27 @@ msgstr ""
669
  msgid "Fill order columns for"
670
  msgstr ""
671
 
672
- #: view/settings-form.php:1290
673
  msgid "Filter by billing"
674
  msgstr ""
675
 
676
- #: view/settings-form.php:1263
677
  msgid "Filter by coupon"
678
  msgstr ""
679
 
680
- #: view/settings-form.php:1190
681
  msgid "Filter by customer"
682
  msgstr ""
683
 
684
- #: view/settings-form.php:1390
685
  msgid "Filter by item and metadata"
686
  msgstr ""
687
 
688
- #: view/settings-form.php:877
689
- msgid "Filter by order"
690
- msgstr ""
691
-
692
- #: view/settings-form.php:956
693
  msgid "Filter by product"
694
  msgstr ""
695
 
696
- #: view/settings-form.php:1340
697
  msgid "Filter by shipping"
698
  msgstr ""
699
 
@@ -701,27 +701,27 @@ msgstr ""
701
  msgid "Filter orders by"
702
  msgstr ""
703
 
704
- #: classes/core/class-wc-order-export-data-extractor-ui.php:740
705
  msgid "First Name (Billing)"
706
  msgstr ""
707
 
708
- #: classes/core/class-wc-order-export-data-extractor-ui.php:830
709
  msgid "First Name (Shipping)"
710
  msgstr ""
711
 
712
- #: view/settings-form.php:490
713
  msgid "Fit table to page width"
714
  msgstr ""
715
 
716
- #: view/settings-form.php:446 view/settings-form.php:607
717
  msgid "Font size"
718
  msgstr ""
719
 
720
- #: view/settings-form.php:623
721
  msgid "Footer text"
722
  msgstr ""
723
 
724
- #: view/settings-form.php:655
725
  msgid "Footer text color"
726
  msgstr ""
727
 
@@ -733,23 +733,27 @@ msgstr ""
733
  msgid "Format"
734
  msgstr ""
735
 
736
- #: view/settings-form.php:809
737
  msgid "Format numbers (use WC decimal separator)"
738
  msgstr ""
739
 
 
 
 
 
740
  #: classes/admin/class-wc-order-export-manage.php:26
741
  msgid "Fri"
742
  msgstr ""
743
 
744
- #: classes/core/class-wc-order-export-data-extractor-ui.php:750
745
  msgid "Full Name (Billing)"
746
  msgstr ""
747
 
748
- #: classes/core/class-wc-order-export-data-extractor-ui.php:840
749
  msgid "Full Name (Shipping)"
750
  msgstr ""
751
 
752
- #: classes/core/class-wc-order-export-data-extractor-ui.php:454
753
  msgid "Full names for categories"
754
  msgstr ""
755
 
@@ -761,15 +765,15 @@ msgstr ""
761
  msgid "Grouping by product"
762
  msgstr ""
763
 
764
- #: view/settings-form.php:618
765
  msgid "Header text"
766
  msgstr ""
767
 
768
- #: view/settings-form.php:650
769
  msgid "Header text color"
770
  msgstr ""
771
 
772
- #: classes/core/class-wc-order-export-data-extractor-ui.php:414
773
  msgid "Height"
774
  msgstr ""
775
 
@@ -777,17 +781,17 @@ msgstr ""
777
  msgid "Help"
778
  msgstr ""
779
 
780
- #: view/tab/help.php:17
781
  msgid "helpdesk system"
782
  msgstr ""
783
 
784
- #: view/settings-form.php:1569 view/settings-form.php:1626
785
- #: view/settings-form.php:1656 view/settings-form.php:1720
786
- #: view/settings-form.php:1763
787
  msgid "Hide unused fields"
788
  msgstr ""
789
 
790
- #: view/settings-form.php:591
791
  msgid "Html options"
792
  msgstr ""
793
 
@@ -795,7 +799,7 @@ msgstr ""
795
  msgid "https://algolplus.com/"
796
  msgstr ""
797
 
798
- #: view/settings-form.php:1904
799
  #, php-format
800
  msgid ""
801
  "If you see this message after page load, user interface won't work correctly!"
@@ -803,21 +807,21 @@ msgid ""
803
  "it). Probably, it's a conflict with another plugin or active theme."
804
  msgstr ""
805
 
806
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1313
807
  msgid "Image"
808
  msgstr ""
809
 
810
- #: classes/core/class-wc-order-export-data-extractor-ui.php:434
811
  msgid "Image URL"
812
  msgstr ""
813
 
814
- #: view/settings-form.php:283 view/settings-form.php:583
815
- #: view/settings-form.php:668
816
  msgid "Images height"
817
  msgstr ""
818
 
819
- #: view/settings-form.php:276 view/settings-form.php:576
820
- #: view/settings-form.php:661
821
  msgid "Images width"
822
  msgstr ""
823
 
@@ -829,63 +833,63 @@ msgstr ""
829
  msgid "Import settings"
830
  msgstr ""
831
 
832
- #: view/settings-form.php:1929
833
  msgid "It might not work for huge datasets!"
834
  msgstr ""
835
 
836
- #: classes/core/class-wc-order-export-data-extractor-ui.php:927
837
  msgid "Item #"
838
  msgstr ""
839
 
840
- #: classes/core/class-wc-order-export-data-extractor-ui.php:947
841
  msgid "Item Cost"
842
  msgstr ""
843
 
844
- #: classes/core/class-wc-order-export-data-extractor-ui.php:952
845
  msgid "Item Cost Before Discount"
846
  msgstr ""
847
 
848
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1007
849
  msgid "Item Discount Amount"
850
  msgstr ""
851
 
852
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1032
853
  msgid "Item Discount Amount + Tax"
854
  msgstr ""
855
 
856
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1027
857
  msgid "Item Discount Tax"
858
  msgstr ""
859
 
860
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1017
861
  msgid "Item download URL"
862
  msgstr ""
863
 
864
- #: classes/core/class-wc-order-export-data-extractor-ui.php:922
865
  msgid "Item ID"
866
  msgstr ""
867
 
868
- #: view/settings-form.php:1133
869
  msgid "Item meta data"
870
  msgstr ""
871
 
872
- #: view/settings-form.php:1432
873
  msgid "Item metadata"
874
  msgstr ""
875
 
876
- #: classes/core/class-wc-order-export-data-extractor-ui.php:932
877
  msgid "Item Name"
878
  msgstr ""
879
 
880
- #: view/settings-form.php:1399
881
  msgid "Item names"
882
  msgstr ""
883
 
884
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1012
885
  msgid "Item Tax Rate"
886
  msgstr ""
887
 
888
- #: view/settings-form.php:364
889
  msgid "JSON options"
890
  msgstr ""
891
 
@@ -893,57 +897,61 @@ msgstr ""
893
  msgid "Just click inside the textarea and copy (Ctrl+C)"
894
  msgstr ""
895
 
896
- #: view/settings-form.php:486
897
  msgid "L,C or R. Comma separated list"
898
  msgstr ""
899
 
900
- #: classes/core/class-wc-order-export-data-extractor-ui.php:745
901
  msgid "Last Name (Billing)"
902
  msgstr ""
903
 
904
- #: classes/core/class-wc-order-export-data-extractor-ui.php:835
905
  msgid "Last Name (Shipping)"
906
  msgstr ""
907
 
908
- #: view/settings-form.php:455
909
  msgid "Left align"
910
  msgstr ""
911
 
912
- #: classes/core/class-wc-order-export-data-extractor-ui.php:409
913
  msgid "Length"
914
  msgstr ""
915
 
916
- #: view/settings-form.php:320 view/settings-form.php:398
917
  msgid "Line Break"
918
  msgstr ""
919
 
920
- #: classes/core/class-wc-order-export-data-extractor-ui.php:570
921
  msgid "Line number"
922
  msgstr ""
923
 
924
- #: classes/core/class-wc-order-export-data-extractor-ui.php:635
 
 
 
 
925
  msgid "Link to edit order"
926
  msgstr ""
927
 
928
- #: view/settings-form.php:554
929
  msgid "Logo align"
930
  msgstr ""
931
 
932
- #: view/settings-form.php:562
933
  msgid "Logo height"
934
  msgstr ""
935
 
936
- #: view/settings-form.php:568
937
  msgid "Logo width"
938
  msgstr ""
939
 
940
- #: view/tab/help.php:24
941
  #, php-format
942
  msgid ""
943
  "Look at %s for popular plugins or check %s to study how to extend the plugin."
944
  msgstr ""
945
 
946
- #: classes/core/class-wc-order-export-engine.php:494
947
  msgid "Main SQL queries are listed below"
948
  msgstr ""
949
 
@@ -951,25 +959,25 @@ msgstr ""
951
  msgid "Mark exported"
952
  msgstr ""
953
 
954
- #: view/settings-form.php:890
955
  msgid "Mark exported orders"
956
  msgstr ""
957
 
958
- #: view/settings-form.php:1553 view/settings-form.php:1610
959
- #: view/settings-form.php:1760
960
  msgid "Meta key"
961
  msgstr ""
962
 
963
- #: view/settings-form.php:1911
964
  msgid "Might be different from actual export!"
965
  msgstr ""
966
 
967
- #: view/settings-form.php:803
968
  msgid "Misc settings"
969
  msgstr ""
970
 
971
- #: view/settings-form.php:153 view/settings-form.php:749
972
- #: classes/core/class-wc-order-export-data-extractor-ui.php:595
973
  msgid "Modification Date"
974
  msgstr ""
975
 
@@ -977,114 +985,119 @@ msgstr ""
977
  msgid "Mon"
978
  msgstr ""
979
 
980
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1310
981
  msgid "Money"
982
  msgstr ""
983
 
984
- #: view/tab/help.php:16
985
- msgid "Need help? Create ticket in"
 
986
  msgstr ""
987
 
988
- #: view/settings-form.php:492
989
  msgid "No"
990
  msgstr ""
991
 
992
- #: view/settings-form.php:462
993
  msgid "No page numbers"
994
  msgstr ""
995
 
996
  #: classes/formats/class-woe-formatter-html.php:137
997
- #: classes/formats/abstract-class-woe-formatter-sv.php:102
998
- #: classes/formats/class-woe-formatter-xls.php:241
999
  msgid "No results"
1000
  msgstr ""
1001
 
1002
  #: classes/class-wc-order-export-admin.php:304
1003
- #: classes/admin/tabs/ajax/trait-wc-order-export-admin-tab-abstract-ajax-export.php:109
1004
  msgid "Nothing to export. Please, adjust your filters"
1005
  msgstr ""
1006
 
1007
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1311
1008
  msgid "Number"
1009
  msgstr ""
1010
 
 
 
 
 
1011
  #: classes/class-wc-order-export-admin.php:226
1012
  msgid "one row"
1013
  msgstr ""
1014
 
1015
- #: view/settings-form.php:1659
1016
  msgid "OR"
1017
  msgstr ""
1018
 
1019
- #: view/settings-form.php:1564 view/settings-form.php:1621
1020
- #: view/settings-form.php:1651 view/settings-form.php:1715
1021
- #: view/settings-form.php:1769
1022
  msgid "or type meta key here"
1023
  msgstr ""
1024
 
1025
- #: view/settings-form.php:146 view/settings-form.php:748
1026
- #: classes/core/class-wc-order-export-data-extractor-ui.php:590
1027
  msgid "Order Date"
1028
  msgstr ""
1029
 
1030
- #: view/settings-form.php:747
1031
- #: classes/core/class-wc-order-export-data-extractor-ui.php:575
1032
  msgid "Order ID"
1033
  msgstr ""
1034
 
1035
- #: view/settings-form.php:1709
1036
  msgid "Order item fields"
1037
  msgstr ""
1038
 
1039
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1022
1040
  msgid "Order Item Metadata"
1041
  msgstr ""
1042
 
1043
- #: classes/core/class-wc-order-export-data-extractor-ui.php:957
1044
  msgid "Order Line (w/o tax)"
1045
  msgstr ""
1046
 
1047
- #: classes/core/class-wc-order-export-data-extractor-ui.php:977
1048
  msgid "Order Line Subtotal"
1049
  msgstr ""
1050
 
1051
- #: classes/core/class-wc-order-export-data-extractor-ui.php:982
1052
  msgid "Order Line Subtotal Tax"
1053
  msgstr ""
1054
 
1055
- #: classes/core/class-wc-order-export-data-extractor-ui.php:962
1056
  msgid "Order Line Tax"
1057
  msgstr ""
1058
 
1059
- #: classes/core/class-wc-order-export-data-extractor-ui.php:972
1060
  msgid "Order Line Tax (- Refund)"
1061
  msgstr ""
1062
 
1063
- #: classes/core/class-wc-order-export-data-extractor-ui.php:967
1064
  msgid "Order Line Tax Refunded"
1065
  msgstr ""
1066
 
1067
- #: classes/core/class-wc-order-export-data-extractor-ui.php:987
1068
  msgid "Order Line Total"
1069
  msgstr ""
1070
 
1071
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1002
1072
  msgid "Order Line Total (- Refund)"
1073
  msgstr ""
1074
 
1075
- #: classes/core/class-wc-order-export-data-extractor-ui.php:992
1076
  msgid "Order Line Total (include tax)"
1077
  msgstr ""
1078
 
1079
- #: classes/core/class-wc-order-export-data-extractor-ui.php:997
1080
  msgid "Order Line Total Refunded"
1081
  msgstr ""
1082
 
1083
- #: classes/core/class-wc-order-export-data-extractor-ui.php:630
1084
  msgid "Order Notes"
1085
  msgstr ""
1086
 
1087
- #: classes/core/class-wc-order-export-data-extractor-ui.php:580
1088
  msgid "Order Number"
1089
  msgstr ""
1090
 
@@ -1092,47 +1105,47 @@ msgstr ""
1092
  msgid "Order Refund"
1093
  msgstr ""
1094
 
1095
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1201
1096
  msgid "Order Refund Amount"
1097
  msgstr ""
1098
 
1099
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1161
1100
  msgid "Order Shipping + Tax Amount"
1101
  msgstr ""
1102
 
1103
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1156
1104
  msgid "Order Shipping Amount"
1105
  msgstr ""
1106
 
1107
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1171
1108
  msgid "Order Shipping Amount (- Refund)"
1109
  msgstr ""
1110
 
1111
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1166
1112
  msgid "Order Shipping Amount Refunded"
1113
  msgstr ""
1114
 
1115
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1176
1116
  msgid "Order Shipping Tax Amount"
1117
  msgstr ""
1118
 
1119
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1186
1120
  msgid "Order Shipping Tax Amount (- Refund)"
1121
  msgstr ""
1122
 
1123
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1181
1124
  msgid "Order Shipping Tax Refunded"
1125
  msgstr ""
1126
 
1127
- #: classes/core/class-wc-order-export-data-extractor-ui.php:585
1128
  msgid "Order Status"
1129
  msgstr ""
1130
 
1131
- #: view/settings-form.php:750
1132
  msgid "Order status"
1133
  msgstr ""
1134
 
1135
- #: view/settings-form.php:896
1136
  msgid "Order statuses"
1137
  msgstr ""
1138
 
@@ -1140,55 +1153,55 @@ msgstr ""
1140
  msgid "Order Subscription"
1141
  msgstr ""
1142
 
1143
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1116
1144
  msgid "Order Subtotal - Cart Discount"
1145
  msgstr ""
1146
 
1147
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1111
1148
  msgid "Order Subtotal Amount"
1149
  msgstr ""
1150
 
1151
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1126
1152
  msgid "Order Subtotal Amount (- Refund)"
1153
  msgstr ""
1154
 
1155
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1121
1156
  msgid "Order Subtotal Amount Refunded"
1157
  msgstr ""
1158
 
1159
- #: view/settings-form.php:346
1160
  msgid "Order tag"
1161
  msgstr ""
1162
 
1163
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1131
1164
  msgid "Order Tax Amount"
1165
  msgstr ""
1166
 
1167
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1211
1168
  msgid "Order Total Amount"
1169
  msgstr ""
1170
 
1171
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1206
1172
  msgid "Order Total Amount (- Refund)"
1173
  msgstr ""
1174
 
1175
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1216
1176
  msgid "Order Total Amount without Tax"
1177
  msgstr ""
1178
 
1179
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1196
1180
  msgid "Order Total Fee"
1181
  msgstr ""
1182
 
1183
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1221
1184
  msgid "Order Total Tax Amount"
1185
  msgstr ""
1186
 
1187
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1231
1188
  msgid "Order Total Tax Amount (- Refund)"
1189
  msgstr ""
1190
 
1191
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1226
1192
  msgid "Order Total Tax Amount Refunded"
1193
  msgstr ""
1194
 
@@ -1196,8 +1209,8 @@ msgstr ""
1196
  msgid "Order Type"
1197
  msgstr ""
1198
 
1199
- #: classes/admin/class-wc-order-export-manage.php:244
1200
- #: classes/formats/class-woe-formatter-xls.php:132
1201
  msgid "Orders"
1202
  msgstr ""
1203
 
@@ -1205,61 +1218,61 @@ msgstr ""
1205
  msgid "Orders range"
1206
  msgstr ""
1207
 
1208
- #: view/settings-form.php:428
1209
  msgid "Orientation"
1210
  msgstr ""
1211
 
1212
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1267
1213
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1292
1214
  msgid "Other items"
1215
  msgstr ""
1216
 
1217
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1271
1218
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1296
1219
  msgid "Others"
1220
  msgstr ""
1221
 
1222
  #: view/settings-form.php:261 view/settings-form.php:302
1223
- #: view/settings-form.php:393 view/settings-form.php:417
1224
- #: view/settings-form.php:597
1225
  msgid "Output column titles as first line"
1226
  msgstr ""
1227
 
1228
- #: view/settings-form.php:298 view/settings-form.php:389
1229
  msgid "Output UTF-8 BOM"
1230
  msgstr ""
1231
 
1232
- #: classes/FPDF/class-woe-pdf-mc-table.php:169
1233
  #, php-format
1234
  msgid "Page %s / %s"
1235
  msgstr ""
1236
 
1237
- #: view/settings-form.php:480
1238
  msgid "Page footer text"
1239
  msgstr ""
1240
 
1241
- #: view/settings-form.php:530
1242
  msgid "Page footer text color"
1243
  msgstr ""
1244
 
1245
- #: view/settings-form.php:470
1246
  msgid "Page header text"
1247
  msgstr ""
1248
 
1249
- #: view/settings-form.php:525
1250
  msgid "Page header text color"
1251
  msgstr ""
1252
 
1253
- #: view/settings-form.php:452
1254
  msgid "Page numbers"
1255
  msgstr ""
1256
 
1257
- #: view/settings-form.php:437
1258
  msgid "Page size"
1259
  msgstr ""
1260
 
1261
  #: view/settings-form.php:160
1262
- #: classes/core/class-wc-order-export-data-extractor-ui.php:615
1263
  msgid "Paid Date"
1264
  msgstr ""
1265
 
@@ -1269,27 +1282,27 @@ msgid ""
1269
  "install."
1270
  msgstr ""
1271
 
1272
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1091
1273
  msgid "Payment Method"
1274
  msgstr ""
1275
 
1276
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1086
1277
  msgid "Payment Method Title"
1278
  msgstr ""
1279
 
1280
- #: view/settings-form.php:1324
1281
  msgid "Payment methods"
1282
  msgstr ""
1283
 
1284
- #: view/settings-form.php:411
1285
  msgid "PDF options"
1286
  msgstr ""
1287
 
1288
- #: classes/core/class-wc-order-export-data-extractor-ui.php:820
1289
  msgid "Phone (Billing)"
1290
  msgstr ""
1291
 
1292
- #: view/settings-form.php:856
1293
  msgid ""
1294
  "Please check permissions for your role. You must have capability "
1295
  "“edit_themes” to use this box."
@@ -1309,31 +1322,36 @@ msgstr ""
1309
  msgid "Please, install/enable PHP XML extension!"
1310
  msgstr ""
1311
 
 
 
 
 
 
1312
  #: classes/class-wc-order-export-admin.php:303
1313
  msgid "Please, set up fields to export"
1314
  msgstr ""
1315
 
1316
- #: classes/core/class-wc-order-export-data-extractor-ui.php:800
1317
  msgid "Postcode (Billing)"
1318
  msgstr ""
1319
 
1320
- #: classes/core/class-wc-order-export-data-extractor-ui.php:890
1321
  msgid "Postcode (Shipping)"
1322
  msgstr ""
1323
 
1324
- #: view/settings-form.php:340
1325
  msgid "Prepend XML"
1326
  msgstr ""
1327
 
1328
- #: view/settings-form.php:1954
1329
  msgid "Press 'Esc' to cancel the export"
1330
  msgstr ""
1331
 
1332
- #: view/settings-form.php:1910
1333
  msgid "Preview"
1334
  msgstr ""
1335
 
1336
- #: view/settings-form.php:1942
1337
  msgid "Preview size"
1338
  msgstr ""
1339
 
@@ -1342,19 +1360,19 @@ msgstr ""
1342
  msgid "Pro version"
1343
  msgstr ""
1344
 
1345
- #: view/settings-form.php:967
1346
  msgid "Product categories"
1347
  msgstr ""
1348
 
1349
- #: classes/core/class-wc-order-export-data-extractor-ui.php:384
1350
  msgid "Product Current Price"
1351
  msgstr ""
1352
 
1353
- #: view/settings-form.php:1057
1354
  msgid "Product custom fields"
1355
  msgstr ""
1356
 
1357
- #: view/settings-form.php:1645
1358
  msgid "Product fields"
1359
  msgstr ""
1360
 
@@ -1370,48 +1388,52 @@ msgstr ""
1370
  msgid "Product Name (main)"
1371
  msgstr ""
1372
 
1373
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1289
1374
  msgid "Product order items"
1375
  msgstr ""
1376
 
1377
- #: view/settings-form.php:310 view/settings-form.php:397
1378
  msgid "Product rows start with a new line"
1379
  msgstr ""
1380
 
1381
- #: classes/core/class-wc-order-export-data-extractor-ui.php:379
1382
  msgid "Product Seller"
1383
  msgstr ""
1384
 
1385
- #: classes/core/class-wc-order-export-data-extractor-ui.php:439
1386
  msgid "Product Shipping Class"
1387
  msgstr ""
1388
 
1389
- #: view/settings-form.php:1016
1390
  msgid "Product SKU"
1391
  msgstr ""
1392
 
1393
- #: view/settings-form.php:349
1394
  msgid "Product tag"
1395
  msgstr ""
1396
 
1397
- #: view/settings-form.php:1022
1398
  msgid "Product taxonomies"
1399
  msgstr ""
1400
 
1401
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1265
1402
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1290
1403
  msgid "Product totals"
1404
  msgstr ""
1405
 
1406
- #: classes/core/class-wc-order-export-data-extractor-ui.php:424
1407
  msgid "Product URL"
1408
  msgstr ""
1409
 
1410
- #: view/settings-form.php:1001
1411
- #: classes/admin/class-wc-order-export-manage.php:669
1412
- #: classes/core/class-wc-order-export-data-extractor-ui.php:911
1413
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1264
1414
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1288
 
 
 
 
1415
  msgid "Products"
1416
  msgstr ""
1417
 
@@ -1427,19 +1449,19 @@ msgstr ""
1427
  msgid "Profiles"
1428
  msgstr ""
1429
 
1430
- #: classes/core/class-wc-order-export-data-extractor-ui.php:937
1431
  msgid "Quantity"
1432
  msgstr ""
1433
 
1434
- #: classes/core/class-wc-order-export-data-extractor-ui.php:942
1435
  msgid "Quantity (- Refund)"
1436
  msgstr ""
1437
 
1438
- #: view/settings-form.php:861
1439
  msgid "Read how to fix it"
1440
  msgstr ""
1441
 
1442
- #: view/settings-form.php:1499
1443
  msgid "Remove all fields"
1444
  msgstr ""
1445
 
@@ -1447,19 +1469,19 @@ msgstr ""
1447
  msgid "Remove all fields?"
1448
  msgstr ""
1449
 
1450
- #: view/settings-form.php:551
1451
  msgid "Remove logo"
1452
  msgstr ""
1453
 
1454
- #: view/settings-form.php:424
1455
  msgid "repeat at each page"
1456
  msgstr ""
1457
 
1458
- #: view/settings-form.php:603
1459
  msgid "repeat header as last line"
1460
  msgstr ""
1461
 
1462
- #: view/settings-form.php:1936
1463
  msgid "Reset settings"
1464
  msgstr ""
1465
 
@@ -1468,15 +1490,15 @@ msgstr ""
1468
  msgid "Result: %s"
1469
  msgstr ""
1470
 
1471
- #: view/settings-form.php:457
1472
  msgid "Right align"
1473
  msgstr ""
1474
 
1475
- #: view/settings-form.php:269
1476
  msgid "Right-to-Left direction"
1477
  msgstr ""
1478
 
1479
- #: view/settings-form.php:343
1480
  msgid "Root tag"
1481
  msgstr ""
1482
 
@@ -1488,11 +1510,11 @@ msgstr ""
1488
  msgid "Sat"
1489
  msgstr ""
1490
 
1491
- #: view/settings-form.php:1917
1492
  msgid "Save & Exit"
1493
  msgstr ""
1494
 
1495
- #: view/settings-form.php:1914 view/settings-form.php:1919
1496
  msgid "Save settings"
1497
  msgstr ""
1498
 
@@ -1504,7 +1526,7 @@ msgstr ""
1504
  msgid "select item field"
1505
  msgstr ""
1506
 
1507
- #: view/settings-form.php:539
1508
  msgid "Select logo"
1509
  msgstr ""
1510
 
@@ -1512,7 +1534,7 @@ msgstr ""
1512
  msgid "select product field or taxonomy"
1513
  msgstr ""
1514
 
1515
- #: view/settings-form.php:358
1516
  msgid "Self closing tags"
1517
  msgstr ""
1518
 
@@ -1520,7 +1542,7 @@ msgstr ""
1520
  msgid "Set up coupon fields"
1521
  msgstr ""
1522
 
1523
- #: view/settings-form.php:1473
1524
  msgid "Set up fields to export"
1525
  msgstr ""
1526
 
@@ -1532,7 +1554,7 @@ msgstr ""
1532
  msgid "Settings"
1533
  msgstr ""
1534
 
1535
- #: view/tab/help.php:6
1536
  msgid "settings"
1537
  msgstr ""
1538
 
@@ -1540,53 +1562,53 @@ msgstr ""
1540
  msgid "Settings saved"
1541
  msgstr ""
1542
 
1543
- #: view/settings-form.php:1949 view/tab/tools.php:86
1544
  msgid "Settings were successfully updated!"
1545
  msgstr ""
1546
 
1547
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1269
1548
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1294
1549
  msgid "Shipping"
1550
  msgstr ""
1551
 
1552
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1263
1553
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1287
1554
  msgid "Shipping Address"
1555
  msgstr ""
1556
 
1557
- #: view/settings-form.php:839
1558
  msgid "Shipping fields use billing details (if shipping address is empty)"
1559
  msgstr ""
1560
 
1561
- #: view/settings-form.php:1345
1562
  msgid "Shipping locations"
1563
  msgstr ""
1564
 
1565
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1146
1566
  msgid "Shipping Method"
1567
  msgstr ""
1568
 
1569
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1151
1570
  msgid "Shipping Method (no id)"
1571
  msgstr ""
1572
 
1573
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1141
1574
  msgid "Shipping Method Title"
1575
  msgstr ""
1576
 
1577
- #: view/settings-form.php:1374
1578
  msgid "Shipping methods"
1579
  msgstr ""
1580
 
1581
- #: view/settings-form.php:1832
1582
  msgid "Shipping name"
1583
  msgstr ""
1584
 
1585
- #: classes/core/class-wc-order-export-data-extractor-ui.php:449
1586
  msgid "Short Description"
1587
  msgstr ""
1588
 
1589
- #: view/settings-form.php:965
1590
  msgid "Skip fully refunded items"
1591
  msgstr ""
1592
 
@@ -1598,7 +1620,7 @@ msgstr ""
1598
  msgid "SKU (parent)"
1599
  msgstr ""
1600
 
1601
- #: view/settings-form.php:778
1602
  #, php-format
1603
  msgid "Sort orders by %s in %s order"
1604
  msgstr ""
@@ -1607,23 +1629,23 @@ msgstr ""
1607
  msgid "Split values by"
1608
  msgstr ""
1609
 
1610
- #: view/settings-form.php:366
1611
  msgid "Start tag"
1612
  msgstr ""
1613
 
1614
- #: classes/core/class-wc-order-export-data-extractor-ui.php:780
1615
  msgid "State Code (Billing)"
1616
  msgstr ""
1617
 
1618
- #: classes/core/class-wc-order-export-data-extractor-ui.php:870
1619
  msgid "State Code (Shipping)"
1620
  msgstr ""
1621
 
1622
- #: classes/core/class-wc-order-export-data-extractor-ui.php:795
1623
  msgid "State Name (Billing)"
1624
  msgstr ""
1625
 
1626
- #: classes/core/class-wc-order-export-data-extractor-ui.php:885
1627
  msgid "State Name (Shipping)"
1628
  msgstr ""
1629
 
@@ -1631,11 +1653,11 @@ msgstr ""
1631
  msgid "Status change jobs"
1632
  msgstr ""
1633
 
1634
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1309
1635
  msgid "String"
1636
  msgstr ""
1637
 
1638
- #: view/settings-form.php:827
1639
  msgid "Strip tags from Product Description/Variation"
1640
  msgstr ""
1641
 
@@ -1647,50 +1669,58 @@ msgstr ""
1647
  msgid "Summary Report By Products"
1648
  msgstr ""
1649
 
1650
- #: classes/core/class-wc-order-export-data-extractor-ui.php:464
1651
- #: classes/core/class-wc-order-export-data-extractor-ui.php:705
1652
  msgid "Summary Report Total Amount"
1653
  msgstr ""
1654
 
1655
- #: classes/core/class-wc-order-export-data-extractor-ui.php:710
1656
  msgid "Summary Report Total Amount Paid"
1657
  msgstr ""
1658
 
1659
- #: classes/core/class-wc-order-export-data-extractor-ui.php:474
1660
- #: classes/core/class-wc-order-export-data-extractor-ui.php:720
1661
  msgid "Summary Report Total Discount"
1662
  msgstr ""
1663
 
1664
- #: classes/core/class-wc-order-export-data-extractor-ui.php:695
1665
- msgid "Summary Report Total Items"
1666
  msgstr ""
1667
 
1668
  #: classes/core/class-wc-order-export-data-extractor-ui.php:700
 
 
 
 
1669
  msgid "Summary Report Total Items (Exported)"
1670
  msgstr ""
1671
 
1672
- #: classes/core/class-wc-order-export-data-extractor-ui.php:690
1673
  msgid "Summary Report Total Orders"
1674
  msgstr ""
1675
 
1676
- #: classes/core/class-wc-order-export-data-extractor-ui.php:459
1677
  msgid "Summary Report Total Quantity"
1678
  msgstr ""
1679
 
1680
- #: classes/core/class-wc-order-export-data-extractor-ui.php:484
1681
- #: classes/core/class-wc-order-export-data-extractor-ui.php:730
1682
  msgid "Summary Report Total Refund Amount"
1683
  msgstr ""
1684
 
1685
- #: classes/core/class-wc-order-export-data-extractor-ui.php:479
1686
- #: classes/core/class-wc-order-export-data-extractor-ui.php:725
1687
- msgid "Summary Report Total Refunds"
1688
  msgstr ""
1689
 
1690
- #: classes/core/class-wc-order-export-data-extractor-ui.php:715
1691
  msgid "Summary Report Total Shipping"
1692
  msgstr ""
1693
 
 
 
 
 
1694
  #: classes/admin/class-wc-order-export-manage.php:21
1695
  msgid "Sun"
1696
  msgstr ""
@@ -1699,50 +1729,50 @@ msgstr ""
1699
  msgid "Support"
1700
  msgstr ""
1701
 
1702
- #: view/settings-form.php:497
1703
  msgid "T,C or B. Comma separated list"
1704
  msgstr ""
1705
 
1706
- #: view/settings-form.php:508 view/settings-form.php:633
1707
  msgid "Table header background color"
1708
  msgstr ""
1709
 
1710
- #: view/settings-form.php:503 view/settings-form.php:628
1711
  msgid "Table header text color"
1712
  msgstr ""
1713
 
1714
- #: view/settings-form.php:519 view/settings-form.php:644
1715
  msgid "Table row background color"
1716
  msgstr ""
1717
 
1718
- #: view/settings-form.php:514 view/settings-form.php:639
1719
  msgid "Table row text color"
1720
  msgstr ""
1721
 
1722
- #: classes/core/class-wc-order-export-data-extractor-ui.php:399
1723
  msgid "Tags"
1724
  msgstr ""
1725
 
1726
- #: view/settings-form.php:1854
1727
  msgid "Tax name"
1728
  msgstr ""
1729
 
1730
- #: view/settings-form.php:1661
1731
  msgid "Taxonomy"
1732
  msgstr ""
1733
 
1734
- #: classes/core/class-wc-order-export-engine.php:363
1735
  #, php-format
1736
  msgid "The code you are trying to save produced a fatal error on line %d:"
1737
  msgstr ""
1738
 
1739
- #: view/settings-form.php:954
1740
  msgid ""
1741
  "The filters won't work correctly.<br>Another plugin(or theme) has loaded "
1742
  "outdated Select2.js"
1743
  msgstr ""
1744
 
1745
- #: view/settings-form.php:1551 view/settings-form.php:1707
1746
  msgid ""
1747
  "The plugin fetches meta keys from the existing orders. So you should create "
1748
  "fake order if you've added new field just now."
@@ -1758,11 +1788,11 @@ msgstr ""
1758
  msgid "This date range should not be saved in the scheduled task"
1759
  msgstr ""
1760
 
1761
- #: view/settings-form.php:681
1762
  msgid "This option cancels UI settings(above) and don't applied to Preview"
1763
  msgstr ""
1764
 
1765
- #: view/tab/help.php:10
1766
  msgid "this page"
1767
  msgstr ""
1768
 
@@ -1776,7 +1806,7 @@ msgstr ""
1776
  msgid "Thu"
1777
  msgstr ""
1778
 
1779
- #: view/settings-form.php:716
1780
  msgid "Time"
1781
  msgstr ""
1782
 
@@ -1792,28 +1822,32 @@ msgstr ""
1792
  msgid "Tools"
1793
  msgstr ""
1794
 
1795
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1054
1796
  msgid "Total items"
1797
  msgstr ""
1798
 
1799
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1064
1800
  msgid "Total products"
1801
  msgstr ""
1802
 
1803
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1049
1804
  msgid "Total weight"
1805
  msgstr ""
1806
 
1807
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1270
1808
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1295
1809
  msgid "Totals"
1810
  msgstr ""
1811
 
1812
- #: classes/core/class-wc-order-export-data-extractor-ui.php:600
1813
  msgid "Transaction ID"
1814
  msgstr ""
1815
 
1816
- #: view/settings-form.php:381
 
 
 
 
1817
  msgid "TSV options"
1818
  msgstr ""
1819
 
@@ -1821,11 +1855,11 @@ msgstr ""
1821
  msgid "Tue"
1822
  msgstr ""
1823
 
1824
- #: view/settings-form.php:1486
1825
  msgid "Turn off mode Summary report to export order fields"
1826
  msgstr ""
1827
 
1828
- #: classes/core/class-wc-order-export-data-extractor-ui.php:389
1829
  msgid "Type"
1830
  msgstr ""
1831
 
@@ -1843,15 +1877,15 @@ msgstr ""
1843
  msgid "Unmark exported"
1844
  msgstr ""
1845
 
1846
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1303
1847
  msgid "Use \"Add field\" to export specific product attribute"
1848
  msgstr ""
1849
 
1850
- #: view/settings-form.php:865
1851
  msgid "Use only unnamed functions!"
1852
  msgstr ""
1853
 
1854
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1302
1855
  msgid "Use section \"Product order items\" to add attributes"
1856
  msgstr ""
1857
 
@@ -1859,37 +1893,41 @@ msgstr ""
1859
  msgid "Use sheet name"
1860
  msgstr ""
1861
 
1862
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1261
1863
- #: classes/core/class-wc-order-export-data-extractor-ui.php:1285
1864
  msgid "User"
1865
  msgstr ""
1866
 
1867
- #: view/settings-form.php:1208
 
 
 
 
1868
  msgid "User roles"
1869
  msgstr ""
1870
 
1871
- #: classes/core/class-wc-order-export-data-extractor-ui.php:660
1872
  msgid "User Website"
1873
  msgstr ""
1874
 
1875
- #: view/settings-form.php:1194
1876
  msgid "Usernames"
1877
  msgstr ""
1878
 
1879
- #: view/settings-form.php:1594 view/settings-form.php:1691
1880
- #: view/settings-form.php:1744 view/settings-form.php:1792
1881
  msgid "Value"
1882
  msgstr ""
1883
 
1884
- #: view/settings-form.php:1098
1885
  msgid "Variable product attributes"
1886
  msgstr ""
1887
 
1888
- #: classes/core/class-wc-order-export-data-extractor-ui.php:374
1889
  msgid "Variation Id"
1890
  msgstr ""
1891
 
1892
- #: view/settings-form.php:985
1893
  msgid "Vendors/creators"
1894
  msgstr ""
1895
 
@@ -1897,11 +1935,11 @@ msgstr ""
1897
  msgid "Wed"
1898
  msgstr ""
1899
 
1900
- #: classes/core/class-wc-order-export-data-extractor-ui.php:419
1901
  msgid "Weight"
1902
  msgstr ""
1903
 
1904
- #: classes/core/class-wc-order-export-data-extractor-ui.php:404
1905
  msgid "Width"
1906
  msgstr ""
1907
 
@@ -1917,7 +1955,7 @@ msgstr ""
1917
  msgid "XML options"
1918
  msgstr ""
1919
 
1920
- #: view/settings-form.php:491
1921
  msgid "Yes"
1922
  msgstr ""
1923
 
3
  msgstr ""
4
  "Project-Id-Version: Advanced Order Export For WooCommerce\n"
5
  "Report-Msgid-Bugs-To: \n"
6
+ "POT-Creation-Date: 2020-08-24 07:23+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.4.2; wp-5.5"
17
 
18
  #: classes/class-wc-order-export-admin.php:511
19
  #, php-format
29
  msgstr[0] ""
30
  msgstr[1] ""
31
 
32
+ #: view/settings-form.php:46 view/settings-form.php:730
33
+ #: view/settings-form.php:756
34
  msgid "-"
35
  msgstr ""
36
 
37
+ #: view/settings-form.php:819
38
  msgid "- don't modify -"
39
  msgstr ""
40
 
41
+ #: view/settings-form.php:580
42
  msgid "0 - auto scale"
43
  msgstr ""
44
 
46
  msgid "1st row only"
47
  msgstr ""
48
 
49
+ #: classes/core/class-wc-order-export-data-extractor.php:1873
50
  msgid "[Rest of the World]"
51
  msgstr ""
52
 
53
+ #: view/settings-form.php:1565 view/settings-form.php:1576
54
  msgid "Actions"
55
  msgstr ""
56
 
63
  msgid "Add %s fields"
64
  msgstr ""
65
 
66
+ #: view/settings-form.php:1579
67
  msgid "Add fee"
68
  msgstr ""
69
 
70
+ #: view/settings-form.php:1568
71
  msgid "Add field"
72
  msgstr ""
73
 
74
+ #: view/settings-form.php:613
75
+ msgid "Add links to images"
76
+ msgstr ""
77
+
78
+ #: view/settings-form.php:1582
79
  msgid "Add shipping"
80
  msgstr ""
81
 
82
+ #: view/settings-form.php:1571
83
  msgid "Add static field"
84
  msgstr ""
85
 
86
+ #: view/settings-form.php:1585
87
  msgid "Add tax"
88
  msgstr ""
89
 
90
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:780
91
  msgid "Address 1 (Billing)"
92
  msgstr ""
93
 
94
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:870
95
  msgid "Address 1 (Shipping)"
96
  msgstr ""
97
 
98
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:775
99
  msgid "Address 1&2 (Billing)"
100
  msgstr ""
101
 
102
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:865
103
  msgid "Address 1&2 (Shipping)"
104
  msgstr ""
105
 
106
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:785
107
  msgid "Address 2 (Billing)"
108
  msgstr ""
109
 
110
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:875
111
  msgid "Address 2 (Shipping)"
112
  msgstr ""
113
 
133
  msgid "all rows"
134
  msgstr ""
135
 
136
+ #: view/settings-form.php:1309
137
  msgid "Any coupon used"
138
  msgstr ""
139
 
140
+ #: view/settings-form.php:356
141
  msgid "Append XML"
142
  msgstr ""
143
 
149
  msgid "as"
150
  msgstr ""
151
 
152
+ #: view/settings-form.php:800
153
  msgid "Ascending"
154
  msgstr ""
155
 
157
  msgid "Auto column width"
158
  msgstr ""
159
 
160
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1277
161
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1301
162
  msgid "Billing Address"
163
  msgstr ""
164
 
165
+ #: view/settings-form.php:1335
166
  msgid "Billing locations"
167
  msgstr ""
168
 
193
  msgid "Can't find exported file"
194
  msgstr ""
195
 
196
+ #: view/settings-form.php:1622 view/settings-form.php:1643
197
+ #: view/settings-form.php:1679 view/settings-form.php:1719
198
+ #: view/settings-form.php:1741 view/settings-form.php:1772
199
+ #: view/settings-form.php:1794 view/settings-form.php:1820
200
+ #: view/settings-form.php:1843 view/settings-form.php:1865
201
+ #: view/settings-form.php:1887 view/settings-form.php:1909
202
  msgid "Cancel"
203
  msgstr ""
204
 
205
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1283
206
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1308
207
  msgid "Cart"
208
  msgstr ""
209
 
210
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1116
211
  msgid "Cart Discount Amount"
212
  msgstr ""
213
 
214
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1121
215
  msgid "Cart Discount Amount Tax"
216
  msgstr ""
217
 
218
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:399
219
  msgid "Category"
220
  msgstr ""
221
 
222
+ #: view/settings-form.php:467
223
  msgid "Center align"
224
  msgstr ""
225
 
226
+ #: view/settings-form.php:814
227
  msgid "Change order status to"
228
  msgstr ""
229
 
230
+ #: view/settings-form.php:325 view/settings-form.php:409
231
  msgid "Character encoding"
232
  msgstr ""
233
 
234
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:790
235
  msgid "City (Billing)"
236
  msgstr ""
237
 
238
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:880
239
  msgid "City (Shipping)"
240
  msgstr ""
241
 
242
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:805
243
  msgid "City, State Zip (Billing)"
244
  msgstr ""
245
 
246
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:895
247
  msgid "City, State Zip (Shipping)"
248
  msgstr ""
249
 
250
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:800
251
  msgid "City, State, Zip (Billing)"
252
  msgstr ""
253
 
254
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:890
255
  msgid "City, State, Zip (Shipping)"
256
  msgstr ""
257
 
258
+ #: view/settings-form.php:862
259
  msgid "Cleanup phone (export only digits)"
260
  msgstr ""
261
 
262
+ #: view/settings-form.php:1994
263
  msgid "Click here to download"
264
  msgstr ""
265
 
266
+ #: view/tab/help.php:12
267
  msgid "code snippets"
268
  msgstr ""
269
 
270
+ #: view/settings-form.php:1612 view/settings-form.php:1628
271
+ #: view/settings-form.php:1669 view/settings-form.php:1711
272
+ #: view/settings-form.php:1725 view/settings-form.php:1764
273
+ #: view/settings-form.php:1778 view/settings-form.php:1811
274
+ #: view/settings-form.php:1826 view/settings-form.php:1855
275
+ #: view/settings-form.php:1877 view/settings-form.php:1899
276
  msgid "Column name"
277
  msgstr ""
278
 
280
  msgid "columns"
281
  msgstr ""
282
 
283
+ #: view/settings-form.php:640
284
  msgid "Columns align"
285
  msgstr ""
286
 
287
+ #: view/settings-form.php:496
288
  msgid "Columns horizontal align"
289
  msgstr ""
290
 
291
+ #: view/settings-form.php:507
292
  msgid "Columns vertical align"
293
  msgstr ""
294
 
295
+ #: view/settings-form.php:486
296
  msgid "Columns width"
297
  msgstr ""
298
 
299
+ #: view/settings-form.php:487 view/settings-form.php:641
300
  msgid "comma separated list"
301
  msgstr ""
302
 
303
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1275
304
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1299
305
  msgid "Common"
306
  msgstr ""
307
 
308
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:770
309
  msgid "Company (Billing)"
310
  msgstr ""
311
 
312
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:860
313
  msgid "Company (Shipping)"
314
  msgstr ""
315
 
316
  #: view/settings-form.php:167
317
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:615
318
  msgid "Completed Date"
319
  msgstr ""
320
 
321
+ #: view/settings-form.php:1620 view/settings-form.php:1641
322
+ #: view/settings-form.php:1677 view/settings-form.php:1717
323
+ #: view/settings-form.php:1739 view/settings-form.php:1770
324
+ #: view/settings-form.php:1792 view/settings-form.php:1818
325
+ #: view/settings-form.php:1840 view/settings-form.php:1862
326
+ #: view/settings-form.php:1884 view/settings-form.php:1906
327
  msgid "Confirm"
328
  msgstr ""
329
 
337
  "install."
338
  msgstr ""
339
 
340
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:820
341
  msgid "Country Code (Billing)"
342
  msgstr ""
343
 
344
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:910
345
  msgid "Country Code (Shipping)"
346
  msgstr ""
347
 
348
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:825
349
  msgid "Country Name (Billing)"
350
  msgstr ""
351
 
352
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:915
353
  msgid "Country Name (Shipping)"
354
  msgstr ""
355
 
356
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:535
357
  msgid "Coupon Amount"
358
  msgstr ""
359
 
360
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:506
361
  msgid "Coupon Code"
362
  msgstr ""
363
 
364
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:526
365
  msgid "Coupon Description"
366
  msgstr ""
367
 
368
+ #: view/settings-form.php:353
369
  msgid "Coupon tag"
370
  msgstr ""
371
 
372
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:530
373
  msgid "Coupon Type"
374
  msgstr ""
375
 
376
+ #: view/settings-form.php:1312
377
+ #: classes/admin/class-wc-order-export-manage.php:723
378
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1090
379
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1281
380
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1306
381
  msgid "Coupons"
382
  msgstr ""
383
 
385
  msgid "coupons"
386
  msgstr ""
387
 
 
 
 
 
388
  #: view/settings-form.php:289
389
  msgid "CSV options"
390
  msgstr ""
391
 
392
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:610
393
  msgid "Currency"
394
  msgstr ""
395
 
396
+ #: view/settings-form.php:734 view/settings-form.php:760
397
  msgid "custom"
398
  msgstr ""
399
 
400
+ #: view/settings-form.php:706
401
  msgid "Custom css"
402
  msgstr ""
403
 
404
+ #: view/settings-form.php:949 view/settings-form.php:1260
405
  msgid "Custom fields"
406
  msgstr ""
407
 
408
+ #: view/settings-form.php:886
409
  msgid "Custom PHP code to modify output"
410
  msgstr ""
411
 
412
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:685
413
  msgid "Customer first order date"
414
  msgstr ""
415
 
416
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:650
417
  msgid "Customer IP address"
418
  msgstr ""
419
 
420
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:690
421
  msgid "Customer last order date"
422
  msgstr ""
423
 
424
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:630
425
  msgid "Customer Note"
426
  msgstr ""
427
 
428
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:675
429
  msgid "Customer Role"
430
  msgstr ""
431
 
432
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:680
433
  msgid "Customer Total Orders"
434
  msgstr ""
435
 
436
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:670
437
  msgid "Customer User Email"
438
  msgstr ""
439
 
440
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:655
441
  msgid "Customer User ID"
442
  msgstr ""
443
 
444
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:660
445
  msgid "Customer Username"
446
  msgstr ""
447
 
448
+ #: view/settings-form.php:716
449
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1327
450
  msgid "Date"
451
  msgstr ""
452
 
454
  msgid "Date From is greater than Date To"
455
  msgstr ""
456
 
457
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:625
458
  msgid "Date of first refund"
459
  msgstr ""
460
 
462
  msgid "Date range"
463
  msgstr ""
464
 
465
+ #: view/settings-form.php:798
466
  msgid "Descending"
467
  msgstr ""
468
 
469
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:449
470
  msgid "Description"
471
  msgstr ""
472
 
473
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:511
474
  msgid "Discount Amount"
475
  msgstr ""
476
 
477
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:521
478
  msgid "Discount Amount + Tax"
479
  msgstr ""
480
 
481
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:516
482
  msgid "Discount Amount Tax"
483
  msgstr ""
484
 
486
  msgid "Docs"
487
  msgstr ""
488
 
489
+ #: view/settings-form.php:380
490
  msgid "Don't escape /"
491
  msgstr ""
492
 
493
+ #: view/settings-form.php:921
494
  msgid "Don't export child orders"
495
  msgstr ""
496
 
497
+ #: view/tab/help.php:27
498
  #, php-format
499
  msgid ""
500
  "Don't forget to attach your %s or some screenshots. It will significantly "
501
  "reduce reply time :)"
502
  msgstr ""
503
 
504
+ #: classes/core/class-wc-order-export-engine.php:365
505
  msgid "Don't Panic"
506
  msgstr ""
507
 
508
+ #: view/settings-form.php:605
509
+ msgid "Don't put page break between order lines"
510
+ msgstr ""
511
+
512
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:434
513
  msgid "Download URL"
514
  msgstr ""
515
 
516
+ #: view/settings-form.php:1532
517
  msgid "Drag rows to reorder exported fields"
518
  msgstr ""
519
 
521
  msgid "Edit order"
522
  msgstr ""
523
 
524
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:830
525
  msgid "Email (Billing)"
526
  msgstr ""
527
 
528
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:474
529
  msgid "Embedded Product Image"
530
  msgstr ""
531
 
532
  #: classes/class-wc-order-export-admin.php:306
533
+ #: classes/core/class-wc-order-export-data-extractor.php:315
534
  msgid "empty"
535
  msgstr ""
536
 
550
  msgid "empty value"
551
  msgstr ""
552
 
553
+ #: view/settings-form.php:880
554
  msgid "Enable debug output"
555
  msgstr ""
556
 
558
  msgid "Enclosure"
559
  msgstr ""
560
 
561
+ #: view/settings-form.php:385
562
  msgid "Encode numeric strings as numbers"
563
  msgstr ""
564
 
565
+ #: view/settings-form.php:375
566
  msgid "End tag"
567
  msgstr ""
568
 
569
+ #: view/settings-form.php:1209
570
  msgid "Exclude products"
571
  msgstr ""
572
 
573
+ #: view/settings-form.php:1963
574
  msgid "Export"
575
  msgstr ""
576
 
577
+ #: view/settings-form.php:1967
578
  msgid "Export [w/o progressbar]"
579
  msgstr ""
580
 
581
+ #: view/settings-form.php:844
582
  msgid "Export all order notes"
583
  msgstr ""
584
 
585
+ #: view/settings-form.php:1001
586
  msgid "Export all products from the order"
587
  msgstr ""
588
 
609
  msgid "Export now"
610
  msgstr ""
611
 
612
+ #: view/settings-form.php:1435
613
  msgid "Export only matched product items"
614
  msgstr ""
615
 
624
  msgid "Export orders from WooCommerce with ease (Excel/CSV/XML/JSON supported)"
625
  msgstr ""
626
 
627
+ #: view/settings-form.php:850
628
  msgid "Export refund notes as Customer Note"
629
  msgstr ""
630
 
631
+ #: view/settings-form.php:925
632
  msgid "Export refunds"
633
  msgstr ""
634
 
640
  msgid "Export Status"
641
  msgstr ""
642
 
643
+ #: view/settings-form.php:1979
644
  #, php-format
645
  msgid "Export total: %s orders"
646
  msgstr ""
647
 
648
+ #: view/settings-form.php:933
649
  msgid "Export unmarked orders only"
650
  msgstr ""
651
 
652
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1074
653
  msgid "Exported items"
654
  msgstr ""
655
 
657
  msgid "Express export"
658
  msgstr ""
659
 
660
+ #: view/settings-form.php:1849
661
  msgid "Fee name"
662
  msgstr ""
663
 
673
  msgid "Fill order columns for"
674
  msgstr ""
675
 
676
+ #: view/settings-form.php:1330
677
  msgid "Filter by billing"
678
  msgstr ""
679
 
680
+ #: view/settings-form.php:1303
681
  msgid "Filter by coupon"
682
  msgstr ""
683
 
684
+ #: view/settings-form.php:1230
685
  msgid "Filter by customer"
686
  msgstr ""
687
 
688
+ #: view/settings-form.php:1430
689
  msgid "Filter by item and metadata"
690
  msgstr ""
691
 
692
+ #: view/settings-form.php:996
 
 
 
 
693
  msgid "Filter by product"
694
  msgstr ""
695
 
696
+ #: view/settings-form.php:1380
697
  msgid "Filter by shipping"
698
  msgstr ""
699
 
701
  msgid "Filter orders by"
702
  msgstr ""
703
 
704
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:755
705
  msgid "First Name (Billing)"
706
  msgstr ""
707
 
708
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:845
709
  msgid "First Name (Shipping)"
710
  msgstr ""
711
 
712
+ #: view/settings-form.php:501
713
  msgid "Fit table to page width"
714
  msgstr ""
715
 
716
+ #: view/settings-form.php:457 view/settings-form.php:634
717
  msgid "Font size"
718
  msgstr ""
719
 
720
+ #: view/settings-form.php:650
721
  msgid "Footer text"
722
  msgstr ""
723
 
724
+ #: view/settings-form.php:682
725
  msgid "Footer text color"
726
  msgstr ""
727
 
733
  msgid "Format"
734
  msgstr ""
735
 
736
+ #: view/settings-form.php:838
737
  msgid "Format numbers (use WC decimal separator)"
738
  msgstr ""
739
 
740
+ #: view/settings-form.php:364
741
+ msgid "Format output"
742
+ msgstr ""
743
+
744
  #: classes/admin/class-wc-order-export-manage.php:26
745
  msgid "Fri"
746
  msgstr ""
747
 
748
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:765
749
  msgid "Full Name (Billing)"
750
  msgstr ""
751
 
752
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:855
753
  msgid "Full Name (Shipping)"
754
  msgstr ""
755
 
756
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:459
757
  msgid "Full names for categories"
758
  msgstr ""
759
 
765
  msgid "Grouping by product"
766
  msgstr ""
767
 
768
+ #: view/settings-form.php:645
769
  msgid "Header text"
770
  msgstr ""
771
 
772
+ #: view/settings-form.php:677
773
  msgid "Header text color"
774
  msgstr ""
775
 
776
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:419
777
  msgid "Height"
778
  msgstr ""
779
 
781
  msgid "Help"
782
  msgstr ""
783
 
784
+ #: view/tab/help.php:8
785
  msgid "helpdesk system"
786
  msgstr ""
787
 
788
+ #: view/settings-form.php:1608 view/settings-form.php:1665
789
+ #: view/settings-form.php:1695 view/settings-form.php:1759
790
+ #: view/settings-form.php:1802
791
  msgid "Hide unused fields"
792
  msgstr ""
793
 
794
+ #: view/settings-form.php:618
795
  msgid "Html options"
796
  msgstr ""
797
 
799
  msgid "https://algolplus.com/"
800
  msgstr ""
801
 
802
+ #: view/settings-form.php:1943
803
  #, php-format
804
  msgid ""
805
  "If you see this message after page load, user interface won't work correctly!"
807
  "it). Probably, it's a conflict with another plugin or active theme."
808
  msgstr ""
809
 
810
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1328
811
  msgid "Image"
812
  msgstr ""
813
 
814
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:439
815
  msgid "Image URL"
816
  msgstr ""
817
 
818
+ #: view/settings-form.php:283 view/settings-form.php:594
819
+ #: view/settings-form.php:695
820
  msgid "Images height"
821
  msgstr ""
822
 
823
+ #: view/settings-form.php:276 view/settings-form.php:587
824
+ #: view/settings-form.php:688
825
  msgid "Images width"
826
  msgstr ""
827
 
833
  msgid "Import settings"
834
  msgstr ""
835
 
836
+ #: view/settings-form.php:1968
837
  msgid "It might not work for huge datasets!"
838
  msgstr ""
839
 
840
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:942
841
  msgid "Item #"
842
  msgstr ""
843
 
844
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:962
845
  msgid "Item Cost"
846
  msgstr ""
847
 
848
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:967
849
  msgid "Item Cost Before Discount"
850
  msgstr ""
851
 
852
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1022
853
  msgid "Item Discount Amount"
854
  msgstr ""
855
 
856
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1047
857
  msgid "Item Discount Amount + Tax"
858
  msgstr ""
859
 
860
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1042
861
  msgid "Item Discount Tax"
862
  msgstr ""
863
 
864
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1032
865
  msgid "Item download URL"
866
  msgstr ""
867
 
868
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:937
869
  msgid "Item ID"
870
  msgstr ""
871
 
872
+ #: view/settings-form.php:1173
873
  msgid "Item meta data"
874
  msgstr ""
875
 
876
+ #: view/settings-form.php:1472
877
  msgid "Item metadata"
878
  msgstr ""
879
 
880
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:947
881
  msgid "Item Name"
882
  msgstr ""
883
 
884
+ #: view/settings-form.php:1439
885
  msgid "Item names"
886
  msgstr ""
887
 
888
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1027
889
  msgid "Item Tax Rate"
890
  msgstr ""
891
 
892
+ #: view/settings-form.php:370
893
  msgid "JSON options"
894
  msgstr ""
895
 
897
  msgid "Just click inside the textarea and copy (Ctrl+C)"
898
  msgstr ""
899
 
900
+ #: view/settings-form.php:497
901
  msgid "L,C or R. Comma separated list"
902
  msgstr ""
903
 
904
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:760
905
  msgid "Last Name (Billing)"
906
  msgstr ""
907
 
908
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:850
909
  msgid "Last Name (Shipping)"
910
  msgstr ""
911
 
912
+ #: view/settings-form.php:466
913
  msgid "Left align"
914
  msgstr ""
915
 
916
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:414
917
  msgid "Length"
918
  msgstr ""
919
 
920
+ #: view/settings-form.php:320 view/settings-form.php:404
921
  msgid "Line Break"
922
  msgstr ""
923
 
924
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:575
925
  msgid "Line number"
926
  msgstr ""
927
 
928
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1329
929
+ msgid "Link"
930
+ msgstr ""
931
+
932
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:640
933
  msgid "Link to edit order"
934
  msgstr ""
935
 
936
+ #: view/settings-form.php:565
937
  msgid "Logo align"
938
  msgstr ""
939
 
940
+ #: view/settings-form.php:573
941
  msgid "Logo height"
942
  msgstr ""
943
 
944
+ #: view/settings-form.php:579
945
  msgid "Logo width"
946
  msgstr ""
947
 
948
+ #: view/tab/help.php:30
949
  #, php-format
950
  msgid ""
951
  "Look at %s for popular plugins or check %s to study how to extend the plugin."
952
  msgstr ""
953
 
954
+ #: classes/core/class-wc-order-export-engine.php:504
955
  msgid "Main SQL queries are listed below"
956
  msgstr ""
957
 
959
  msgid "Mark exported"
960
  msgstr ""
961
 
962
+ #: view/settings-form.php:929
963
  msgid "Mark exported orders"
964
  msgstr ""
965
 
966
+ #: view/settings-form.php:1592 view/settings-form.php:1649
967
+ #: view/settings-form.php:1799
968
  msgid "Meta key"
969
  msgstr ""
970
 
971
+ #: view/settings-form.php:1950
972
  msgid "Might be different from actual export!"
973
  msgstr ""
974
 
975
+ #: view/settings-form.php:832
976
  msgid "Misc settings"
977
  msgstr ""
978
 
979
+ #: view/settings-form.php:153 view/settings-form.php:776
980
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:600
981
  msgid "Modification Date"
982
  msgstr ""
983
 
985
  msgid "Mon"
986
  msgstr ""
987
 
988
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1325
989
  msgid "Money"
990
  msgstr ""
991
 
992
+ #: view/tab/help.php:24
993
+ #, php-format
994
+ msgid "Need help? Create ticket in %s ."
995
  msgstr ""
996
 
997
+ #: view/settings-form.php:503
998
  msgid "No"
999
  msgstr ""
1000
 
1001
+ #: view/settings-form.php:473
1002
  msgid "No page numbers"
1003
  msgstr ""
1004
 
1005
  #: classes/formats/class-woe-formatter-html.php:137
1006
+ #: classes/formats/abstract-class-woe-formatter-sv.php:107
1007
+ #: classes/formats/class-woe-formatter-xls.php:251
1008
  msgid "No results"
1009
  msgstr ""
1010
 
1011
  #: classes/class-wc-order-export-admin.php:304
1012
+ #: classes/admin/tabs/ajax/trait-wc-order-export-admin-tab-abstract-ajax-export.php:117
1013
  msgid "Nothing to export. Please, adjust your filters"
1014
  msgstr ""
1015
 
1016
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1326
1017
  msgid "Number"
1018
  msgstr ""
1019
 
1020
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1111
1021
+ msgid "Number of coupons used"
1022
+ msgstr ""
1023
+
1024
  #: classes/class-wc-order-export-admin.php:226
1025
  msgid "one row"
1026
  msgstr ""
1027
 
1028
+ #: view/settings-form.php:1698
1029
  msgid "OR"
1030
  msgstr ""
1031
 
1032
+ #: view/settings-form.php:1603 view/settings-form.php:1660
1033
+ #: view/settings-form.php:1690 view/settings-form.php:1754
1034
+ #: view/settings-form.php:1808
1035
  msgid "or type meta key here"
1036
  msgstr ""
1037
 
1038
+ #: view/settings-form.php:146 view/settings-form.php:775
1039
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:595
1040
  msgid "Order Date"
1041
  msgstr ""
1042
 
1043
+ #: view/settings-form.php:774
1044
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:580
1045
  msgid "Order ID"
1046
  msgstr ""
1047
 
1048
+ #: view/settings-form.php:1748
1049
  msgid "Order item fields"
1050
  msgstr ""
1051
 
1052
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1037
1053
  msgid "Order Item Metadata"
1054
  msgstr ""
1055
 
1056
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:972
1057
  msgid "Order Line (w/o tax)"
1058
  msgstr ""
1059
 
1060
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:992
1061
  msgid "Order Line Subtotal"
1062
  msgstr ""
1063
 
1064
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:997
1065
  msgid "Order Line Subtotal Tax"
1066
  msgstr ""
1067
 
1068
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:977
1069
  msgid "Order Line Tax"
1070
  msgstr ""
1071
 
1072
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:987
1073
  msgid "Order Line Tax (- Refund)"
1074
  msgstr ""
1075
 
1076
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:982
1077
  msgid "Order Line Tax Refunded"
1078
  msgstr ""
1079
 
1080
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1002
1081
  msgid "Order Line Total"
1082
  msgstr ""
1083
 
1084
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1017
1085
  msgid "Order Line Total (- Refund)"
1086
  msgstr ""
1087
 
1088
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1007
1089
  msgid "Order Line Total (include tax)"
1090
  msgstr ""
1091
 
1092
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1012
1093
  msgid "Order Line Total Refunded"
1094
  msgstr ""
1095
 
1096
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:635
1097
  msgid "Order Notes"
1098
  msgstr ""
1099
 
1100
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:585
1101
  msgid "Order Number"
1102
  msgstr ""
1103
 
1105
  msgid "Order Refund"
1106
  msgstr ""
1107
 
1108
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1216
1109
  msgid "Order Refund Amount"
1110
  msgstr ""
1111
 
1112
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1176
1113
  msgid "Order Shipping + Tax Amount"
1114
  msgstr ""
1115
 
1116
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1171
1117
  msgid "Order Shipping Amount"
1118
  msgstr ""
1119
 
1120
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1186
1121
  msgid "Order Shipping Amount (- Refund)"
1122
  msgstr ""
1123
 
1124
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1181
1125
  msgid "Order Shipping Amount Refunded"
1126
  msgstr ""
1127
 
1128
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1191
1129
  msgid "Order Shipping Tax Amount"
1130
  msgstr ""
1131
 
1132
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1201
1133
  msgid "Order Shipping Tax Amount (- Refund)"
1134
  msgstr ""
1135
 
1136
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1196
1137
  msgid "Order Shipping Tax Refunded"
1138
  msgstr ""
1139
 
1140
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:590
1141
  msgid "Order Status"
1142
  msgstr ""
1143
 
1144
+ #: view/settings-form.php:777
1145
  msgid "Order status"
1146
  msgstr ""
1147
 
1148
+ #: view/settings-form.php:935
1149
  msgid "Order statuses"
1150
  msgstr ""
1151
 
1153
  msgid "Order Subscription"
1154
  msgstr ""
1155
 
1156
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1131
1157
  msgid "Order Subtotal - Cart Discount"
1158
  msgstr ""
1159
 
1160
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1126
1161
  msgid "Order Subtotal Amount"
1162
  msgstr ""
1163
 
1164
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1141
1165
  msgid "Order Subtotal Amount (- Refund)"
1166
  msgstr ""
1167
 
1168
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1136
1169
  msgid "Order Subtotal Amount Refunded"
1170
  msgstr ""
1171
 
1172
+ #: view/settings-form.php:347
1173
  msgid "Order tag"
1174
  msgstr ""
1175
 
1176
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1146
1177
  msgid "Order Tax Amount"
1178
  msgstr ""
1179
 
1180
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1226
1181
  msgid "Order Total Amount"
1182
  msgstr ""
1183
 
1184
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1221
1185
  msgid "Order Total Amount (- Refund)"
1186
  msgstr ""
1187
 
1188
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1231
1189
  msgid "Order Total Amount without Tax"
1190
  msgstr ""
1191
 
1192
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1211
1193
  msgid "Order Total Fee"
1194
  msgstr ""
1195
 
1196
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1236
1197
  msgid "Order Total Tax Amount"
1198
  msgstr ""
1199
 
1200
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1246
1201
  msgid "Order Total Tax Amount (- Refund)"
1202
  msgstr ""
1203
 
1204
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1241
1205
  msgid "Order Total Tax Amount Refunded"
1206
  msgstr ""
1207
 
1209
  msgid "Order Type"
1210
  msgstr ""
1211
 
1212
+ #: classes/admin/class-wc-order-export-manage.php:250
1213
+ #: classes/formats/class-woe-formatter-xls.php:135
1214
  msgid "Orders"
1215
  msgstr ""
1216
 
1218
  msgid "Orders range"
1219
  msgstr ""
1220
 
1221
+ #: view/settings-form.php:439
1222
  msgid "Orientation"
1223
  msgstr ""
1224
 
1225
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1282
1226
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1307
1227
  msgid "Other items"
1228
  msgstr ""
1229
 
1230
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1286
1231
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1311
1232
  msgid "Others"
1233
  msgstr ""
1234
 
1235
  #: view/settings-form.php:261 view/settings-form.php:302
1236
+ #: view/settings-form.php:399 view/settings-form.php:423
1237
+ #: view/settings-form.php:624
1238
  msgid "Output column titles as first line"
1239
  msgstr ""
1240
 
1241
+ #: view/settings-form.php:298 view/settings-form.php:395
1242
  msgid "Output UTF-8 BOM"
1243
  msgstr ""
1244
 
1245
+ #: classes/FPDF/class-woe-pdf-mc-table.php:181
1246
  #, php-format
1247
  msgid "Page %s / %s"
1248
  msgstr ""
1249
 
1250
+ #: view/settings-form.php:491
1251
  msgid "Page footer text"
1252
  msgstr ""
1253
 
1254
+ #: view/settings-form.php:541
1255
  msgid "Page footer text color"
1256
  msgstr ""
1257
 
1258
+ #: view/settings-form.php:481
1259
  msgid "Page header text"
1260
  msgstr ""
1261
 
1262
+ #: view/settings-form.php:536
1263
  msgid "Page header text color"
1264
  msgstr ""
1265
 
1266
+ #: view/settings-form.php:463
1267
  msgid "Page numbers"
1268
  msgstr ""
1269
 
1270
+ #: view/settings-form.php:448
1271
  msgid "Page size"
1272
  msgstr ""
1273
 
1274
  #: view/settings-form.php:160
1275
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:620
1276
  msgid "Paid Date"
1277
  msgstr ""
1278
 
1282
  "install."
1283
  msgstr ""
1284
 
1285
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1106
1286
  msgid "Payment Method"
1287
  msgstr ""
1288
 
1289
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1101
1290
  msgid "Payment Method Title"
1291
  msgstr ""
1292
 
1293
+ #: view/settings-form.php:1364
1294
  msgid "Payment methods"
1295
  msgstr ""
1296
 
1297
+ #: view/settings-form.php:417
1298
  msgid "PDF options"
1299
  msgstr ""
1300
 
1301
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:835
1302
  msgid "Phone (Billing)"
1303
  msgstr ""
1304
 
1305
+ #: view/settings-form.php:891
1306
  msgid ""
1307
  "Please check permissions for your role. You must have capability "
1308
  "“edit_themes” to use this box."
1322
  msgid "Please, install/enable PHP XML extension!"
1323
  msgstr ""
1324
 
1325
+ #: view/tab/help.php:21
1326
+ #, php-format
1327
+ msgid "Please, review %s at first."
1328
+ msgstr ""
1329
+
1330
  #: classes/class-wc-order-export-admin.php:303
1331
  msgid "Please, set up fields to export"
1332
  msgstr ""
1333
 
1334
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:815
1335
  msgid "Postcode (Billing)"
1336
  msgstr ""
1337
 
1338
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:905
1339
  msgid "Postcode (Shipping)"
1340
  msgstr ""
1341
 
1342
+ #: view/settings-form.php:341
1343
  msgid "Prepend XML"
1344
  msgstr ""
1345
 
1346
+ #: view/settings-form.php:1993
1347
  msgid "Press 'Esc' to cancel the export"
1348
  msgstr ""
1349
 
1350
+ #: view/settings-form.php:1949
1351
  msgid "Preview"
1352
  msgstr ""
1353
 
1354
+ #: view/settings-form.php:1981
1355
  msgid "Preview size"
1356
  msgstr ""
1357
 
1360
  msgid "Pro version"
1361
  msgstr ""
1362
 
1363
+ #: view/settings-form.php:1007
1364
  msgid "Product categories"
1365
  msgstr ""
1366
 
1367
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:389
1368
  msgid "Product Current Price"
1369
  msgstr ""
1370
 
1371
+ #: view/settings-form.php:1097
1372
  msgid "Product custom fields"
1373
  msgstr ""
1374
 
1375
+ #: view/settings-form.php:1684
1376
  msgid "Product fields"
1377
  msgstr ""
1378
 
1388
  msgid "Product Name (main)"
1389
  msgstr ""
1390
 
1391
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1304
1392
  msgid "Product order items"
1393
  msgstr ""
1394
 
1395
+ #: view/settings-form.php:310 view/settings-form.php:403
1396
  msgid "Product rows start with a new line"
1397
  msgstr ""
1398
 
1399
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:384
1400
  msgid "Product Seller"
1401
  msgstr ""
1402
 
1403
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:444
1404
  msgid "Product Shipping Class"
1405
  msgstr ""
1406
 
1407
+ #: view/settings-form.php:1056
1408
  msgid "Product SKU"
1409
  msgstr ""
1410
 
1411
+ #: view/settings-form.php:350
1412
  msgid "Product tag"
1413
  msgstr ""
1414
 
1415
+ #: view/settings-form.php:1062
1416
  msgid "Product taxonomies"
1417
  msgstr ""
1418
 
1419
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1280
1420
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1305
1421
  msgid "Product totals"
1422
  msgstr ""
1423
 
1424
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:429
1425
  msgid "Product URL"
1426
  msgstr ""
1427
 
1428
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:374
1429
+ msgid "Product Variation"
1430
+ msgstr ""
1431
+
1432
+ #: view/settings-form.php:1041
1433
+ #: classes/admin/class-wc-order-export-manage.php:680
1434
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:926
1435
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1279
1436
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1303
1437
  msgid "Products"
1438
  msgstr ""
1439
 
1449
  msgid "Profiles"
1450
  msgstr ""
1451
 
1452
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:952
1453
  msgid "Quantity"
1454
  msgstr ""
1455
 
1456
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:957
1457
  msgid "Quantity (- Refund)"
1458
  msgstr ""
1459
 
1460
+ #: view/settings-form.php:896
1461
  msgid "Read how to fix it"
1462
  msgstr ""
1463
 
1464
+ #: view/settings-form.php:1538
1465
  msgid "Remove all fields"
1466
  msgstr ""
1467
 
1469
  msgid "Remove all fields?"
1470
  msgstr ""
1471
 
1472
+ #: view/settings-form.php:562
1473
  msgid "Remove logo"
1474
  msgstr ""
1475
 
1476
+ #: view/settings-form.php:430
1477
  msgid "repeat at each page"
1478
  msgstr ""
1479
 
1480
+ #: view/settings-form.php:630
1481
  msgid "repeat header as last line"
1482
  msgstr ""
1483
 
1484
+ #: view/settings-form.php:1975
1485
  msgid "Reset settings"
1486
  msgstr ""
1487
 
1490
  msgid "Result: %s"
1491
  msgstr ""
1492
 
1493
+ #: view/settings-form.php:468
1494
  msgid "Right align"
1495
  msgstr ""
1496
 
1497
+ #: view/settings-form.php:269 view/settings-form.php:436
1498
  msgid "Right-to-Left direction"
1499
  msgstr ""
1500
 
1501
+ #: view/settings-form.php:344
1502
  msgid "Root tag"
1503
  msgstr ""
1504
 
1510
  msgid "Sat"
1511
  msgstr ""
1512
 
1513
+ #: view/settings-form.php:1956
1514
  msgid "Save & Exit"
1515
  msgstr ""
1516
 
1517
+ #: view/settings-form.php:1953 view/settings-form.php:1958
1518
  msgid "Save settings"
1519
  msgstr ""
1520
 
1526
  msgid "select item field"
1527
  msgstr ""
1528
 
1529
+ #: view/settings-form.php:550
1530
  msgid "Select logo"
1531
  msgstr ""
1532
 
1534
  msgid "select product field or taxonomy"
1535
  msgstr ""
1536
 
1537
+ #: view/settings-form.php:359
1538
  msgid "Self closing tags"
1539
  msgstr ""
1540
 
1542
  msgid "Set up coupon fields"
1543
  msgstr ""
1544
 
1545
+ #: view/settings-form.php:1512
1546
  msgid "Set up fields to export"
1547
  msgstr ""
1548
 
1554
  msgid "Settings"
1555
  msgstr ""
1556
 
1557
+ #: view/tab/help.php:10
1558
  msgid "settings"
1559
  msgstr ""
1560
 
1562
  msgid "Settings saved"
1563
  msgstr ""
1564
 
1565
+ #: view/settings-form.php:1988 view/tab/tools.php:86
1566
  msgid "Settings were successfully updated!"
1567
  msgstr ""
1568
 
1569
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1284
1570
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1309
1571
  msgid "Shipping"
1572
  msgstr ""
1573
 
1574
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1278
1575
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1302
1576
  msgid "Shipping Address"
1577
  msgstr ""
1578
 
1579
+ #: view/settings-form.php:868
1580
  msgid "Shipping fields use billing details (if shipping address is empty)"
1581
  msgstr ""
1582
 
1583
+ #: view/settings-form.php:1385
1584
  msgid "Shipping locations"
1585
  msgstr ""
1586
 
1587
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1161
1588
  msgid "Shipping Method"
1589
  msgstr ""
1590
 
1591
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1166
1592
  msgid "Shipping Method (no id)"
1593
  msgstr ""
1594
 
1595
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1156
1596
  msgid "Shipping Method Title"
1597
  msgstr ""
1598
 
1599
+ #: view/settings-form.php:1414
1600
  msgid "Shipping methods"
1601
  msgstr ""
1602
 
1603
+ #: view/settings-form.php:1871
1604
  msgid "Shipping name"
1605
  msgstr ""
1606
 
1607
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:454
1608
  msgid "Short Description"
1609
  msgstr ""
1610
 
1611
+ #: view/settings-form.php:1005
1612
  msgid "Skip fully refunded items"
1613
  msgstr ""
1614
 
1620
  msgid "SKU (parent)"
1621
  msgstr ""
1622
 
1623
+ #: view/settings-form.php:805
1624
  #, php-format
1625
  msgid "Sort orders by %s in %s order"
1626
  msgstr ""
1629
  msgid "Split values by"
1630
  msgstr ""
1631
 
1632
+ #: view/settings-form.php:372
1633
  msgid "Start tag"
1634
  msgstr ""
1635
 
1636
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:795
1637
  msgid "State Code (Billing)"
1638
  msgstr ""
1639
 
1640
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:885
1641
  msgid "State Code (Shipping)"
1642
  msgstr ""
1643
 
1644
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:810
1645
  msgid "State Name (Billing)"
1646
  msgstr ""
1647
 
1648
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:900
1649
  msgid "State Name (Shipping)"
1650
  msgstr ""
1651
 
1653
  msgid "Status change jobs"
1654
  msgstr ""
1655
 
1656
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1324
1657
  msgid "String"
1658
  msgstr ""
1659
 
1660
+ #: view/settings-form.php:856
1661
  msgid "Strip tags from Product Description/Variation"
1662
  msgstr ""
1663
 
1669
  msgid "Summary Report By Products"
1670
  msgstr ""
1671
 
1672
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:469
1673
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:710
1674
  msgid "Summary Report Total Amount"
1675
  msgstr ""
1676
 
1677
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:715
1678
  msgid "Summary Report Total Amount Paid"
1679
  msgstr ""
1680
 
1681
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:479
1682
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:725
1683
  msgid "Summary Report Total Discount"
1684
  msgstr ""
1685
 
1686
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:745
1687
+ msgid "Summary Report Total Fee Amount"
1688
  msgstr ""
1689
 
1690
  #: classes/core/class-wc-order-export-data-extractor-ui.php:700
1691
+ msgid "Summary Report Total Items"
1692
+ msgstr ""
1693
+
1694
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:705
1695
  msgid "Summary Report Total Items (Exported)"
1696
  msgstr ""
1697
 
1698
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:695
1699
  msgid "Summary Report Total Orders"
1700
  msgstr ""
1701
 
1702
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:464
1703
  msgid "Summary Report Total Quantity"
1704
  msgstr ""
1705
 
1706
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:489
1707
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:735
1708
  msgid "Summary Report Total Refund Amount"
1709
  msgstr ""
1710
 
1711
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:484
1712
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:730
1713
+ msgid "Summary Report Total Refund Count"
1714
  msgstr ""
1715
 
1716
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:720
1717
  msgid "Summary Report Total Shipping"
1718
  msgstr ""
1719
 
1720
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:740
1721
+ msgid "Summary Report Total Tax Amount"
1722
+ msgstr ""
1723
+
1724
  #: classes/admin/class-wc-order-export-manage.php:21
1725
  msgid "Sun"
1726
  msgstr ""
1729
  msgid "Support"
1730
  msgstr ""
1731
 
1732
+ #: view/settings-form.php:508
1733
  msgid "T,C or B. Comma separated list"
1734
  msgstr ""
1735
 
1736
+ #: view/settings-form.php:519 view/settings-form.php:660
1737
  msgid "Table header background color"
1738
  msgstr ""
1739
 
1740
+ #: view/settings-form.php:514 view/settings-form.php:655
1741
  msgid "Table header text color"
1742
  msgstr ""
1743
 
1744
+ #: view/settings-form.php:530 view/settings-form.php:671
1745
  msgid "Table row background color"
1746
  msgstr ""
1747
 
1748
+ #: view/settings-form.php:525 view/settings-form.php:666
1749
  msgid "Table row text color"
1750
  msgstr ""
1751
 
1752
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:404
1753
  msgid "Tags"
1754
  msgstr ""
1755
 
1756
+ #: view/settings-form.php:1893
1757
  msgid "Tax name"
1758
  msgstr ""
1759
 
1760
+ #: view/settings-form.php:1700
1761
  msgid "Taxonomy"
1762
  msgstr ""
1763
 
1764
+ #: classes/core/class-wc-order-export-engine.php:366
1765
  #, php-format
1766
  msgid "The code you are trying to save produced a fatal error on line %d:"
1767
  msgstr ""
1768
 
1769
+ #: view/settings-form.php:994
1770
  msgid ""
1771
  "The filters won't work correctly.<br>Another plugin(or theme) has loaded "
1772
  "outdated Select2.js"
1773
  msgstr ""
1774
 
1775
+ #: view/settings-form.php:1590 view/settings-form.php:1746
1776
  msgid ""
1777
  "The plugin fetches meta keys from the existing orders. So you should create "
1778
  "fake order if you've added new field just now."
1788
  msgid "This date range should not be saved in the scheduled task"
1789
  msgstr ""
1790
 
1791
+ #: view/settings-form.php:708
1792
  msgid "This option cancels UI settings(above) and don't applied to Preview"
1793
  msgstr ""
1794
 
1795
+ #: view/tab/help.php:14
1796
  msgid "this page"
1797
  msgstr ""
1798
 
1806
  msgid "Thu"
1807
  msgstr ""
1808
 
1809
+ #: view/settings-form.php:743
1810
  msgid "Time"
1811
  msgstr ""
1812
 
1822
  msgid "Tools"
1823
  msgstr ""
1824
 
1825
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1069
1826
  msgid "Total items"
1827
  msgstr ""
1828
 
1829
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1079
1830
  msgid "Total products"
1831
  msgstr ""
1832
 
1833
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1064
1834
  msgid "Total weight"
1835
  msgstr ""
1836
 
1837
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1285
1838
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1310
1839
  msgid "Totals"
1840
  msgstr ""
1841
 
1842
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:605
1843
  msgid "Transaction ID"
1844
  msgstr ""
1845
 
1846
+ #: view/settings-form.php:874
1847
+ msgid "Try to convert serialized values"
1848
+ msgstr ""
1849
+
1850
+ #: view/settings-form.php:387
1851
  msgid "TSV options"
1852
  msgstr ""
1853
 
1855
  msgid "Tue"
1856
  msgstr ""
1857
 
1858
+ #: view/settings-form.php:1525
1859
  msgid "Turn off mode Summary report to export order fields"
1860
  msgstr ""
1861
 
1862
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:394
1863
  msgid "Type"
1864
  msgstr ""
1865
 
1877
  msgid "Unmark exported"
1878
  msgstr ""
1879
 
1880
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1318
1881
  msgid "Use \"Add field\" to export specific product attribute"
1882
  msgstr ""
1883
 
1884
+ #: view/settings-form.php:900
1885
  msgid "Use only unnamed functions!"
1886
  msgstr ""
1887
 
1888
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1317
1889
  msgid "Use section \"Product order items\" to add attributes"
1890
  msgstr ""
1891
 
1893
  msgid "Use sheet name"
1894
  msgstr ""
1895
 
1896
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1276
1897
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:1300
1898
  msgid "User"
1899
  msgstr ""
1900
 
1901
+ #: view/tab/help.php:6
1902
+ msgid "user guide"
1903
+ msgstr ""
1904
+
1905
+ #: view/settings-form.php:1248
1906
  msgid "User roles"
1907
  msgstr ""
1908
 
1909
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:665
1910
  msgid "User Website"
1911
  msgstr ""
1912
 
1913
+ #: view/settings-form.php:1234
1914
  msgid "Usernames"
1915
  msgstr ""
1916
 
1917
+ #: view/settings-form.php:1633 view/settings-form.php:1730
1918
+ #: view/settings-form.php:1783 view/settings-form.php:1831
1919
  msgid "Value"
1920
  msgstr ""
1921
 
1922
+ #: view/settings-form.php:1138
1923
  msgid "Variable product attributes"
1924
  msgstr ""
1925
 
1926
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:379
1927
  msgid "Variation Id"
1928
  msgstr ""
1929
 
1930
+ #: view/settings-form.php:1025
1931
  msgid "Vendors/creators"
1932
  msgstr ""
1933
 
1935
  msgid "Wed"
1936
  msgstr ""
1937
 
1938
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:424
1939
  msgid "Weight"
1940
  msgstr ""
1941
 
1942
+ #: classes/core/class-wc-order-export-data-extractor-ui.php:409
1943
  msgid "Width"
1944
  msgstr ""
1945
 
1955
  msgid "XML options"
1956
  msgstr ""
1957
 
1958
+ #: view/settings-form.php:502
1959
  msgid "Yes"
1960
  msgstr ""
1961
 
readme.txt CHANGED
@@ -1,11 +1,11 @@
1
  === Advanced Order Export For WooCommerce ===
2
  Contributors: algolplus
3
- Donate link: https://algolplus.com/plugins/
4
  Tags: woocommerce,export,order,xls,csv,xml,woo export lite,export orders,orders export,csv export,xml export,xls export,tsv
5
  Requires PHP: 5.4.0
6
  Requires at least: 4.7
7
- Tested up to: 5.4
8
- Stable tag: 3.1.4
9
  License: GPLv2 or later
10
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
11
 
@@ -61,10 +61,12 @@ Install and activate plugin, visit WooCommerce > Export Orders.
61
 
62
  == Frequently Asked Questions ==
63
 
64
- Need help? Create ticket in [helpdesk system](https://algolplus.freshdesk.com). Don't forget to attach your settings or some screenshots. It will significantly reduce reply time :)
65
 
66
  Check [some snippets](https://algolplus.com/plugins/snippets-plugins/) for popular plugins or review [this page](https://algolplus.com/plugins/code-samples/) to study how to extend the plugin.
67
 
 
 
68
  = I want to add a product attribute to the export =
69
  Check screenshot #5! You should open section "Set up fields", open section "Product order items"(right column), click button "Add field", select field in 1st dropdown, type column title and press button "Confirm".
70
 
@@ -98,6 +100,9 @@ You should open tab "CSV" and set up ISO-8859-1 as codepage.
98
  = Preview shows wrong values, I use Summary mode =
99
  This button processes only first 5 orders by default, so you should run the export to see correct values.
100
 
 
 
 
101
  = Can I request any new feature ? =
102
  Yes, you can email a request to aprokaev@gmail.com. We intensively develop this plugin.
103
 
@@ -112,6 +117,23 @@ Yes, you can email a request to aprokaev@gmail.com. We intensively develop this
112
 
113
  == Changelog ==
114
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
115
  = 3.1.4 - 2020-04-15 =
116
  * Prevent XSS attack (CVE-2020-11727). Thank Jack Misiura​ for reporting this vulnerability!
117
 
1
  === Advanced Order Export For WooCommerce ===
2
  Contributors: algolplus
3
+ Donate link: https://paypal.me/ipprokaev/0usd
4
  Tags: woocommerce,export,order,xls,csv,xml,woo export lite,export orders,orders export,csv export,xml export,xls export,tsv
5
  Requires PHP: 5.4.0
6
  Requires at least: 4.7
7
+ Tested up to: 5.5
8
+ Stable tag: 3.1.5
9
  License: GPLv2 or later
10
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
11
 
61
 
62
  == Frequently Asked Questions ==
63
 
64
+ Please, review [user guide](https://docs.algolplus.com/order-export-docs/) at first.
65
 
66
  Check [some snippets](https://algolplus.com/plugins/snippets-plugins/) for popular plugins or review [this page](https://algolplus.com/plugins/code-samples/) to study how to extend the plugin.
67
 
68
+ Still need help? Create ticket in [helpdesk system](https://algolplus.freshdesk.com). Don't forget to attach your settings or some screenshots. It will significantly reduce reply time :)
69
+
70
  = I want to add a product attribute to the export =
71
  Check screenshot #5! You should open section "Set up fields", open section "Product order items"(right column), click button "Add field", select field in 1st dropdown, type column title and press button "Confirm".
72
 
100
  = Preview shows wrong values, I use Summary mode =
101
  This button processes only first 5 orders by default, so you should run the export to see correct values.
102
 
103
+ = Is it compatible with "WooCommerce Custom Orders Table" plugin (by Liquid Web) ? =
104
+ No, as we provide a lot of filters which can not be implemented using WooCommerce classes. So we use direct access to database/tables.
105
+
106
  = Can I request any new feature ? =
107
  Yes, you can email a request to aprokaev@gmail.com. We intensively develop this plugin.
108
 
117
 
118
  == Changelog ==
119
 
120
+ = 3.1.5 - 2020-08-24 =
121
+ * Compatible with PHP 7.4
122
+ * Added option "Format output" (XML format)
123
+ * Added option "Don't break order lines by 2 pages" (PDF format)
124
+ * Added option "Add links to images" (PDF format)
125
+ * Added option "Try to convert serialized values" (Misc Settings)
126
+ * Added fields "Summary Report Total Fee Amount", "Summary Report Total Tax Amount"
127
+ * Fixed bug - 'wc doing it wrong' notice (direct access to product parent property)
128
+ * Fixed bug - option "Change order status" worked only for button "Export w/o progress"
129
+ * Fixed bug - option "Add products as " = "0 columns" incorrectly worked for button "Export"
130
+ * Fixed bug - field "Embedded Product Image" showed parent image for variation
131
+ * Fixed bug - mode "Summary Report By Products" incorrectly worked with variations
132
+ * Fixed bug - custom and static fields were empty in "Summary by customers" mode
133
+ * Fixed bug - draft products were visible in autocomplete
134
+ * Fixed bug - button "Import" was shown as disabled at tab "Tools"
135
+ * New hooks for PDF format
136
+
137
  = 3.1.4 - 2020-04-15 =
138
  * Prevent XSS attack (CVE-2020-11727). Thank Jack Misiura​ for reporting this vulnerability!
139
 
view/settings-form.php CHANGED
@@ -337,6 +337,7 @@ function remove_time_from_date( $datetime ) {
337
  <div style="color:red"><?php _e( 'Please, install/enable PHP XML extension!', 'woo-order-export-lite' ) ?></div>
338
  <?php endif ?>
339
  <input type=hidden name="settings[format_xml_self_closing_tags]" value=0>
 
340
  <span class="xml-title"><?php _e( 'Prepend XML', 'woo-order-export-lite' ) ?></span><input type=text
341
  name="settings[format_xml_prepend_raw_xml]"
342
  value='<?php echo $settings['format_xml_prepend_raw_xml'] ?>'><br><br>
@@ -359,7 +360,12 @@ function remove_time_from_date( $datetime ) {
359
  type=checkbox name="settings[format_xml_self_closing_tags]"
360
  value=1 <?php if ( @$settings['format_xml_self_closing_tags'] ) {
361
  echo 'checked';
362
- } ?> ><br><br>
 
 
 
 
 
363
  </div>
364
  <div id='JSON_options' style='display:none'><strong><?php _e( 'JSON options',
365
  'woo-order-export-lite' ) ?></strong><br>
@@ -422,8 +428,13 @@ function remove_time_from_date( $datetime ) {
422
  value=1 <?php if ( @$settings['format_pdf_repeat_header'] ) {
423
  echo 'checked';
424
  } ?> > <?php _e( 'repeat at each page', 'woo-order-export-lite' ) ?>)<br>
425
-
426
-
 
 
 
 
 
427
  <div class="pdf_two_col_block">
428
  <?php _e( 'Orientation', 'woo-order-export-lite' ) ?><br>
429
  <select name="settings[format_pdf_orientation]">
@@ -586,6 +597,22 @@ function remove_time_from_date( $datetime ) {
586
  value='<?php echo $settings['format_pdf_row_images_height'] ?>' min="0">
587
  </div>
588
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
589
  </div>
590
 
591
  <div id='HTML_options' style='display:none'><strong><?php _e( 'Html options',
@@ -757,8 +784,8 @@ function remove_time_from_date( $datetime ) {
757
  ?>
758
  <select name="settings[sort]">
759
  <?php foreach ( $sort as $value => $text ): ?>
760
- <option value='<?php echo $value ?>' <?php echo selected( @$settings['sort'],
761
- $value ) ?> ><?php echo $text; ?></option>
762
  <?php endforeach; ?>
763
  </select>
764
  <?php
@@ -781,7 +808,8 @@ function remove_time_from_date( $datetime ) {
781
  </div>
782
  <br>
783
 
784
- <?php if ( $mode === WC_Order_Export_Manage::EXPORT_SCHEDULE || $mode === WC_Order_Export_Manage::EXPORT_PROFILE ): ?>
 
785
  <div id="my-change-status" class="my-block">
786
  <label for="change_order_status_to"><?php _e( 'Change order status to',
787
  'woo-order-export-lite' ) ?></label>
@@ -797,12 +825,13 @@ function remove_time_from_date( $datetime ) {
797
  </select>
798
  </div>
799
  <br>
800
- <?php endif; ?>
801
-
 
802
  <div class="my-block">
803
  <span class="my-hide-next "><?php _e( 'Misc settings', 'woo-order-export-lite' ) ?>
804
  <span class="ui-icon ui-icon-triangle-1-s my-icon-triangle"></span></span>
805
- <div id="my-misc" hidden="hidden">
806
  <div>
807
  <input type="hidden" name="settings[format_number_fields]" value="0"/>
808
  <label><input type="checkbox" name="settings[format_number_fields]"
@@ -839,6 +868,12 @@ function remove_time_from_date( $datetime ) {
839
  value="1" <?php checked( $settings['billing_details_for_shipping'] ) ?>/><?php _e( 'Shipping fields use billing details (if shipping address is empty)',
840
  'woo-order-export-lite' ) ?></label>
841
  </div>
 
 
 
 
 
 
842
  <div>
843
  <input type="hidden" name="settings[enable_debug]" value="0"/>
844
  <label><input type="checkbox" name="settings[enable_debug]"
@@ -874,77 +909,82 @@ function remove_time_from_date( $datetime ) {
874
  <div id="my-right" style="float: left; width: 48%; margin: 0px 10px; max-width: 500px;">
875
  <?php do_action( 'woe_settings_form_view_destinations', $settings ); ?>
876
  <div class="my-block">
877
- <span class="my-hide-next "><?php _e( 'Filter by order', 'woo-order-export-lite' ) ?>
 
 
 
 
878
  <span class="ui-icon ui-icon-triangle-1-s my-icon-triangle"></span></span>
879
- <div id="my-order" hidden="hidden">
880
- <div><input type="hidden" name="settings[skip_suborders]" value="0"/><label><input type="checkbox"
881
- name="settings[skip_suborders]"
882
- value="1" <?php checked( $settings['skip_suborders'] ) ?> /> <?php _e( "Don't export child orders",
883
- 'woo-order-export-lite' ) ?></label></div>
884
- <div><input type="hidden" name="settings[export_refunds]" value="0"/><label><input type="checkbox"
885
- name="settings[export_refunds]"
886
- value="1" <?php checked( $settings['export_refunds'] ) ?> /> <?php _e( "Export refunds",
887
- 'woo-order-export-lite' ) ?></label></div>
888
- <div><input type="hidden" name="settings[mark_exported_orders]" value="0"/><label><input type="checkbox"
889
- name="settings[mark_exported_orders]"
890
- value="1" <?php checked( $settings['mark_exported_orders'] ) ?> /> <?php _e( "Mark exported orders",
891
- 'woo-order-export-lite' ) ?></label></div>
892
- <div><input type="hidden" name="settings[export_unmarked_orders]" value="0"/><label><input
893
- type="checkbox" name="settings[export_unmarked_orders]"
894
- value="1" <?php checked( $settings['export_unmarked_orders'] ) ?> /> <?php _e( "Export unmarked orders only",
895
- 'woo-order-export-lite' ) ?></label></div>
896
- <span class="wc-oe-header"><?php _e( 'Order statuses', 'woo-order-export-lite' ) ?></span>
897
- <select id="statuses" class="select2-i18n" name="settings[statuses][]" multiple="multiple"
898
- style="width: 100%; max-width: 25%;">
899
- <?php foreach (
900
- apply_filters( 'woe_settings_order_statuses', wc_get_order_statuses() ) as $i => $status
901
- ) { ?>
902
- <option value="<?php echo $i ?>" <?php if ( in_array( $i, $settings['statuses'] ) ) {
903
- echo 'selected';
904
- } ?>><?php echo $status ?></option>
905
- <?php } ?>
906
- </select>
907
- <div>
908
- <div class="custom-fields__wrapper">
909
- <div>
910
- <span class="wc-oe-header"><?php _e( 'Custom fields', 'woo-order-export-lite' ) ?></span>
911
- </div>
912
- <div class="custom-fields__condotion-wrapper custom-fields__condotion-wrapper_position">
913
- <select id="custom_fields" class="select2-i18n" data-select2-i18n-width="150" style="width: auto;">
914
- <?php foreach ( WC_Order_Export_Data_Extractor_UI::get_order_custom_fields() as $cf_name ) { ?>
915
- <option><?php echo $cf_name; ?></option>
916
- <?php } ?>
917
- </select>
918
-
919
- <select id="custom_fields_compare" class="select_compare">
920
- <option>=</option>
921
- <option>&lt;&gt;</option>
922
- <option>LIKE</option>
923
- <option>&gt;</option>
924
- <option>&gt;=</option>
925
- <option>&lt;</option>
926
- <option>&lt;=</option>
927
- <option>NOT SET</option>
928
- <option>IS SET</option>
929
- </select>
930
-
931
- <input type="text" id="text_custom_fields" disabled class="like-input" style="display: none;">
932
- <button id="add_custom_fields" class="button-secondary"><span
933
- class="dashicons dashicons-plus-alt"></span></button>
934
- </div>
935
- </div>
936
- <select id="custom_fields_check" class="select2-i18n" multiple name="settings[order_custom_fields][]"
937
  style="width: 100%; max-width: 25%;">
938
- <?php
939
- if ( $settings['order_custom_fields'] ) {
940
- foreach ( $settings['order_custom_fields'] as $prod ) {
941
- ?>
942
- <option selected value="<?php echo $prod; ?>"> <?php echo $prod; ?></option>
943
- <?php }
944
- } ?>
945
  </select>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
946
  </div>
947
- </div>
948
  </div>
949
 
950
  <br>
@@ -955,7 +995,7 @@ function remove_time_from_date( $datetime ) {
955
  'woo-order-export-lite' ) ?></div>
956
  <span class="my-hide-next "><?php _e( 'Filter by product', 'woo-order-export-lite' ) ?>
957
  <span class="ui-icon ui-icon-triangle-1-s my-icon-triangle"></span></span>
958
- <div id="my-products" hidden="hidden">
959
  <div><input type="hidden" name="settings[all_products_from_order]" value="0"/><label><input
960
  type="checkbox" name="settings[all_products_from_order]"
961
  value="1" <?php checked( $settings['all_products_from_order'] ) ?> /> <?php _e( 'Export all products from the order',
@@ -1060,7 +1100,7 @@ function remove_time_from_date( $datetime ) {
1060
  <select id="product_custom_fields" class="select2-i18n" data-select2-i18n-width="150"
1061
  style="width: auto;">
1062
  <?php foreach ( WC_Order_Export_Data_Extractor_UI::get_product_custom_fields() as $cf_name ) { ?>
1063
- <option><?php echo $cf_name; ?></option>
1064
  <?php } ?>
1065
  </select>
1066
 
@@ -1189,7 +1229,7 @@ function remove_time_from_date( $datetime ) {
1189
  <div class="my-block">
1190
  <span class="my-hide-next "><?php _e( 'Filter by customer', 'woo-order-export-lite' ) ?>
1191
  <span class="ui-icon ui-icon-triangle-1-s my-icon-triangle"></span></span>
1192
- <div id="my-users" hidden="hidden">
1193
 
1194
  <span class="wc-oe-header"><?php _e( 'Usernames', 'woo-order-export-lite' ) ?></span>
1195
  <select id="user_names" class="select2-i18n" data-select2-i18n-ajax-method="get_users"
@@ -1262,7 +1302,7 @@ function remove_time_from_date( $datetime ) {
1262
  <div class="my-block">
1263
  <span class="my-hide-next "><?php _e( 'Filter by coupon', 'woo-order-export-lite' ) ?>
1264
  <span class="ui-icon ui-icon-triangle-1-s my-icon-triangle"></span></span>
1265
- <div id="my-coupons" hidden="hidden">
1266
  <div>
1267
  <input type="hidden" name="settings[any_coupon_used]" value="0"/>
1268
  <label><input type="checkbox" name="settings[any_coupon_used]"
@@ -1289,7 +1329,7 @@ function remove_time_from_date( $datetime ) {
1289
  <div class="my-block">
1290
  <span class="my-hide-next "><?php _e( 'Filter by billing', 'woo-order-export-lite' ) ?>
1291
  <span class="ui-icon ui-icon-triangle-1-s my-icon-triangle"></span></span>
1292
- <div id="my-billing" hidden="hidden">
1293
  <div class="custom-fields__wrapper">
1294
  <div>
1295
  <span class="wc-oe-header"><?php _e( 'Billing locations', 'woo-order-export-lite' ) ?></span>
@@ -1339,7 +1379,7 @@ function remove_time_from_date( $datetime ) {
1339
  <div class="my-block">
1340
  <span class="my-hide-next "><?php _e( 'Filter by shipping', 'woo-order-export-lite' ) ?>
1341
  <span class="ui-icon ui-icon-triangle-1-s my-icon-triangle"></span></span>
1342
- <div id="my-shipping" hidden="hidden">
1343
  <div class="custom-fields__wrapper">
1344
  <div>
1345
  <span class="wc-oe-header"><?php _e( 'Shipping locations', 'woo-order-export-lite' ) ?></span>
@@ -1389,7 +1429,7 @@ function remove_time_from_date( $datetime ) {
1389
  <div class="my-block">
1390
  <span class="my-hide-next "><?php _e( 'Filter by item and metadata', 'woo-order-export-lite' ) ?>
1391
  <span class="ui-icon ui-icon-triangle-1-s my-icon-triangle"></span></span>
1392
- <div id="my-items-meta" hidden="hidden">
1393
  <div><input type="hidden" name="settings[export_matched_items]" value="0"/><label><input
1394
  type="checkbox" name="settings[export_matched_items]"
1395
  value="1" <?php checked( $settings['export_matched_items'] ) ?> /> <?php _e( 'Export only matched product items',
@@ -1464,16 +1504,15 @@ function remove_time_from_date( $datetime ) {
1464
  </div>
1465
  </div>
1466
  </div>
1467
-
1468
  </div>
1469
 
1470
- <div class="clearfix"></div>
1471
  <br>
1472
  <div class="my-block">
1473
  <span id='adjust-fields-btn' class="my-hide-next "><?php _e( 'Set up fields to export',
1474
  'woo-order-export-lite' ) ?>
1475
  <span class="ui-icon ui-icon-triangle-1-s my-icon-triangle"></span></span>
1476
- <div id="manage_fields" style="display: none;">
1477
  <div style="display: grid; grid-template-columns: 10fr 1fr 10fr;">
1478
  <div class="clear"></div>
1479
  <div></div>
@@ -1555,7 +1594,7 @@ function remove_time_from_date( $datetime ) {
1555
  <select class="set-up__selects" id='select_custom_meta_order'>
1556
  <?php
1557
  foreach ( $order_custom_meta_fields['order'] as $meta_id => $meta_name ) {
1558
- echo "<option value='" . esc_html($meta_name) . "' >$meta_name</option>";
1559
  };
1560
  ?>
1561
  </select>
337
  <div style="color:red"><?php _e( 'Please, install/enable PHP XML extension!', 'woo-order-export-lite' ) ?></div>
338
  <?php endif ?>
339
  <input type=hidden name="settings[format_xml_self_closing_tags]" value=0>
340
+ <input type=hidden name="settings[format_xml_preview_format]" value=0>
341
  <span class="xml-title"><?php _e( 'Prepend XML', 'woo-order-export-lite' ) ?></span><input type=text
342
  name="settings[format_xml_prepend_raw_xml]"
343
  value='<?php echo $settings['format_xml_prepend_raw_xml'] ?>'><br><br>
360
  type=checkbox name="settings[format_xml_self_closing_tags]"
361
  value=1 <?php if ( @$settings['format_xml_self_closing_tags'] ) {
362
  echo 'checked';
363
+ } ?> ><br><br>
364
+ <span class="xml-title"><?php _e( 'Format output', 'woo-order-export-lite' ) ?></span><input
365
+ type=checkbox name="settings[format_xml_preview_format]"
366
+ value=1 <?php if ( @$settings['format_xml_preview_format'] ) {
367
+ echo 'checked';
368
+ } ?> ><br><br>
369
  </div>
370
  <div id='JSON_options' style='display:none'><strong><?php _e( 'JSON options',
371
  'woo-order-export-lite' ) ?></strong><br>
428
  value=1 <?php if ( @$settings['format_pdf_repeat_header'] ) {
429
  echo 'checked';
430
  } ?> > <?php _e( 'repeat at each page', 'woo-order-export-lite' ) ?>)<br>
431
+ <!--
432
+ <input type=hidden name="settings[format_pdf_direction_rtl]" value=0>
433
+ <input type=checkbox name="settings[format_pdf_direction_rtl]"
434
+ value=1 <?php if ( @$settings['format_pdf_direction_rtl'] ) {
435
+ echo 'checked';
436
+ } ?> > <?php _e( 'Right-to-Left direction', 'woo-order-export-lite' ) ?><br>
437
+ -->
438
  <div class="pdf_two_col_block">
439
  <?php _e( 'Orientation', 'woo-order-export-lite' ) ?><br>
440
  <select name="settings[format_pdf_orientation]">
597
  value='<?php echo $settings['format_pdf_row_images_height'] ?>' min="0">
598
  </div>
599
 
600
+ <div class="pdf_two_col_block">
601
+ <input type=hidden name="settings[format_pdf_row_dont_page_break_order_lines]" value="0">
602
+ <input type=checkbox name="settings[format_pdf_row_dont_page_break_order_lines]"
603
+ value="1" <?php if ( @$settings['format_pdf_row_dont_page_break_order_lines'] ) {
604
+ echo 'checked';
605
+ } ?> > <?php _e( 'Don\'t put page break between order lines', 'woo-order-export-lite' ) ?>
606
+ </div>
607
+
608
+ <div class="pdf_two_col_block" style="margin-top:10px">
609
+ <input type=hidden name="settings[format_pdf_row_images_add_link]" value="0">
610
+ <input type=checkbox name="settings[format_pdf_row_images_add_link]"
611
+ value="1" <?php if ( @$settings['format_pdf_row_images_add_link'] ) {
612
+ echo 'checked';
613
+ } ?> > <?php _e( 'Add links to images', 'woo-order-export-lite' ) ?>
614
+ </div>
615
+
616
  </div>
617
 
618
  <div id='HTML_options' style='display:none'><strong><?php _e( 'Html options',
784
  ?>
785
  <select name="settings[sort]">
786
  <?php foreach ( $sort as $value => $text ): ?>
787
+ <option value='<?php echo esc_attr($value) ?>' <?php echo selected( @$settings['sort'],
788
+ $value ) ?> ><?php echo esc_attr($text); ?></option>
789
  <?php endforeach; ?>
790
  </select>
791
  <?php
808
  </div>
809
  <br>
810
 
811
+ <?php if ( ! isset( $woe_order_post_type ) || $woe_order_post_type != 'shop_subscription' ) { ?>
812
+ <?php if ( $mode === WC_Order_Export_Manage::EXPORT_SCHEDULE || $mode === WC_Order_Export_Manage::EXPORT_PROFILE ) { ?>
813
  <div id="my-change-status" class="my-block">
814
  <label for="change_order_status_to"><?php _e( 'Change order status to',
815
  'woo-order-export-lite' ) ?></label>
825
  </select>
826
  </div>
827
  <br>
828
+ <?php } ?>
829
+ <?php } ?>
830
+
831
  <div class="my-block">
832
  <span class="my-hide-next "><?php _e( 'Misc settings', 'woo-order-export-lite' ) ?>
833
  <span class="ui-icon ui-icon-triangle-1-s my-icon-triangle"></span></span>
834
+ <div id="my-misc" class="hide">
835
  <div>
836
  <input type="hidden" name="settings[format_number_fields]" value="0"/>
837
  <label><input type="checkbox" name="settings[format_number_fields]"
868
  value="1" <?php checked( $settings['billing_details_for_shipping'] ) ?>/><?php _e( 'Shipping fields use billing details (if shipping address is empty)',
869
  'woo-order-export-lite' ) ?></label>
870
  </div>
871
+ <div>
872
+ <input type="hidden" name="settings[convert_serialized_values]" value="0"/>
873
+ <label><input type="checkbox" name="settings[convert_serialized_values]"
874
+ value="1" <?php checked( $settings['convert_serialized_values'] ) ?>/><?php _e( 'Try to convert serialized values',
875
+ 'woo-order-export-lite' ) ?></label>
876
+ </div>
877
  <div>
878
  <input type="hidden" name="settings[enable_debug]" value="0"/>
879
  <label><input type="checkbox" name="settings[enable_debug]"
909
  <div id="my-right" style="float: left; width: 48%; margin: 0px 10px; max-width: 500px;">
910
  <?php do_action( 'woe_settings_form_view_destinations', $settings ); ?>
911
  <div class="my-block">
912
+ <?php if ( $woe_order_post_type && $woe_order_post_type === 'shop_subscription' ) {
913
+ include_once WOE_PRO_PLUGIN_BASEPATH . '/view/filter-by-subscription.php';
914
+ } else {
915
+ ?>
916
+ <span class="my-hide-next "><?php _e( 'Filter by order', 'export' ); ?>
917
  <span class="ui-icon ui-icon-triangle-1-s my-icon-triangle"></span></span>
918
+ <div id="my-order" class="hide">
919
+ <div><input type="hidden" name="settings[skip_suborders]" value="0"/><label><input type="checkbox"
920
+ name="settings[skip_suborders]"
921
+ value="1" <?php checked( $settings['skip_suborders'] ) ?> /> <?php _e( "Don't export child orders",
922
+ 'woo-order-export-lite' ) ?></label></div>
923
+ <div><input type="hidden" name="settings[export_refunds]" value="0"/><label><input type="checkbox"
924
+ name="settings[export_refunds]"
925
+ value="1" <?php checked( $settings['export_refunds'] ) ?> /> <?php _e( "Export refunds",
926
+ 'woo-order-export-lite' ) ?></label></div>
927
+ <div><input type="hidden" name="settings[mark_exported_orders]" value="0"/><label><input type="checkbox"
928
+ name="settings[mark_exported_orders]"
929
+ value="1" <?php checked( $settings['mark_exported_orders'] ) ?> /> <?php _e( "Mark exported orders",
930
+ 'woo-order-export-lite' ) ?></label></div>
931
+ <div><input type="hidden" name="settings[export_unmarked_orders]" value="0"/><label><input
932
+ type="checkbox" name="settings[export_unmarked_orders]"
933
+ value="1" <?php checked( $settings['export_unmarked_orders'] ) ?> /> <?php _e( "Export unmarked orders only",
934
+ 'woo-order-export-lite' ) ?></label></div>
935
+ <span class="wc-oe-header"><?php _e( 'Order statuses', 'woo-order-export-lite' ); ?></span>
936
+ <select id="statuses" class="select2-i18n" name="settings[statuses][]" multiple="multiple"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
937
  style="width: 100%; max-width: 25%;">
938
+ <?php foreach (
939
+ apply_filters( 'woe_settings_order_statuses', wc_get_order_statuses() ) as $i => $status
940
+ ) { ?>
941
+ <option value="<?php echo $i ?>" <?php if ( in_array( $i, $settings['statuses'] ) ) {
942
+ echo 'selected';
943
+ } ?>><?php echo $status ?></option>
944
+ <?php } ?>
945
  </select>
946
+ <div>
947
+ <div class="custom-fields__wrapper">
948
+ <div>
949
+ <span class="wc-oe-header"><?php _e( 'Custom fields', 'woo-order-export-lite' ) ?></span>
950
+ </div>
951
+ <div class="custom-fields__condotion-wrapper custom-fields__condotion-wrapper_position">
952
+ <select id="custom_fields" class="select2-i18n" data-select2-i18n-width="150" style="width: auto;">
953
+ <?php foreach ( WC_Order_Export_Data_Extractor_UI::get_order_custom_fields() as $cf_name ) { ?>
954
+ <option><?php echo esc_attr( $cf_name); ?></option>
955
+ <?php } ?>
956
+ </select>
957
+
958
+ <select id="custom_fields_compare" class="select_compare">
959
+ <option>=</option>
960
+ <option>&lt;&gt;</option>
961
+ <option>LIKE</option>
962
+ <option>&gt;</option>
963
+ <option>&gt;=</option>
964
+ <option>&lt;</option>
965
+ <option>&lt;=</option>
966
+ <option>NOT SET</option>
967
+ <option>IS SET</option>
968
+ </select>
969
+
970
+ <input type="text" id="text_custom_fields" disabled class="like-input" style="display: none;">
971
+ <button id="add_custom_fields" class="button-secondary"><span
972
+ class="dashicons dashicons-plus-alt"></span></button>
973
+ </div>
974
+ </div>
975
+ <select id="custom_fields_check" class="select2-i18n" multiple name="settings[order_custom_fields][]"
976
+ style="width: 100%; max-width: 25%;">
977
+ <?php
978
+ if ( $settings['order_custom_fields'] ) {
979
+ foreach ( $settings['order_custom_fields'] as $prod ) {
980
+ ?>
981
+ <option selected value="<?php echo $prod; ?>"> <?php echo $prod; ?></option>
982
+ <?php }
983
+ } ?>
984
+ </select>
985
+ </div>
986
  </div>
987
+ <?php } ?>
988
  </div>
989
 
990
  <br>
995
  'woo-order-export-lite' ) ?></div>
996
  <span class="my-hide-next "><?php _e( 'Filter by product', 'woo-order-export-lite' ) ?>
997
  <span class="ui-icon ui-icon-triangle-1-s my-icon-triangle"></span></span>
998
+ <div id="my-products" class="hide">
999
  <div><input type="hidden" name="settings[all_products_from_order]" value="0"/><label><input
1000
  type="checkbox" name="settings[all_products_from_order]"
1001
  value="1" <?php checked( $settings['all_products_from_order'] ) ?> /> <?php _e( 'Export all products from the order',
1100
  <select id="product_custom_fields" class="select2-i18n" data-select2-i18n-width="150"
1101
  style="width: auto;">
1102
  <?php foreach ( WC_Order_Export_Data_Extractor_UI::get_product_custom_fields() as $cf_name ) { ?>
1103
+ <option><?php echo esc_attr($cf_name); ?></option>
1104
  <?php } ?>
1105
  </select>
1106
 
1229
  <div class="my-block">
1230
  <span class="my-hide-next "><?php _e( 'Filter by customer', 'woo-order-export-lite' ) ?>
1231
  <span class="ui-icon ui-icon-triangle-1-s my-icon-triangle"></span></span>
1232
+ <div id="my-users" class="hide">
1233
 
1234
  <span class="wc-oe-header"><?php _e( 'Usernames', 'woo-order-export-lite' ) ?></span>
1235
  <select id="user_names" class="select2-i18n" data-select2-i18n-ajax-method="get_users"
1302
  <div class="my-block">
1303
  <span class="my-hide-next "><?php _e( 'Filter by coupon', 'woo-order-export-lite' ) ?>
1304
  <span class="ui-icon ui-icon-triangle-1-s my-icon-triangle"></span></span>
1305
+ <div id="my-coupons" class="hide">
1306
  <div>
1307
  <input type="hidden" name="settings[any_coupon_used]" value="0"/>
1308
  <label><input type="checkbox" name="settings[any_coupon_used]"
1329
  <div class="my-block">
1330
  <span class="my-hide-next "><?php _e( 'Filter by billing', 'woo-order-export-lite' ) ?>
1331
  <span class="ui-icon ui-icon-triangle-1-s my-icon-triangle"></span></span>
1332
+ <div id="my-billing" class="hide">
1333
  <div class="custom-fields__wrapper">
1334
  <div>
1335
  <span class="wc-oe-header"><?php _e( 'Billing locations', 'woo-order-export-lite' ) ?></span>
1379
  <div class="my-block">
1380
  <span class="my-hide-next "><?php _e( 'Filter by shipping', 'woo-order-export-lite' ) ?>
1381
  <span class="ui-icon ui-icon-triangle-1-s my-icon-triangle"></span></span>
1382
+ <div id="my-shipping" class="hide">
1383
  <div class="custom-fields__wrapper">
1384
  <div>
1385
  <span class="wc-oe-header"><?php _e( 'Shipping locations', 'woo-order-export-lite' ) ?></span>
1429
  <div class="my-block">
1430
  <span class="my-hide-next "><?php _e( 'Filter by item and metadata', 'woo-order-export-lite' ) ?>
1431
  <span class="ui-icon ui-icon-triangle-1-s my-icon-triangle"></span></span>
1432
+ <div id="my-items-meta" class="hide">
1433
  <div><input type="hidden" name="settings[export_matched_items]" value="0"/><label><input
1434
  type="checkbox" name="settings[export_matched_items]"
1435
  value="1" <?php checked( $settings['export_matched_items'] ) ?> /> <?php _e( 'Export only matched product items',
1504
  </div>
1505
  </div>
1506
  </div>
 
1507
  </div>
1508
 
1509
+ <div class="weo_clearfix"></div>
1510
  <br>
1511
  <div class="my-block">
1512
  <span id='adjust-fields-btn' class="my-hide-next "><?php _e( 'Set up fields to export',
1513
  'woo-order-export-lite' ) ?>
1514
  <span class="ui-icon ui-icon-triangle-1-s my-icon-triangle"></span></span>
1515
+ <div id="manage_fields" class="hide">
1516
  <div style="display: grid; grid-template-columns: 10fr 1fr 10fr;">
1517
  <div class="clear"></div>
1518
  <div></div>
1594
  <select class="set-up__selects" id='select_custom_meta_order'>
1595
  <?php
1596
  foreach ( $order_custom_meta_fields['order'] as $meta_id => $meta_name ) {
1597
+ echo "<option value='" . esc_attr($meta_name) . "' > " . esc_attr($meta_name) . "</option>";
1598
  };
1599
  ?>
1600
  </select>
view/tab/help.php CHANGED
@@ -3,6 +3,10 @@ if ( ! defined( 'ABSPATH' ) ) {
3
  exit; // Exit if accessed directly
4
  }
5
 
 
 
 
 
6
  $settings_link = '<a href="' . admin_url( 'admin.php?page=wc-order-export&tab=tools' ) . '" target=_blank>' . __( 'settings',
7
  'woo-order-export-lite' ) . '</a>';
8
  $snippets_link = '<a href="https://algolplus.com/plugins/snippets-plugins/" target=_blank>' . __( 'code snippets',
@@ -10,14 +14,16 @@ $snippets_link = '<a href="https://algolplus.com/plugins/snippets-plugins/" targ
10
  $samples_link = '<a href="https://algolplus.com/plugins/code-samples/" target=_blank>' . __( 'this page',
11
  'woo-order-export-lite' ) . '</a>';
12
  ?>
13
- <div class="clearfix"></div>
14
  <div id="woe-admin" class="container-fluid wpcontent">
15
  <br>
16
- <p><?php _e( 'Need help? Create ticket in', 'woo-order-export-lite' ) ?> <a
17
- href="https://algolplus.freshdesk.com" target=_blank><?php _e( 'helpdesk system',
18
- 'woo-order-export-lite' ) ?></a>.
19
- <br>
20
- <br>
 
 
21
  <?php echo sprintf( __( "Don't forget to attach your %s or some screenshots. It will significantly reduce reply time :)",
22
  'woo-order-export-lite' ), $settings_link ); ?></p>
23
  <br>
3
  exit; // Exit if accessed directly
4
  }
5
 
6
+ $user_guide_link = '<a href="https://docs.algolplus.com/order-export-docs/" target=_blank>' . __( 'user guide',
7
+ 'woo-order-export-lite' ) . '</a>';
8
+ $helpdesk_link = '<a href="https://algolplus.freshdesk.com" target=_blank>' . __( 'helpdesk system',
9
+ 'woo-order-export-lite' ) . '</a>';
10
  $settings_link = '<a href="' . admin_url( 'admin.php?page=wc-order-export&tab=tools' ) . '" target=_blank>' . __( 'settings',
11
  'woo-order-export-lite' ) . '</a>';
12
  $snippets_link = '<a href="https://algolplus.com/plugins/snippets-plugins/" target=_blank>' . __( 'code snippets',
14
  $samples_link = '<a href="https://algolplus.com/plugins/code-samples/" target=_blank>' . __( 'this page',
15
  'woo-order-export-lite' ) . '</a>';
16
  ?>
17
+ <div class="weo_clearfix"></div>
18
  <div id="woe-admin" class="container-fluid wpcontent">
19
  <br>
20
+ <p>
21
+ <?php echo sprintf( __( "Please, review %s at first.",'woo-order-export-lite' ), $user_guide_link ); ?>
22
+ <br>
23
+ <br>
24
+ <?php echo sprintf( __( 'Need help? Create ticket in %s .', 'woo-order-export-lite' ), $helpdesk_link ); ?>
25
+ <br>
26
+ <br>
27
  <?php echo sprintf( __( "Don't forget to attach your %s or some screenshots. It will significantly reduce reply time :)",
28
  'woo-order-export-lite' ), $settings_link ); ?></p>
29
  <br>
view/tab/tools.php CHANGED
@@ -20,7 +20,7 @@ foreach ( $modes as $mode ) {
20
 
21
  $type_labels = apply_filters( 'woe_tools_page_get_type_labels', array() );
22
  ?>
23
- <div class="clearfix"></div>
24
  <div id="woe-admin" class="container-fluid wpcontent">
25
  <form>
26
  <?php wp_nonce_field( 'woe_nonce', 'woe_nonce' ); ?>
@@ -78,7 +78,7 @@ $type_labels = apply_filters( 'woe_tools_page_get_type_labels', array() );
78
  <label class="error-message"></label>
79
  </div>
80
 
81
- <input disabled type="submit" class="woe-btn-tools"
82
  value="<?php _e( 'Import', 'woo-order-export-lite' ) ?>" name="woe-tools-import"
83
  id="submit-import">
84
 
20
 
21
  $type_labels = apply_filters( 'woe_tools_page_get_type_labels', array() );
22
  ?>
23
+ <div class="weo_clearfix"></div>
24
  <div id="woe-admin" class="container-fluid wpcontent">
25
  <form>
26
  <?php wp_nonce_field( 'woe_nonce', 'woe_nonce' ); ?>
78
  <label class="error-message"></label>
79
  </div>
80
 
81
+ <input type="submit" class="woe-btn-tools"
82
  value="<?php _e( 'Import', 'woo-order-export-lite' ) ?>" name="woe-tools-import"
83
  id="submit-import">
84
 
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.4
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: 4.0
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.4' );
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.1.5
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: 4.4
13
  *
14
  * Copyright: (c) 2015 AlgolPlus LLC. (algol.plus@gmail.com)
15
  *
40
  }
41
 
42
  if ( ! defined( 'WOE_VERSION' ) ) {
43
+ define( 'WOE_VERSION', '3.1.5' );
44
  define( 'WOE_PLUGIN_BASENAME', plugin_basename( __FILE__ ) );
45
  define( 'WOE_PLUGIN_BASEPATH', dirname( __FILE__ ) );
46
  }