Booster for WooCommerce - Version 3.2.4

Version Description

  • 27/12/2017 =
  • Dev - PRICES & CURRENCIES - Currencies - More cryptocurrencies added.
  • Dev - PRICES & CURRENCIES - Currency Exchange Rates - Secondary "Exchange Rates Server" option added to each currency pair.
  • Fix - PRICES & CURRENCIES - Currency per Product - change_currency_symbol() - Changing symbol for appropriate currency code only.
  • Dev - PRICES & CURRENCIES - Price Formats - "Additional Currency Code Position" option added.
  • Dev - BUTTON & PRICE LABELS - Call for Price - Variable and grouped products support added.
  • Dev - PRODUCTS - Admin Products List - Initial module release (moved from "Product Listings" module).
  • Fix - PRODUCTS - Bookings - wp_die() replaced with die() in price_change_ajax().
  • Dev - PRODUCTS - Product Add to Cart - "Set All Products to Sold individually" option added.
  • Dev - PRODUCTS - Product Add to Cart - External Products - Open External Products on Add to Cart in New Window - on Category/Archive Pages - Additional themes compatibility added.
  • Fix - PRODUCTS - Product Addons - wp_die() replaced with die() in price_change_ajax().
  • Dev - PRODUCTS - Product Addons - "Position Priority on Frontend" option added.
  • Dev - PRODUCTS - Product Custom Visibility - Initial module release.
  • Dev - PRODUCTS - Product Images - "Enable Section" option removed. Minor setting restyling.
  • Dev - PRODUCTS - Product Input Fields - array_merge() replaced with array_replace() for wcj_get_select_options() results (with placeholder).
  • Dev - PRODUCTS - Product Input Fields - Frontend View Options - "HTML Template - Radio Field" option added.
  • Dev - PRODUCTS - Product Tabs - "Add Per Product Tabs Content to Yoast SEO plugin analysis" option added.
  • Fix - PRODUCTS - Product Visibility by Country - Session bug fixed.
  • Dev - PRODUCTS - Products XML - "Products to Include/Exclude" options can now be set as comma separated text (optionally) (instead of list).
  • Dev - PRODUCTS - Products XML - Renamed to "Products XML Feeds". Description and documentation URL updated.
  • Dev - PRODUCTS - Sale Flash - "Per Product", "Per Category", "Per Tag" options added.
  • Dev - PRODUCTS - Sale Flash - Initial module release (copied from "Product Images" module).
  • Fix - PRODUCTS - Tax Display - by Product & by User Role - wcj_is_frontend() check added.
  • Dev - PRODUCTS - Tax Display - "TAX Display - Toggle Button" section added.
  • Dev - PRODUCTS - Tax Display - Initial module release (moved from "Product Listings" module).
  • Dev - CART & CHECKOUT - Checkout Custom Fields - "Customer Meta Fields" options added.
  • Dev - CART & CHECKOUT - Checkout Custom Fields - "Min Cart Amount" and "Max Cart Amount" options added.
  • Dev - CART & CHECKOUT - Checkout Custom Fields - array_merge() replaced with array_replace() for wcj_get_select_options() results (with placeholder).
  • Fix - CART & CHECKOUT - EU VAT Number - Preserve VAT in Base Country - Issue with lowercase country code n VAT ID fixed.
  • Dev - SHIPPING & ORDERS - Admin Orders List - Initial module release (moved from "Orders" module).
  • Dev - SHIPPING & ORDERS - Order Minimum Amount - "Exclude Discounts from Cart Total" option added.
  • Dev - SHIPPING & ORDERS - Orders - Bulk Regenerate Download Permissions for Orders - All Orders - "Periodically" option added.
  • Dev - SHIPPING & ORDERS - Shipping Methods by Users / Shipping Methods by Products / Shipping Options (Hide if Free Shipping is Available) - "Filter Priority" options added.
  • Dev - PDF INVOICING & PACKING SLIPS - General - "Advanced: Temp Directory" option added.
  • Dev - PDF INVOICING & PACKING SLIPS - Page Settings - Page Format - "Custom" options added.
  • Dev - EMAILS & MISC. - Custom Emails - %customer% can now be used in comma separated list for multiple recipients.
  • Dev - EMAILS & MISC. - Reports - Custom Ranges / Product Sales (Daily) / Reports functions (also affects Export module) - time() replaced with current_time().
  • Dev - EMAILS & MISC. - Reports - Orders - Product Sales (Monthly) - wcj_reports_products_sales_check_product filter added.
  • Fix - EMAILS & MISC. - Reports - Orders - Product Sales (Monthly) - WooCommerce v3.0.0 compatibility - "Product parent property accessed directly" issue fixed.
  • Dev - Shortcodes - General - [wcj_barcode] shortcode added.
  • Dev - Shortcodes - General - [wcj_tcpdf_barcode] shortcode added.
  • Dev - Shortcodes - Orders - [wcj_order_date] - days attribute added.
  • Fix - Shortcodes - Orders - [wcj_order_items_table] - item_meta column - is_custom meta excluded.
  • Dev - Shortcodes - Products - [wcj_product_category_count] shortcode added.
  • Dev - Shortcodes - Products - [wcj_product_price] - currency attribute added.
  • Fix - Shortcodes - Products - [wcj_product_purchase_price] - Using wcj_get_product_id() instead of wcj_get_product_id_or_variation_parent_id().
  • Dev - Shortcodes - Products - [wcj_product_purchase_price] - hide_currency attribute added.
  • Dev - Shortcodes files renamed.
  • Dev - Functions - "Crons" added.
  • Dev - Functions - Debug - wcj_log() - esc_url() added.
  • Dev - Functions - Exchange Rates - wcj_get_saved_exchange_rate() function added.
  • Dev - Functions - Exchange Rates - Code refactoring (wcj_get_currency_exchange_rates_url_response() function added).
  • Dev - Functions - Exchange Rates - Exchange Rates Server - "CoinMarketCap" server added.
  • Dev - Functions - Exchange Rates - Exchange Rates Server - "Coinbase" server added.
  • Dev - Functions - General - wcj_get_select_options() - Prefix (wcj-) removed (was added in v3.2.3).
  • Dev - Functions - General - wcj_get_select_options() - trim() added.
  • Fix - Functions - Price and Currency - wc_get_product_purchase_price() - int replaced with float - this fixes the issue with purchase price calculating incorrectly (cutting decimal part).
  • Dev - Settings Manager - Import - Checking for wcj_ prefix, when importing plugin settings.
  • Dev - Settings Manager - Reset - Now deletes all options (also includes meta).
  • Dev - Admin Settings - Custom Fields - exchange_rate field updated (12 decimals in step and code refactoring).
  • Dev - Code refactoring. core directory added.
Download this release

Release Info

Developer algoritmika
Plugin Icon 128x128 Booster for WooCommerce
Version 3.2.4
Comparing to
See all releases

Code changes from version 3.2.3 to 3.2.4

Files changed (99) hide show
  1. includes/admin/class-wc-settings-jetpack.php +8 -6
  2. includes/admin/class-wcj-settings-custom-fields.php +63 -2
  3. includes/admin/class-wcj-settings-manager.php +27 -5
  4. includes/admin/wcj-modules-cats.php +7 -1
  5. includes/class-wcj-admin-orders-list.php +374 -0
  6. includes/class-wcj-admin-products-list.php +127 -0
  7. includes/class-wcj-call-for-price.php +111 -33
  8. includes/class-wcj-checkout-custom-fields.php +29 -5
  9. includes/class-wcj-currencies.php +3 -3
  10. includes/class-wcj-currency-exchange-rates.php +40 -6
  11. includes/class-wcj-currency-per-product.php +8 -4
  12. includes/class-wcj-eu-vat-number.php +3 -3
  13. includes/class-wcj-multicurrency.php +1 -1
  14. includes/class-wcj-order-min-amount.php +8 -2
  15. includes/class-wcj-orders.php +26 -335
  16. includes/class-wcj-price-formats.php +25 -2
  17. includes/class-wcj-product-add-to-cart.php +12 -4
  18. includes/class-wcj-product-addons.php +7 -6
  19. includes/class-wcj-product-bookings.php +3 -3
  20. includes/class-wcj-product-by-country.php +4 -5
  21. includes/class-wcj-product-custom-visibility.php +144 -0
  22. includes/class-wcj-product-images.php +23 -51
  23. includes/class-wcj-product-listings.php +6 -170
  24. includes/class-wcj-product-tabs.php +23 -2
  25. includes/class-wcj-products-xml.php +8 -8
  26. includes/class-wcj-reports.php +8 -7
  27. includes/class-wcj-sale-flash.php +98 -0
  28. includes/class-wcj-shipping-options.php +4 -3
  29. includes/class-wcj-tax-display.php +162 -0
  30. includes/classes/class-wcj-module-shipping-by-condition.php +3 -3
  31. includes/classes/class-wcj-pdf-invoice.php +19 -65
  32. includes/{shortcodes → classes}/class-wcj-shortcodes.php +0 -0
  33. includes/{widgets → classes}/class-wcj-widget.php +0 -0
  34. includes/core/class-wcj-admin.php +154 -0
  35. includes/{classes → core}/class-wcj-scripts.php +0 -1
  36. includes/core/wcj-functions.php +38 -0
  37. includes/core/wcj-loader.php +75 -0
  38. includes/core/wcj-modules.php +127 -0
  39. includes/core/wcj-options.php +50 -0
  40. includes/core/wcj-shortcodes.php +32 -0
  41. includes/emails/class-wc-email-wcj-custom.php +8 -5
  42. includes/exchange-rates/class-wcj-exchange-rates-crons.php +2 -2
  43. includes/exchange-rates/class-wcj-exchange-rates.php +2 -66
  44. includes/functions/wcj-functions-admin.php +32 -1
  45. includes/functions/wcj-functions-core.php +1 -0
  46. includes/functions/wcj-functions-crons.php +119 -0
  47. includes/functions/wcj-functions-currencies.php +30 -1
  48. includes/functions/wcj-functions-debug.php +3 -3
  49. includes/functions/wcj-functions-exchange-rates.php +205 -34
  50. includes/functions/wcj-functions-general.php +27 -5
  51. includes/functions/wcj-functions-orders.php +7 -3
  52. includes/functions/wcj-functions-price-currency.php +6 -6
  53. includes/functions/wcj-functions-reports.php +40 -38
  54. includes/input-fields/class-wcj-product-input-fields-core.php +12 -7
  55. includes/js/wcj-custom-tabs-yoast-seo.js +34 -0
  56. includes/reports/wcj-class-reports-sales-daily.php +5 -4
  57. includes/reports/wcj-class-reports-sales.php +20 -19
  58. includes/settings/meta-box/wcj-settings-meta-box-product-custom-visibility.php +24 -0
  59. includes/settings/meta-box/wcj-settings-meta-box-sale-flash.php +30 -0
  60. includes/settings/wcj-settings-admin-orders-list.php +165 -0
  61. includes/settings/wcj-settings-admin-products-list.php +93 -0
  62. includes/settings/wcj-settings-call-for-price.php +20 -10
  63. includes/settings/wcj-settings-checkout-custom-fields.php +25 -2
  64. includes/settings/wcj-settings-currency-exchange-rates.php +2 -2
  65. includes/settings/wcj-settings-currency-per-product.php +1 -3
  66. includes/settings/wcj-settings-general.php +1 -0
  67. includes/settings/wcj-settings-multicurrency-base-price.php +1 -3
  68. includes/settings/wcj-settings-multicurrency.php +1 -3
  69. includes/settings/wcj-settings-order-min-amount.php +8 -1
  70. includes/settings/wcj-settings-orders.php +21 -147
  71. includes/settings/wcj-settings-payment-gateways-currency.php +1 -3
  72. includes/settings/wcj-settings-pdf-invoicing-page.php +17 -3
  73. includes/settings/wcj-settings-pdf-invoicing.php +8 -1
  74. includes/settings/wcj-settings-price-by-country.php +1 -3
  75. includes/settings/wcj-settings-price-formats.php +14 -1
  76. includes/settings/wcj-settings-product-add-to-cart.php +8 -1
  77. includes/settings/wcj-settings-product-addons.php +8 -1
  78. includes/settings/wcj-settings-product-custom-visibility.php +54 -0
  79. includes/settings/wcj-settings-product-images.php +5 -51
  80. includes/settings/wcj-settings-product-input-fields.php +8 -1
  81. includes/settings/wcj-settings-product-listings.php +2 -184
  82. includes/settings/wcj-settings-product-tabs.php +8 -1
  83. includes/settings/wcj-settings-products-xml.php +27 -20
  84. includes/settings/wcj-settings-sale-flash.php +118 -0
  85. includes/settings/wcj-settings-shipping-by-condition.php +19 -1
  86. includes/settings/wcj-settings-shipping-options.php +8 -1
  87. includes/settings/wcj-settings-tax-display.php +141 -0
  88. includes/shortcodes/{class-wcj-general-shortcodes.php → class-wcj-shortcodes-general.php} +158 -3
  89. includes/shortcodes/{class-wcj-input-field-shortcodes.php → class-wcj-shortcodes-input-field.php} +0 -0
  90. includes/shortcodes/{class-wcj-invoices-shortcodes.php → class-wcj-shortcodes-invoices.php} +0 -0
  91. includes/shortcodes/{class-wcj-order-items-shortcodes.php → class-wcj-shortcodes-order-items.php} +3 -3
  92. includes/shortcodes/{class-wcj-orders-shortcodes.php → class-wcj-shortcodes-orders.php} +6 -4
  93. includes/shortcodes/{class-wcj-products-add-form-shortcodes.php → class-wcj-shortcodes-products-add-form.php} +0 -0
  94. includes/shortcodes/{class-wcj-products-crowdfunding-shortcodes.php → class-wcj-shortcodes-products-crowdfunding.php} +0 -0
  95. includes/shortcodes/{class-wcj-products-shortcodes.php → class-wcj-shortcodes-products.php} +30 -12
  96. includes/widgets/class-wcj-widget-selector.php +4 -3
  97. langs/woocommerce-jetpack.pot +1494 -1081
  98. readme.txt +73 -6
  99. woocommerce-jetpack.php +16 -436
includes/admin/class-wc-settings-jetpack.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Settings
4
  *
5
- * @version 3.1.1
6
  * @since 1.0.0
7
  * @author Algoritmika Ltd.
8
  */
@@ -243,7 +243,8 @@ class WC_Settings_Jetpack extends WC_Settings_Page {
243
  /**
244
  * output_dashboard.
245
  *
246
- * @version 3.0.0
 
247
  */
248
  function output_dashboard( $current_section ) {
249
 
@@ -331,7 +332,7 @@ class WC_Settings_Jetpack extends WC_Settings_Page {
331
  echo wcj_get_table_html( $table_data, array( 'table_class' => 'widefat striped', 'table_heading_type' => 'vertical' ) );
332
  }
333
 
334
- $plugin_data = get_plugin_data( wcj_plugin_file() );
335
  $plugin_title = ( isset( $plugin_data['Name'] ) ? '[' . $plugin_data['Name'] . '] ' : '' );
336
  echo '<p style="text-align:right;color:gray;font-size:x-small;font-style:italic;">' . $plugin_title .
337
  __( 'Version', 'woocommerce-jetpack' ) . ': ' . get_option( 'booster_for_woocommerce_version', 'N/A' ) . '</p>';
@@ -438,7 +439,7 @@ class WC_Settings_Jetpack extends WC_Settings_Page {
438
  /**
439
  * get_manager_settings.
440
  *
441
- * @version 3.1.1
442
  * @since 2.6.0
443
  * @return array
444
  */
@@ -455,10 +456,11 @@ class WC_Settings_Jetpack extends WC_Settings_Page {
455
  'title' => __( 'Use List Instead of Comma Separated Text for Products in Settings', 'woocommerce-jetpack' ),
456
  'type' => 'checkbox',
457
  'desc' => sprintf( __( 'Supported modules: %s.', 'woocommerce-jetpack' ), implode( ', ', array(
458
- __( 'Product Info', 'woocommerce-jetpack' ),
459
  __( 'Gateways per Product or Category', 'woocommerce-jetpack' ),
460
- __( 'Product Input Fields', 'woocommerce-jetpack' ),
461
  __( 'Global Discount', 'woocommerce-jetpack' ),
 
 
 
462
  __( 'Related Products', 'woocommerce-jetpack' ),
463
  ) ) ),
464
  'id' => 'wcj_list_for_products',
2
  /**
3
  * Booster for WooCommerce - Settings
4
  *
5
+ * @version 3.2.4
6
  * @since 1.0.0
7
  * @author Algoritmika Ltd.
8
  */
243
  /**
244
  * output_dashboard.
245
  *
246
+ * @version 3.2.4
247
+ * @todo (maybe) remove `woojetpack_readme`
248
  */
249
  function output_dashboard( $current_section ) {
250
 
332
  echo wcj_get_table_html( $table_data, array( 'table_class' => 'widefat striped', 'table_heading_type' => 'vertical' ) );
333
  }
334
 
335
+ $plugin_data = get_plugin_data( WCJ_PLUGIN_FILE );
336
  $plugin_title = ( isset( $plugin_data['Name'] ) ? '[' . $plugin_data['Name'] . '] ' : '' );
337
  echo '<p style="text-align:right;color:gray;font-size:x-small;font-style:italic;">' . $plugin_title .
338
  __( 'Version', 'woocommerce-jetpack' ) . ': ' . get_option( 'booster_for_woocommerce_version', 'N/A' ) . '</p>';
439
  /**
440
  * get_manager_settings.
441
  *
442
+ * @version 3.2.4
443
  * @since 2.6.0
444
  * @return array
445
  */
456
  'title' => __( 'Use List Instead of Comma Separated Text for Products in Settings', 'woocommerce-jetpack' ),
457
  'type' => 'checkbox',
458
  'desc' => sprintf( __( 'Supported modules: %s.', 'woocommerce-jetpack' ), implode( ', ', array(
 
459
  __( 'Gateways per Product or Category', 'woocommerce-jetpack' ),
 
460
  __( 'Global Discount', 'woocommerce-jetpack' ),
461
+ __( 'Product Info', 'woocommerce-jetpack' ),
462
+ __( 'Product Input Fields', 'woocommerce-jetpack' ),
463
+ __( 'Products XML', 'woocommerce-jetpack' ),
464
  __( 'Related Products', 'woocommerce-jetpack' ),
465
  ) ) ),
466
  'id' => 'wcj_list_for_products',
includes/admin/class-wcj-settings-custom-fields.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Settings Custom Fields
4
  *
5
- * @version 3.1.3
6
  * @since 2.8.0
7
  * @author Algoritmika Ltd.
8
  */
@@ -16,7 +16,7 @@ class WCJ_Settings_Custom_Fields {
16
  /**
17
  * Constructor.
18
  *
19
- * @version 3.1.3
20
  * @since 2.8.0
21
  */
22
  function __construct() {
@@ -30,6 +30,67 @@ class WCJ_Settings_Custom_Fields {
30
  add_action( 'woocommerce_admin_field_custom_link', array( $this, 'output_custom_link' ) );
31
  add_action( 'woocommerce_admin_field_module_tools', array( $this, 'output_module_tools' ) );
32
  add_filter( 'woocommerce_admin_settings_sanitize_option', array( $this, 'maybe_unclean_field' ), PHP_INT_MAX, 3 );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
33
  }
34
 
35
  /**
2
  /**
3
  * Booster for WooCommerce - Settings Custom Fields
4
  *
5
+ * @version 3.2.4
6
  * @since 2.8.0
7
  * @author Algoritmika Ltd.
8
  */
16
  /**
17
  * Constructor.
18
  *
19
+ * @version 3.2.4
20
  * @since 2.8.0
21
  */
22
  function __construct() {
30
  add_action( 'woocommerce_admin_field_custom_link', array( $this, 'output_custom_link' ) );
31
  add_action( 'woocommerce_admin_field_module_tools', array( $this, 'output_module_tools' ) );
32
  add_filter( 'woocommerce_admin_settings_sanitize_option', array( $this, 'maybe_unclean_field' ), PHP_INT_MAX, 3 );
33
+ add_action( 'woocommerce_admin_field_exchange_rate', array( $this, 'output_exchange_rate_settings_button' ) );
34
+ }
35
+
36
+ /**
37
+ * output_exchange_rate_settings_button.
38
+ *
39
+ * @version 3.2.4
40
+ */
41
+ function output_exchange_rate_settings_button( $value ) {
42
+
43
+ $value['type'] = 'number';
44
+
45
+ $option_value = get_option( $value['id'], $value['default'] );
46
+
47
+ // Custom attribute handling
48
+ $custom_attributes = array();
49
+ if ( ! empty( $value['custom_attributes'] ) && is_array( $value['custom_attributes'] ) ) {
50
+ foreach ( $value['custom_attributes'] as $attribute => $attribute_value ) {
51
+ $custom_attributes[] = esc_attr( $attribute ) . '="' . esc_attr( $attribute_value ) . '"';
52
+ }
53
+ } else {
54
+ $custom_attributes = array( 'step="' . sprintf( "%.12f", 1 / pow( 10, 12 ) ) . '"', 'min="0"' );
55
+ }
56
+ $custom_attributes_button = array();
57
+ if ( ! empty( $value['custom_attributes_button'] ) && is_array( $value['custom_attributes_button'] ) ) {
58
+ foreach ( $value['custom_attributes_button'] as $attribute => $attribute_value ) {
59
+ $custom_attributes_button[] = esc_attr( $attribute ) . '="' . esc_attr( $attribute_value ) . '"';
60
+ }
61
+ }
62
+ $tip = '';
63
+ $description = '';
64
+ $exchange_rate_server = wcj_get_currency_exchange_rate_server_name( $value['custom_attributes_button']['currency_from'], $value['custom_attributes_button']['currency_to'] );
65
+ $value_title = sprintf( __( 'Grab %s rate from %s', 'woocommerce-jetpack' ), $value['value'], $exchange_rate_server );
66
+ ?>
67
+ <tr valign="top">
68
+ <th scope="row" class="titledesc">
69
+ <label for="<?php echo esc_attr( $value['id'] ); ?>"><?php echo esc_html( $value['title'] ); ?></label>
70
+ <?php echo $tip; ?>
71
+ </th>
72
+ <td class="forminp forminp-<?php echo sanitize_title( $value['type'] ) ?>">
73
+ <input
74
+ name="<?php echo esc_attr( $value['id'] ); ?>"
75
+ id="<?php echo esc_attr( $value['id'] ); ?>"
76
+ type="<?php echo esc_attr( $value['type'] ); ?>"
77
+ style="<?php echo esc_attr( $value['css'] ); ?>"
78
+ value="<?php echo esc_attr( $option_value ); ?>"
79
+ class="<?php echo esc_attr( $value['class'] ); ?>"
80
+ <?php echo implode( ' ', $custom_attributes ); ?>
81
+ />
82
+ <input
83
+ name="<?php echo esc_attr( $value['id'] . '_button' ); ?>"
84
+ id="<?php echo esc_attr( $value['id'] . '_button' ); ?>"
85
+ type="button"
86
+ value="<?php echo esc_attr( $value['value'] ); ?>"
87
+ title="<?php echo esc_attr( $value_title ); ?>"
88
+ class="exchage_rate_button"
89
+ <?php echo implode( ' ', $custom_attributes_button ); ?>
90
+ />
91
+ </td>
92
+ </tr>
93
+ <?php
94
  }
95
 
96
  /**
includes/admin/class-wcj-settings-manager.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Settings Manager
4
  *
5
- * @version 3.2.3
6
  * @since 2.9.0
7
  * @author Algoritmika Ltd.
8
  */
@@ -50,7 +50,7 @@ class WCJ_Settings_Manager {
50
  /**
51
  * manage_options_import.
52
  *
53
- * @version 2.5.4
54
  * @since 2.5.2
55
  */
56
  function manage_options_import() {
@@ -73,8 +73,10 @@ class WCJ_Settings_Manager {
73
  } else {
74
  $import_settings = json_decode( $import_settings[1], true );
75
  foreach ( $import_settings as $import_key => $import_setting ) {
76
- update_option( $import_key, $import_setting );
77
- $import_counter++;
 
 
78
  }
79
  $wcj_notice .= sprintf( __( '%d options successfully imported.', 'woocommerce-jetpack' ), $import_counter );
80
  }
@@ -120,11 +122,13 @@ class WCJ_Settings_Manager {
120
  /**
121
  * manage_options_reset.
122
  *
123
- * @version 2.9.0
124
  * @since 2.5.2
 
125
  */
126
  function manage_options_reset() {
127
  global $wcj_notice;
 
128
  $delete_counter = 0;
129
  foreach ( WCJ()->modules as $module ) {
130
  $values = $module->get_settings();
@@ -143,6 +147,24 @@ class WCJ_Settings_Manager {
143
  if ( $delete_counter > 0 ) {
144
  $wcj_notice .= sprintf( __( '%d options successfully deleted.', 'woocommerce-jetpack' ), $delete_counter );
145
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
146
  }
147
 
148
  }
2
  /**
3
  * Booster for WooCommerce - Settings Manager
4
  *
5
+ * @version 3.2.4
6
  * @since 2.9.0
7
  * @author Algoritmika Ltd.
8
  */
50
  /**
51
  * manage_options_import.
52
  *
53
+ * @version 3.2.4
54
  * @since 2.5.2
55
  */
56
  function manage_options_import() {
73
  } else {
74
  $import_settings = json_decode( $import_settings[1], true );
75
  foreach ( $import_settings as $import_key => $import_setting ) {
76
+ if ( strlen( $import_key ) > 4 && 'wcj_' === substr( $import_key, 0, 4 ) ) {
77
+ update_option( $import_key, $import_setting );
78
+ $import_counter++;
79
+ }
80
  }
81
  $wcj_notice .= sprintf( __( '%d options successfully imported.', 'woocommerce-jetpack' ), $import_counter );
82
  }
122
  /**
123
  * manage_options_reset.
124
  *
125
+ * @version 3.2.4
126
  * @since 2.5.2
127
+ * @todo clean up
128
  */
129
  function manage_options_reset() {
130
  global $wcj_notice;
131
+ /*
132
  $delete_counter = 0;
133
  foreach ( WCJ()->modules as $module ) {
134
  $values = $module->get_settings();
147
  if ( $delete_counter > 0 ) {
148
  $wcj_notice .= sprintf( __( '%d options successfully deleted.', 'woocommerce-jetpack' ), $delete_counter );
149
  }
150
+ */
151
+ global $wpdb;
152
+ $delete_counter_meta = 0;
153
+ $plugin_meta = $wpdb->get_results( "SELECT * FROM $wpdb->postmeta WHERE meta_key LIKE '_wcj_%'" );
154
+ foreach( $plugin_meta as $meta ) {
155
+ delete_post_meta( $meta->post_id, $meta->meta_key );
156
+ $delete_counter_meta++;
157
+ }
158
+ $delete_counter_options = 0;
159
+ $plugin_options = $wpdb->get_results( "SELECT option_name FROM $wpdb->options WHERE option_name LIKE 'wcj_%'" );
160
+ foreach( $plugin_options as $option ) {
161
+ delete_option( $option->option_name );
162
+ delete_site_option( $option->option_name );
163
+ $delete_counter_options++;
164
+ }
165
+ if ( $delete_counter_meta > 0 || $delete_counter_options > 0) {
166
+ $wcj_notice .= sprintf( __( '%d options and %d meta successfully deleted.', 'woocommerce-jetpack' ), $delete_counter_options, $delete_counter_meta );
167
+ }
168
  }
169
 
170
  }
includes/admin/wcj-modules-cats.php CHANGED
@@ -2,9 +2,10 @@
2
  /**
3
  * Booster for WooCommerce - Modules Array
4
  *
5
- * @version 3.2.3
6
  * @since 2.2.0
7
  * @author Algoritmika Ltd.
 
8
  */
9
 
10
  return apply_filters( 'wcj_modules', array(
@@ -59,6 +60,8 @@ return apply_filters( 'wcj_modules', array(
59
  'desc' => __( 'Bookings, Crowdfunding Products, Product Addons and Input Fields, Product Listings, Product Tabs and more.', 'woocommerce-jetpack' ),
60
  'all_cat_ids' => array(
61
  'product_listings',
 
 
62
  'products_per_page',
63
  'product_tabs',
64
  'product_custom_info',
@@ -73,8 +76,10 @@ return apply_filters( 'wcj_modules', array(
73
  'crowdfunding',
74
  'product_addons',
75
  'product_images',
 
76
  'product_by_country',
77
  'product_by_user_role',
 
78
  'product_by_time',
79
  'product_by_date',
80
  'product_by_user',
@@ -132,6 +137,7 @@ return apply_filters( 'wcj_modules', array(
132
  'shipping_by_order_amount',
133
  'address_formats',
134
  'orders',
 
135
  'order_min_amount',
136
  'order_numbers',
137
  'order_custom_statuses',
2
  /**
3
  * Booster for WooCommerce - Modules Array
4
  *
5
+ * @version 3.2.4
6
  * @since 2.2.0
7
  * @author Algoritmika Ltd.
8
+ * @todo (maybe) split "Shipping & Orders", "Cart & Checkout", "Products", "Prices & Currencies" etc.
9
  */
10
 
11
  return apply_filters( 'wcj_modules', array(
60
  'desc' => __( 'Bookings, Crowdfunding Products, Product Addons and Input Fields, Product Listings, Product Tabs and more.', 'woocommerce-jetpack' ),
61
  'all_cat_ids' => array(
62
  'product_listings',
63
+ 'tax_display',
64
+ 'admin_products_list',
65
  'products_per_page',
66
  'product_tabs',
67
  'product_custom_info',
76
  'crowdfunding',
77
  'product_addons',
78
  'product_images',
79
+ 'sale_flash',
80
  'product_by_country',
81
  'product_by_user_role',
82
+ 'product_custom_visibility',
83
  'product_by_time',
84
  'product_by_date',
85
  'product_by_user',
137
  'shipping_by_order_amount',
138
  'address_formats',
139
  'orders',
140
+ 'admin_orders_list',
141
  'order_min_amount',
142
  'order_numbers',
143
  'order_custom_statuses',
includes/class-wcj-admin-orders-list.php ADDED
@@ -0,0 +1,374 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Booster for WooCommerce - Module - Admin Orders List
4
+ *
5
+ * @version 3.2.4
6
+ * @since 3.2.4
7
+ * @author Algoritmika Ltd.
8
+ */
9
+
10
+ if ( ! defined( 'ABSPATH' ) ) exit;
11
+
12
+ if ( ! class_exists( 'WCJ_Admin_Orders_List' ) ) :
13
+
14
+ class WCJ_Admin_Orders_List extends WCJ_Module {
15
+
16
+ /**
17
+ * Constructor.
18
+ *
19
+ * @version 3.2.4
20
+ * @since 3.2.4
21
+ */
22
+ function __construct() {
23
+
24
+ $this->id = 'admin_orders_list';
25
+ $this->short_desc = __( 'Admin Orders List', 'woocommerce-jetpack' );
26
+ $this->desc = __( 'Customize WooCommerce admin orders list: add custom columns; add multiple status filtering.', 'woocommerce-jetpack' );
27
+ $this->link_slug = 'woocommerce-admin-orders-list';
28
+ parent::__construct();
29
+
30
+ if ( $this->is_enabled() ) {
31
+
32
+ // Custom columns
33
+ if ( 'yes' === get_option( 'wcj_order_admin_list_custom_columns_enabled', 'no' ) ) {
34
+ add_filter( 'manage_edit-shop_order_columns', array( $this, 'add_order_columns' ), PHP_INT_MAX - 1 );
35
+ add_action( 'manage_shop_order_posts_custom_column', array( $this, 'render_order_column' ), PHP_INT_MAX );
36
+ if ( 'yes' === get_option( 'wcj_orders_list_custom_columns_country', 'no' ) || 'yes' === get_option( 'wcj_orders_list_custom_columns_currency', 'no' ) ) {
37
+ // Billing country or Currency filtering
38
+ add_action( 'restrict_manage_posts', array( $this, 'restrict_manage_posts' ) );
39
+ add_filter( 'parse_query', array( $this, 'parse_query' ) );
40
+ }
41
+ // Maybe make sortable custom columns
42
+ add_filter( 'manage_edit-shop_order_sortable_columns', array( $this, 'shop_order_sortable_columns' ) );
43
+ add_action( 'pre_get_posts', array( $this, 'shop_order_pre_get_posts_order_by_column' ), 1 );
44
+ }
45
+
46
+ // Multiple status
47
+ if ( 'yes' === get_option( 'wcj_order_admin_list_multiple_status_enabled', 'no' ) ) {
48
+ if ( 'yes' === get_option( 'wcj_order_admin_list_multiple_status_not_completed_link', 'no' ) ) {
49
+ add_filter( 'views_edit-shop_order', array( $this, 'add_shop_order_multiple_statuses_not_completed_link' ) );
50
+ add_action( 'pre_get_posts', array( $this, 'filter_shop_order_multiple_statuses_not_completed_link' ), PHP_INT_MAX, 1 );
51
+ }
52
+ if ( 'no' != get_option( 'wcj_order_admin_list_multiple_status_filter', 'no' ) ) {
53
+ add_action( 'restrict_manage_posts', array( $this, 'add_shop_order_multiple_statuses' ), PHP_INT_MAX, 2 );
54
+ add_action( 'pre_get_posts', array( $this, 'filter_shop_order_multiple_statuses' ), PHP_INT_MAX, 1 );
55
+ }
56
+ if ( 'yes' === get_option( 'wcj_order_admin_list_hide_default_statuses_menu', 'no' ) ) {
57
+ add_action( 'admin_head', array( $this, 'hide_default_statuses_menu' ), PHP_INT_MAX );
58
+ }
59
+ }
60
+
61
+ // Columns Order
62
+ if ( 'yes' === get_option( 'wcj_order_admin_list_columns_order_enabled', 'no' ) ) {
63
+ add_filter( 'manage_edit-shop_order_columns', array( $this, 'rearange_order_columns' ), PHP_INT_MAX - 1 );
64
+ }
65
+
66
+ }
67
+ }
68
+
69
+ /**
70
+ * shop_order_pre_get_posts_order_by_column.
71
+ *
72
+ * @version 2.9.0
73
+ * @since 2.9.0
74
+ * @todo add sortable to "Billing Country" and "Currency Code"
75
+ * @todo move custom columns section (probably with reordering and multiple status sections) to new module (e.g. (Admin) Order(s) List) - same with products custom columns
76
+ * @todo (maybe) add filtering to custom columns (as it's done for "Billing Country" and "Currency Code")
77
+ */
78
+ function shop_order_pre_get_posts_order_by_column( $query ) {
79
+ if (
80
+ $query->is_main_query() &&
81
+ ( $orderby = $query->get( 'orderby' ) ) &&
82
+ isset( $query->query['post_type'] ) && 'shop_order' === $query->query['post_type'] &&
83
+ isset( $query->is_admin ) && 1 == $query->is_admin
84
+ ) {
85
+ if ( 'wcj_orders_custom_column_' === substr( $orderby, 0, 25 ) ) {
86
+ $index = substr( $orderby, 25 );
87
+ $query->set( 'orderby', get_option( 'wcj_orders_list_custom_columns_sortable_' . $index, 'no' ) ); // 'meta_value' or 'meta_value_num'
88
+ $query->set( 'meta_key', get_option( 'wcj_orders_list_custom_columns_sortable_key_' . $index, '' ) );
89
+ }
90
+ }
91
+ }
92
+
93
+ /**
94
+ * Make columns sortable.
95
+ *
96
+ * @version 2.9.0
97
+ * @since 2.9.0
98
+ * @param array $columns
99
+ * @return array
100
+ */
101
+ function shop_order_sortable_columns( $columns ) {
102
+ $custom = array();
103
+ $total_number = apply_filters( 'booster_get_option', 1, get_option( 'wcj_orders_list_custom_columns_total_number', 1 ) );
104
+ for ( $i = 1; $i <= $total_number; $i++ ) {
105
+ if ( 'yes' === get_option( 'wcj_orders_list_custom_columns_enabled_' . $i, 'no' ) ) {
106
+ if ( 'no' != get_option( 'wcj_orders_list_custom_columns_sortable_' . $i, 'no' ) && '' != get_option( 'wcj_orders_list_custom_columns_sortable_key_' . $i, '' ) ) {
107
+ $custom[ 'wcj_orders_custom_column_' . $i ] = 'wcj_orders_custom_column_' . $i;
108
+ }
109
+ }
110
+ }
111
+ return ( ! empty( $custom ) ? wp_parse_args( $custom, $columns ) : $columns );
112
+ }
113
+
114
+ /**
115
+ * hide_default_statuses_menu.
116
+ *
117
+ * @version 2.5.7
118
+ * @since 2.5.7
119
+ */
120
+ function hide_default_statuses_menu() {
121
+ echo '<style>body.post-type-shop_order ul.subsubsub {display: none !important;}</style>';
122
+ }
123
+
124
+ /**
125
+ * get_orders_default_columns_in_order.
126
+ *
127
+ * @version 2.5.7
128
+ * @since 2.5.7
129
+ */
130
+ function get_orders_default_columns_in_order() {
131
+ $columns = array(
132
+ 'cb',
133
+ 'order_status',
134
+ 'order_title',
135
+ 'order_items',
136
+ 'billing_address',
137
+ 'shipping_address',
138
+ 'customer_message',
139
+ 'order_notes',
140
+ 'order_date',
141
+ 'order_total',
142
+ 'order_actions',
143
+ );
144
+ return implode( PHP_EOL, $columns );
145
+ }
146
+
147
+ /**
148
+ * add_shop_order_multiple_statuses_not_completed_link.
149
+ *
150
+ * @version 2.5.7
151
+ * @since 2.5.7
152
+ */
153
+ function add_shop_order_multiple_statuses_not_completed_link( $views ) {
154
+ global $wp_query;
155
+ if ( ! current_user_can( 'edit_others_pages' ) ) {
156
+ return $views;
157
+ }
158
+ $all_not_completed_statuses = wc_get_order_statuses();
159
+ unset( $all_not_completed_statuses['wc-completed'] );
160
+ $all_not_completed_statuses = array_keys( $all_not_completed_statuses );
161
+ $all_not_completed_statuses_param = urlencode( implode( ',', $all_not_completed_statuses ) );
162
+ $class = ( isset( $wp_query->query['post_status'] ) && is_array( $wp_query->query['post_status'] ) && $all_not_completed_statuses === $wp_query->query['post_status'] ) ? 'current' : '';
163
+ $query_string = remove_query_arg( array( 'post_status', 'wcj_admin_filter_statuses' ) );
164
+ $query_string = add_query_arg( 'post_status', $all_not_completed_statuses_param, $query_string );
165
+ $views['wcj_statuses_not_completed'] = '<a href="' . esc_url( $query_string ) . '" class="' . esc_attr( $class ) . '">' . __( 'Not Completed', 'woocommerce-jetpack' ) . '</a>';
166
+ return $views;
167
+ }
168
+
169
+ /**
170
+ * filter_shop_order_multiple_statuses_not_completed_link.
171
+ *
172
+ * @version 2.5.7
173
+ * @since 2.5.7
174
+ */
175
+ function filter_shop_order_multiple_statuses_not_completed_link( $query ) {
176
+ if ( false !== strpos( $_SERVER['REQUEST_URI'], '/wp-admin/edit.php' ) && isset( $_GET['post_type'] ) && 'shop_order' === $_GET['post_type'] ) {
177
+ if ( current_user_can( 'edit_others_pages' ) ) {
178
+ if ( isset( $_GET['post_status'] ) && false !== strpos( $_GET['post_status'], ',' ) ) {
179
+ $post_statuses = explode( ',', $_GET['post_status'] );
180
+ $query->query['post_status'] = $post_statuses;
181
+ $query->query_vars['post_status'] = $post_statuses;
182
+ }
183
+ }
184
+ }
185
+ }
186
+
187
+ /**
188
+ * multiple_shop_order_statuses.
189
+ *
190
+ * @version 2.5.7
191
+ * @since 2.5.7
192
+ */
193
+ function multiple_shop_order_statuses( $type ) {
194
+ $checked_post_statuses = isset( $_GET['wcj_admin_filter_statuses'] ) ? $_GET['wcj_admin_filter_statuses'] : array();
195
+ $html = '';
196
+ $html .= ( 'checkboxes' === $type ) ?
197
+ '<span id="wcj_admin_filter_shop_order_statuses">' :
198
+ '<select multiple name="wcj_admin_filter_statuses[]" id="wcj_admin_filter_shop_order_statuses">';
199
+ $num_posts = wp_count_posts( 'shop_order', 'readable' );
200
+ foreach ( wc_get_order_statuses() as $status_id => $status_title ) {
201
+ $total_number = ( isset( $num_posts->{$status_id} ) ) ? $num_posts->{$status_id} : 0;
202
+ if ( $total_number > 0 ) {
203
+ $html .= ( 'checkboxes' === $type ) ?
204
+ '<input type="checkbox" name="wcj_admin_filter_statuses[]" value="' . $status_id . '"' . checked( in_array( $status_id, $checked_post_statuses ), true, false ) . '>' . $status_title . ' (' . $total_number . ') ' :
205
+ '<option value="' . $status_id . '"' . selected( in_array( $status_id, $checked_post_statuses ), true, false ) . '>' . $status_title . ' (' . $total_number . ') ' . '</option>';
206
+ }
207
+ }
208
+ $html .= ( 'checkboxes' === $type ) ?
209
+ '</span>' :
210
+ '</select>';
211
+ return $html;
212
+ }
213
+
214
+ /**
215
+ * add_shop_order_multiple_statuses.
216
+ *
217
+ * @version 2.5.7
218
+ * @since 2.5.7
219
+ */
220
+ function add_shop_order_multiple_statuses( $post_type, $which ) {
221
+ if ( 'shop_order' === $post_type ) {
222
+ echo $this->multiple_shop_order_statuses( get_option( 'wcj_order_admin_list_multiple_status_filter', 'no' ) );
223
+ }
224
+ }
225
+
226
+ /**
227
+ * filter_shop_order_multiple_statuses.
228
+ *
229
+ * @version 2.5.7
230
+ * @since 2.5.7
231
+ */
232
+ function filter_shop_order_multiple_statuses( $query ) {
233
+ if ( false !== strpos( $_SERVER['REQUEST_URI'], '/wp-admin/edit.php' ) && isset( $_GET['post_type'] ) && 'shop_order' === $_GET['post_type'] ) {
234
+ if ( current_user_can( 'edit_others_pages' ) ) {
235
+ if ( isset( $_GET['wcj_admin_filter_statuses'] ) ) {
236
+ $post_statuses = $_GET['wcj_admin_filter_statuses'];
237
+ $query->query['post_status'] = $post_statuses;
238
+ $query->query_vars['post_status'] = $post_statuses;
239
+ }
240
+ }
241
+ }
242
+ }
243
+
244
+ /**
245
+ * Filter the orders in admin based on options.
246
+ *
247
+ * @version 2.8.0
248
+ * @access public
249
+ * @param mixed $query
250
+ * @return void
251
+ */
252
+ function parse_query( $query ) {
253
+ global $typenow, $wp_query;
254
+ if ( $typenow != 'shop_order' ) {
255
+ return;
256
+ }
257
+ if ( 'yes' === get_option( 'wcj_orders_list_custom_columns_country', 'no' ) && isset( $_GET['country'] ) && 'all' != $_GET['country'] ) {
258
+ $query->query_vars['meta_query'][] = array(
259
+ 'key' => '_billing_country',
260
+ 'value' => $_GET['country'],
261
+ );
262
+ }
263
+ if ( 'yes' === get_option( 'wcj_orders_list_custom_columns_currency', 'no' ) && isset( $_GET['currency'] ) && 'all' != $_GET['currency'] ) {
264
+ $query->query_vars['meta_query'][] = array(
265
+ 'key' => '_order_currency',
266
+ 'value' => $_GET['currency'],
267
+ );
268
+ }
269
+ }
270
+
271
+ /**
272
+ * Filters for post types.
273
+ *
274
+ * @version 2.8.0
275
+ */
276
+ function restrict_manage_posts() {
277
+ global $typenow, $wp_query;
278
+ if ( in_array( $typenow, wc_get_order_types( 'order-meta-boxes' ) ) ) {
279
+ if ( 'yes' === get_option( 'wcj_orders_list_custom_columns_country', 'no' ) ) {
280
+ $selected_coutry = isset( $_GET['country'] ) ? $_GET['country'] : 'all';
281
+ $countries = array_merge( array( 'all' => __( 'All countries', 'woocommerce-jetpack' ) ), wcj_get_countries() );
282
+ echo '<select id="country" name="country">';
283
+ foreach ( $countries as $code => $name ) {
284
+ echo '<option value="' . $code . '" ' . selected( $code, $selected_coutry, false ) . '>' . $name . '</option>';
285
+ }
286
+ echo '</select>';
287
+ }
288
+ if ( 'yes' === get_option( 'wcj_orders_list_custom_columns_currency', 'no' ) ) {
289
+ $selected_currency = isset( $_GET['currency'] ) ? $_GET['currency'] : 'all';
290
+ $currencies = array_merge( array( 'all' => __( 'All currencies', 'woocommerce-jetpack' ) ), wcj_get_currencies_names_and_symbols() );
291
+ echo '<select id="currency" name="currency">';
292
+ foreach ( $currencies as $code => $name ) {
293
+ echo '<option value="' . $code . '" ' . selected( $code, $selected_currency, false ) . '>' . $name . '</option>';
294
+ }
295
+ echo '</select>';
296
+ }
297
+ }
298
+ }
299
+
300
+ /**
301
+ * rearange_order_columns.
302
+ *
303
+ * @version 2.5.7
304
+ * @version 2.5.7
305
+ */
306
+ function rearange_order_columns( $columns ) {
307
+ $reordered_columns = get_option( 'wcj_order_admin_list_columns_order', $this->get_orders_default_columns_in_order() );
308
+ $reordered_columns = explode( PHP_EOL, $reordered_columns );
309
+ $reordered_columns_result = array();
310
+ if ( ! empty( $reordered_columns ) ) {
311
+ foreach ( $reordered_columns as $column_id ) {
312
+ $column_id = str_replace( "\n", '', $column_id );
313
+ $column_id = str_replace( "\r", '', $column_id );
314
+ if ( '' != $column_id && isset( $columns[ $column_id ] ) ) {
315
+ $reordered_columns_result[ $column_id ] = $columns[ $column_id ];
316
+ unset( $columns[ $column_id ] );
317
+ }
318
+ }
319
+ }
320
+ return array_merge( $reordered_columns_result, $columns );
321
+ }
322
+
323
+ /**
324
+ * add_order_columns.
325
+ *
326
+ * @version 2.8.0
327
+ */
328
+ function add_order_columns( $columns ) {
329
+ if ( 'yes' === get_option( 'wcj_orders_list_custom_columns_country', 'no' ) ) {
330
+ $columns['country'] = __( 'Billing Country', 'woocommerce-jetpack' );
331
+ }
332
+ if ( 'yes' === get_option( 'wcj_orders_list_custom_columns_currency', 'no' ) ) {
333
+ $columns['currency'] = __( 'Currency Code', 'woocommerce-jetpack' );
334
+ }
335
+ $total_number = apply_filters( 'booster_get_option', 1, get_option( 'wcj_orders_list_custom_columns_total_number', 1 ) );
336
+ for ( $i = 1; $i <= $total_number; $i++ ) {
337
+ if ( 'yes' === get_option( 'wcj_orders_list_custom_columns_enabled_' . $i, 'no' ) ) {
338
+ $columns[ 'wcj_orders_custom_column_' . $i ] = get_option( 'wcj_orders_list_custom_columns_label_' . $i, '' );
339
+ }
340
+ }
341
+ return $columns;
342
+ }
343
+
344
+ /**
345
+ * Output custom columns for orders
346
+ *
347
+ * @version 2.8.0
348
+ * @param string $column
349
+ */
350
+ function render_order_column( $column ) {
351
+ if ( 'country' === $column && 'yes' === get_option( 'wcj_orders_list_custom_columns_country', 'no' ) ) {
352
+ $country_code = do_shortcode( '[wcj_order_checkout_field field_id="billing_country"]' );
353
+ echo ( 2 == strlen( $country_code ) )
354
+ ? wcj_get_country_flag_by_code( $country_code ) . ' ' . wcj_get_country_name_by_code( $country_code )
355
+ : wcj_get_country_name_by_code( $country_code );
356
+ } elseif ( 'currency' === $column && 'yes' === get_option( 'wcj_orders_list_custom_columns_currency', 'no' ) ) {
357
+ echo do_shortcode( '[wcj_order_currency]' );
358
+ } else {
359
+ $total_number = apply_filters( 'booster_get_option', 1, get_option( 'wcj_orders_list_custom_columns_total_number', 1 ) );
360
+ for ( $i = 1; $i <= $total_number; $i++ ) {
361
+ if ( 'yes' === get_option( 'wcj_orders_list_custom_columns_enabled_' . $i, 'no' ) ) {
362
+ if ( 'wcj_orders_custom_column_' . $i === $column ) {
363
+ echo do_shortcode( get_option( 'wcj_orders_list_custom_columns_value_' . $i, '' ) );
364
+ }
365
+ }
366
+ }
367
+ }
368
+ }
369
+
370
+ }
371
+
372
+ endif;
373
+
374
+ return new WCJ_Admin_Orders_List();
includes/class-wcj-admin-products-list.php ADDED
@@ -0,0 +1,127 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Booster for WooCommerce - Module - Admin Products List
4
+ *
5
+ * @version 3.2.4
6
+ * @since 3.2.4
7
+ * @author Algoritmika Ltd.
8
+ */
9
+
10
+ if ( ! defined( 'ABSPATH' ) ) exit;
11
+
12
+ if ( ! class_exists( 'WCJ_Admin_Products_List' ) ) :
13
+
14
+ class WCJ_Admin_Products_List extends WCJ_Module {
15
+
16
+ /**
17
+ * Constructor.
18
+ *
19
+ * @version 3.2.4
20
+ * @since 3.2.4
21
+ */
22
+ function __construct() {
23
+
24
+ $this->id = 'admin_products_list';
25
+ $this->short_desc = __( 'Admin Products List', 'woocommerce-jetpack' );
26
+ $this->desc = __( 'Customize WooCommerce admin products list.', 'woocommerce-jetpack' );
27
+ $this->link_slug = 'woocommerce-admin-products-list';
28
+ parent::__construct();
29
+
30
+ if ( $this->is_enabled() ) {
31
+ // Admin list - custom columns
32
+ if ( 'yes' === get_option( 'wcj_products_admin_list_custom_columns_enabled', 'no' ) ) {
33
+ add_filter( 'manage_edit-product_columns', array( $this, 'add_product_columns' ), PHP_INT_MAX );
34
+ add_action( 'manage_product_posts_custom_column', array( $this, 'render_product_column' ), PHP_INT_MAX );
35
+ }
36
+
37
+ // Admin list - columns order
38
+ if ( 'yes' === get_option( 'wcj_products_admin_list_columns_order_enabled', 'no' ) ) {
39
+ add_filter( 'manage_edit-product_columns', array( $this, 'rearange_product_columns' ), PHP_INT_MAX );
40
+ }
41
+ }
42
+ }
43
+
44
+ /**
45
+ * rearange_product_columns.
46
+ *
47
+ * @version 2.9.0
48
+ * @since 2.9.0
49
+ */
50
+ function rearange_product_columns( $columns ) {
51
+ $reordered_columns = get_option( 'wcj_products_admin_list_columns_order', $this->get_products_default_columns_in_order() );
52
+ $reordered_columns = explode( PHP_EOL, $reordered_columns );
53
+ $reordered_columns_result = array();
54
+ if ( ! empty( $reordered_columns ) ) {
55
+ foreach ( $reordered_columns as $column_id ) {
56
+ $column_id = str_replace( "\n", '', $column_id );
57
+ $column_id = str_replace( "\r", '', $column_id );
58
+ if ( '' != $column_id && isset( $columns[ $column_id ] ) ) {
59
+ $reordered_columns_result[ $column_id ] = $columns[ $column_id ];
60
+ unset( $columns[ $column_id ] );
61
+ }
62
+ }
63
+ }
64
+ return array_merge( $reordered_columns_result, $columns );
65
+ }
66
+
67
+ /**
68
+ * get_products_default_columns_in_order.
69
+ *
70
+ * @version 2.9.0
71
+ * @since 2.9.0
72
+ */
73
+ function get_products_default_columns_in_order() {
74
+ $columns = array(
75
+ 'cb',
76
+ 'thumb',
77
+ 'name',
78
+ 'sku',
79
+ 'is_in_stock',
80
+ 'price',
81
+ 'product_cat',
82
+ 'product_tag',
83
+ 'featured',
84
+ 'product_type',
85
+ 'date',
86
+ );
87
+ return implode( PHP_EOL, $columns );
88
+ }
89
+
90
+ /**
91
+ * add_product_columns.
92
+ *
93
+ * @version 2.9.0
94
+ * @since 2.9.0
95
+ */
96
+ function add_product_columns( $columns ) {
97
+ $total_number = apply_filters( 'booster_get_option', 1, get_option( 'wcj_products_admin_list_custom_columns_total_number', 1 ) );
98
+ for ( $i = 1; $i <= $total_number; $i++ ) {
99
+ if ( 'yes' === get_option( 'wcj_products_admin_list_custom_columns_enabled_' . $i, 'no' ) ) {
100
+ $columns[ 'wcj_products_custom_column_' . $i ] = get_option( 'wcj_products_admin_list_custom_columns_label_' . $i, '' );
101
+ }
102
+ }
103
+ return $columns;
104
+ }
105
+
106
+ /**
107
+ * render_product_column.
108
+ *
109
+ * @version 2.9.0
110
+ * @since 2.9.0
111
+ */
112
+ function render_product_column( $column ) {
113
+ $total_number = apply_filters( 'booster_get_option', 1, get_option( 'wcj_products_admin_list_custom_columns_total_number', 1 ) );
114
+ for ( $i = 1; $i <= $total_number; $i++ ) {
115
+ if ( 'yes' === get_option( 'wcj_products_admin_list_custom_columns_enabled_' . $i, 'no' ) ) {
116
+ if ( 'wcj_products_custom_column_' . $i === $column ) {
117
+ echo do_shortcode( get_option( 'wcj_products_admin_list_custom_columns_value_' . $i, '' ) );
118
+ }
119
+ }
120
+ }
121
+ }
122
+
123
+ }
124
+
125
+ endif;
126
+
127
+ return new WCJ_Admin_Products_List();
includes/class-wcj-call-for-price.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Module - Call for Price
4
  *
5
- * @version 2.8.0
6
  * @author Algoritmika Ltd.
7
  */
8
 
@@ -15,7 +15,9 @@ class WCJ_Call_For_Price extends WCJ_module {
15
  /**
16
  * Constructor.
17
  *
18
- * @version 2.8.0
 
 
19
  */
20
  function __construct() {
21
 
@@ -25,67 +27,143 @@ class WCJ_Call_For_Price extends WCJ_module {
25
  $this->link_slug = 'woocommerce-call-for-price';
26
  parent::__construct();
27
 
28
- // Defaults
29
- $this->default_empty_price_text = '<strong>Call for price</strong>';
30
-
31
  if ( $this->is_enabled() ) {
32
- add_action( 'init', array( $this, 'add_hook' ), PHP_INT_MAX );
33
- add_filter( 'woocommerce_sale_flash', array( $this, 'hide_sales_flash' ), 100, 3 );
34
-
 
 
 
35
  if ( 'yes' === get_option( 'wcj_call_for_price_make_all_empty', 'no' ) ) {
36
- add_filter( WCJ_PRODUCT_GET_PRICE_FILTER, array( $this, 'make_empty_price' ), PHP_INT_MAX, 2 );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
37
  }
38
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
39
  }
40
 
41
  /**
42
  * make_empty_price.
43
  *
44
- * @version 2.5.7
45
  * @since 2.5.7
46
  */
47
  function make_empty_price( $price, $_product ) {
48
- return ( ! $_product->is_type( array( 'variable', 'variation' ) ) ) ? '' : $price;
49
  }
50
 
51
  /**
52
- * add_hook.
 
 
53
  */
54
- function add_hook() {
55
- add_filter( 'woocommerce_empty_price_html', array( $this, 'on_empty_price' ), PHP_INT_MAX );
 
 
 
56
  }
57
 
58
  /**
59
  * Hide "sales" icon for empty price products.
 
 
 
60
  */
61
  function hide_sales_flash( $onsale_html, $post, $product ) {
62
- if ( get_option('wcj_call_for_price_hide_sale_sign') === 'yes' ) {
63
- if ( $product->get_price() === '' ) {
64
- return '';
65
- }
66
  }
67
  return $onsale_html;
68
  }
69
 
70
  /**
71
  * On empty price filter - return the label.
 
 
 
72
  */
73
- function on_empty_price( $price ) {
74
- if ( ( get_option( 'wcj_call_for_price_text' ) !== '' ) && is_single( get_the_ID() ) ) {
75
- return do_shortcode( apply_filters( 'booster_get_option', $this->default_empty_price_text, get_option( 'wcj_call_for_price_text' ) ) );
 
 
 
 
 
 
 
 
 
 
76
  }
77
- if ( ( get_option( 'wcj_call_for_price_text_on_related' ) !== '' ) && ( is_single() ) && ( ! is_single( get_the_ID() ) ) ) {
78
- return do_shortcode( apply_filters( 'booster_get_option', $this->default_empty_price_text, get_option( 'wcj_call_for_price_text_on_related' ) ) );
79
- }
80
- if ( ( get_option( 'wcj_call_for_price_text_on_archive' ) !== '' ) && is_archive() ) {
81
- return do_shortcode( apply_filters( 'booster_get_option', $this->default_empty_price_text, get_option( 'wcj_call_for_price_text_on_archive' ) ) );
82
- }
83
- if ( ( get_option( 'wcj_call_for_price_text_on_home' ) !== '' ) && is_front_page() ) {
84
- return do_shortcode( apply_filters( 'booster_get_option', $this->default_empty_price_text, get_option( 'wcj_call_for_price_text_on_home' ) ) );
85
- }
86
-
87
- // No changes
88
- return $price;
89
  }
90
 
91
  }
2
  /**
3
  * Booster for WooCommerce - Module - Call for Price
4
  *
5
+ * @version 3.2.4
6
  * @author Algoritmika Ltd.
7
  */
8
 
15
  /**
16
  * Constructor.
17
  *
18
+ * @version 3.2.4
19
+ * @todo add "per product type" labels
20
+ * @todo add "per product" labels
21
  */
22
  function __construct() {
23
 
27
  $this->link_slug = 'woocommerce-call-for-price';
28
  parent::__construct();
29
 
 
 
 
30
  if ( $this->is_enabled() ) {
31
+ add_filter( 'woocommerce_get_variation_prices_hash', array( $this, 'get_variation_prices_hash' ), PHP_INT_MAX, 3 );
32
+ add_action( 'init', array( $this, 'add_empty_price_hooks' ), PHP_INT_MAX );
33
+ add_filter( 'woocommerce_sale_flash', array( $this, 'hide_sales_flash' ), PHP_INT_MAX, 3 );
34
+ add_action( 'admin_head', array( $this, 'hide_variation_price_required_placeholder' ), PHP_INT_MAX );
35
+ add_filter( 'woocommerce_variation_is_visible', array( $this, 'make_variation_visible_with_empty_price' ), PHP_INT_MAX, 4 );
36
+ add_action( 'wp_head', array( $this, 'hide_disabled_variation_add_to_cart_button' ) );
37
  if ( 'yes' === get_option( 'wcj_call_for_price_make_all_empty', 'no' ) ) {
38
+ add_filter( WCJ_PRODUCT_GET_PRICE_FILTER, array( $this, 'make_empty_price' ), PHP_INT_MAX, 2 );
39
+ add_filter( 'woocommerce_variation_prices_price', array( $this, 'make_empty_price' ), PHP_INT_MAX, 2 );
40
+ if ( ! WCJ_IS_WC_VERSION_BELOW_3 ) {
41
+ add_filter( 'woocommerce_product_variation_get_price', array( $this, 'make_empty_price' ), PHP_INT_MAX, 2 );
42
+ }
43
+ }
44
+ }
45
+ }
46
+
47
+ /**
48
+ * get_variation_prices_hash.
49
+ *
50
+ * @version 3.2.4
51
+ * @since 3.2.4
52
+ * @todo not sure if this is really needed
53
+ */
54
+ function get_variation_prices_hash( $price_hash, $_product, $display ) {
55
+ $price_hash['wcj_call_for_price'] = array(
56
+ get_option( 'wcj_call_for_price_make_all_empty', 'no' ),
57
+ );
58
+ return $price_hash;
59
+ }
60
+
61
+ /**
62
+ * make_variation_visible_with_empty_price.
63
+ *
64
+ * @version 3.2.4
65
+ * @since 3.2.4
66
+ * @return bool
67
+ */
68
+ function make_variation_visible_with_empty_price( $visible, $_variation_id, $_id, $_product ) {
69
+ if ( '' === $_product->get_price() ) {
70
+ $visible = true;
71
+ // Published == enabled checkbox
72
+ if ( get_post_status( $_variation_id ) != 'publish' ) {
73
+ $visible = false;
74
  }
75
  }
76
+ return $visible;
77
+ }
78
+
79
+ /**
80
+ * hide_disabled_variation_add_to_cart_button.
81
+ *
82
+ * @version 3.2.4
83
+ * @since 3.2.4
84
+ */
85
+ function hide_disabled_variation_add_to_cart_button() {
86
+ echo '<style>div.woocommerce-variation-add-to-cart-disabled { display: none ! important; }</style>';
87
+ }
88
+
89
+ /**
90
+ * hide_variation_price_required_placeholder.
91
+ *
92
+ * @version 3.2.4
93
+ * @since 3.2.4
94
+ */
95
+ function hide_variation_price_required_placeholder() {
96
+ echo '<style>
97
+ div.variable_pricing input.wc_input_price::-webkit-input-placeholder { /* WebKit browsers */
98
+ color: transparent;
99
+ }
100
+ div.variable_pricing input.wc_input_price:-moz-placeholder { /* Mozilla Firefox 4 to 18 */
101
+ color: transparent;
102
+ }
103
+ div.variable_pricing input.wc_input_price::-moz-placeholder { /* Mozilla Firefox 19+ */
104
+ color: transparent;
105
+ }
106
+ div.variable_pricing input.wc_input_price:-ms-input-placeholder { /* Internet Explorer 10+ */
107
+ color: transparent;
108
+ }
109
+ </style>';
110
  }
111
 
112
  /**
113
  * make_empty_price.
114
  *
115
+ * @version 3.2.4
116
  * @since 2.5.7
117
  */
118
  function make_empty_price( $price, $_product ) {
119
+ return '';
120
  }
121
 
122
  /**
123
+ * add_empty_price_hooks.
124
+ *
125
+ * @version 3.2.4
126
  */
127
+ function add_empty_price_hooks() {
128
+ add_filter( 'woocommerce_empty_price_html', array( $this, 'on_empty_price' ), PHP_INT_MAX, 2 );
129
+ add_filter( 'woocommerce_variable_empty_price_html', array( $this, 'on_empty_price' ), PHP_INT_MAX, 2 );
130
+ add_filter( 'woocommerce_grouped_empty_price_html', array( $this, 'on_empty_price' ), PHP_INT_MAX, 2 );
131
+ add_filter( 'woocommerce_variation_empty_price_html', array( $this, 'on_empty_price' ), PHP_INT_MAX, 2 ); // Only in < WC3
132
  }
133
 
134
  /**
135
  * Hide "sales" icon for empty price products.
136
+ *
137
+ * @version 3.2.4
138
+ * @todo recheck if we really need this
139
  */
140
  function hide_sales_flash( $onsale_html, $post, $product ) {
141
+ if ( 'yes' === get_option( 'wcj_call_for_price_hide_sale_sign', 'yes' ) && '' === $product->get_price() ) {
142
+ return '';
 
 
143
  }
144
  return $onsale_html;
145
  }
146
 
147
  /**
148
  * On empty price filter - return the label.
149
+ *
150
+ * @version 3.2.4
151
+ * @todo `is_page()`
152
  */
153
+ function on_empty_price( $price, $_product ) {
154
+ if ( '' !== get_option( 'wcj_call_for_price_text_variation' ) && $_product->is_type( 'variation' ) ) {
155
+ return do_shortcode( apply_filters( 'booster_get_option', '<strong>Call for price</strong>', get_option( 'wcj_call_for_price_text_variation' ) ) );
156
+ } elseif ( '' !== get_option( 'wcj_call_for_price_text' ) && is_single( get_the_ID() ) ) {
157
+ return do_shortcode( apply_filters( 'booster_get_option', '<strong>Call for price</strong>', get_option( 'wcj_call_for_price_text' ) ) );
158
+ } elseif ( '' !== get_option( 'wcj_call_for_price_text_on_related' ) && is_single() && ! is_single( get_the_ID() ) ) {
159
+ return do_shortcode( apply_filters( 'booster_get_option', '<strong>Call for price</strong>', get_option( 'wcj_call_for_price_text_on_related' ) ) );
160
+ } elseif ( '' !== get_option( 'wcj_call_for_price_text_on_archive' ) && is_archive() ) {
161
+ return do_shortcode( apply_filters( 'booster_get_option', '<strong>Call for price</strong>', get_option( 'wcj_call_for_price_text_on_archive' ) ) );
162
+ } elseif ( '' !== get_option( 'wcj_call_for_price_text_on_home' ) && is_front_page() ) {
163
+ return do_shortcode( apply_filters( 'booster_get_option', '<strong>Call for price</strong>', get_option( 'wcj_call_for_price_text_on_home' ) ) );
164
+ } else {
165
+ return $price;
166
  }
 
 
 
 
 
 
 
 
 
 
 
 
167
  }
168
 
169
  }
includes/class-wcj-checkout-custom-fields.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Module - Checkout Custom Fields
4
  *
5
- * @version 3.2.2
6
  * @author Algoritmika Ltd.
7
  */
8
 
@@ -16,6 +16,7 @@ class WCJ_Checkout_Custom_Fields extends WCJ_Module {
16
  * Constructor.
17
  *
18
  * @version 3.2.2
 
19
  */
20
  function __construct() {
21
 
@@ -103,12 +104,15 @@ class WCJ_Checkout_Custom_Fields extends WCJ_Module {
103
  /**
104
  * add_checkout_custom_fields_customer_meta_fields.
105
  *
106
- * @version 2.4.5
107
  * @since 2.4.5
108
  */
109
  function add_checkout_custom_fields_customer_meta_fields( $fields ) {
110
  for ( $i = 1; $i <= apply_filters( 'booster_get_option', 1, get_option( 'wcj_checkout_custom_fields_total_number', 1 ) ); $i++ ) {
111
  if ( 'yes' === get_option( 'wcj_checkout_custom_field_enabled_' . $i ) ) {
 
 
 
112
  $the_section = get_option( 'wcj_checkout_custom_field_section_' . $i );
113
  $the_key = 'wcj_checkout_field_' . $i;
114
  $the_name = $the_section . '_' . $the_key;
@@ -462,8 +466,9 @@ class WCJ_Checkout_Custom_Fields extends WCJ_Module {
462
  /**
463
  * is_visible.
464
  *
465
- * @version 2.8.0
466
  * @since 2.6.0
 
467
  */
468
  function is_visible( $i ) {
469
 
@@ -522,6 +527,25 @@ class WCJ_Checkout_Custom_Fields extends WCJ_Module {
522
  return false;
523
  }
524
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
525
  // All passed
526
  return true;
527
  }
@@ -529,7 +553,7 @@ class WCJ_Checkout_Custom_Fields extends WCJ_Module {
529
  /**
530
  * add_custom_checkout_fields.
531
  *
532
- * @version 2.8.0
533
  * @todo (maybe) fix - priority seems to not affect tab order (same in Checkout Core Fields module)
534
  */
535
  function add_custom_checkout_fields( $fields ) {
@@ -593,7 +617,7 @@ class WCJ_Checkout_Custom_Fields extends WCJ_Module {
593
  if ( 'select' === $the_type ) {
594
  $placeholder = get_option( 'wcj_checkout_custom_field_placeholder_' . $i );
595
  if ( '' != $placeholder ) {
596
- $select_options = array_merge( array( '' => $placeholder ), $select_options );
597
  }
598
  }
599
  $the_field['options'] = $select_options;
2
  /**
3
  * Booster for WooCommerce - Module - Checkout Custom Fields
4
  *
5
+ * @version 3.2.4
6
  * @author Algoritmika Ltd.
7
  */
8
 
16
  * Constructor.
17
  *
18
  * @version 3.2.2
19
+ * @todo (maybe) check if `'wcj_checkout_custom_field_customer_meta_fields_' . $i` option should affect `add_default_checkout_custom_fields`
20
  */
21
  function __construct() {
22
 
104
  /**
105
  * add_checkout_custom_fields_customer_meta_fields.
106
  *
107
+ * @version 3.2.4
108
  * @since 2.4.5
109
  */
110
  function add_checkout_custom_fields_customer_meta_fields( $fields ) {
111
  for ( $i = 1; $i <= apply_filters( 'booster_get_option', 1, get_option( 'wcj_checkout_custom_fields_total_number', 1 ) ); $i++ ) {
112
  if ( 'yes' === get_option( 'wcj_checkout_custom_field_enabled_' . $i ) ) {
113
+ if ( 'no' === get_option( 'wcj_checkout_custom_field_customer_meta_fields_' . $i, 'yes' ) ) {
114
+ continue;
115
+ }
116
  $the_section = get_option( 'wcj_checkout_custom_field_section_' . $i );
117
  $the_key = 'wcj_checkout_field_' . $i;
118
  $the_name = $the_section . '_' . $the_key;
466
  /**
467
  * is_visible.
468
  *
469
+ * @version 3.2.4
470
  * @since 2.6.0
471
+ * @todo add "user roles to include/exclude"
472
  */
473
  function is_visible( $i ) {
474
 
527
  return false;
528
  }
529
 
530
+ // Checking min/max cart amount
531
+ $cart_total = false;
532
+ if ( ( $min_cart_amount = get_option( 'wcj_checkout_custom_field_min_cart_amount_' . $i, 0 ) ) > 0 ) {
533
+ WC()->cart->calculate_totals();
534
+ $cart_total = WC()->cart->total;
535
+ if ( $cart_total < $min_cart_amount ) {
536
+ return false;
537
+ }
538
+ }
539
+ if ( ( $max_cart_amount = get_option( 'wcj_checkout_custom_field_max_cart_amount_' . $i, 0 ) ) > 0 ) {
540
+ if ( false === $cart_total ) {
541
+ WC()->cart->calculate_totals();
542
+ $cart_total = WC()->cart->total;
543
+ }
544
+ if ( $cart_total > $max_cart_amount ) {
545
+ return false;
546
+ }
547
+ }
548
+
549
  // All passed
550
  return true;
551
  }
553
  /**
554
  * add_custom_checkout_fields.
555
  *
556
+ * @version 3.2.4
557
  * @todo (maybe) fix - priority seems to not affect tab order (same in Checkout Core Fields module)
558
  */
559
  function add_custom_checkout_fields( $fields ) {
617
  if ( 'select' === $the_type ) {
618
  $placeholder = get_option( 'wcj_checkout_custom_field_placeholder_' . $i );
619
  if ( '' != $placeholder ) {
620
+ $select_options = array_replace( array( '' => $placeholder ), $select_options );
621
  }
622
  }
623
  $the_field['options'] = $select_options;
includes/class-wcj-currencies.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Module - Currencies
4
  *
5
- * @version 2.8.0
6
  * @author Algoritmika Ltd.
7
  */
8
 
@@ -15,13 +15,13 @@ class WCJ_Currencies extends WCJ_Module {
15
  /**
16
  * Constructor.
17
  *
18
- * @version 2.4.8
19
  */
20
  function __construct() {
21
 
22
  $this->id = 'currency';
23
  $this->short_desc = __( 'Currencies', 'woocommerce-jetpack' );
24
- $this->desc = __( 'Add all world currencies to your WooCommerce store; change currency symbol.', 'woocommerce-jetpack' );
25
  $this->link_slug = 'woocommerce-all-currencies';
26
  parent::__construct();
27
 
2
  /**
3
  * Booster for WooCommerce - Module - Currencies
4
  *
5
+ * @version 3.2.4
6
  * @author Algoritmika Ltd.
7
  */
8
 
15
  /**
16
  * Constructor.
17
  *
18
+ * @version 3.2.4
19
  */
20
  function __construct() {
21
 
22
  $this->id = 'currency';
23
  $this->short_desc = __( 'Currencies', 'woocommerce-jetpack' );
24
+ $this->desc = __( 'Add all world currencies and cryptocurrencies to your WooCommerce store; change currency symbol.', 'woocommerce-jetpack' );
25
  $this->link_slug = 'woocommerce-all-currencies';
26
  parent::__construct();
27
 
includes/class-wcj-currency-exchange-rates.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Module - Currency Exchange Rates
4
  *
5
- * @version 2.9.0
6
  * @since 2.3.0
7
  * @author Algoritmika Ltd.
8
  */
@@ -50,7 +50,7 @@ class WCJ_Currency_Exchange_Rates extends WCJ_Module {
50
  /**
51
  * add_currency_pair_setting.
52
  *
53
- * @version 2.6.0
54
  */
55
  function add_currency_pair_setting( $currency_from, $currency_to, $settings ) {
56
  if ( $currency_from != $currency_to ) {
@@ -70,9 +70,7 @@ class WCJ_Currency_Exchange_Rates extends WCJ_Module {
70
  'id' => $field_id,
71
  'default' => 0,
72
  'type' => 'exchange_rate',
73
- 'custom_attributes' => array( 'step' => '0.000001', 'min' => '0', ),
74
  'custom_attributes_button' => $custom_attributes,
75
- 'css' => 'width:100px;',
76
  'value' => $currency_from . '/' . $currency_to,
77
  );
78
  }
@@ -151,18 +149,54 @@ class WCJ_Currency_Exchange_Rates extends WCJ_Module {
151
  return $currencies;
152
  }
153
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
154
  /**
155
  * get_all_currencies_exchange_rates_settings.
156
  *
157
- * @version 2.9.0
158
  * @since 2.9.0
159
  */
160
- function get_all_currencies_exchange_rates_settings() {
 
 
 
 
 
161
  $settings = array();
162
  $currency_from = get_option( 'woocommerce_currency' );
163
  $currencies = $this->get_all_currencies_exchange_rates_currencies();
164
  foreach ( $currencies as $currency ) {
165
  $settings = $this->add_currency_pair_setting( $currency_from, $currency, $settings );
 
 
 
166
  }
167
  return $settings;
168
  }
2
  /**
3
  * Booster for WooCommerce - Module - Currency Exchange Rates
4
  *
5
+ * @version 3.2.4
6
  * @since 2.3.0
7
  * @author Algoritmika Ltd.
8
  */
50
  /**
51
  * add_currency_pair_setting.
52
  *
53
+ * @version 3.2.4
54
  */
55
  function add_currency_pair_setting( $currency_from, $currency_to, $settings ) {
56
  if ( $currency_from != $currency_to ) {
70
  'id' => $field_id,
71
  'default' => 0,
72
  'type' => 'exchange_rate',
 
73
  'custom_attributes_button' => $custom_attributes,
 
74
  'value' => $currency_from . '/' . $currency_to,
75
  );
76
  }
149
  return $currencies;
150
  }
151
 
152
+ /**
153
+ * add_currency_pair_server_setting.
154
+ *
155
+ * @version 3.2.4
156
+ * @since 3.2.4
157
+ */
158
+ function add_currency_pair_server_setting( $currency_from, $currency_to, $default_server, $settings ) {
159
+ if ( $currency_from != $currency_to ) {
160
+ $field_id = 'wcj_currency_exchange_rates_server_' . sanitize_title( $currency_from . $currency_to );
161
+ foreach ( $settings as $setting ) {
162
+ if ( $setting['id'] === $field_id ) {
163
+ return $settings;
164
+ }
165
+ }
166
+ $settings[] = array(
167
+ 'desc' => __( 'Exchange Rates Server', 'woocommerce-jetpack' ),
168
+ 'id' => $field_id,
169
+ 'default' => 'default_server',
170
+ 'type' => 'select',
171
+ 'options' => array_merge(
172
+ array( 'default_server' => sprintf( __( 'Use default: %s', 'woocommerce-jetpack' ), $default_server ) ),
173
+ wcj_get_currency_exchange_rate_servers()
174
+ ),
175
+ );
176
+ }
177
+ return $settings;
178
+ }
179
+
180
  /**
181
  * get_all_currencies_exchange_rates_settings.
182
  *
183
+ * @version 3.2.4
184
  * @since 2.9.0
185
  */
186
+ function get_all_currencies_exchange_rates_settings( $add_server = false ) {
187
+ if ( $add_server ) {
188
+ $exchange_rate_servers = wcj_get_currency_exchange_rate_servers();
189
+ $exchange_rate_server = get_option( 'wcj_currency_exchange_rates_server', 'ecb' );
190
+ $default_server = ( isset( $exchange_rate_servers[ $exchange_rate_server ] ) ? $exchange_rate_servers[ $exchange_rate_server ] : $exchange_rate_server );
191
+ }
192
  $settings = array();
193
  $currency_from = get_option( 'woocommerce_currency' );
194
  $currencies = $this->get_all_currencies_exchange_rates_currencies();
195
  foreach ( $currencies as $currency ) {
196
  $settings = $this->add_currency_pair_setting( $currency_from, $currency, $settings );
197
+ if ( $add_server ) {
198
+ $settings = $this->add_currency_pair_server_setting( $currency_from, $currency, $default_server, $settings );
199
+ }
200
  }
201
  return $settings;
202
  }
includes/class-wcj-currency-per-product.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Module - Currency per Product
4
  *
5
- * @version 3.2.1
6
  * @since 2.5.2
7
  * @author Algoritmika Ltd.
8
  */
@@ -18,6 +18,7 @@ class WCJ_Currency_Per_Product extends WCJ_Module {
18
  *
19
  * @version 2.8.0
20
  * @since 2.5.2
 
21
  */
22
  function __construct() {
23
 
@@ -420,14 +421,17 @@ class WCJ_Currency_Per_Product extends WCJ_Module {
420
  /**
421
  * change_currency_symbol.
422
  *
423
- * @version 2.7.0
424
  * @since 2.5.2
 
425
  */
426
  function change_currency_symbol( $currency_symbol, $currency ) {
427
  if ( false != ( $_currency = $this->get_current_product_id_and_currency() ) ) {
428
- return wcj_get_currency_symbol( $_currency );
 
 
429
  } elseif ( $this->is_cart_or_checkout_or_ajax() ) {
430
- return ( false != ( $_currency = $this->get_cart_checkout_currency() ) ) ? wcj_get_currency_symbol( $_currency ) : $currency_symbol;
431
  }
432
  return $currency_symbol;
433
  }
2
  /**
3
  * Booster for WooCommerce - Module - Currency per Product
4
  *
5
+ * @version 3.2.4
6
  * @since 2.5.2
7
  * @author Algoritmika Ltd.
8
  */
18
  *
19
  * @version 2.8.0
20
  * @since 2.5.2
21
+ * @todo (maybe) add `$this->price_hooks_priority`
22
  */
23
  function __construct() {
24
 
421
  /**
422
  * change_currency_symbol.
423
  *
424
+ * @version 3.2.4
425
  * @since 2.5.2
426
+ * @todo check do we really need this function? isn't `change_currency_code()` enough?
427
  */
428
  function change_currency_symbol( $currency_symbol, $currency ) {
429
  if ( false != ( $_currency = $this->get_current_product_id_and_currency() ) ) {
430
+ if ( $currency === $_currency ) {
431
+ return wcj_get_currency_symbol( $_currency );
432
+ }
433
  } elseif ( $this->is_cart_or_checkout_or_ajax() ) {
434
+ return ( false != ( $_currency = $this->get_cart_checkout_currency() ) && $currency === $_currency ) ? wcj_get_currency_symbol( $_currency ) : $currency_symbol;
435
  }
436
  return $currency_symbol;
437
  }
includes/class-wcj-eu-vat-number.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Module - EU VAT Number
4
  *
5
- * @version 3.2.2
6
  * @since 2.3.9
7
  * @author Algoritmika Ltd.
8
  */
@@ -343,7 +343,7 @@ class WCJ_EU_VAT_Number extends WCJ_Module {
343
  /**
344
  * maybe_exclude_vat.
345
  *
346
- * @version 2.5.7
347
  */
348
  // function maybe_exclude_vat( $matched_tax_rates, $args ) {
349
  function maybe_exclude_vat() {
@@ -364,7 +364,7 @@ class WCJ_EU_VAT_Number extends WCJ_Module {
364
  if ( 'EL' === $selected_country ) {
365
  $selected_country = 'GR';
366
  }
367
- $preserve_base_country_check_passed = ( $location['country'] !== $selected_country ) ? true : false;
368
  }
369
  if ( $preserve_base_country_check_passed ) {
370
  /* $modified_matched_tax_rates = array();
2
  /**
3
  * Booster for WooCommerce - Module - EU VAT Number
4
  *
5
+ * @version 3.2.4
6
  * @since 2.3.9
7
  * @author Algoritmika Ltd.
8
  */
343
  /**
344
  * maybe_exclude_vat.
345
  *
346
+ * @version 3.2.4
347
  */
348
  // function maybe_exclude_vat( $matched_tax_rates, $args ) {
349
  function maybe_exclude_vat() {
364
  if ( 'EL' === $selected_country ) {
365
  $selected_country = 'GR';
366
  }
367
+ $preserve_base_country_check_passed = ( strtoupper( $location['country'] ) !== strtoupper( $selected_country ) );
368
  }
369
  if ( $preserve_base_country_check_passed ) {
370
  /* $modified_matched_tax_rates = array();
includes/class-wcj-multicurrency.php CHANGED
@@ -52,7 +52,7 @@ class WCJ_Multicurrency extends WCJ_Module {
52
  * add_hooks.
53
  *
54
  * @version 3.2.2
55
- * @todo (maybe) replace all `PHP_INT_MAX - 1` with `$this->price_hooks_priority`
56
  */
57
  function add_hooks() {
58
  // Session
52
  * add_hooks.
53
  *
54
  * @version 3.2.2
55
+ * @todo (maybe) replace all `PHP_INT_MAX - 1` with `$this->price_hooks_priority` (especially for `woocommerce_currency_symbol` and `woocommerce_currency`)
56
  */
57
  function add_hooks() {
58
  // Session
includes/class-wcj-order-min-amount.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Module - Order Minimum Amount
4
  *
5
- * @version 3.2.3
6
  * @since 2.5.7
7
  * @author Algoritmika Ltd.
8
  * @todo order max amount
@@ -89,10 +89,13 @@ class WCJ_Order_Min_Amount extends WCJ_Module {
89
  /**
90
  * get_cart_total_for_minimal_order_amount.
91
  *
92
- * @version 2.6.0
93
  * @since 2.5.5
94
  */
95
  function get_cart_total_for_minimal_order_amount() {
 
 
 
96
  WC()->cart->calculate_totals();
97
  $cart_total = WC()->cart->total;
98
  if ( 'yes' === get_option( 'wcj_order_minimum_amount_exclude_shipping', 'no' ) ) {
@@ -100,6 +103,9 @@ class WCJ_Order_Min_Amount extends WCJ_Module {
100
  $shipping_tax_total = isset( WC()->cart->shipping_tax_total ) ? WC()->cart->shipping_tax_total : 0;
101
  $cart_total -= ( $shipping_total + $shipping_tax_total );
102
  }
 
 
 
103
  return $cart_total;
104
  }
105
 
2
  /**
3
  * Booster for WooCommerce - Module - Order Minimum Amount
4
  *
5
+ * @version 3.2.4
6
  * @since 2.5.7
7
  * @author Algoritmika Ltd.
8
  * @todo order max amount
89
  /**
90
  * get_cart_total_for_minimal_order_amount.
91
  *
92
+ * @version 3.2.4
93
  * @since 2.5.5
94
  */
95
  function get_cart_total_for_minimal_order_amount() {
96
+ if ( ! isset( WC()->cart ) ) {
97
+ return 0;
98
+ }
99
  WC()->cart->calculate_totals();
100
  $cart_total = WC()->cart->total;
101
  if ( 'yes' === get_option( 'wcj_order_minimum_amount_exclude_shipping', 'no' ) ) {
103
  $shipping_tax_total = isset( WC()->cart->shipping_tax_total ) ? WC()->cart->shipping_tax_total : 0;
104
  $cart_total -= ( $shipping_total + $shipping_tax_total );
105
  }
106
+ if ( 'yes' === get_option( 'wcj_order_minimum_amount_exclude_discounts', 'no' ) ) {
107
+ $cart_total += ( WC()->cart->get_cart_discount_total() + WC()->cart->get_cart_discount_tax_total() );
108
+ }
109
  return $cart_total;
110
  }
111
 
includes/class-wcj-orders.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Module - Orders
4
  *
5
- * @version 3.2.0
6
  * @author Algoritmika Ltd.
7
  */
8
 
@@ -15,13 +15,16 @@ class WCJ_Orders extends WCJ_Module {
15
  /**
16
  * Constructor.
17
  *
18
- * @version 3.2.0
 
 
 
19
  */
20
  function __construct() {
21
 
22
  $this->id = 'orders';
23
  $this->short_desc = __( 'Orders', 'woocommerce-jetpack' );
24
- $this->desc = __( 'Orders auto-complete. Custom admin order list columns. Admin order currency. Admin order list multiple status filtering.', 'woocommerce-jetpack' );
25
  $this->link_slug = 'woocommerce-orders';
26
  parent::__construct();
27
 
@@ -33,15 +36,6 @@ class WCJ_Orders extends WCJ_Module {
33
  add_action( 'woocommerce_payment_complete', array( $this, 'auto_complete_order' ), PHP_INT_MAX );
34
  }
35
 
36
- // Custom columns
37
- add_filter( 'manage_edit-shop_order_columns', array( $this, 'add_order_columns' ), PHP_INT_MAX - 1 );
38
- add_action( 'manage_shop_order_posts_custom_column', array( $this, 'render_order_column' ), PHP_INT_MAX );
39
- if ( 'yes' === get_option( 'wcj_orders_list_custom_columns_country', 'no' ) || 'yes' === get_option( 'wcj_orders_list_custom_columns_currency', 'no' ) ) {
40
- // Billing country or Currency filtering
41
- add_action( 'restrict_manage_posts', array( $this, 'restrict_manage_posts' ) );
42
- add_filter( 'parse_query', array( $this, 'parse_query' ) );
43
- }
44
-
45
  // Order currency
46
  if ( 'yes' === get_option( 'wcj_order_admin_currency', 'no' ) ) {
47
  $this->meta_box_screen = 'shop_order';
@@ -53,28 +47,6 @@ class WCJ_Orders extends WCJ_Module {
53
  }
54
  }
55
 
56
- // Multiple status
57
- if ( 'yes' === get_option( 'wcj_order_admin_list_multiple_status_not_completed_link', 'no' ) ) {
58
- add_filter( 'views_edit-shop_order', array( $this, 'add_shop_order_multiple_statuses_not_completed_link' ) );
59
- add_action( 'pre_get_posts', array( $this, 'filter_shop_order_multiple_statuses_not_completed_link' ), PHP_INT_MAX, 1 );
60
- }
61
- if ( 'no' != get_option( 'wcj_order_admin_list_multiple_status_filter', 'no' ) ) {
62
- add_action( 'restrict_manage_posts', array( $this, 'add_shop_order_multiple_statuses' ), PHP_INT_MAX, 2 );
63
- add_action( 'pre_get_posts', array( $this, 'filter_shop_order_multiple_statuses' ), PHP_INT_MAX, 1 );
64
- }
65
- if ( 'yes' === get_option( 'wcj_order_admin_list_hide_default_statuses_menu', 'no' ) ) {
66
- add_action( 'admin_head', array( $this, 'hide_default_statuses_menu' ), PHP_INT_MAX );
67
- }
68
-
69
- // Columns Order
70
- if ( 'yes' === get_option( 'wcj_order_admin_list_columns_order_enabled', 'no' ) ) {
71
- add_filter( 'manage_edit-shop_order_columns', array( $this, 'rearange_order_columns' ), PHP_INT_MAX - 1 );
72
- }
73
-
74
- // Maybe make sortable custom columns
75
- add_filter( 'manage_edit-shop_order_sortable_columns', array( $this, 'shop_order_sortable_columns' ) );
76
- add_action( 'pre_get_posts', array( $this, 'shop_order_pre_get_posts_order_by_column' ), 1 );
77
-
78
  // Bulk Regenerate Download Permissions
79
  if ( 'yes' === apply_filters( 'booster_get_option', 'no', get_option( 'wcj_order_bulk_regenerate_download_permissions_enabled', 'no' ) ) ) {
80
  // Actions
@@ -86,11 +58,31 @@ class WCJ_Orders extends WCJ_Module {
86
  add_action( 'woojetpack_after_settings_save', array( $this, 'maybe_bulk_regenerate_download_permissions_all_orders' ) );
87
  // Admin notices
88
  add_filter( 'admin_notices', array( $this, 'admin_notice_regenerate_download_permissions' ) );
 
 
 
 
 
 
 
89
  }
90
 
91
  }
92
  }
93
 
 
 
 
 
 
 
 
 
 
 
 
 
 
94
  /**
95
  * handle_bulk_actions_regenerate_download_permissions.
96
  *
@@ -190,181 +182,6 @@ class WCJ_Orders extends WCJ_Module {
190
  }
191
  }
192
 
193
- /**
194
- * shop_order_pre_get_posts_order_by_column.
195
- *
196
- * @version 2.9.0
197
- * @since 2.9.0
198
- * @todo add sortable to "Billing Country" and "Currency Code"
199
- * @todo move custom columns section (probably with reordering and multiple status sections) to new module (e.g. (Admin) Order(s) List) - same with products custom columns
200
- * @todo (maybe) add filtering to custom columns (as it's done for "Billing Country" and "Currency Code")
201
- */
202
- function shop_order_pre_get_posts_order_by_column( $query ) {
203
- if (
204
- $query->is_main_query() &&
205
- ( $orderby = $query->get( 'orderby' ) ) &&
206
- isset( $query->query['post_type'] ) && 'shop_order' === $query->query['post_type'] &&
207
- isset( $query->is_admin ) && 1 == $query->is_admin
208
- ) {
209
- if ( 'wcj_orders_custom_column_' === substr( $orderby, 0, 25 ) ) {
210
- $index = substr( $orderby, 25 );
211
- $query->set( 'orderby', get_option( 'wcj_orders_list_custom_columns_sortable_' . $index, 'no' ) ); // 'meta_value' or 'meta_value_num'
212
- $query->set( 'meta_key', get_option( 'wcj_orders_list_custom_columns_sortable_key_' . $index, '' ) );
213
- }
214
- }
215
- }
216
-
217
- /**
218
- * Make columns sortable.
219
- *
220
- * @version 2.9.0
221
- * @since 2.9.0
222
- * @param array $columns
223
- * @return array
224
- */
225
- function shop_order_sortable_columns( $columns ) {
226
- $custom = array();
227
- $total_number = apply_filters( 'booster_get_option', 1, get_option( 'wcj_orders_list_custom_columns_total_number', 1 ) );
228
- for ( $i = 1; $i <= $total_number; $i++ ) {
229
- if ( 'yes' === get_option( 'wcj_orders_list_custom_columns_enabled_' . $i, 'no' ) ) {
230
- if ( 'no' != get_option( 'wcj_orders_list_custom_columns_sortable_' . $i, 'no' ) && '' != get_option( 'wcj_orders_list_custom_columns_sortable_key_' . $i, '' ) ) {
231
- $custom[ 'wcj_orders_custom_column_' . $i ] = 'wcj_orders_custom_column_' . $i;
232
- }
233
- }
234
- }
235
- return ( ! empty( $custom ) ? wp_parse_args( $custom, $columns ) : $columns );
236
- }
237
-
238
- /**
239
- * hide_default_statuses_menu.
240
- *
241
- * @version 2.5.7
242
- * @since 2.5.7
243
- */
244
- function hide_default_statuses_menu() {
245
- echo '<style>body.post-type-shop_order ul.subsubsub {display: none !important;}</style>';
246
- }
247
-
248
- /**
249
- * get_orders_default_columns_in_order.
250
- *
251
- * @version 2.5.7
252
- * @since 2.5.7
253
- */
254
- function get_orders_default_columns_in_order() {
255
- $columns = array(
256
- 'cb',
257
- 'order_status',
258
- 'order_title',
259
- 'order_items',
260
- 'billing_address',
261
- 'shipping_address',
262
- 'customer_message',
263
- 'order_notes',
264
- 'order_date',
265
- 'order_total',
266
- 'order_actions',
267
- );
268
- return implode( PHP_EOL, $columns );
269
- }
270
-
271
- /**
272
- * add_shop_order_multiple_statuses_not_completed_link.
273
- *
274
- * @version 2.5.7
275
- * @since 2.5.7
276
- */
277
- function add_shop_order_multiple_statuses_not_completed_link( $views ) {
278
- global $wp_query;
279
- if ( ! current_user_can( 'edit_others_pages' ) ) {
280
- return $views;
281
- }
282
- $all_not_completed_statuses = wc_get_order_statuses();
283
- unset( $all_not_completed_statuses['wc-completed'] );
284
- $all_not_completed_statuses = array_keys( $all_not_completed_statuses );
285
- $all_not_completed_statuses_param = urlencode( implode( ',', $all_not_completed_statuses ) );
286
- $class = ( isset( $wp_query->query['post_status'] ) && is_array( $wp_query->query['post_status'] ) && $all_not_completed_statuses === $wp_query->query['post_status'] ) ? 'current' : '';
287
- $query_string = remove_query_arg( array( 'post_status', 'wcj_admin_filter_statuses' ) );
288
- $query_string = add_query_arg( 'post_status', $all_not_completed_statuses_param, $query_string );
289
- $views['wcj_statuses_not_completed'] = '<a href="' . esc_url( $query_string ) . '" class="' . esc_attr( $class ) . '">' . __( 'Not Completed', 'woocommerce-jetpack' ) . '</a>';
290
- return $views;
291
- }
292
-
293
- /**
294
- * filter_shop_order_multiple_statuses_not_completed_link.
295
- *
296
- * @version 2.5.7
297
- * @since 2.5.7
298
- */
299
- function filter_shop_order_multiple_statuses_not_completed_link( $query ) {
300
- if ( false !== strpos( $_SERVER['REQUEST_URI'], '/wp-admin/edit.php' ) && isset( $_GET['post_type'] ) && 'shop_order' === $_GET['post_type'] ) {
301
- if ( current_user_can( 'edit_others_pages' ) ) {
302
- if ( isset( $_GET['post_status'] ) && false !== strpos( $_GET['post_status'], ',' ) ) {
303
- $post_statuses = explode( ',', $_GET['post_status'] );
304
- $query->query['post_status'] = $post_statuses;
305
- $query->query_vars['post_status'] = $post_statuses;
306
- }
307
- }
308
- }
309
- }
310
-
311
- /**
312
- * multiple_shop_order_statuses.
313
- *
314
- * @version 2.5.7
315
- * @since 2.5.7
316
- */
317
- function multiple_shop_order_statuses( $type ) {
318
- $checked_post_statuses = isset( $_GET['wcj_admin_filter_statuses'] ) ? $_GET['wcj_admin_filter_statuses'] : array();
319
- $html = '';
320
- $html .= ( 'checkboxes' === $type ) ?
321
- '<span id="wcj_admin_filter_shop_order_statuses">' :
322
- '<select multiple name="wcj_admin_filter_statuses[]" id="wcj_admin_filter_shop_order_statuses">';
323
- $num_posts = wp_count_posts( 'shop_order', 'readable' );
324
- foreach ( wc_get_order_statuses() as $status_id => $status_title ) {
325
- $total_number = ( isset( $num_posts->{$status_id} ) ) ? $num_posts->{$status_id} : 0;
326
- if ( $total_number > 0 ) {
327
- $html .= ( 'checkboxes' === $type ) ?
328
- '<input type="checkbox" name="wcj_admin_filter_statuses[]" value="' . $status_id . '"' . checked( in_array( $status_id, $checked_post_statuses ), true, false ) . '>' . $status_title . ' (' . $total_number . ') ' :
329
- '<option value="' . $status_id . '"' . selected( in_array( $status_id, $checked_post_statuses ), true, false ) . '>' . $status_title . ' (' . $total_number . ') ' . '</option>';
330
- }
331
- }
332
- $html .= ( 'checkboxes' === $type ) ?
333
- '</span>' :
334
- '</select>';
335
- return $html;
336
- }
337
-
338
- /**
339
- * add_shop_order_multiple_statuses.
340
- *
341
- * @version 2.5.7
342
- * @since 2.5.7
343
- */
344
- function add_shop_order_multiple_statuses( $post_type, $which ) {
345
- if ( 'shop_order' === $post_type ) {
346
- echo $this->multiple_shop_order_statuses( get_option( 'wcj_order_admin_list_multiple_status_filter', 'no' ) );
347
- }
348
- }
349
-
350
- /**
351
- * filter_shop_order_multiple_statuses.
352
- *
353
- * @version 2.5.7
354
- * @since 2.5.7
355
- */
356
- function filter_shop_order_multiple_statuses( $query ) {
357
- if ( false !== strpos( $_SERVER['REQUEST_URI'], '/wp-admin/edit.php' ) && isset( $_GET['post_type'] ) && 'shop_order' === $_GET['post_type'] ) {
358
- if ( current_user_can( 'edit_others_pages' ) ) {
359
- if ( isset( $_GET['wcj_admin_filter_statuses'] ) ) {
360
- $post_statuses = $_GET['wcj_admin_filter_statuses'];
361
- $query->query['post_status'] = $post_statuses;
362
- $query->query_vars['post_status'] = $post_statuses;
363
- }
364
- }
365
- }
366
- }
367
-
368
  /**
369
  * change_order_currency.
370
  *
@@ -375,132 +192,6 @@ class WCJ_Orders extends WCJ_Module {
375
  return ( '' != ( $wcj_order_currency = get_post_meta( wcj_get_order_id( $_order ), '_' . 'wcj_order_currency', true ) ) ) ? $wcj_order_currency : $order_currency;
376
  }
377
 
378
- /**
379
- * Filter the orders in admin based on options.
380
- *
381
- * @version 2.8.0
382
- * @access public
383
- * @param mixed $query
384
- * @return void
385
- */
386
- function parse_query( $query ) {
387
- global $typenow, $wp_query;
388
- if ( $typenow != 'shop_order' ) {
389
- return;
390
- }
391
- if ( 'yes' === get_option( 'wcj_orders_list_custom_columns_country', 'no' ) && isset( $_GET['country'] ) && 'all' != $_GET['country'] ) {
392
- $query->query_vars['meta_query'][] = array(
393
- 'key' => '_billing_country',
394
- 'value' => $_GET['country'],
395
- );
396
- }
397
- if ( 'yes' === get_option( 'wcj_orders_list_custom_columns_currency', 'no' ) && isset( $_GET['currency'] ) && 'all' != $_GET['currency'] ) {
398
- $query->query_vars['meta_query'][] = array(
399
- 'key' => '_order_currency',
400
- 'value' => $_GET['currency'],
401
- );
402
- }
403
- }
404
-
405
- /**
406
- * Filters for post types.
407
- *
408
- * @version 2.8.0
409
- */
410
- function restrict_manage_posts() {
411
- global $typenow, $wp_query;
412
- if ( in_array( $typenow, wc_get_order_types( 'order-meta-boxes' ) ) ) {
413
- if ( 'yes' === get_option( 'wcj_orders_list_custom_columns_country', 'no' ) ) {
414
- $selected_coutry = isset( $_GET['country'] ) ? $_GET['country'] : 'all';
415
- $countries = array_merge( array( 'all' => __( 'All countries', 'woocommerce-jetpack' ) ), wcj_get_countries() );
416
- echo '<select id="country" name="country">';
417
- foreach ( $countries as $code => $name ) {
418
- echo '<option value="' . $code . '" ' . selected( $code, $selected_coutry, false ) . '>' . $name . '</option>';
419
- }
420
- echo '</select>';
421
- }
422
- if ( 'yes' === get_option( 'wcj_orders_list_custom_columns_currency', 'no' ) ) {
423
- $selected_currency = isset( $_GET['currency'] ) ? $_GET['currency'] : 'all';
424
- $currencies = array_merge( array( 'all' => __( 'All currencies', 'woocommerce-jetpack' ) ), wcj_get_currencies_names_and_symbols() );
425
- echo '<select id="currency" name="currency">';
426
- foreach ( $currencies as $code => $name ) {
427
- echo '<option value="' . $code . '" ' . selected( $code, $selected_currency, false ) . '>' . $name . '</option>';
428
- }
429
- echo '</select>';
430
- }
431
- }
432
- }
433
-
434
- /**
435
- * rearange_order_columns.
436
- *
437
- * @version 2.5.7
438
- * @version 2.5.7
439
- */
440
- function rearange_order_columns( $columns ) {
441
- $reordered_columns = get_option( 'wcj_order_admin_list_columns_order', $this->get_orders_default_columns_in_order() );
442
- $reordered_columns = explode( PHP_EOL, $reordered_columns );
443
- $reordered_columns_result = array();
444
- if ( ! empty( $reordered_columns ) ) {
445
- foreach ( $reordered_columns as $column_id ) {
446
- $column_id = str_replace( "\n", '', $column_id );
447
- $column_id = str_replace( "\r", '', $column_id );
448
- if ( '' != $column_id && isset( $columns[ $column_id ] ) ) {
449
- $reordered_columns_result[ $column_id ] = $columns[ $column_id ];
450
- unset( $columns[ $column_id ] );
451
- }
452
- }
453
- }
454
- return array_merge( $reordered_columns_result, $columns );
455
- }
456
-
457
- /**
458
- * add_order_columns.
459
- *
460
- * @version 2.8.0
461
- */
462
- function add_order_columns( $columns ) {
463
- if ( 'yes' === get_option( 'wcj_orders_list_custom_columns_country', 'no' ) ) {
464
- $columns['country'] = __( 'Billing Country', 'woocommerce-jetpack' );
465
- }
466
- if ( 'yes' === get_option( 'wcj_orders_list_custom_columns_currency', 'no' ) ) {
467
- $columns['currency'] = __( 'Currency Code', 'woocommerce-jetpack' );
468
- }
469
- $total_number = apply_filters( 'booster_get_option', 1, get_option( 'wcj_orders_list_custom_columns_total_number', 1 ) );
470
- for ( $i = 1; $i <= $total_number; $i++ ) {
471
- if ( 'yes' === get_option( 'wcj_orders_list_custom_columns_enabled_' . $i, 'no' ) ) {
472
- $columns[ 'wcj_orders_custom_column_' . $i ] = get_option( 'wcj_orders_list_custom_columns_label_' . $i, '' );
473
- }
474
- }
475
- return $columns;
476
- }
477
-
478
- /**
479
- * Output custom columns for orders
480
- *
481
- * @version 2.8.0
482
- * @param string $column
483
- */
484
- function render_order_column( $column ) {
485
- if ( 'country' === $column && 'yes' === get_option( 'wcj_orders_list_custom_columns_country', 'no' ) ) {
486
- $country_code = do_shortcode( '[wcj_order_checkout_field field_id="billing_country"]' );
487
- echo ( 2 == strlen( $country_code ) )
488
- ? wcj_get_country_flag_by_code( $country_code ) . ' ' . wcj_get_country_name_by_code( $country_code )
489
- : wcj_get_country_name_by_code( $country_code );
490
- } elseif ( 'currency' === $column && 'yes' === get_option( 'wcj_orders_list_custom_columns_currency', 'no' ) ) {
491
- echo do_shortcode( '[wcj_order_currency]' );
492
- } else {
493
- $total_number = apply_filters( 'booster_get_option', 1, get_option( 'wcj_orders_list_custom_columns_total_number', 1 ) );
494
- for ( $i = 1; $i <= $total_number; $i++ ) {
495
- if ( 'yes' === get_option( 'wcj_orders_list_custom_columns_enabled_' . $i, 'no' ) ) {
496
- if ( 'wcj_orders_custom_column_' . $i === $column ) {
497
- echo do_shortcode( get_option( 'wcj_orders_list_custom_columns_value_' . $i, '' ) );
498
- }
499
- }
500
- }
501
- }
502
- }
503
-
504
  /**
505
  * Auto Complete all WooCommerce orders.
506
  *
2
  /**
3
  * Booster for WooCommerce - Module - Orders
4
  *
5
+ * @version 3.2.4
6
  * @author Algoritmika Ltd.
7
  */
8
 
15
  /**
16
  * Constructor.
17
  *
18
+ * @version 3.2.4
19
+ * @todo Bulk Regenerate Download Permissions - copy "cron" to plugin
20
+ * @todo Bulk Regenerate Download Permissions - maybe move "bulk actions" to free
21
+ * @todo Bulk Regenerate Download Permissions - maybe as new module
22
  */
23
  function __construct() {
24
 
25
  $this->id = 'orders';
26
  $this->short_desc = __( 'Orders', 'woocommerce-jetpack' );
27
+ $this->desc = __( 'WooCommerce orders auto-complete; admin order currency; bulk regenerate download permissions for orders.', 'woocommerce-jetpack' );
28
  $this->link_slug = 'woocommerce-orders';
29
  parent::__construct();
30
 
36
  add_action( 'woocommerce_payment_complete', array( $this, 'auto_complete_order' ), PHP_INT_MAX );
37
  }
38
 
 
 
 
 
 
 
 
 
 
39
  // Order currency
40
  if ( 'yes' === get_option( 'wcj_order_admin_currency', 'no' ) ) {
41
  $this->meta_box_screen = 'shop_order';
47
  }
48
  }
49
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
50
  // Bulk Regenerate Download Permissions
51
  if ( 'yes' === apply_filters( 'booster_get_option', 'no', get_option( 'wcj_order_bulk_regenerate_download_permissions_enabled', 'no' ) ) ) {
52
  // Actions
58
  add_action( 'woojetpack_after_settings_save', array( $this, 'maybe_bulk_regenerate_download_permissions_all_orders' ) );
59
  // Admin notices
60
  add_filter( 'admin_notices', array( $this, 'admin_notice_regenerate_download_permissions' ) );
61
+ // All orders - Cron
62
+ if ( 'disabled' != apply_filters( 'booster_get_option', 'disabled', get_option( 'wcj_order_bulk_regenerate_download_permissions_all_orders_cron', 'disabled' ) ) ) {
63
+ add_action( 'init', array( $this, 'schedule_bulk_regenerate_download_permissions_all_orders_cron' ) );
64
+ add_action( 'admin_init', array( $this, 'schedule_bulk_regenerate_download_permissions_all_orders_cron' ) );
65
+ add_filter( 'cron_schedules', 'wcj_crons_add_custom_intervals' );
66
+ add_action( 'wcj_bulk_regenerate_download_permissions_all_orders_cron', array( $this, 'bulk_regenerate_download_permissions_all_orders' ) );
67
+ }
68
  }
69
 
70
  }
71
  }
72
 
73
+ /**
74
+ * schedule_bulk_regenerate_download_permissions_all_orders_cron.
75
+ *
76
+ * @version 3.2.4
77
+ * @since 3.2.4
78
+ */
79
+ function schedule_bulk_regenerate_download_permissions_all_orders_cron() {
80
+ wcj_crons_schedule_the_events(
81
+ 'wcj_bulk_regenerate_download_permissions_all_orders_cron',
82
+ apply_filters( 'booster_get_option', 'disabled', get_option( 'wcj_order_bulk_regenerate_download_permissions_all_orders_cron', 'disabled' ) )
83
+ );
84
+ }
85
+
86
  /**
87
  * handle_bulk_actions_regenerate_download_permissions.
88
  *
182
  }
183
  }
184
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
185
  /**
186
  * change_order_currency.
187
  *
192
  return ( '' != ( $wcj_order_currency = get_post_meta( wcj_get_order_id( $_order ), '_' . 'wcj_order_currency', true ) ) ) ? $wcj_order_currency : $order_currency;
193
  }
194
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
195
  /**
196
  * Auto Complete all WooCommerce orders.
197
  *
includes/class-wcj-price-formats.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Module - Price Formats
4
  *
5
- * @version 3.1.3
6
  * @since 2.5.2
7
  * @author Algoritmika Ltd.
8
  */
@@ -42,7 +42,7 @@ class WCJ_Price_Formats extends WCJ_Module {
42
  /**
43
  * price_format.
44
  *
45
- * @version 2.5.8
46
  * @since 2.5.2
47
  */
48
  function price_format( $args ) {
@@ -55,6 +55,8 @@ class WCJ_Price_Formats extends WCJ_Module {
55
  }
56
  }
57
  $args['price_format'] = $this->get_woocommerce_price_format( get_option( 'wcj_price_formats_currency_position_' . $i ) );
 
 
58
  $args['decimal_separator'] = get_option( 'wcj_price_formats_decimal_separator_' . $i );
59
  $args['thousand_separator'] = get_option( 'wcj_price_formats_thousand_separator_' . $i );
60
  $args['decimals'] = absint( get_option( 'wcj_price_formats_number_of_decimals_' . $i ) );
@@ -64,6 +66,27 @@ class WCJ_Price_Formats extends WCJ_Module {
64
  return $args;
65
  }
66
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
67
  /**
68
  * get_woocommerce_price_format.
69
  *
2
  /**
3
  * Booster for WooCommerce - Module - Price Formats
4
  *
5
+ * @version 3.2.4
6
  * @since 2.5.2
7
  * @author Algoritmika Ltd.
8
  */
42
  /**
43
  * price_format.
44
  *
45
+ * @version 3.2.4
46
  * @since 2.5.2
47
  */
48
  function price_format( $args ) {
55
  }
56
  }
57
  $args['price_format'] = $this->get_woocommerce_price_format( get_option( 'wcj_price_formats_currency_position_' . $i ) );
58
+ $args['price_format'] = $this->get_woocommerce_price_format_currency_code(
59
+ get_option( 'wcj_price_formats_currency_code_position_' . $i, 'none' ), get_option( 'wcj_price_formats_currency_' . $i ), $args['price_format'] );
60
  $args['decimal_separator'] = get_option( 'wcj_price_formats_decimal_separator_' . $i );
61
  $args['thousand_separator'] = get_option( 'wcj_price_formats_thousand_separator_' . $i );
62
  $args['decimals'] = absint( get_option( 'wcj_price_formats_number_of_decimals_' . $i ) );
66
  return $args;
67
  }
68
 
69
+ /**
70
+ * get_woocommerce_price_format_currency_code.
71
+ *
72
+ * @version 3.2.4
73
+ * @since 3.2.4
74
+ */
75
+ function get_woocommerce_price_format_currency_code( $currency_code_pos, $currency, $price_format ) {
76
+ switch ( $currency_code_pos ) {
77
+ case 'left' :
78
+ return $currency . $price_format;
79
+ case 'right' :
80
+ return $price_format . $currency;
81
+ case 'left_space' :
82
+ return $currency . '&nbsp;' . $price_format;
83
+ case 'right_space' :
84
+ return $price_format . '&nbsp;' . $currency;
85
+ default: // 'none'
86
+ return $price_format;
87
+ }
88
+ }
89
+
90
  /**
91
  * get_woocommerce_price_format.
92
  *
includes/class-wcj-product-add-to-cart.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Module - Product Add To Cart
4
  *
5
- * @version 2.9.0
6
  * @since 2.2.0
7
  * @author Algoritmika Ltd.
8
  */
@@ -16,7 +16,7 @@ class WCJ_Product_Add_To_Cart extends WCJ_Module {
16
  /**
17
  * Constructor.
18
  *
19
- * @version 2.9.0
20
  */
21
  function __construct() {
22
 
@@ -82,6 +82,10 @@ class WCJ_Product_Add_To_Cart extends WCJ_Module {
82
  if ( 'yes' === get_option( 'wcj_add_to_cart_quantity_disable', 'no' ) || 'yes' === get_option( 'wcj_add_to_cart_quantity_disable_cart', 'no' ) ) {
83
  add_action( 'wp_enqueue_scripts', array( $this, 'enqueue_disable_quantity_add_to_cart_script' ) );
84
  }
 
 
 
 
85
 
86
  // Button - Disabling - Archives
87
  if ( 'yes' === get_option( 'wcj_add_to_cart_button_disable_archives', 'no' ) ) {
@@ -233,13 +237,17 @@ class WCJ_Product_Add_To_Cart extends WCJ_Module {
233
  /**
234
  * replace_external_with_custom_add_to_cart_in_loop.
235
  *
236
- * @version 2.5.3
237
  * @since 2.5.3
238
  */
239
  function replace_external_with_custom_add_to_cart_in_loop( $link_html ) {
240
  global $product;
241
  if ( $product->is_type( 'external' ) ) {
242
- $link_html = str_replace( '<a rel=', '<a target="_blank" rel=', $link_html );
 
 
 
 
243
  }
244
  return $link_html;
245
  }
2
  /**
3
  * Booster for WooCommerce - Module - Product Add To Cart
4
  *
5
+ * @version 3.2.4
6
  * @since 2.2.0
7
  * @author Algoritmika Ltd.
8
  */
16
  /**
17
  * Constructor.
18
  *
19
+ * @version 3.2.4
20
  */
21
  function __construct() {
22
 
82
  if ( 'yes' === get_option( 'wcj_add_to_cart_quantity_disable', 'no' ) || 'yes' === get_option( 'wcj_add_to_cart_quantity_disable_cart', 'no' ) ) {
83
  add_action( 'wp_enqueue_scripts', array( $this, 'enqueue_disable_quantity_add_to_cart_script' ) );
84
  }
85
+ // Quantity - Sold individually
86
+ if ( 'yes' === get_option( 'wcj_add_to_cart_quantity_sold_individually_all', 'no' ) ) {
87
+ add_filter( 'woocommerce_is_sold_individually', '__return_true', PHP_INT_MAX );
88
+ }
89
 
90
  // Button - Disabling - Archives
91
  if ( 'yes' === get_option( 'wcj_add_to_cart_button_disable_archives', 'no' ) ) {
237
  /**
238
  * replace_external_with_custom_add_to_cart_in_loop.
239
  *
240
+ * @version 3.2.4
241
  * @since 2.5.3
242
  */
243
  function replace_external_with_custom_add_to_cart_in_loop( $link_html ) {
244
  global $product;
245
  if ( $product->is_type( 'external' ) ) {
246
+ if ( false !== strpos( $link_html, '<a rel=' ) ) {
247
+ $link_html = str_replace( '<a rel=', '<a target="_blank" rel=', $link_html );
248
+ } else {
249
+ $link_html = str_replace( '<a href=', '<a target="_blank" href=', $link_html );
250
+ }
251
  }
252
  return $link_html;
253
  }
includes/class-wcj-product-addons.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Module - Product Addons
4
  *
5
- * @version 3.2.2
6
  * @since 2.5.3
7
  * @author Algoritmika Ltd.
8
  * @todo admin order view (names);
@@ -17,7 +17,7 @@ class WCJ_Product_Addons extends WCJ_Module {
17
  /**
18
  * Constructor.
19
  *
20
- * @version 2.8.0
21
  * @since 2.5.3
22
  * @todo (maybe) add "in progress" ajax message
23
  * @todo (maybe) for variable products - show addons only if variation is selected (e.g. move to addons from `woocommerce_before_add_to_cart_button` to variation description)
@@ -46,7 +46,8 @@ class WCJ_Product_Addons extends WCJ_Module {
46
  add_action( 'wp_ajax_nopriv_product_addons_price_change', array( $this, 'price_change_ajax' ) );
47
  }
48
  // Single Page
49
- add_action( 'woocommerce_before_add_to_cart_button', array( $this, 'add_addons_to_frontend' ), PHP_INT_MAX );
 
50
  // Add to cart
51
  add_filter( 'woocommerce_add_cart_item_data', array( $this, 'add_addons_price_to_cart_item_data' ), PHP_INT_MAX, 3 );
52
  add_filter( 'woocommerce_add_cart_item', array( $this, 'add_addons_price_to_cart_item' ), PHP_INT_MAX, 2 );
@@ -133,12 +134,12 @@ class WCJ_Product_Addons extends WCJ_Module {
133
  /**
134
  * price_change_ajax.
135
  *
136
- * @version 3.2.2
137
  * @since 2.5.3
138
  */
139
  function price_change_ajax( $param ) {
140
  if ( ! isset( $_POST['product_id'] ) || 0 == $_POST['product_id'] ) {
141
- wp_die();
142
  }
143
  $the_product = wc_get_product( $_POST['product_id'] );
144
  $parent_product_id = ( $the_product->is_type( 'variation' ) ) ? wp_get_post_parent_id( $_POST['product_id'] ) : $_POST['product_id'];
@@ -169,7 +170,7 @@ class WCJ_Product_Addons extends WCJ_Module {
169
  } else {
170
  echo $the_product->get_price_html();
171
  }
172
- wp_die();
173
  }
174
 
175
  /**
2
  /**
3
  * Booster for WooCommerce - Module - Product Addons
4
  *
5
+ * @version 3.2.4
6
  * @since 2.5.3
7
  * @author Algoritmika Ltd.
8
  * @todo admin order view (names);
17
  /**
18
  * Constructor.
19
  *
20
+ * @version 3.2.4
21
  * @since 2.5.3
22
  * @todo (maybe) add "in progress" ajax message
23
  * @todo (maybe) for variable products - show addons only if variation is selected (e.g. move to addons from `woocommerce_before_add_to_cart_button` to variation description)
46
  add_action( 'wp_ajax_nopriv_product_addons_price_change', array( $this, 'price_change_ajax' ) );
47
  }
48
  // Single Page
49
+ add_action( 'woocommerce_before_add_to_cart_button', array( $this, 'add_addons_to_frontend' ),
50
+ ( 0 == ( $position_priority = get_option( 'wcj_product_addons_position_priority', 0 ) ) ? PHP_INT_MAX : $position_priority ) );
51
  // Add to cart
52
  add_filter( 'woocommerce_add_cart_item_data', array( $this, 'add_addons_price_to_cart_item_data' ), PHP_INT_MAX, 3 );
53
  add_filter( 'woocommerce_add_cart_item', array( $this, 'add_addons_price_to_cart_item' ), PHP_INT_MAX, 2 );
134
  /**
135
  * price_change_ajax.
136
  *
137
+ * @version 3.2.4
138
  * @since 2.5.3
139
  */
140
  function price_change_ajax( $param ) {
141
  if ( ! isset( $_POST['product_id'] ) || 0 == $_POST['product_id'] ) {
142
+ die();
143
  }
144
  $the_product = wc_get_product( $_POST['product_id'] );
145
  $parent_product_id = ( $the_product->is_type( 'variation' ) ) ? wp_get_post_parent_id( $_POST['product_id'] ) : $_POST['product_id'];
170
  } else {
171
  echo $the_product->get_price_html();
172
  }
173
+ die();
174
  }
175
 
176
  /**
includes/class-wcj-product-bookings.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Module - Bookings
4
  *
5
- * @version 3.0.0
6
  * @since 2.5.0
7
  * @author Algoritmika Ltd.
8
  */
@@ -96,7 +96,7 @@ class WCJ_Product_Bookings extends WCJ_Module {
96
  /**
97
  * price_change_ajax.
98
  *
99
- * @version 2.7.0
100
  * @since 2.5.0
101
  */
102
  function price_change_ajax( $param ) {
@@ -110,7 +110,7 @@ class WCJ_Product_Bookings extends WCJ_Module {
110
  $the_price = $days_diff * $price_per_day;
111
  echo wc_price( $the_price );
112
  }
113
- wp_die();
114
  }
115
 
116
  /**
2
  /**
3
  * Booster for WooCommerce - Module - Bookings
4
  *
5
+ * @version 3.2.4
6
  * @since 2.5.0
7
  * @author Algoritmika Ltd.
8
  */
96
  /**
97
  * price_change_ajax.
98
  *
99
+ * @version 3.2.4
100
  * @since 2.5.0
101
  */
102
  function price_change_ajax( $param ) {
110
  $the_price = $days_diff * $price_per_day;
111
  echo wc_price( $the_price );
112
  }
113
+ die();
114
  }
115
 
116
  /**
includes/class-wcj-product-by-country.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Module - Product Visibility by Country
4
  *
5
- * @version 3.1.1
6
  * @since 2.5.0
7
  * @author Algoritmika Ltd.
8
  */
@@ -176,12 +176,12 @@ class WCJ_Product_By_Country extends WCJ_Module {
176
  /**
177
  * save_country_in_session.
178
  *
179
- * @version 3.1.0
180
  * @since 3.1.0
181
  */
182
  function save_country_in_session() {
 
183
  if ( isset( $_REQUEST['wcj_country_selector'] ) ) {
184
- wcj_session_maybe_start();
185
  wcj_session_set( 'wcj_selected_country', $_REQUEST['wcj_country_selector'] );
186
  }
187
  }
@@ -189,14 +189,13 @@ class WCJ_Product_By_Country extends WCJ_Module {
189
  /**
190
  * get_country.
191
  *
192
- * @version 3.1.0
193
  * @since 3.1.0
194
  */
195
  function get_country() {
196
  if ( 'manual' === apply_filters( 'booster_get_option', 'by_ip', get_option( 'wcj_product_by_country_selection_method', 'by_ip' ) ) ) {
197
  if ( '' == wcj_session_get( 'wcj_selected_country' ) ) {
198
  $country = wcj_get_country_by_ip();
199
- wcj_session_maybe_start();
200
  wcj_session_set( 'wcj_selected_country', $country );
201
  return $country;
202
  } else {
2
  /**
3
  * Booster for WooCommerce - Module - Product Visibility by Country
4
  *
5
+ * @version 3.2.4
6
  * @since 2.5.0
7
  * @author Algoritmika Ltd.
8
  */
176
  /**
177
  * save_country_in_session.
178
  *
179
+ * @version 3.2.4
180
  * @since 3.1.0
181
  */
182
  function save_country_in_session() {
183
+ wcj_session_maybe_start();
184
  if ( isset( $_REQUEST['wcj_country_selector'] ) ) {
 
185
  wcj_session_set( 'wcj_selected_country', $_REQUEST['wcj_country_selector'] );
186
  }
187
  }
189
  /**
190
  * get_country.
191
  *
192
+ * @version 3.2.4
193
  * @since 3.1.0
194
  */
195
  function get_country() {
196
  if ( 'manual' === apply_filters( 'booster_get_option', 'by_ip', get_option( 'wcj_product_by_country_selection_method', 'by_ip' ) ) ) {
197
  if ( '' == wcj_session_get( 'wcj_selected_country' ) ) {
198
  $country = wcj_get_country_by_ip();
 
199
  wcj_session_set( 'wcj_selected_country', $country );
200
  return $country;
201
  } else {
includes/class-wcj-product-custom-visibility.php ADDED
@@ -0,0 +1,144 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Booster for WooCommerce - Module - Product Custom Visibility
4
+ *
5
+ * @version 3.2.4
6
+ * @since 3.2.4
7
+ * @author Algoritmika Ltd.
8
+ */
9
+
10
+ if ( ! defined( 'ABSPATH' ) ) exit;
11
+
12
+ if ( ! class_exists( 'WCJ_Product_Custom_Visibility' ) ) :
13
+
14
+ class WCJ_Product_Custom_Visibility extends WCJ_Module {
15
+
16
+ /**
17
+ * Constructor.
18
+ *
19
+ * @version 3.2.4
20
+ * @since 3.2.4
21
+ * @todo add "Admin Products List Column"
22
+ * @todo add `invisible` ("Visibility Method") ($)
23
+ * @todo (maybe) add filters
24
+ */
25
+ function __construct() {
26
+
27
+ $this->id = 'product_custom_visibility';
28
+ $this->short_desc = __( 'Product Custom Visibility', 'woocommerce-jetpack' );
29
+ $this->desc = __( 'Display WooCommerce products by custom param.', 'woocommerce-jetpack' );
30
+ $this->link_slug = 'woocommerce-product-custom-visibility';
31
+ $this->extra_desc = __( 'When enabled, module will add new "Booster: Product Custom Visibility" meta box to each product\'s edit page.', 'woocommerce-jetpack' ) . '<br>' .
32
+ sprintf(
33
+ __( 'You can add selection drop box to frontend with "%s" widget (set "Product custom visibility" as "Selector Type") or %s shortcode.', 'woocommerce-jetpack' ),
34
+ __( 'Booster - Selector', 'woocommerce-jetpack' ),
35
+ '<code>' . '[wcj_selector selector_type="product_custom_visibility"]' . '</code>' );
36
+ parent::__construct();
37
+
38
+ if ( $this->is_enabled() ) {
39
+ // Product meta box
40
+ add_action( 'add_meta_boxes', array( $this, 'add_meta_box' ) );
41
+ add_action( 'save_post_product', array( $this, 'save_meta_box' ), PHP_INT_MAX, 2 );
42
+ // Core
43
+ if ( ! is_admin() || ( defined( 'DOING_AJAX' ) && DOING_AJAX ) ) {
44
+ if ( 'yes' === get_option( 'wcj_product_custom_visibility_visibility', 'yes' ) ) {
45
+ add_filter( 'woocommerce_product_is_visible', array( $this, 'product_custom_visibility_visibility' ), PHP_INT_MAX, 2 );
46
+ }
47
+ if ( 'yes' === get_option( 'wcj_product_custom_visibility_purchasable', 'no' ) ) {
48
+ add_filter( 'woocommerce_is_purchasable', array( $this, 'product_custom_visibility_purchasable' ), PHP_INT_MAX, 2 );
49
+ }
50
+ if ( 'yes' === get_option( 'wcj_product_custom_visibility_query', 'no' ) ) {
51
+ add_action( 'pre_get_posts', array( $this, 'product_custom_visibility_pre_get_posts' ) );
52
+ }
53
+ add_action( 'init', array( $this, 'save_selection_in_session' ), PHP_INT_MAX ) ;
54
+ }
55
+ }
56
+ }
57
+
58
+ /**
59
+ * product_custom_visibility_pre_get_posts.
60
+ *
61
+ * @version 3.2.4
62
+ * @since 3.2.4
63
+ */
64
+ function product_custom_visibility_pre_get_posts( $query ) {
65
+ if ( is_admin() ) {
66
+ return;
67
+ }
68
+ remove_action( 'pre_get_posts', array( $this, 'product_custom_visibility_pre_get_posts' ) );
69
+ $selection = $this->get_selection();
70
+ $post__not_in = $query->get( 'post__not_in' );
71
+ $args = $query->query;
72
+ $args['fields'] = 'ids';
73
+ $loop = new WP_Query( $args );
74
+ foreach ( $loop->posts as $product_id ) {
75
+ if ( ! $this->is_product_visible( $product_id, $selection ) ) {
76
+ $post__not_in[] = $product_id;
77
+ }
78
+ }
79
+ $query->set( 'post__not_in', $post__not_in );
80
+ add_action( 'pre_get_posts', array( $this, 'product_custom_visibility_pre_get_posts' ) );
81
+ }
82
+
83
+ /**
84
+ * product_custom_visibility_purchasable.
85
+ *
86
+ * @version 3.2.4
87
+ * @since 3.2.4
88
+ */
89
+ function product_custom_visibility_purchasable( $purchasable, $_product ) {
90
+ return ( ! $this->is_product_visible( wcj_get_product_id_or_variation_parent_id( $_product ), $this->get_selection() ) ? false : $purchasable );
91
+ }
92
+
93
+ /**
94
+ * product_custom_visibility_visibility.
95
+ *
96
+ * @version 3.2.4
97
+ * @since 3.2.4
98
+ */
99
+ function product_custom_visibility_visibility( $visible, $product_id ) {
100
+ return ( ! $this->is_product_visible( $product_id, $this->get_selection() ) ? false : $visible );
101
+ }
102
+
103
+ /**
104
+ * is_product_visible.
105
+ *
106
+ * @version 3.2.4
107
+ * @since 3.2.4
108
+ */
109
+ function is_product_visible( $product_id, $selection ) {
110
+ $selections = get_post_meta( $product_id, '_' . 'wcj_product_custom_visibility_visible', true );
111
+ if ( ! empty( $selections ) && is_array( $selections ) ) {
112
+ return in_array( $selection, $selections );
113
+ }
114
+ return true;
115
+ }
116
+
117
+ /**
118
+ * save_selection_in_session.
119
+ *
120
+ * @version 3.2.4
121
+ * @since 3.2.4
122
+ */
123
+ function save_selection_in_session() {
124
+ wcj_session_maybe_start();
125
+ if ( isset( $_REQUEST['wcj_product_custom_visibility_selector'] ) ) {
126
+ wcj_session_set( 'wcj_selected_product_custom_visibility', $_REQUEST['wcj_product_custom_visibility_selector'] );
127
+ }
128
+ }
129
+
130
+ /**
131
+ * get_selection.
132
+ *
133
+ * @version 3.2.4
134
+ * @since 3.2.4
135
+ */
136
+ function get_selection() {
137
+ return wcj_session_get( 'wcj_selected_product_custom_visibility' );
138
+ }
139
+
140
+ }
141
+
142
+ endif;
143
+
144
+ return new WCJ_Product_Custom_Visibility();
includes/class-wcj-product-images.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Module - Product Images
4
  *
5
- * @version 2.9.0
6
  * @since 2.2.0
7
  * @author Algoritmika Ltd.
8
  */
@@ -16,52 +16,44 @@ class WCJ_Product_Images extends WCJ_Module {
16
  /**
17
  * Constructor.
18
  *
19
- * @version 2.8.0
20
- * @todo Add watermarks to images (http://php.net/manual/en/image.examples-watermark.php); Filter: `wp_get_attachment_image_src`.
21
  */
22
  function __construct() {
23
 
24
  $this->id = 'product_images';
25
  $this->short_desc = __( 'Product Images', 'woocommerce-jetpack' );
26
- $this->desc = __( 'Customize WooCommerce products images, thumbnails and sale flashes.', 'woocommerce-jetpack' );
27
  $this->link_slug = 'woocommerce-product-images';
28
  parent::__construct();
29
 
30
  if ( $this->is_enabled() ) {
31
 
32
- // Product Image & Thumbnails
33
- if ( 'yes' === get_option( 'wcj_product_images_and_thumbnails_enabled', 'no' ) ) {
34
-
35
- // Single
36
- if ( 'yes' === get_option( 'wcj_product_images_and_thumbnails_hide_on_single', 'no' ) ) {
37
- add_action( 'init', array( $this, 'product_images_and_thumbnails_hide_on_single' ), PHP_INT_MAX );
 
38
  } else {
39
- if ( WCJ_IS_WC_VERSION_BELOW_3 ) {
40
- add_filter( 'woocommerce_single_product_image_html', array( $this, 'customize_single_product_image_html' ), PHP_INT_MAX, 2 ); // filter doesn't exist in WC3
41
- add_filter( 'woocommerce_single_product_image_thumbnail_html', array( $this, 'customize_single_product_image_thumbnail_html' ) );
42
- } else {
43
- add_filter( 'woocommerce_single_product_image_thumbnail_html', array( $this, 'customize_single_product_image_or_thumbnail_html_wc3' ), PHP_INT_MAX, 2 );
44
- }
45
  }
 
46
 
47
- // Archives
48
- add_action( 'woocommerce_before_shop_loop_item', array( $this, 'product_images_hide_on_archive' ) );
49
- add_action( 'woocommerce_before_shop_loop_item_title', array( $this, 'customize_archive_product_image_html' ), 10 );
50
- add_action( 'woocommerce_before_shop_loop_item_title', array( $this, 'hide_per_product_image_on_archives_start' ), 1 );
51
- add_action( 'woocommerce_before_shop_loop_item_title', array( $this, 'hide_per_product_image_on_archives_end' ), PHP_INT_MAX );
52
 
53
- // Single Product Thumbnails Columns Number
54
- add_filter( 'woocommerce_product_thumbnails_columns', array( $this, 'change_product_thumbnails_columns_number' ), PHP_INT_MAX );
55
 
56
- // Per product options
57
- add_action( 'add_meta_boxes', array( $this, 'add_meta_box' ) );
58
- add_action( 'save_post_product', array( $this, 'save_meta_box' ), PHP_INT_MAX, 2 );
59
- }
60
 
61
- // Sale flash
62
- if ( 'yes' === get_option( 'wcj_product_images_sale_flash_enabled', 'no' ) ) {
63
- add_filter( 'woocommerce_sale_flash', array( $this, 'customize_sale_flash' ), PHP_INT_MAX, 3 );
64
- }
65
  }
66
  }
67
 
@@ -184,26 +176,6 @@ class WCJ_Product_Images extends WCJ_Module {
184
  return get_option( 'wcj_product_images_thumbnails_columns', 3 );
185
  }
186
 
187
- /**
188
- * customize_sale_flash.
189
- *
190
- * @version 2.8.0
191
- */
192
- function customize_sale_flash( $sale_flash_html, $post, $product ) {
193
- // Hiding
194
- if ( 'yes' === get_option( 'wcj_product_images_sale_flash_hide_everywhere', 'no' ) ) {
195
- return '';
196
- }
197
- if ( 'yes' === get_option( 'wcj_product_images_sale_flash_hide_on_archives', 'no' ) && is_archive() ) {
198
- return '';
199
- }
200
- if ( 'yes' === get_option( 'wcj_product_images_sale_flash_hide_on_single', 'no' ) && is_single() && get_the_ID() === wcj_get_product_id_or_variation_parent_id( $product ) ) {
201
- return '';
202
- }
203
- // Content
204
- return do_shortcode( get_option( 'wcj_product_images_sale_flash_html' , '<span class="onsale">' . __( 'Sale!', 'woocommerce' ) . '</span>' ) );
205
- }
206
-
207
  }
208
 
209
  endif;
2
  /**
3
  * Booster for WooCommerce - Module - Product Images
4
  *
5
+ * @version 3.2.4
6
  * @since 2.2.0
7
  * @author Algoritmika Ltd.
8
  */
16
  /**
17
  * Constructor.
18
  *
19
+ * @version 3.2.4
20
+ * @todo add watermarks to images (http://php.net/manual/en/image.examples-watermark.php); Filter: `wp_get_attachment_image_src`.
21
  */
22
  function __construct() {
23
 
24
  $this->id = 'product_images';
25
  $this->short_desc = __( 'Product Images', 'woocommerce-jetpack' );
26
+ $this->desc = __( 'Customize WooCommerce products images and thumbnails.', 'woocommerce-jetpack' );
27
  $this->link_slug = 'woocommerce-product-images';
28
  parent::__construct();
29
 
30
  if ( $this->is_enabled() ) {
31
 
32
+ // Single
33
+ if ( 'yes' === get_option( 'wcj_product_images_and_thumbnails_hide_on_single', 'no' ) ) {
34
+ add_action( 'init', array( $this, 'product_images_and_thumbnails_hide_on_single' ), PHP_INT_MAX );
35
+ } else {
36
+ if ( WCJ_IS_WC_VERSION_BELOW_3 ) {
37
+ add_filter( 'woocommerce_single_product_image_html', array( $this, 'customize_single_product_image_html' ), PHP_INT_MAX, 2 ); // filter doesn't exist in WC3
38
+ add_filter( 'woocommerce_single_product_image_thumbnail_html', array( $this, 'customize_single_product_image_thumbnail_html' ) );
39
  } else {
40
+ add_filter( 'woocommerce_single_product_image_thumbnail_html', array( $this, 'customize_single_product_image_or_thumbnail_html_wc3' ), PHP_INT_MAX, 2 );
 
 
 
 
 
41
  }
42
+ }
43
 
44
+ // Archives
45
+ add_action( 'woocommerce_before_shop_loop_item', array( $this, 'product_images_hide_on_archive' ) );
46
+ add_action( 'woocommerce_before_shop_loop_item_title', array( $this, 'customize_archive_product_image_html' ), 10 );
47
+ add_action( 'woocommerce_before_shop_loop_item_title', array( $this, 'hide_per_product_image_on_archives_start' ), 1 );
48
+ add_action( 'woocommerce_before_shop_loop_item_title', array( $this, 'hide_per_product_image_on_archives_end' ), PHP_INT_MAX );
49
 
50
+ // Single Product Thumbnails Columns Number
51
+ add_filter( 'woocommerce_product_thumbnails_columns', array( $this, 'change_product_thumbnails_columns_number' ), PHP_INT_MAX );
52
 
53
+ // Per product options
54
+ add_action( 'add_meta_boxes', array( $this, 'add_meta_box' ) );
55
+ add_action( 'save_post_product', array( $this, 'save_meta_box' ), PHP_INT_MAX, 2 );
 
56
 
 
 
 
 
57
  }
58
  }
59
 
176
  return get_option( 'wcj_product_images_thumbnails_columns', 3 );
177
  }
178
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
179
  }
180
 
181
  endif;
includes/class-wcj-product-listings.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Module - Product Listings
4
  *
5
- * @version 3.2.3
6
  * @author Algoritmika Ltd.
7
  */
8
 
@@ -15,7 +15,7 @@ class WCJ_Product_Listings extends WCJ_Module {
15
  /**
16
  * Constructor.
17
  *
18
- * @version 3.2.3
19
  */
20
  function __construct() {
21
  $this->id = 'product_listings';
@@ -35,25 +35,6 @@ class WCJ_Product_Listings extends WCJ_Module {
35
  add_filter( 'woocommerce_subcategory_count_html', array( $this, 'remove_subcategory_count' ), 100 );
36
  }
37
 
38
- // Tax Incl./Excl. by product/category
39
- add_filter( 'option_woocommerce_tax_display_shop', array( $this, 'tax_display' ), PHP_INT_MAX );
40
-
41
- // Tax Incl./Excl. by user role
42
- if ( 'yes' === get_option( 'wcj_product_listings_display_taxes_by_user_role_enabled', 'no' ) ) {
43
- add_filter( 'option_woocommerce_tax_display_shop', array( $this, 'tax_display_by_user_role' ), PHP_INT_MAX );
44
- }
45
-
46
- // Admin list - custom columns
47
- if ( 'yes' === get_option( 'wcj_products_admin_list_custom_columns_enabled', 'no' ) ) {
48
- add_filter( 'manage_edit-product_columns', array( $this, 'add_product_columns' ), PHP_INT_MAX );
49
- add_action( 'manage_product_posts_custom_column', array( $this, 'render_product_column' ), PHP_INT_MAX );
50
- }
51
-
52
- // Admin list - columns order
53
- if ( 'yes' === get_option( 'wcj_products_admin_list_columns_order_enabled', 'no' ) ) {
54
- add_filter( 'manage_edit-product_columns', array( $this, 'rearange_product_columns' ), PHP_INT_MAX );
55
- }
56
-
57
  // Product visibility by price
58
  if ( 'yes' === get_option( 'wcj_product_listings_product_visibility_by_price_enabled', 'no' ) ) {
59
  add_filter( 'woocommerce_product_is_visible', array( $this, 'product_visibility_by_price' ), PHP_INT_MAX, 2 );
@@ -65,9 +46,10 @@ class WCJ_Product_Listings extends WCJ_Module {
65
  /**
66
  * product_visibility_by_price.
67
  *
68
- * @version 3.2.3
69
  * @since 3.2.3
70
  * @todo grouped products
 
71
  */
72
  function product_visibility_by_price( $visible, $product_id ) {
73
  $product = wc_get_product( $product_id );
@@ -75,160 +57,14 @@ class WCJ_Product_Listings extends WCJ_Module {
75
  $min_price = $product->get_variation_price( 'min' );
76
  $max_price = $product->get_variation_price( 'max' );
77
  } else {
78
- $min_price = $max_price = $product->get_price();
 
79
  }
80
  $min_price_limit = get_option( 'wcj_product_listings_product_visibility_by_price_min', 0 );
81
  $max_price_limit = get_option( 'wcj_product_listings_product_visibility_by_price_max', 0 );
82
  return ( ( 0 != $min_price_limit && $min_price < $min_price_limit ) || ( 0 != $max_price_limit && $max_price > $max_price_limit ) ? false : $visible );
83
  }
84
 
85
- /**
86
- * rearange_product_columns.
87
- *
88
- * @version 2.9.0
89
- * @since 2.9.0
90
- */
91
- function rearange_product_columns( $columns ) {
92
- $reordered_columns = get_option( 'wcj_products_admin_list_columns_order', $this->get_products_default_columns_in_order() );
93
- $reordered_columns = explode( PHP_EOL, $reordered_columns );
94
- $reordered_columns_result = array();
95
- if ( ! empty( $reordered_columns ) ) {
96
- foreach ( $reordered_columns as $column_id ) {
97
- $column_id = str_replace( "\n", '', $column_id );
98
- $column_id = str_replace( "\r", '', $column_id );
99
- if ( '' != $column_id && isset( $columns[ $column_id ] ) ) {
100
- $reordered_columns_result[ $column_id ] = $columns[ $column_id ];
101
- unset( $columns[ $column_id ] );
102
- }
103
- }
104
- }
105
- return array_merge( $reordered_columns_result, $columns );
106
- }
107
-
108
- /**
109
- * get_products_default_columns_in_order.
110
- *
111
- * @version 2.9.0
112
- * @since 2.9.0
113
- */
114
- function get_products_default_columns_in_order() {
115
- $columns = array(
116
- 'cb',
117
- 'thumb',
118
- 'name',
119
- 'sku',
120
- 'is_in_stock',
121
- 'price',
122
- 'product_cat',
123
- 'product_tag',
124
- 'featured',
125
- 'product_type',
126
- 'date',
127
- );
128
- return implode( PHP_EOL, $columns );
129
- }
130
-
131
- /**
132
- * add_product_columns.
133
- *
134
- * @version 2.9.0
135
- * @since 2.9.0
136
- */
137
- function add_product_columns( $columns ) {
138
- $total_number = apply_filters( 'booster_get_option', 1, get_option( 'wcj_products_admin_list_custom_columns_total_number', 1 ) );
139
- for ( $i = 1; $i <= $total_number; $i++ ) {
140
- if ( 'yes' === get_option( 'wcj_products_admin_list_custom_columns_enabled_' . $i, 'no' ) ) {
141
- $columns[ 'wcj_products_custom_column_' . $i ] = get_option( 'wcj_products_admin_list_custom_columns_label_' . $i, '' );
142
- }
143
- }
144
- return $columns;
145
- }
146
-
147
- /**
148
- * render_product_column.
149
- *
150
- * @version 2.9.0
151
- * @since 2.9.0
152
- */
153
- function render_product_column( $column ) {
154
- $total_number = apply_filters( 'booster_get_option', 1, get_option( 'wcj_products_admin_list_custom_columns_total_number', 1 ) );
155
- for ( $i = 1; $i <= $total_number; $i++ ) {
156
- if ( 'yes' === get_option( 'wcj_products_admin_list_custom_columns_enabled_' . $i, 'no' ) ) {
157
- if ( 'wcj_products_custom_column_' . $i === $column ) {
158
- echo do_shortcode( get_option( 'wcj_products_admin_list_custom_columns_value_' . $i, '' ) );
159
- }
160
- }
161
- }
162
- }
163
-
164
- /**
165
- * tax_display_by_user_role.
166
- *
167
- * @version 3.2.0
168
- * @since 3.2.0
169
- */
170
- function tax_display_by_user_role( $value ) {
171
- if ( '' != ( $display_taxes_by_user_role_roles = get_option( 'wcj_product_listings_display_taxes_by_user_role_roles', '' ) ) ) {
172
- $current_user_first_role = wcj_get_current_user_first_role();
173
- if ( in_array( $current_user_first_role, $display_taxes_by_user_role_roles ) ) {
174
- if ( 'no_changes' != ( $tax_display = get_option( 'wcj_product_listings_display_taxes_by_user_role_' . $current_user_first_role, 'no_changes' ) ) ) {
175
- return $tax_display;
176
- }
177
- }
178
- }
179
- return $value;
180
- }
181
-
182
- /**
183
- * tax_display.
184
- *
185
- * @version 2.5.5
186
- * @since 2.5.5
187
- */
188
- function tax_display( $value ) {
189
- $product_id = get_the_ID();
190
- if ( 'product' === get_post_type( $product_id ) ) {
191
- $products_incl_tax = get_option( 'wcj_product_listings_display_taxes_products_incl_tax', '' );
192
- $products_excl_tax = get_option( 'wcj_product_listings_display_taxes_products_excl_tax', '' );
193
- $product_cats_incl_tax = get_option( 'wcj_product_listings_display_taxes_product_cats_incl_tax', '' );
194
- $product_cats_excl_tax = get_option( 'wcj_product_listings_display_taxes_product_cats_excl_tax', '' );
195
- if ( '' != $products_incl_tax || '' != $products_incl_tax || '' != $products_incl_tax || '' != $products_incl_tax ) {
196
- // Products
197
- if ( ! empty( $products_incl_tax ) ) {
198
- if ( in_array( $product_id, $products_incl_tax ) ) {
199
- return 'incl';
200
- }
201
- }
202
- if ( ! empty( $products_excl_tax ) ) {
203
- if ( in_array( $product_id, $products_excl_tax ) ) {
204
- return 'excl';
205
- }
206
- }
207
- // Categories
208
- $product_categories = get_the_terms( $product_id, 'product_cat' );
209
- if ( ! empty( $product_cats_incl_tax ) ) {
210
- if ( ! empty( $product_categories ) ) {
211
- foreach ( $product_categories as $product_category ) {
212
- if ( in_array( $product_category->term_id, $product_cats_incl_tax ) ) {
213
- return 'incl';
214
- }
215
- }
216
- }
217
- }
218
- if ( ! empty( $product_cats_excl_tax ) ) {
219
- if ( ! empty( $product_categories ) ) {
220
- foreach ( $product_categories as $product_category ) {
221
- if ( in_array( $product_category->term_id, $product_cats_excl_tax ) ) {
222
- return 'excl';
223
- }
224
- }
225
- }
226
- }
227
- }
228
- }
229
- return $value;
230
- }
231
-
232
  /**
233
  * remove_subcategory_count.
234
  */
2
  /**
3
  * Booster for WooCommerce - Module - Product Listings
4
  *
5
+ * @version 3.2.4
6
  * @author Algoritmika Ltd.
7
  */
8
 
15
  /**
16
  * Constructor.
17
  *
18
+ * @version 3.2.4
19
  */
20
  function __construct() {
21
  $this->id = 'product_listings';
35
  add_filter( 'woocommerce_subcategory_count_html', array( $this, 'remove_subcategory_count' ), 100 );
36
  }
37
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
38
  // Product visibility by price
39
  if ( 'yes' === get_option( 'wcj_product_listings_product_visibility_by_price_enabled', 'no' ) ) {
40
  add_filter( 'woocommerce_product_is_visible', array( $this, 'product_visibility_by_price' ), PHP_INT_MAX, 2 );
46
  /**
47
  * product_visibility_by_price.
48
  *
49
+ * @version 3.2.4
50
  * @since 3.2.3
51
  * @todo grouped products
52
+ * @todo (maybe) as new "Product Visibility by Price" module
53
  */
54
  function product_visibility_by_price( $visible, $product_id ) {
55
  $product = wc_get_product( $product_id );
57
  $min_price = $product->get_variation_price( 'min' );
58
  $max_price = $product->get_variation_price( 'max' );
59
  } else {
60
+ $min_price = $product->get_price();
61
+ $max_price = $product->get_price();
62
  }
63
  $min_price_limit = get_option( 'wcj_product_listings_product_visibility_by_price_min', 0 );
64
  $max_price_limit = get_option( 'wcj_product_listings_product_visibility_by_price_max', 0 );
65
  return ( ( 0 != $min_price_limit && $min_price < $min_price_limit ) || ( 0 != $max_price_limit && $max_price > $max_price_limit ) ? false : $visible );
66
  }
67
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
68
  /**
69
  * remove_subcategory_count.
70
  */
includes/class-wcj-product-tabs.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Module - Product Tabs
4
  *
5
- * @version 3.1.0
6
  * @author Algoritmika Ltd.
7
  */
8
 
@@ -15,7 +15,7 @@ class WCJ_Product_Tabs extends WCJ_Module {
15
  /**
16
  * Constructor.
17
  *
18
- * @version 2.8.0
19
  * @todo code refactoring and clean-up
20
  */
21
  function __construct() {
@@ -32,10 +32,31 @@ class WCJ_Product_Tabs extends WCJ_Module {
32
  if ( 'yes' === get_option( 'wcj_custom_product_tabs_local_enabled', 'yes' ) ) {
33
  add_action( 'add_meta_boxes', array( $this, 'add_custom_tabs_meta_box' ) );
34
  add_action( 'save_post_product', array( $this, 'save_custom_tabs_meta_box' ), 100, 2 );
 
 
 
35
  }
36
  }
37
  }
38
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
39
  /**
40
  * get_tab_key.
41
  *
2
  /**
3
  * Booster for WooCommerce - Module - Product Tabs
4
  *
5
+ * @version 3.2.4
6
  * @author Algoritmika Ltd.
7
  */
8
 
15
  /**
16
  * Constructor.
17
  *
18
+ * @version 3.2.4
19
  * @todo code refactoring and clean-up
20
  */
21
  function __construct() {
32
  if ( 'yes' === get_option( 'wcj_custom_product_tabs_local_enabled', 'yes' ) ) {
33
  add_action( 'add_meta_boxes', array( $this, 'add_custom_tabs_meta_box' ) );
34
  add_action( 'save_post_product', array( $this, 'save_custom_tabs_meta_box' ), 100, 2 );
35
+ if ( 'yes' === get_option( 'wcj_custom_product_tabs_yoast_seo_enabled', 'no' ) ) {
36
+ add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_admin_scripts' ) );
37
+ }
38
  }
39
  }
40
  }
41
 
42
+ /**
43
+ * enqueue_admin_scripts.
44
+ *
45
+ * @version 3.2.4
46
+ * @since 3.2.4
47
+ */
48
+ function enqueue_admin_scripts() {
49
+ if ( wcj_is_admin_product_edit_page() ) {
50
+ wp_enqueue_script(
51
+ 'wcj-custom-tabs-yoast-seo',
52
+ wcj_plugin_url() . '/includes/js/wcj-custom-tabs-yoast-seo.js',
53
+ array( 'jquery', 'yoast-seo-admin-script' ),
54
+ WCJ()->version,
55
+ false
56
+ );
57
+ }
58
+ }
59
+
60
  /**
61
  * get_tab_key.
62
  *
includes/class-wcj-products-xml.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Module - Products XML
4
  *
5
- * @version 2.8.0
6
  * @since 2.5.7
7
  * @author Algoritmika Ltd.
8
  * @todo create all files at once (manually and synchronize update)
@@ -17,15 +17,15 @@ class WCJ_Products_XML extends WCJ_Module {
17
  /**
18
  * Constructor.
19
  *
20
- * @version 2.8.0
21
  * @since 2.5.7
22
  */
23
  function __construct() {
24
 
25
  $this->id = 'products_xml';
26
- $this->short_desc = __( 'Products XML', 'woocommerce-jetpack' );
27
- $this->desc = __( 'WooCommerce products XML feed.', 'woocommerce-jetpack' );
28
- $this->link_slug = 'woocommerce-products-xml-feed';
29
  parent::__construct();
30
 
31
  if ( $this->is_enabled() ) {
@@ -154,7 +154,7 @@ class WCJ_Products_XML extends WCJ_Module {
154
  /**
155
  * create_products_xml.
156
  *
157
- * @version 2.6.0
158
  * @since 2.5.7
159
  */
160
  function create_products_xml( $file_num ) {
@@ -162,8 +162,8 @@ class WCJ_Products_XML extends WCJ_Module {
162
  $xml_header_template = get_option( 'wcj_products_xml_header_' . $file_num, '' );
163
  $xml_footer_template = get_option( 'wcj_products_xml_footer_' . $file_num, '' );
164
  $xml_item_template = get_option( 'wcj_products_xml_item_' . $file_num, '' );
165
- $products_in_ids = get_option( 'wcj_products_xml_products_incl_' . $file_num, '' );
166
- $products_ex_ids = get_option( 'wcj_products_xml_products_excl_' . $file_num, '' );
167
  $products_cats_in_ids = get_option( 'wcj_products_xml_cats_incl_' . $file_num, '' );
168
  $products_cats_ex_ids = get_option( 'wcj_products_xml_cats_excl_' . $file_num, '' );
169
  $products_tags_in_ids = get_option( 'wcj_products_xml_tags_incl_' . $file_num, '' );
2
  /**
3
  * Booster for WooCommerce - Module - Products XML
4
  *
5
+ * @version 3.2.4
6
  * @since 2.5.7
7
  * @author Algoritmika Ltd.
8
  * @todo create all files at once (manually and synchronize update)
17
  /**
18
  * Constructor.
19
  *
20
+ * @version 3.2.4
21
  * @since 2.5.7
22
  */
23
  function __construct() {
24
 
25
  $this->id = 'products_xml';
26
+ $this->short_desc = __( 'Products XML Feeds', 'woocommerce-jetpack' );
27
+ $this->desc = __( 'WooCommerce products XML feeds.', 'woocommerce-jetpack' );
28
+ $this->link_slug = 'woocommerce-products-xml-feeds';
29
  parent::__construct();
30
 
31
  if ( $this->is_enabled() ) {
154
  /**
155
  * create_products_xml.
156
  *
157
+ * @version 3.2.4
158
  * @since 2.5.7
159
  */
160
  function create_products_xml( $file_num ) {
162
  $xml_header_template = get_option( 'wcj_products_xml_header_' . $file_num, '' );
163
  $xml_footer_template = get_option( 'wcj_products_xml_footer_' . $file_num, '' );
164
  $xml_item_template = get_option( 'wcj_products_xml_item_' . $file_num, '' );
165
+ $products_in_ids = wcj_maybe_convert_string_to_array( get_option( 'wcj_products_xml_products_incl_' . $file_num, '' ) );
166
+ $products_ex_ids = wcj_maybe_convert_string_to_array( get_option( 'wcj_products_xml_products_excl_' . $file_num, '' ) );
167
  $products_cats_in_ids = get_option( 'wcj_products_xml_cats_incl_' . $file_num, '' );
168
  $products_cats_ex_ids = get_option( 'wcj_products_xml_cats_excl_' . $file_num, '' );
169
  $products_tags_in_ids = get_option( 'wcj_products_xml_tags_incl_' . $file_num, '' );
includes/class-wcj-reports.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Module - Reports
4
  *
5
- * @version 2.9.1
6
  * @author Algoritmika Ltd.
7
  */
8
 
@@ -57,7 +57,7 @@ class WCJ_Reports extends WCJ_Module {
57
  /**
58
  * add_custom_order_reports_ranges_by_month_to_admin_bar.
59
  *
60
- * @version 2.7.0
61
  * @since 2.2.4
62
  */
63
  function add_custom_order_reports_ranges_by_month_to_admin_bar( $wp_admin_bar ) {
@@ -76,12 +76,13 @@ class WCJ_Reports extends WCJ_Module {
76
  $wp_admin_bar->add_node( $args );
77
 
78
  $custom_range_nonce = wp_create_nonce( 'custom_range' );
 
79
  for ( $i = 1; $i <= 12; $i++ ) {
80
- $month_start_date = date( 'Y-m-01' ) . "-$i months";
81
- $month_num = date( 'm', strtotime( $month_start_date ) );
82
- $month_name = date( 'Y F', strtotime( $month_start_date ) );
83
- $start_date = date( 'Y-m-01', strtotime( $month_start_date ) );
84
- $end_date = date( 'Y-m-t', strtotime( $month_start_date ) );
85
  $node = array(
86
  'parent' => $parent,
87
  'id' => $parent . '_' . $month_num,
2
  /**
3
  * Booster for WooCommerce - Module - Reports
4
  *
5
+ * @version 3.2.4
6
  * @author Algoritmika Ltd.
7
  */
8
 
57
  /**
58
  * add_custom_order_reports_ranges_by_month_to_admin_bar.
59
  *
60
+ * @version 3.2.4
61
  * @since 2.2.4
62
  */
63
  function add_custom_order_reports_ranges_by_month_to_admin_bar( $wp_admin_bar ) {
76
  $wp_admin_bar->add_node( $args );
77
 
78
  $custom_range_nonce = wp_create_nonce( 'custom_range' );
79
+ $current_time = (int) current_time( 'timestamp' );
80
  for ( $i = 1; $i <= 12; $i++ ) {
81
+ $month_start_date = strtotime( date( 'Y-m-01', $current_time ) . " -$i months" );
82
+ $month_num = date( 'm', $month_start_date );
83
+ $month_name = date( 'Y F', $month_start_date );
84
+ $start_date = date( 'Y-m-01', $month_start_date );
85
+ $end_date = date( 'Y-m-t', $month_start_date );
86
  $node = array(
87
  'parent' => $parent,
88
  'id' => $parent . '_' . $month_num,
includes/class-wcj-sale-flash.php ADDED
@@ -0,0 +1,98 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Booster for WooCommerce - Module - Sale Flash
4
+ *
5
+ * @version 3.2.4
6
+ * @since 3.2.4
7
+ * @author Algoritmika Ltd.
8
+ */
9
+
10
+ if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
11
+
12
+ if ( ! class_exists( 'WCJ_Sale_Flash' ) ) :
13
+
14
+ class WCJ_Sale_Flash extends WCJ_Module {
15
+
16
+ /**
17
+ * Constructor.
18
+ *
19
+ * @version 3.2.4
20
+ * @since 3.2.4
21
+ * @todo add predefined styles
22
+ * @todo (maybe) per product/category/tag: separate "loop" and "single" options
23
+ * @todo (maybe) related / homepage
24
+ */
25
+ function __construct() {
26
+
27
+ $this->id = 'sale_flash';
28
+ $this->short_desc = __( 'Sale Flash', 'woocommerce-jetpack' );
29
+ $this->desc = __( 'Customize WooCommerce products sale flash.', 'woocommerce-jetpack' );
30
+ $this->link_slug = 'woocommerce-sale-flash';
31
+ parent::__construct();
32
+
33
+ if ( $this->is_enabled() ) {
34
+ $this->globally_enabled = ( 'yes' === get_option( 'wcj_product_images_sale_flash_enabled', 'no' ) );
35
+ $this->per_product_enabled = ( 'yes' === apply_filters( 'booster_get_option', 'no', get_option( 'wcj_sale_flash_per_product_enabled', 'no' ) ) );
36
+ $this->per_category_enabled = ( 'yes' === apply_filters( 'booster_get_option', 'no', get_option( 'wcj_sale_flash_per_' . 'product_cat' . '_enabled', 'no' ) ) );
37
+ $this->per_tag_enabled = ( 'yes' === apply_filters( 'booster_get_option', 'no', get_option( 'wcj_sale_flash_per_' . 'product_tag' . '_enabled', 'no' ) ) );
38
+ add_filter( 'woocommerce_sale_flash', array( $this, 'customize_sale_flash' ), PHP_INT_MAX, 3 );
39
+ if ( $this->per_product_enabled ) {
40
+ add_action( 'add_meta_boxes', array( $this, 'add_meta_box' ) );
41
+ add_action( 'save_post_product', array( $this, 'save_meta_box' ), PHP_INT_MAX, 2 );
42
+ }
43
+ }
44
+ }
45
+
46
+ /**
47
+ * get_taxonomy_sale_flash.
48
+ *
49
+ * @version 3.2.4
50
+ */
51
+ function get_taxonomy_sale_flash( $product_id, $taxonomy ) {
52
+ $product_terms = get_the_terms( $product_id, $taxonomy );
53
+ return ( ! empty( $product_terms ) && isset( $product_terms[0]->term_id ) ?
54
+ do_shortcode( get_option( 'wcj_sale_flash_per_' . $taxonomy . '_' . $product_terms[0]->term_id . '_html',
55
+ '<span class="onsale">' . __( 'Sale!', 'woocommerce' ) . '</span>' ) ) :
56
+ false
57
+ );
58
+ }
59
+
60
+ /**
61
+ * customize_sale_flash.
62
+ *
63
+ * @version 3.2.4
64
+ */
65
+ function customize_sale_flash( $sale_flash_html, $post, $product ) {
66
+ $product_id = wcj_get_product_id_or_variation_parent_id( $product );
67
+ if ( $this->per_product_enabled && 'yes' === get_post_meta( $product_id, '_' . 'wcj_sale_flash_enabled', true ) ) {
68
+ return do_shortcode( get_post_meta( $product_id, '_' . 'wcj_sale_flash', true ) );
69
+ } elseif ( $this->per_category_enabled ) {
70
+ if ( false !== ( $sale_flash = $this->get_taxonomy_sale_flash( $product_id, 'product_cat' ) ) ) {
71
+ return $sale_flash;
72
+ }
73
+ } elseif ( $this->per_tag_enabled ) {
74
+ if ( false !== ( $sale_flash = $this->get_taxonomy_sale_flash( $product_id, 'product_tag' ) ) ) {
75
+ return $sale_flash;
76
+ }
77
+ } elseif ( $this->globally_enabled ) {
78
+ // Hiding
79
+ if ( 'yes' === get_option( 'wcj_product_images_sale_flash_hide_everywhere', 'no' ) ) {
80
+ return '';
81
+ }
82
+ if ( 'yes' === get_option( 'wcj_product_images_sale_flash_hide_on_archives', 'no' ) && is_archive() ) {
83
+ return '';
84
+ }
85
+ if ( 'yes' === get_option( 'wcj_product_images_sale_flash_hide_on_single', 'no' ) && is_single() && get_the_ID() === $product_id ) {
86
+ return '';
87
+ }
88
+ // Content
89
+ return do_shortcode( get_option( 'wcj_product_images_sale_flash_html', '<span class="onsale">' . __( 'Sale!', 'woocommerce' ) . '</span>' ) );
90
+ }
91
+ return $sale_flash_html;
92
+ }
93
+
94
+ }
95
+
96
+ endif;
97
+
98
+ return new WCJ_Sale_Flash();
includes/class-wcj-shipping-options.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Module - Shipping Options
4
  *
5
- * @version 2.9.1
6
  * @since 2.9.0
7
  * @author Algoritmika Ltd.
8
  */
@@ -16,7 +16,7 @@ class WCJ_Shipping_Options extends WCJ_Module {
16
  /**
17
  * Constructor.
18
  *
19
- * @version 2.9.1
20
  * @since 2.9.0
21
  */
22
  function __construct() {
@@ -33,7 +33,8 @@ class WCJ_Shipping_Options extends WCJ_Module {
33
 
34
  // Hide if free is available
35
  if ( 'yes' === get_option( 'wcj_shipping_hide_if_free_available_all', 'no' ) ) {
36
- add_filter( 'woocommerce_package_rates', array( $this, 'hide_shipping_when_free_is_available' ), 10, 2 );
 
37
  }
38
  add_filter( 'woocommerce_shipping_settings', array( $this, 'add_hide_shipping_if_free_available_fields' ), PHP_INT_MAX );
39
 
2
  /**
3
  * Booster for WooCommerce - Module - Shipping Options
4
  *
5
+ * @version 3.2.4
6
  * @since 2.9.0
7
  * @author Algoritmika Ltd.
8
  */
16
  /**
17
  * Constructor.
18
  *
19
+ * @version 3.2.4
20
  * @since 2.9.0
21
  */
22
  function __construct() {
33
 
34
  // Hide if free is available
35
  if ( 'yes' === get_option( 'wcj_shipping_hide_if_free_available_all', 'no' ) ) {
36
+ add_filter( 'woocommerce_package_rates', array( $this, 'hide_shipping_when_free_is_available' ),
37
+ wcj_get_woocommerce_package_rates_module_filter_priority( 'shipping_options_hide_free_shipping' ), 2 );
38
  }
39
  add_filter( 'woocommerce_shipping_settings', array( $this, 'add_hide_shipping_if_free_available_fields' ), PHP_INT_MAX );
40
 
includes/class-wcj-tax-display.php ADDED
@@ -0,0 +1,162 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Booster for WooCommerce - Module - Tax Display
4
+ *
5
+ * @version 3.2.4
6
+ * @since 3.2.4
7
+ * @author Algoritmika Ltd.
8
+ */
9
+
10
+ if ( ! defined( 'ABSPATH' ) ) exit;
11
+
12
+ if ( ! class_exists( 'WCJ_Tax_Display' ) ) :
13
+
14
+ class WCJ_Tax_Display extends WCJ_Module {
15
+
16
+ /**
17
+ * Constructor.
18
+ *
19
+ * @version 3.2.4
20
+ * @since 3.2.4
21
+ */
22
+ function __construct() {
23
+
24
+ $this->id = 'tax_display';
25
+ $this->short_desc = __( 'Tax Display', 'woocommerce-jetpack' );
26
+ $this->desc = __( 'Customize WooCommerce tax display.', 'woocommerce-jetpack' );
27
+ $this->link_slug = 'woocommerce-tax-display';
28
+ parent::__construct();
29
+
30
+ if ( $this->is_enabled() ) {
31
+
32
+ // Tax Incl./Excl. by product/category
33
+ if ( 'yes' === get_option( 'wcj_product_listings_display_taxes_by_products_enabled', 'no' ) ) {
34
+ add_filter( 'option_woocommerce_tax_display_shop', array( $this, 'tax_display_by_product' ), PHP_INT_MAX );
35
+ }
36
+
37
+ // Tax Incl./Excl. by user role
38
+ if ( 'yes' === get_option( 'wcj_product_listings_display_taxes_by_user_role_enabled', 'no' ) ) {
39
+ add_filter( 'option_woocommerce_tax_display_shop', array( $this, 'tax_display_by_user_role' ), PHP_INT_MAX );
40
+ }
41
+
42
+ // Tax toggle
43
+ if ( 'yes' === get_option( 'wcj_tax_display_toggle_enabled', 'no' ) ) {
44
+ add_action( 'init', array( $this, 'tax_display_toggle_param' ), PHP_INT_MAX );
45
+ add_filter( 'option_woocommerce_tax_display_shop', array( $this, 'tax_display_toggle' ), PHP_INT_MAX );
46
+ }
47
+
48
+ }
49
+ }
50
+
51
+ /**
52
+ * tax_display_toggle_param.
53
+ *
54
+ * @version 3.2.4
55
+ * @since 3.2.4
56
+ */
57
+ function tax_display_toggle_param() {
58
+ wcj_session_maybe_start();
59
+ if ( isset( $_REQUEST['wcj_button_toggle_tax_display'] ) ) {
60
+ $current_value = ( '' == ( $session_value = wcj_session_get( 'wcj_toggle_tax_display' ) ) ? get_option( 'woocommerce_tax_display_shop', 'excl' ) : $session_value );
61
+ wcj_session_set( 'wcj_toggle_tax_display', ( 'incl' === $current_value ? 'excl' : 'incl' ) );
62
+ }
63
+ }
64
+
65
+ /**
66
+ * tax_display_toggle.
67
+ *
68
+ * @version 3.2.4
69
+ * @since 3.2.4
70
+ * @todo widget
71
+ * @todo (maybe) floating button or at least give CSS instructions ($)
72
+ * @todo (maybe) position near the price or at least give "Product Info" instructions
73
+ */
74
+ function tax_display_toggle( $value ) {
75
+ if ( ! wcj_is_frontend() ) {
76
+ return $value;
77
+ }
78
+ if ( '' != ( $session_value = wcj_session_get( 'wcj_toggle_tax_display' ) ) ) {
79
+ return $session_value;
80
+ }
81
+ return $value;
82
+ }
83
+
84
+ /**
85
+ * tax_display_by_user_role.
86
+ *
87
+ * @version 3.2.4
88
+ * @since 3.2.0
89
+ */
90
+ function tax_display_by_user_role( $value ) {
91
+ if ( ! wcj_is_frontend() ) {
92
+ return $value;
93
+ }
94
+ if ( '' != ( $display_taxes_by_user_role_roles = get_option( 'wcj_product_listings_display_taxes_by_user_role_roles', '' ) ) ) {
95
+ $current_user_first_role = wcj_get_current_user_first_role();
96
+ if ( in_array( $current_user_first_role, $display_taxes_by_user_role_roles ) ) {
97
+ if ( 'no_changes' != ( $tax_display = get_option( 'wcj_product_listings_display_taxes_by_user_role_' . $current_user_first_role, 'no_changes' ) ) ) {
98
+ return $tax_display;
99
+ }
100
+ }
101
+ }
102
+ return $value;
103
+ }
104
+
105
+ /**
106
+ * tax_display_by_product.
107
+ *
108
+ * @version 3.2.4
109
+ * @since 2.5.5
110
+ */
111
+ function tax_display_by_product( $value ) {
112
+ if ( ! wcj_is_frontend() ) {
113
+ return $value;
114
+ }
115
+ $product_id = get_the_ID();
116
+ if ( 'product' === get_post_type( $product_id ) ) {
117
+ $products_incl_tax = get_option( 'wcj_product_listings_display_taxes_products_incl_tax', '' );
118
+ $products_excl_tax = get_option( 'wcj_product_listings_display_taxes_products_excl_tax', '' );
119
+ $product_cats_incl_tax = get_option( 'wcj_product_listings_display_taxes_product_cats_incl_tax', '' );
120
+ $product_cats_excl_tax = get_option( 'wcj_product_listings_display_taxes_product_cats_excl_tax', '' );
121
+ if ( '' != $products_incl_tax || '' != $products_incl_tax || '' != $products_incl_tax || '' != $products_incl_tax ) {
122
+ // Products
123
+ if ( ! empty( $products_incl_tax ) ) {
124
+ if ( in_array( $product_id, $products_incl_tax ) ) {
125
+ return 'incl';
126
+ }
127
+ }
128
+ if ( ! empty( $products_excl_tax ) ) {
129
+ if ( in_array( $product_id, $products_excl_tax ) ) {
130
+ return 'excl';
131
+ }
132
+ }
133
+ // Categories
134
+ $product_categories = get_the_terms( $product_id, 'product_cat' );
135
+ if ( ! empty( $product_cats_incl_tax ) ) {
136
+ if ( ! empty( $product_categories ) ) {
137
+ foreach ( $product_categories as $product_category ) {
138
+ if ( in_array( $product_category->term_id, $product_cats_incl_tax ) ) {
139
+ return 'incl';
140
+ }
141
+ }
142
+ }
143
+ }
144
+ if ( ! empty( $product_cats_excl_tax ) ) {
145
+ if ( ! empty( $product_categories ) ) {
146
+ foreach ( $product_categories as $product_category ) {
147
+ if ( in_array( $product_category->term_id, $product_cats_excl_tax ) ) {
148
+ return 'excl';
149
+ }
150
+ }
151
+ }
152
+ }
153
+ }
154
+ }
155
+ return $value;
156
+ }
157
+
158
+ }
159
+
160
+ endif;
161
+
162
+ return new WCJ_Tax_Display();
includes/classes/class-wcj-module-shipping-by-condition.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Module - Shipping by Condition
4
  *
5
- * @version 3.2.1
6
  * @since 3.2.0
7
  * @author Algoritmika Ltd.
8
  * @todo (maybe) `abstract class WCJ_Module_Shipping_By_Condition`
@@ -18,13 +18,13 @@ class WCJ_Module_Shipping_By_Condition extends WCJ_Module {
18
  /**
19
  * Constructor.
20
  *
21
- * @version 3.2.1
22
  * @since 3.2.0
23
  */
24
  function __construct( $type = 'module' ) {
25
  parent::__construct( $type );
26
  if ( $this->is_enabled() ) {
27
- add_filter( 'woocommerce_package_rates', array( $this, 'available_shipping_methods' ), PHP_INT_MAX, 2 );
28
  }
29
  }
30
 
2
  /**
3
  * Booster for WooCommerce - Module - Shipping by Condition
4
  *
5
+ * @version 3.2.4
6
  * @since 3.2.0
7
  * @author Algoritmika Ltd.
8
  * @todo (maybe) `abstract class WCJ_Module_Shipping_By_Condition`
18
  /**
19
  * Constructor.
20
  *
21
+ * @version 3.2.4
22
  * @since 3.2.0
23
  */
24
  function __construct( $type = 'module' ) {
25
  parent::__construct( $type );
26
  if ( $this->is_enabled() ) {
27
+ add_filter( 'woocommerce_package_rates', array( $this, 'available_shipping_methods' ), wcj_get_woocommerce_package_rates_module_filter_priority( $this->id ) , 2 );
28
  }
29
  }
30
 
includes/classes/class-wcj-pdf-invoice.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce PDF Invoice
4
  *
5
- * @version 3.2.3
6
  * @author Algoritmika Ltd.
7
  */
8
 
@@ -22,7 +22,7 @@ class WCJ_PDF_Invoice extends WCJ_Invoice {
22
  /**
23
  * prepare_pdf.
24
  *
25
- * @version 3.2.3
26
  */
27
  function prepare_pdf() {
28
 
@@ -30,13 +30,20 @@ class WCJ_PDF_Invoice extends WCJ_Invoice {
30
 
31
  $invoice_type = $this->invoice_type;
32
 
 
 
 
 
 
 
 
 
33
  // Create new PDF document
34
  require_once( wcj_plugin_path() . '/includes/classes/class-wcj-tcpdf.php' );
35
  $pdf = new WCJ_TCPDF(
36
  get_option( 'wcj_invoicing_' . $invoice_type . '_page_orientation', 'P' ),
37
  PDF_UNIT,
38
- //PDF_PAGE_FORMAT,
39
- get_option( 'wcj_invoicing_' . $invoice_type . '_page_format', 'A4' ),
40
  true,
41
  'UTF-8',
42
  false
@@ -147,7 +154,7 @@ class WCJ_PDF_Invoice extends WCJ_Invoice {
147
  /**
148
  * get_pdf.
149
  *
150
- * @version 3.1.0
151
  * @todo pass other params (billing_country, payment_method) as global (same as user_id) instead of $_GET
152
  */
153
  function get_pdf( $dest ) {
@@ -175,70 +182,17 @@ class WCJ_PDF_Invoice extends WCJ_Invoice {
175
  // Print text using writeHTMLCell()
176
  $pdf->writeHTMLCell( 0, 0, '', '', $styling . $html, 0, 1, 0, true, '', true );
177
 
178
- /*
179
- // set style for barcode
180
- $style = array(
181
- 'border' => true,
182
- 'vpadding' => 'auto',
183
- 'hpadding' => 'auto',
184
- 'fgcolor' => array(0,0,0),
185
- 'bgcolor' => false, //array(255,255,255)
186
- 'module_width' => 1, // width of a single module in points
187
- 'module_height' => 1 // height of a single module in points
188
- );
189
-
190
- // -------------------------------------------------------------------
191
- // PDF417 (ISO/IEC 15438:2006)
192
-
193
- /*
194
-
195
- The $type parameter can be simple 'PDF417' or 'PDF417' followed by a
196
- number of comma-separated options:
197
-
198
- 'PDF417,a,e,t,s,f,o0,o1,o2,o3,o4,o5,o6'
199
-
200
- Possible options are:
201
-
202
- a = aspect ratio (width/height);
203
- e = error correction level (0-8);
204
-
205
- Macro Control Block options:
206
-
207
- t = total number of macro segments;
208
- s = macro segment index (0-99998);
209
- f = file ID;
210
- o0 = File Name (text);
211
- o1 = Segment Count (numeric);
212
- o2 = Time Stamp (numeric);
213
- o3 = Sender (text);
214
- o4 = Addressee (text);
215
- o5 = File Size (numeric);
216
- o6 = Checksum (numeric).
217
-
218
- Parameters t, s and f are required for a Macro Control Block, all other parametrs are optional.
219
- To use a comma character ',' on text options, replace it with the character 255: "\xff".
220
-
221
- *//*
222
-
223
- $pdf->write2DBarcode( 'www.woojetpack.com', 'PDF417', 0, 200, 0, 30, $style, 'T');
224
- //$pdf->Text(80, 85, 'PDF417 (ISO/IEC 15438:2006)');
225
-
226
- // -------------------------------------------------------------------
227
- /**
228
- require_once( wcj_plugin_path() .'/includes/lib/tcpdf_min/tcpdf_barcodes_2d.php');
229
- $barcodeobj = new TCPDF2DBarcode('http://www.tcpdf.org', 'PDF417');
230
- // output the barcode as PNG image
231
- //$barcodeobj->getBarcodePNG(4, 4, array(0,0,0));
232
- $html = $barcodeobj->getBarcodeHTML(4, 4, 'black');
233
- //$pdf->writeHTMLCell( 0, 0, '', '', $html, 0, 1, 0, true, '', true );
234
- /**/
235
-
236
  // Close and output PDF document
237
  $result_pdf = $pdf->Output( '', 'S' );
238
  $file_name = $this->get_file_name();
239
 
 
 
 
 
 
240
  if ( 'F' === $dest ) {
241
- $file_path = sys_get_temp_dir() . '/' . $file_name;
242
  if ( ! file_put_contents( $file_path, $result_pdf ) ) {
243
  return null;
244
  }
@@ -261,7 +215,7 @@ class WCJ_PDF_Invoice extends WCJ_Invoice {
261
  echo $result_pdf;
262
  } else {
263
 
264
- $file_path = sys_get_temp_dir() . '/' . $file_name;
265
  if ( ! file_put_contents( $file_path, $result_pdf ) ) {
266
  return null;
267
  }
2
  /**
3
  * Booster for WooCommerce PDF Invoice
4
  *
5
+ * @version 3.2.4
6
  * @author Algoritmika Ltd.
7
  */
8
 
22
  /**
23
  * prepare_pdf.
24
  *
25
+ * @version 3.2.4
26
  */
27
  function prepare_pdf() {
28
 
30
 
31
  $invoice_type = $this->invoice_type;
32
 
33
+ $page_format = get_option( 'wcj_invoicing_' . $invoice_type . '_page_format', 'A4' );
34
+ if ( 'custom' === $page_format ) {
35
+ $page_format = array(
36
+ get_option( 'wcj_invoicing_' . $invoice_type . '_page_format_custom_width', 0 ),
37
+ get_option( 'wcj_invoicing_' . $invoice_type . '_page_format_custom_height', 0 )
38
+ );
39
+ }
40
+
41
  // Create new PDF document
42
  require_once( wcj_plugin_path() . '/includes/classes/class-wcj-tcpdf.php' );
43
  $pdf = new WCJ_TCPDF(
44
  get_option( 'wcj_invoicing_' . $invoice_type . '_page_orientation', 'P' ),
45
  PDF_UNIT,
46
+ $page_format,
 
47
  true,
48
  'UTF-8',
49
  false
154
  /**
155
  * get_pdf.
156
  *
157
+ * @version 3.2.4
158
  * @todo pass other params (billing_country, payment_method) as global (same as user_id) instead of $_GET
159
  */
160
  function get_pdf( $dest ) {
182
  // Print text using writeHTMLCell()
183
  $pdf->writeHTMLCell( 0, 0, '', '', $styling . $html, 0, 1, 0, true, '', true );
184
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
185
  // Close and output PDF document
186
  $result_pdf = $pdf->Output( '', 'S' );
187
  $file_name = $this->get_file_name();
188
 
189
+ $tmp_dir = get_option( 'wcj_invoicing_general_tmp_dir', '' );
190
+ if ( '' === $tmp_dir ) {
191
+ $tmp_dir = sys_get_temp_dir();
192
+ }
193
+
194
  if ( 'F' === $dest ) {
195
+ $file_path = $tmp_dir . '/' . $file_name;
196
  if ( ! file_put_contents( $file_path, $result_pdf ) ) {
197
  return null;
198
  }
215
  echo $result_pdf;
216
  } else {
217
 
218
+ $file_path = $tmp_dir . '/' . $file_name;
219
  if ( ! file_put_contents( $file_path, $result_pdf ) ) {
220
  return null;
221
  }
includes/{shortcodes → classes}/class-wcj-shortcodes.php RENAMED
File without changes
includes/{widgets → classes}/class-wcj-widget.php RENAMED
File without changes
includes/core/class-wcj-admin.php ADDED
@@ -0,0 +1,154 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Booster for WooCommerce - Core - Admin
4
+ *
5
+ * @version 3.2.4
6
+ * @since 3.2.4
7
+ * @author Algoritmika Ltd.
8
+ */
9
+
10
+ if ( ! defined( 'ABSPATH' ) ) exit;
11
+
12
+ if ( ! class_exists( 'WCJ_Admin' ) ) :
13
+
14
+ class WCJ_Admin {
15
+
16
+ /**
17
+ * Constructor.
18
+ *
19
+ * @version 3.2.4
20
+ * @since 3.2.4
21
+ */
22
+ function __construct() {
23
+ if ( is_admin() ) {
24
+ add_filter( 'booster_get_message', 'wcj_get_plus_message', 100, 3 );
25
+ add_filter( 'woocommerce_get_settings_pages', array( $this, 'add_wcj_settings_tab' ), 1 );
26
+ add_filter( 'plugin_action_links_' . plugin_basename( WCJ_PLUGIN_FILE ), array( $this, 'action_links' ) );
27
+ add_action( 'admin_menu', array( $this, 'booster_menu' ), 100 );
28
+ add_filter( 'admin_footer_text', array( $this, 'admin_footer_text' ), 2 );
29
+ if ( 'woocommerce-jetpack.php' === basename( WCJ_PLUGIN_FILE ) ) {
30
+ add_action( 'admin_notices', array( $this, 'check_plus_version' ) );
31
+ }
32
+ }
33
+ }
34
+
35
+ /**
36
+ * check_plus_version.
37
+ *
38
+ * @version 3.1.1
39
+ * @since 2.5.9
40
+ */
41
+ function check_plus_version() {
42
+ if ( ! is_admin() ) {
43
+ return;
44
+ }
45
+ // Check if Plus is installed and activated
46
+ $is_plus_active = false;
47
+ $is_plus_v3_active = false;
48
+ $active_plugins = apply_filters( 'active_plugins', get_option( 'active_plugins', array() ) );
49
+ if ( is_multisite() ) {
50
+ $active_plugins = array_merge( $active_plugins, array_keys( get_site_option( 'active_sitewide_plugins', array() ) ) );
51
+ }
52
+ foreach ( $active_plugins as $active_plugin ) {
53
+ $active_plugin = explode( '/', $active_plugin );
54
+ if ( isset( $active_plugin[1] ) ) {
55
+ if ( 'booster-plus-for-woocommerce.php' === $active_plugin[1] ) {
56
+ $is_plus_v3_active = true;
57
+ break;
58
+ } elseif ( 'woocommerce-jetpack-plus.php' === $active_plugin[1] || 'woocommerce-booster-plus.php' === $active_plugin[1] ) {
59
+ $is_plus_active = true;
60
+ }
61
+ }
62
+ }
63
+ // Check Plus version
64
+ if ( ! $is_plus_v3_active && $is_plus_active ) {
65
+ $plus_version = get_option( 'booster_plus_version', false );
66
+ $required_plus_version = '1.1.0';
67
+ $notice_type = ( version_compare( $plus_version, $required_plus_version, '<' ) ? 'error' : 'warning' );
68
+ global $pagenow;
69
+ if ( 'error' === $notice_type || 'plugins.php' === $pagenow ) {
70
+ $class = 'notice notice-' . $notice_type;
71
+ $message = ( 'error' === $notice_type ?
72
+ sprintf(
73
+ __( 'Please upgrade <strong>Booster Plus for WooCommerce</strong> plugin. Visit <a target="_blank" href="%s">your account page</a> on booster.io to download the latest Booster Plus version.', 'woocommerce-jetpack' ),
74
+ 'https://booster.io/my-account/?utm_source=plus_update'
75
+ ) :
76
+ sprintf(
77
+ __( 'There is new version of <strong>Booster Plus for WooCommerce</strong> plugin available. We recommend upgrading. Please visit <a target="_blank" href="%s">your account page</a> on booster.io to download the latest Booster Plus version.', 'woocommerce-jetpack' ),
78
+ 'https://booster.io/my-account/?utm_source=plus_update'
79
+ )
80
+ );
81
+ echo '<div class="' . $class . '"><p>' . $message . '</p></div>';
82
+ }
83
+ }
84
+ }
85
+
86
+ /**
87
+ * admin_footer_text
88
+ *
89
+ * @version 2.9.0
90
+ */
91
+ function admin_footer_text( $footer_text ) {
92
+ if ( isset( $_GET['page'] ) ) {
93
+ if ( 'wcj-tools' === $_GET['page'] || ( 'wc-settings' === $_GET['page'] && isset( $_GET['tab'] ) && 'jetpack' === $_GET['tab'] ) ) {
94
+ $rocket_icons = wcj_get_5_rocket_image();
95
+ $rating_link = '<a href="https://wordpress.org/support/plugin/woocommerce-jetpack/reviews/?rate=5#new-post" target="_blank">' . $rocket_icons . '</a>';
96
+ return sprintf(
97
+ __( 'If you like <strong>Booster for WooCommerce</strong> please leave us a %s rating. Thank you, we couldn\'t have done it without you!', 'woocommerce-jetpack' ),
98
+ $rating_link
99
+ );
100
+ }
101
+ }
102
+ return $footer_text;
103
+ }
104
+
105
+ /**
106
+ * Add menu item
107
+ *
108
+ * @version 2.9.0
109
+ */
110
+ function booster_menu() {
111
+ add_submenu_page(
112
+ 'woocommerce',
113
+ __( 'Booster for WooCommerce', 'woocommerce-jetpack' ),
114
+ __( 'Booster Settings', 'woocommerce-jetpack' ) ,
115
+ 'manage_woocommerce',
116
+ 'admin.php?page=wc-settings&tab=jetpack'
117
+ );
118
+ }
119
+
120
+ /**
121
+ * Show action links on the plugin screen
122
+ *
123
+ * @version 3.2.4
124
+ * @param mixed $links
125
+ * @return array
126
+ */
127
+ function action_links( $links ) {
128
+ $custom_links = array(
129
+ '<a href="' . admin_url( 'admin.php?page=wc-settings&tab=jetpack' ) . '">' . __( 'Settings', 'woocommerce' ) . '</a>',
130
+ '<a href="' . esc_url( 'https://booster.io/' ) . '">' . __( 'Docs', 'woocommerce-jetpack' ) . '</a>',
131
+ );
132
+ if ( 1 === apply_filters( 'booster_get_option', 1, '' ) ) {
133
+ $custom_links[] = '<a href="' . esc_url( 'https://booster.io/plus/' ) . '">' . __( 'Unlock all', 'woocommerce-jetpack' ) . '</a>';
134
+ }
135
+ return array_merge( $custom_links, $links );
136
+ }
137
+
138
+ /**
139
+ * Add Jetpack settings tab to WooCommerce settings.
140
+ *
141
+ * @version 3.2.4
142
+ */
143
+ function add_wcj_settings_tab( $settings ) {
144
+ $_settings = include( WCJ_PLUGIN_PATH . '/includes/admin/class-wc-settings-jetpack.php' );
145
+ $_settings->add_module_statuses( WCJ()->module_statuses );
146
+ $settings[] = $_settings;
147
+ return $settings;
148
+ }
149
+
150
+ }
151
+
152
+ endif;
153
+
154
+ return new WCJ_Admin();
includes/{classes → core}/class-wcj-scripts.php RENAMED
@@ -5,7 +5,6 @@
5
  * @version 3.0.0
6
  * @since 2.9.0
7
  * @author Algoritmika Ltd.
8
- * @todo move this class to another directory
9
  */
10
 
11
  if ( ! defined( 'ABSPATH' ) ) exit;
5
  * @version 3.0.0
6
  * @since 2.9.0
7
  * @author Algoritmika Ltd.
 
8
  */
9
 
10
  if ( ! defined( 'ABSPATH' ) ) exit;
includes/core/wcj-functions.php ADDED
@@ -0,0 +1,38 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Booster for WooCommerce - Functions
4
+ *
5
+ * @version 3.2.4
6
+ * @since 3.2.4
7
+ * @author Algoritmika Ltd.
8
+ */
9
+
10
+ if ( ! defined( 'ABSPATH' ) ) exit;
11
+
12
+ $wcj_function_files = array(
13
+ 'wcj-functions-core.php',
14
+ 'wcj-functions-debug.php',
15
+ 'wcj-functions-admin.php',
16
+ 'wcj-functions-general.php',
17
+ 'wcj-functions-date-time.php',
18
+ 'wcj-functions-crons.php',
19
+ 'wcj-functions-products.php',
20
+ 'wcj-functions-orders.php',
21
+ 'wcj-functions-eu-vat.php',
22
+ 'wcj-functions-price-currency.php',
23
+ 'wcj-functions-users.php',
24
+ 'wcj-functions-exchange-rates.php',
25
+ 'wcj-functions-number-to-words.php',
26
+ 'wcj-functions-number-to-words-bg.php',
27
+ 'wcj-functions-number-to-words-lt.php',
28
+ 'wcj-functions-html.php',
29
+ 'wcj-functions-country.php',
30
+ 'wcj-functions-invoicing.php',
31
+ 'wcj-functions-reports.php',
32
+ 'wcj-functions-currencies.php',
33
+ );
34
+
35
+ $wcj_functions_dir = WCJ_PLUGIN_PATH . '/includes/functions/';
36
+ foreach ( $wcj_function_files as $wcj_function_file ) {
37
+ include_once( $wcj_functions_dir . $wcj_function_file );
38
+ }
includes/core/wcj-loader.php ADDED
@@ -0,0 +1,75 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Booster for WooCommerce - Core - Loader
4
+ *
5
+ * @version 3.2.4
6
+ * @since 3.2.4
7
+ * @author Algoritmika Ltd.
8
+ */
9
+
10
+ if ( ! defined( 'ABSPATH' ) ) {
11
+ exit;
12
+ }
13
+
14
+ if ( ! defined( 'WCJ_PLUGIN_PATH' ) ) {
15
+ /**
16
+ * WCJ_PLUGIN_PATH.
17
+ *
18
+ * @version 3.2.4
19
+ * @since 3.2.4
20
+ */
21
+ define( 'WCJ_PLUGIN_PATH', untrailingslashit( realpath( plugin_dir_path( WCJ_PLUGIN_FILE ) ) ) );
22
+ }
23
+
24
+ // Set up localisation
25
+ load_plugin_textdomain( 'woocommerce-jetpack', false, dirname( plugin_basename( WCJ_PLUGIN_FILE ) ) . '/langs/' );
26
+
27
+ // Include required core files used in admin and on the frontend
28
+
29
+ // Constants
30
+ require_once( WCJ_PLUGIN_PATH . '/includes/constants/wcj-constants.php' );
31
+
32
+ // Functions
33
+ require_once( 'wcj-functions.php' );
34
+
35
+ // Classes
36
+ require_once( WCJ_PLUGIN_PATH . '/includes/classes/class-wcj-module.php' );
37
+ require_once( WCJ_PLUGIN_PATH . '/includes/classes/class-wcj-module-shipping-by-condition.php' );
38
+ require_once( WCJ_PLUGIN_PATH . '/includes/classes/class-wcj-invoice.php' );
39
+ require_once( WCJ_PLUGIN_PATH . '/includes/classes/class-wcj-pdf-invoice.php' );
40
+
41
+ // Plus
42
+ if ( 'booster-plus-for-woocommerce.php' === basename( WCJ_PLUGIN_FILE ) && apply_filters( 'wcj_full_pack', true ) ) {
43
+ require_once( WCJ_PLUGIN_PATH . '/includes/plus/class-wcj-plus.php' );
44
+ }
45
+
46
+ // Tools
47
+ require_once( WCJ_PLUGIN_PATH . '/includes/admin/class-wcj-tools.php' );
48
+
49
+ // Shortcodes
50
+ require_once( 'wcj-shortcodes.php' );
51
+
52
+ // Widgets
53
+ require_once( WCJ_PLUGIN_PATH . '/includes/classes/class-wcj-widget.php' );
54
+ require_once( WCJ_PLUGIN_PATH . '/includes/widgets/class-wcj-widget-multicurrency.php' );
55
+ require_once( WCJ_PLUGIN_PATH . '/includes/widgets/class-wcj-widget-country-switcher.php' );
56
+ require_once( WCJ_PLUGIN_PATH . '/includes/widgets/class-wcj-widget-left-to-free-shipping.php' );
57
+ require_once( WCJ_PLUGIN_PATH . '/includes/widgets/class-wcj-widget-selector.php' );
58
+
59
+ // Modules and Submodules
60
+ require_once( 'wcj-modules.php' );
61
+
62
+ // Add and Manage options
63
+ require_once( 'wcj-options.php' );
64
+
65
+ // Admin
66
+ require_once( 'class-wcj-admin.php' );
67
+
68
+ // Scripts
69
+ require_once( 'class-wcj-scripts.php' );
70
+
71
+ // Settings manager
72
+ require_once( WCJ_PLUGIN_PATH . '/includes/admin/class-wcj-settings-manager.php' );
73
+
74
+ // Loaded action
75
+ do_action( 'wcj_loaded' );
includes/core/wcj-modules.php ADDED
@@ -0,0 +1,127 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Booster for WooCommerce - Modules
4
+ *
5
+ * @version 3.2.4
6
+ * @since 3.2.4
7
+ * @author Algoritmika Ltd.
8
+ */
9
+
10
+ if ( ! defined( 'ABSPATH' ) ) exit;
11
+
12
+ $wcj_module_files = array(
13
+ 'class-wcj-admin-tools.php',
14
+ 'class-wcj-price-labels.php',
15
+ 'class-wcj-call-for-price.php',
16
+ 'class-wcj-free-price.php',
17
+ 'class-wcj-product-listings.php',
18
+ 'class-wcj-tax-display.php',
19
+ 'class-wcj-admin-products-list.php',
20
+ 'class-wcj-products-per-page.php',
21
+ 'class-wcj-sorting.php',
22
+ 'class-wcj-product-custom-info.php',
23
+ 'class-wcj-product-info.php',
24
+ 'class-wcj-product-add-to-cart.php',
25
+ 'class-wcj-related-products.php',
26
+ 'class-wcj-sku.php',
27
+ 'class-wcj-stock.php',
28
+ 'class-wcj-product-tabs.php',
29
+ 'class-wcj-product-input-fields.php',
30
+ 'class-wcj-product-bulk-price-converter.php',
31
+ 'class-wcj-product-bulk-meta-editor.php',
32
+ 'class-wcj-purchase-data.php',
33
+ 'class-wcj-product-bookings.php',
34
+ 'class-wcj-crowdfunding.php',
35
+ 'class-wcj-product-addons.php',
36
+ 'class-wcj-wholesale-price.php',
37
+ 'class-wcj-product-open-pricing.php',
38
+ 'class-wcj-offer-price.php',
39
+ 'class-wcj-price-by-user-role.php',
40
+ 'class-wcj-global-discount.php',
41
+ 'class-wcj-product-price-by-formula.php',
42
+ 'class-wcj-product-images.php',
43
+ 'class-wcj-sale-flash.php',
44
+ 'class-wcj-product-by-country.php',
45
+ 'class-wcj-product-custom-visibility.php',
46
+ 'class-wcj-product-by-time.php',
47
+ 'class-wcj-product-by-date.php',
48
+ 'class-wcj-product-by-user-role.php',
49
+ 'class-wcj-product-by-user.php',
50
+ 'class-wcj-add-to-cart.php',
51
+ 'class-wcj-more-button-labels.php',
52
+ 'class-wcj-cart.php',
53
+ 'class-wcj-cart-customization.php',
54
+ 'class-wcj-empty-cart-button.php',
55
+ 'class-wcj-mini-cart.php',
56
+ 'class-wcj-checkout-core-fields.php',
57
+ 'class-wcj-checkout-custom-fields.php',
58
+ 'class-wcj-checkout-files-upload.php',
59
+ 'class-wcj-checkout-custom-info.php',
60
+ 'class-wcj-checkout-customization.php',
61
+ 'class-wcj-payment-gateways.php',
62
+ 'class-wcj-payment-gateways-icons.php',
63
+ 'class-wcj-payment-gateways-fees.php',
64
+ 'class-wcj-payment-gateways-per-category.php',
65
+ 'class-wcj-payment-gateways-currency.php',
66
+ 'class-wcj-payment-gateways-by-currency.php',
67
+ 'class-wcj-payment-gateways-min-max.php',
68
+ 'class-wcj-payment-gateways-by-country.php',
69
+ 'class-wcj-payment-gateways-by-user-role.php',
70
+ 'class-wcj-payment-gateways-by-shipping.php',
71
+ 'class-wcj-shipping.php',
72
+ 'class-wcj-shipping-options.php',
73
+ 'class-wcj-left-to-free-shipping.php',
74
+ 'class-wcj-shipping-calculator.php',
75
+ 'class-wcj-shipping-by-user-role.php',
76
+ 'class-wcj-shipping-by-products.php',
77
+ 'class-wcj-shipping-by-order-amount.php',
78
+ 'class-wcj-address-formats.php',
79
+ 'class-wcj-orders.php',
80
+ 'class-wcj-admin-orders-list.php',
81
+ 'class-wcj-order-min-amount.php',
82
+ 'class-wcj-order-numbers.php',
83
+ 'class-wcj-order-custom-statuses.php',
84
+ 'class-wcj-order-quantities.php',
85
+ 'class-wcj-pdf-invoicing.php',
86
+ 'class-wcj-emails.php',
87
+ 'class-wcj-email-options.php',
88
+ 'class-wcj-emails-verification.php',
89
+ 'class-wcj-currencies.php',
90
+ 'class-wcj-multicurrency.php',
91
+ 'class-wcj-multicurrency-product-base-price.php',
92
+ 'class-wcj-currency-per-product.php',
93
+ 'class-wcj-currency-external-products.php',
94
+ 'class-wcj-price-by-country.php',
95
+ 'class-wcj-currency-exchange-rates.php',
96
+ 'class-wcj-price-formats.php',
97
+ 'class-wcj-general.php',
98
+ 'class-wcj-track-users.php',
99
+ 'class-wcj-breadcrumbs.php',
100
+ 'class-wcj-url-coupons.php',
101
+ 'class-wcj-coupon-code-generator.php',
102
+ 'class-wcj-admin-bar.php',
103
+ 'class-wcj-my-account.php',
104
+ 'class-wcj-custom-css.php',
105
+ 'class-wcj-custom-js.php',
106
+ 'class-wcj-products-xml.php',
107
+ 'class-wcj-export-import.php',
108
+ 'class-wcj-eu-vat-number.php',
109
+ 'class-wcj-old-slugs.php',
110
+ 'class-wcj-reports.php',
111
+ 'class-wcj-wpml.php',
112
+ 'pdf-invoices/submodules/class-wcj-pdf-invoicing-numbering.php',
113
+ 'pdf-invoices/submodules/class-wcj-pdf-invoicing-templates.php',
114
+ 'pdf-invoices/submodules/class-wcj-pdf-invoicing-styling.php',
115
+ 'pdf-invoices/submodules/class-wcj-pdf-invoicing-header.php',
116
+ 'pdf-invoices/submodules/class-wcj-pdf-invoicing-footer.php',
117
+ 'pdf-invoices/submodules/class-wcj-pdf-invoicing-page.php',
118
+ 'pdf-invoices/submodules/class-wcj-pdf-invoicing-emails.php',
119
+ 'pdf-invoices/submodules/class-wcj-pdf-invoicing-display.php',
120
+ );
121
+
122
+ $this->modules = array();
123
+ $wcj_modules_dir = WCJ_PLUGIN_PATH . '/includes/';
124
+ foreach ( $wcj_module_files as $wcj_module_file ) {
125
+ $module = include_once( $wcj_modules_dir . $wcj_module_file );
126
+ $this->modules[ $module->id ] = $module;
127
+ }
includes/core/wcj-options.php ADDED
@@ -0,0 +1,50 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Booster for WooCommerce - Core - Options
4
+ *
5
+ * @version 3.2.4
6
+ * @since 3.2.4
7
+ * @author Algoritmika Ltd.
8
+ * @todo (maybe) this only loads Enable, Tools and Reset settings for each module
9
+ */
10
+
11
+ if ( ! defined( 'ABSPATH' ) ) exit;
12
+
13
+ if ( is_admin() ) {
14
+ // Modules statuses
15
+ $submodules_classes = array(
16
+ 'WCJ_PDF_Invoicing_Display',
17
+ 'WCJ_PDF_Invoicing_Emails',
18
+ 'WCJ_PDF_Invoicing_Footer',
19
+ 'WCJ_PDF_Invoicing_Header',
20
+ 'WCJ_PDF_Invoicing_Numbering',
21
+ 'WCJ_PDF_Invoicing_Page',
22
+ 'WCJ_PDF_Invoicing_Styling',
23
+ 'WCJ_PDF_Invoicing_Templates',
24
+ );
25
+ foreach ( $this->modules as $module ) {
26
+ if ( ! in_array( get_class( $module ), $submodules_classes ) ) {
27
+ $status_settings = $module->add_enable_module_setting( array() );
28
+ $this->module_statuses[] = $status_settings[1];
29
+ }
30
+ if ( get_option( 'booster_for_woocommerce_version' ) === $this->version ) {
31
+ continue;
32
+ }
33
+ $values = $module->get_settings();
34
+ // Adding options
35
+ foreach ( $values as $value ) {
36
+ if ( isset( $value['default'] ) && isset( $value['id'] ) ) {
37
+ if ( 'yes' === get_option( 'wcj_autoload_options', 'yes' ) ) {
38
+ $autoload = isset( $value['autoload'] ) ? (bool) $value['autoload'] : true;
39
+ } else {
40
+ $autoload = false;
41
+ }
42
+ add_option( $value['id'], $value['default'], '', $autoload );
43
+ }
44
+ }
45
+ }
46
+ if ( get_option( 'booster_for_woocommerce_version' ) !== $this->version ) {
47
+ update_option( 'booster_for_woocommerce_version', $this->version );
48
+ add_action( 'admin_notices', 'wcj_admin_notices_version_updated' );
49
+ }
50
+ }
includes/core/wcj-shortcodes.php ADDED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Booster for WooCommerce - Shortcodes
4
+ *
5
+ * @version 3.2.4
6
+ * @since 3.2.4
7
+ * @author Algoritmika Ltd.
8
+ */
9
+
10
+ if ( ! defined( 'ABSPATH' ) ) exit;
11
+
12
+ if ( ! wcj_is_module_enabled( 'general' ) || ( wcj_is_module_enabled( 'general' ) && 'no' === get_option( 'wcj_general_shortcodes_disable_booster_shortcodes', 'no' ) ) ) {
13
+
14
+ include_once( WCJ_PLUGIN_PATH . '/includes/classes/class-wcj-shortcodes.php' );
15
+
16
+ $wcj_shortcodes_files = array(
17
+ 'class-wcj-shortcodes-general.php',
18
+ 'class-wcj-shortcodes-invoices.php',
19
+ 'class-wcj-shortcodes-orders.php',
20
+ 'class-wcj-shortcodes-order-items.php',
21
+ 'class-wcj-shortcodes-products.php',
22
+ 'class-wcj-shortcodes-products-crowdfunding.php',
23
+ 'class-wcj-shortcodes-products-add-form.php',
24
+ 'class-wcj-shortcodes-input-field.php',
25
+ );
26
+
27
+ $wcj_shortcodes_dir = WCJ_PLUGIN_PATH . '/includes/shortcodes/';
28
+ foreach ( $wcj_shortcodes_files as $wcj_shortcodes_file ) {
29
+ include_once( $wcj_shortcodes_dir . $wcj_shortcodes_file );
30
+ }
31
+
32
+ }
includes/emails/class-wc-email-wcj-custom.php CHANGED
@@ -4,7 +4,7 @@
4
  *
5
  * An email sent to recipient list when selected triggers are called.
6
  *
7
- * @version 3.2.2
8
  * @since 2.3.9
9
  * @author Algoritmika Ltd.
10
  * @extends WC_Email
@@ -21,12 +21,12 @@ class WC_Email_WCJ_Custom extends WC_Email {
21
  /**
22
  * Constructor
23
  *
24
- * @version 2.5.5
25
  */
26
  function __construct( $id = 1 ) {
27
 
28
  $this->id = 'wcj_custom' . '_' . $id;
29
- $this->customer_email = ( '%customer%' === $this->get_option( 'recipient' ) ) ? true : false;
30
  $this->title = get_option( 'wcj_emails_custom_emails_admin_title_' . $id, __( 'Custom', 'woocommerce-jetpack' ) . ' #' . $id );
31
  $this->description = __( 'Custom emails are sent to the recipient list when selected triggers are called.', 'woocommerce-jetpack' );
32
 
@@ -54,8 +54,9 @@ class WC_Email_WCJ_Custom extends WC_Email {
54
  if ( ! $this->customer_email ) {
55
  $this->recipient = $this->get_option( 'recipient' );
56
 
57
- if ( ! $this->recipient )
58
  $this->recipient = get_option( 'admin_email' );
 
59
  }
60
  }
61
 
@@ -104,7 +105,7 @@ class WC_Email_WCJ_Custom extends WC_Email {
104
  /**
105
  * trigger.
106
  *
107
- * @version 3.2.2
108
  */
109
  function trigger( $order_id ) {
110
 
@@ -118,6 +119,8 @@ class WC_Email_WCJ_Custom extends WC_Email {
118
 
119
  if ( $this->customer_email ) {
120
  $this->recipient = wcj_get_order_billing_email( $this->object );
 
 
121
  }
122
 
123
  $this->find['order-date'] = '{order_date}';
4
  *
5
  * An email sent to recipient list when selected triggers are called.
6
  *
7
+ * @version 3.2.4
8
  * @since 2.3.9
9
  * @author Algoritmika Ltd.
10
  * @extends WC_Email
21
  /**
22
  * Constructor
23
  *
24
+ * @version 3.2.4
25
  */
26
  function __construct( $id = 1 ) {
27
 
28
  $this->id = 'wcj_custom' . '_' . $id;
29
+ $this->customer_email = ( '%customer%' === $this->get_option( 'recipient' ) );
30
  $this->title = get_option( 'wcj_emails_custom_emails_admin_title_' . $id, __( 'Custom', 'woocommerce-jetpack' ) . ' #' . $id );
31
  $this->description = __( 'Custom emails are sent to the recipient list when selected triggers are called.', 'woocommerce-jetpack' );
32
 
54
  if ( ! $this->customer_email ) {
55
  $this->recipient = $this->get_option( 'recipient' );
56
 
57
+ if ( ! $this->recipient ) {
58
  $this->recipient = get_option( 'admin_email' );
59
+ }
60
  }
61
  }
62
 
105
  /**
106
  * trigger.
107
  *
108
+ * @version 3.2.4
109
  */
110
  function trigger( $order_id ) {
111
 
119
 
120
  if ( $this->customer_email ) {
121
  $this->recipient = wcj_get_order_billing_email( $this->object );
122
+ } elseif ( false !== strpos( $this->recipient, '%customer%' ) ) {
123
+ $this->recipient = str_replace( '%customer%', wcj_get_order_billing_email( $this->object ), $this->recipient );
124
  }
125
 
126
  $this->find['order-date'] = '{order_date}';
includes/exchange-rates/class-wcj-exchange-rates-crons.php CHANGED
@@ -208,11 +208,11 @@ class WCJ_Exchange_Rates_Crons {
208
  function cron_add_custom_intervals( $schedules ) {
209
  $schedules['weekly'] = array(
210
  'interval' => 604800,
211
- 'display' => __( 'Once Weekly', 'woocommerce-jetpack' )
212
  );
213
  $schedules['minutely'] = array(
214
  'interval' => 60,
215
- 'display' => __( 'Once a Minute', 'woocommerce-jetpack' )
216
  );
217
  return $schedules;
218
  }
208
  function cron_add_custom_intervals( $schedules ) {
209
  $schedules['weekly'] = array(
210
  'interval' => 604800,
211
+ 'display' => __( 'Once Weekly', 'woocommerce-jetpack' )
212
  );
213
  $schedules['minutely'] = array(
214
  'interval' => 60,
215
+ 'display' => __( 'Once a Minute', 'woocommerce-jetpack' )
216
  );
217
  return $schedules;
218
  }
includes/exchange-rates/class-wcj-exchange-rates.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce Exchange Rates
4
  *
5
- * @version 3.2.3
6
  * @author Algoritmika Ltd.
7
  */
8
 
@@ -15,15 +15,13 @@ class WCJ_Exchange_Rates {
15
  /**
16
  * Constructor.
17
  *
18
- * @version 3.2.2
19
  */
20
  function __construct() {
21
 
22
  add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_exchange_rates_script' ) );
23
  add_action( 'admin_init', array( $this, 'register_script' ) );
24
 
25
- add_action( 'woocommerce_admin_field_exchange_rate', array( $this, 'output_settings_button' ) );
26
-
27
  add_action( 'wp_ajax_' . 'wcj_ajax_get_exchange_rates_average', array( $this, 'wcj_ajax_get_exchange_rates_average' ) );
28
  add_action( 'wp_ajax_nopriv_' . 'wcj_ajax_get_exchange_rates_average', array( $this, 'wcj_ajax_get_exchange_rates_average' ) );
29
  }
@@ -95,68 +93,6 @@ class WCJ_Exchange_Rates {
95
  }
96
  }
97
 
98
- /**
99
- * output_settings_button.
100
- *
101
- * @version 3.2.3
102
- * @todo (maybe) wcj_currency_exchange_rates_precision
103
- */
104
- function output_settings_button( $value ) {
105
-
106
- $value['type'] = 'number';
107
-
108
- $option_value = get_option( $value['id'], $value['default'] );
109
-
110
- // Custom attribute handling
111
- $custom_attributes = array();
112
- // $step = sprintf( "%f", ( 1 / pow( 10, absint( get_option( 'wcj_currency_exchange_rates_precision', 6 ) ) ) ) );
113
- // $value['custom_attributes'] = array( 'step' => $step, 'min' => '0' );
114
- if ( ! empty( $value['custom_attributes'] ) && is_array( $value['custom_attributes'] ) ) {
115
- foreach ( $value['custom_attributes'] as $attribute => $attribute_value ) {
116
- $custom_attributes[] = esc_attr( $attribute ) . '="' . esc_attr( $attribute_value ) . '"';
117
- }
118
- }
119
- $custom_attributes_button = array();
120
- if ( ! empty( $value['custom_attributes_button'] ) && is_array( $value['custom_attributes_button'] ) ) {
121
- foreach ( $value['custom_attributes_button'] as $attribute => $attribute_value ) {
122
- $custom_attributes_button[] = esc_attr( $attribute ) . '="' . esc_attr( $attribute_value ) . '"';
123
- }
124
- }
125
- $tip = '';
126
- $description = '';
127
- $exchange_rate_servers = wcj_get_currency_exchange_rate_servers();
128
- $exchange_rate_server = $exchange_rate_servers[ get_option( 'wcj_currency_exchange_rates_server', 'ecb' ) ];
129
- $value_title = sprintf( __( 'Grab %s rate from %s', 'woocommerce-jetpack' ), $value['value'], $exchange_rate_server );
130
- ?>
131
- <tr valign="top">
132
- <th scope="row" class="titledesc">
133
- <label for="<?php echo esc_attr( $value['id'] ); ?>"><?php echo esc_html( $value['title'] ); ?></label>
134
- <?php echo $tip; ?>
135
- </th>
136
- <td class="forminp forminp-<?php echo sanitize_title( $value['type'] ) ?>">
137
- <input
138
- name="<?php echo esc_attr( $value['id'] ); ?>"
139
- id="<?php echo esc_attr( $value['id'] ); ?>"
140
- type="<?php echo esc_attr( $value['type'] ); ?>"
141
- style="<?php echo esc_attr( $value['css'] ); ?>"
142
- value="<?php echo esc_attr( $option_value ); ?>"
143
- class="<?php echo esc_attr( $value['class'] ); ?>"
144
- <?php echo implode( ' ', $custom_attributes ); ?>
145
- />
146
- <input
147
- name="<?php echo esc_attr( $value['id'] . '_button' ); ?>"
148
- id="<?php echo esc_attr( $value['id'] . '_button' ); ?>"
149
- type="button"
150
- value="<?php echo esc_attr( $value['value'] ); ?>"
151
- title="<?php echo esc_attr( $value_title ); ?>"
152
- class="exchage_rate_button"
153
- <?php echo implode( ' ', $custom_attributes_button ); ?>
154
- />
155
- </td>
156
- </tr>
157
- <?php
158
- }
159
-
160
  }
161
 
162
  endif;
2
  /**
3
  * Booster for WooCommerce Exchange Rates
4
  *
5
+ * @version 3.2.4
6
  * @author Algoritmika Ltd.
7
  */
8
 
15
  /**
16
  * Constructor.
17
  *
18
+ * @version 3.2.4
19
  */
20
  function __construct() {
21
 
22
  add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_exchange_rates_script' ) );
23
  add_action( 'admin_init', array( $this, 'register_script' ) );
24
 
 
 
25
  add_action( 'wp_ajax_' . 'wcj_ajax_get_exchange_rates_average', array( $this, 'wcj_ajax_get_exchange_rates_average' ) );
26
  add_action( 'wp_ajax_nopriv_' . 'wcj_ajax_get_exchange_rates_average', array( $this, 'wcj_ajax_get_exchange_rates_average' ) );
27
  }
93
  }
94
  }
95
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
96
  }
97
 
98
  endif;
includes/functions/wcj-functions-admin.php CHANGED
@@ -2,13 +2,44 @@
2
  /**
3
  * Booster for WooCommerce - Functions - Admin
4
  *
5
- * @version 3.1.0
6
  * @since 2.9.0
7
  * @author Algoritmika Ltd.
8
  */
9
 
10
  if ( ! defined( 'ABSPATH' ) ) exit;
11
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
12
  if ( ! function_exists( 'wcj_get_settings_as_multiselect_or_text' ) ) {
13
  /**
14
  * wcj_get_settings_as_multiselect_or_text.
2
  /**
3
  * Booster for WooCommerce - Functions - Admin
4
  *
5
+ * @version 3.2.4
6
  * @since 2.9.0
7
  * @author Algoritmika Ltd.
8
  */
9
 
10
  if ( ! defined( 'ABSPATH' ) ) exit;
11
 
12
+ if ( ! function_exists( 'wcj_is_admin_product_edit_page' ) ) {
13
+ /**
14
+ * wcj_is_admin_product_edit_page.
15
+ *
16
+ * @version 3.2.4
17
+ * @since 3.2.4
18
+ * @todo use where appropriate
19
+ * @todo (maybe) move to `wcj-functions-conditional.php`
20
+ */
21
+ function wcj_is_admin_product_edit_page() {
22
+ global $pagenow;
23
+ return ( is_admin() && 'post.php' === $pagenow && isset( $_GET['action'] ) && 'edit' === $_GET['action'] && 'product' === get_post_type() );
24
+ }
25
+ }
26
+
27
+ if ( ! function_exists( 'wcj_admin_notices_version_updated' ) ) {
28
+ /**
29
+ * wcj_admin_notices_version_updated.
30
+ *
31
+ * @version 3.2.4
32
+ * @since 2.8.0
33
+ */
34
+ function wcj_admin_notices_version_updated() {
35
+ if ( get_option( 'booster_for_woocommerce_version' ) === WCJ()->version ) {
36
+ $class = 'notice notice-success is-dismissible';
37
+ $message = sprintf( __( '<strong>Booster for WooCommerce</strong> plugin was successfully updated to version <strong>%s</strong>.', 'woocommerce-jetpack' ), WCJ()->version );
38
+ echo sprintf( '<div class="%1$s"><p>%2$s</p></div>', $class, $message );
39
+ }
40
+ }
41
+ }
42
+
43
  if ( ! function_exists( 'wcj_get_settings_as_multiselect_or_text' ) ) {
44
  /**
45
  * wcj_get_settings_as_multiselect_or_text.
includes/functions/wcj-functions-core.php CHANGED
@@ -25,6 +25,7 @@ if ( ! function_exists( 'wcj_plugin_path' ) ) {
25
  * Get the plugin path.
26
  *
27
  * @return string
 
28
  */
29
  function wcj_plugin_path() {
30
  return untrailingslashit( realpath( plugin_dir_path( __FILE__ ) . '/../..' ) );
25
  * Get the plugin path.
26
  *
27
  * @return string
28
+ * @todo use `WCJ_PLUGIN_PATH` constant instead
29
  */
30
  function wcj_plugin_path() {
31
  return untrailingslashit( realpath( plugin_dir_path( __FILE__ ) . '/../..' ) );
includes/functions/wcj-functions-crons.php ADDED
@@ -0,0 +1,119 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Booster for WooCommerce - Functions - Crons
4
+ *
5
+ * @version 3.2.4
6
+ * @since 3.2.4
7
+ * @author Algoritmika Ltd.
8
+ * @todo use all functions where applicable
9
+ */
10
+
11
+ if ( ! defined( 'ABSPATH' ) ) {
12
+ exit;
13
+ }
14
+
15
+ if ( ! function_exists( 'wcj_crons_get_all_intervals' ) ) {
16
+ /**
17
+ * wcj_crons_get_all_intervals.
18
+ *
19
+ * @version 3.2.4
20
+ * @since 3.2.4
21
+ */
22
+ function wcj_crons_get_all_intervals( $action = '', $skip_intervals = array() ) {
23
+ if ( '' === $action ) {
24
+ $action = __( 'Update', 'woocommerce-jetpack' );
25
+ }
26
+ $return = array(
27
+ 'minutely' => sprintf( __( '%s every minute', 'woocommerce-jetpack' ), $action ),
28
+ 'minute_5' => sprintf( __( '%s every 5 minutes', 'woocommerce-jetpack' ), $action ),
29
+ 'minute_15' => sprintf( __( '%s every 15 minutes', 'woocommerce-jetpack' ), $action ),
30
+ 'minute_30' => sprintf( __( '%s every 30 minutes', 'woocommerce-jetpack' ), $action ),
31
+ 'hourly' => sprintf( __( '%s hourly', 'woocommerce-jetpack' ), $action ),
32
+ 'twicedaily' => sprintf( __( '%s twice daily', 'woocommerce-jetpack' ), $action ),
33
+ 'daily' => sprintf( __( '%s daily', 'woocommerce-jetpack' ), $action ),
34
+ 'weekly' => sprintf( __( '%s weekly', 'woocommerce-jetpack' ), $action ),
35
+ );
36
+ if ( ! empty( $skip_intervals ) ) {
37
+ foreach ( $skip_intervals as $skip_interval ) {
38
+ unset( $return[ $skip_interval ] );
39
+ }
40
+ }
41
+ return $return;
42
+ }
43
+ }
44
+
45
+ if ( ! function_exists( 'wcj_crons_schedule_the_events' ) ) {
46
+ /**
47
+ * wcj_crons_schedule_the_events.
48
+ *
49
+ * @version 3.2.4
50
+ * @since 3.2.4
51
+ */
52
+ function wcj_crons_schedule_the_events( $event_hook, $selected_interval ) {
53
+ $intervals = array_keys( wcj_crons_get_all_intervals() );
54
+ foreach ( $intervals as $interval ) {
55
+ $event_timestamp = wp_next_scheduled( $event_hook, array( $interval ) );
56
+ if ( $selected_interval === $interval ) {
57
+ update_option( $event_hook . '_time', $event_timestamp );
58
+ }
59
+ if ( ! $event_timestamp && $selected_interval === $interval ) {
60
+ wp_schedule_event( time(), $selected_interval, $event_hook, array( $selected_interval ) );
61
+ } elseif ( $event_timestamp && $selected_interval !== $interval ) {
62
+ wp_unschedule_event( $event_timestamp, $event_hook, array( $interval ) );
63
+ }
64
+ }
65
+ }
66
+ }
67
+
68
+ if ( ! function_exists( 'wcj_crons_get_next_event_time_message' ) ) {
69
+ /**
70
+ * wcj_crons_get_next_event_time_message.
71
+ *
72
+ * @version 3.2.4
73
+ * @since 3.2.4
74
+ * @todo (maybe) move to "date-time" functions
75
+ */
76
+ function wcj_crons_get_next_event_time_message( $time_option_name ) {
77
+ if ( '' != get_option( $time_option_name, '' ) ) {
78
+ $scheduled_time_diff = get_option( $time_option_name, '' ) - time();
79
+ if ( $scheduled_time_diff > 60 ) {
80
+ return '<br><em>' . sprintf( __( '%s till next run.', 'woocommerce-jetpack' ), human_time_diff( 0, $scheduled_time_diff ) ) . '</em>';
81
+ } elseif ( $scheduled_time_diff > 0 ) {
82
+ return '<br><em>' . sprintf( __( '%s seconds till next run.', 'woocommerce-jetpack' ), $scheduled_time_diff ) . '</em>';
83
+ }
84
+ }
85
+ return '';
86
+ }
87
+ }
88
+
89
+ if ( ! function_exists( 'wcj_crons_add_custom_intervals' ) ) {
90
+ /**
91
+ * wcj_crons_add_custom_intervals.
92
+ *
93
+ * @version 3.2.4
94
+ * @since 3.2.4
95
+ */
96
+ function wcj_crons_add_custom_intervals( $schedules ) {
97
+ $schedules['weekly'] = array(
98
+ 'interval' => 604800,
99
+ 'display' => __( 'Once weekly', 'woocommerce-jetpack' )
100
+ );
101
+ $schedules['minute_30'] = array(
102
+ 'interval' => 1800,
103
+ 'display' => __( 'Once every 30 minutes', 'woocommerce-jetpack' )
104
+ );
105
+ $schedules['minute_15'] = array(
106
+ 'interval' => 900,
107
+ 'display' => __( 'Once every 15 minutes', 'woocommerce-jetpack' )
108
+ );
109
+ $schedules['minute_5'] = array(
110
+ 'interval' => 300,
111
+ 'display' => __( 'Once every 5 minutes', 'woocommerce-jetpack' )
112
+ );
113
+ $schedules['minutely'] = array(
114
+ 'interval' => 60,
115
+ 'display' => __( 'Once a minute', 'woocommerce-jetpack' )
116
+ );
117
+ return $schedules;
118
+ }
119
+ }
includes/functions/wcj-functions-currencies.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Functions - Currencies
4
  *
5
- * @version 2.9.0
6
  * @author Algoritmika Ltd.
7
  */
8
 
@@ -175,8 +175,37 @@ if ( ! function_exists( 'wcj_get_currencies_array' ) ) {
175
  array( 'code' => 'ZAR', 'symbol' => '&#82;', 'name' => __( 'South African rand', 'woocommerce' ) ),
176
  array( 'code' => 'ZMK', 'symbol' => 'ZMK', 'name' => __( 'Zambian kwacha', 'woocommerce-jetpack' ) ),
177
  array( 'code' => 'ZWD', 'symbol' => 'ZWD', 'name' => __( 'Zimbabwean dollar', 'woocommerce-jetpack' ) ),
 
 
 
 
178
  array( 'code' => 'BTC', 'symbol' => 'BTC', 'name' => __( 'Bitcoin', 'woocommerce-jetpack' ) ),
 
 
 
 
179
  array( 'code' => 'ETH', 'symbol' => 'ETH', 'name' => __( 'Ethereum', 'woocommerce-jetpack' ) ),
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
180
  array( 'code' => 'MYC', 'symbol' => 'MYC', 'name' => __( 'myCred', 'woocommerce-jetpack' ) ),
181
  );
182
  }
2
  /**
3
  * Booster for WooCommerce - Functions - Currencies
4
  *
5
+ * @version 3.2.4
6
  * @author Algoritmika Ltd.
7
  */
8
 
175
  array( 'code' => 'ZAR', 'symbol' => '&#82;', 'name' => __( 'South African rand', 'woocommerce' ) ),
176
  array( 'code' => 'ZMK', 'symbol' => 'ZMK', 'name' => __( 'Zambian kwacha', 'woocommerce-jetpack' ) ),
177
  array( 'code' => 'ZWD', 'symbol' => 'ZWD', 'name' => __( 'Zimbabwean dollar', 'woocommerce-jetpack' ) ),
178
+
179
+ array( 'code' => 'AUR', 'symbol' => 'AUR', 'name' => __( 'Auroracoin', 'woocommerce-jetpack' ) ),
180
+ array( 'code' => 'BCC', 'symbol' => 'BCC', 'name' => __( 'BitConnect', 'woocommerce-jetpack' ) ),
181
+ array( 'code' => 'BCH', 'symbol' => 'BCH', 'name' => __( 'Bitcoin Cash', 'woocommerce-jetpack' ) ),
182
  array( 'code' => 'BTC', 'symbol' => 'BTC', 'name' => __( 'Bitcoin', 'woocommerce-jetpack' ) ),
183
+ array( 'code' => 'KOI', 'symbol' => 'KOI', 'name' => __( 'Coinye', 'woocommerce-jetpack' ) ),
184
+ array( 'code' => 'XDN', 'symbol' => 'XDN', 'name' => __( 'DigitalNote', 'woocommerce-jetpack' ) ),
185
+ array( 'code' => 'EMC', 'symbol' => 'EMC', 'name' => __( 'Emercoin', 'woocommerce-jetpack' ) ),
186
+ array( 'code' => 'ETC', 'symbol' => 'ETC', 'name' => __( 'Ethereum Classic', 'woocommerce-jetpack' ) ),
187
  array( 'code' => 'ETH', 'symbol' => 'ETH', 'name' => __( 'Ethereum', 'woocommerce-jetpack' ) ),
188
+ array( 'code' => 'FMC', 'symbol' => 'FMC', 'name' => __( 'Freemasoncoin', 'woocommerce-jetpack' ) ),
189
+ array( 'code' => 'GRC', 'symbol' => 'GRC', 'name' => __( 'Gridcoin', 'woocommerce-jetpack' ) ),
190
+ array( 'code' => 'IOT', 'symbol' => 'IOT', 'name' => __( 'IOTA', 'woocommerce-jetpack' ) ),
191
+ array( 'code' => 'LTC', 'symbol' => 'LTC', 'name' => __( 'Litecoin', 'woocommerce-jetpack' ) ),
192
+ array( 'code' => 'MZC', 'symbol' => 'MZC', 'name' => __( 'MazaCoin', 'woocommerce-jetpack' ) ),
193
+ array( 'code' => 'XMR', 'symbol' => 'XMR', 'name' => __( 'Monero', 'woocommerce-jetpack' ) ),
194
+ array( 'code' => 'NMC', 'symbol' => 'NMC', 'name' => __( 'Namecoin', 'woocommerce-jetpack' ) ),
195
+ array( 'code' => 'XEM', 'symbol' => 'XEM', 'name' => __( 'NEM', 'woocommerce-jetpack' ) ),
196
+ array( 'code' => 'NXT', 'symbol' => 'NXT', 'name' => __( 'Nxt', 'woocommerce-jetpack' ) ),
197
+ array( 'code' => 'MSC', 'symbol' => 'MSC', 'name' => __( 'Omni', 'woocommerce-jetpack' ) ),
198
+ array( 'code' => 'PPC', 'symbol' => 'PPC', 'name' => __( 'Peercoin', 'woocommerce-jetpack' ) ),
199
+ array( 'code' => 'POT', 'symbol' => 'POT', 'name' => __( 'PotCoin', 'woocommerce-jetpack' ) ),
200
+ array( 'code' => 'XPM', 'symbol' => 'XPM', 'name' => __( 'Primecoin', 'woocommerce-jetpack' ) ),
201
+ array( 'code' => 'XRP', 'symbol' => 'XRP', 'name' => __( 'Ripple', 'woocommerce-jetpack' ) ),
202
+ array( 'code' => 'SIL', 'symbol' => 'SIL', 'name' => __( 'SixEleven', 'woocommerce-jetpack' ) ),
203
+ array( 'code' => 'AMP', 'symbol' => 'AMP', 'name' => __( 'Synereo AMP', 'woocommerce-jetpack' ) ),
204
+ array( 'code' => 'TIT', 'symbol' => 'TIT', 'name' => __( 'Titcoin', 'woocommerce-jetpack' ) ),
205
+ array( 'code' => 'UBQ', 'symbol' => 'UBQ', 'name' => __( 'Ubiq', 'woocommerce-jetpack' ) ),
206
+ array( 'code' => 'VTC', 'symbol' => 'VTC', 'name' => __( 'Vertcoin', 'woocommerce-jetpack' ) ),
207
+ array( 'code' => 'ZEC', 'symbol' => 'ZEC', 'name' => __( 'Zcash', 'woocommerce-jetpack' ) ),
208
+
209
  array( 'code' => 'MYC', 'symbol' => 'MYC', 'name' => __( 'myCred', 'woocommerce-jetpack' ) ),
210
  );
211
  }
includes/functions/wcj-functions-debug.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Functions - Debug
4
  *
5
- * @version 2.9.1
6
  * @author Algoritmika Ltd.
7
  */
8
 
@@ -17,7 +17,7 @@ if ( ! function_exists( 'wcj_log' ) ) {
17
  /**
18
  * wcj_log.
19
  *
20
- * @version 2.9.1
21
  */
22
  function wcj_log( $message = '' ) {
23
  if ( ! wcj_is_module_enabled( 'admin_tools' ) || ( 'no' === get_option( 'wcj_logging_enabled', 'no' ) && 'no' === get_option( 'wcj_wc_logging_enabled', 'no' ) ) ) {
@@ -30,7 +30,7 @@ if ( ! function_exists( 'wcj_log' ) ) {
30
  $message = print_r( $message, true );
31
  }
32
  if ( 'yes' === get_option( 'wcj_logging_enabled', 'no' ) ) {
33
- update_option( 'wcj_log', date( 'Y-m-d H:i:s' ) . ' ' . $_SERVER['REQUEST_URI'] . ' [' . $message . ']' . '<br>' . get_option( 'wcj_log', '' ) );
34
  }
35
  // WC log
36
  if ( 'yes' === get_option( 'wcj_wc_logging_enabled', 'no' ) && function_exists( 'wc_get_logger' ) ) {
2
  /**
3
  * Booster for WooCommerce - Functions - Debug
4
  *
5
+ * @version 3.2.4
6
  * @author Algoritmika Ltd.
7
  */
8
 
17
  /**
18
  * wcj_log.
19
  *
20
+ * @version 3.2.4
21
  */
22
  function wcj_log( $message = '' ) {
23
  if ( ! wcj_is_module_enabled( 'admin_tools' ) || ( 'no' === get_option( 'wcj_logging_enabled', 'no' ) && 'no' === get_option( 'wcj_wc_logging_enabled', 'no' ) ) ) {
30
  $message = print_r( $message, true );
31
  }
32
  if ( 'yes' === get_option( 'wcj_logging_enabled', 'no' ) ) {
33
+ update_option( 'wcj_log', date( 'Y-m-d H:i:s' ) . ' ' . esc_url( $_SERVER['REQUEST_URI'] ) . ' [' . $message . ']' . '<br>' . get_option( 'wcj_log', '' ) );
34
  }
35
  // WC log
36
  if ( 'yes' === get_option( 'wcj_wc_logging_enabled', 'no' ) && function_exists( 'wc_get_logger' ) ) {
includes/functions/wcj-functions-exchange-rates.php CHANGED
@@ -2,44 +2,120 @@
2
  /**
3
  * Booster for WooCommerce - Functions - Exchange Rates
4
  *
5
- * @version 3.2.3
6
  * @since 2.7.0
7
  * @author Algoritmika Ltd.
8
  */
9
 
10
  if ( ! defined( 'ABSPATH' ) ) exit;
11
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
12
  if ( ! function_exists( 'wcj_get_currency_exchange_rate_servers' ) ) {
13
  /**
14
  * wcj_get_currency_exchange_rate_servers.
15
  *
16
- * @version 3.2.2
17
  * @since 2.6.0
18
  */
19
  function wcj_get_currency_exchange_rate_servers() {
20
  return array(
21
- 'yahoo' => __( 'Yahoo', 'woocommerce-jetpack' ),
22
- 'ecb' => __( 'European Central Bank (ECB)', 'woocommerce-jetpack' ),
23
- 'tcmb' => __( 'TCMB', 'woocommerce-jetpack' ),
24
- 'fixer' => __( 'Fixer.io', 'woocommerce-jetpack' ),
 
 
25
  );
26
  }
27
  }
28
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
29
  if ( ! function_exists( 'alg_get_exchange_rate' ) ) {
30
  /*
31
  * alg_get_exchange_rate.
32
  *
33
- * @version 3.2.3
34
  * @since 2.6.0
35
  */
36
  function alg_get_exchange_rate( $currency_from, $currency_to ) {
 
37
  if ( 'yes' === ( $calculate_by_invert = get_option( 'wcj_currency_exchange_rates_calculate_by_invert', 'no' ) ) ) {
38
  $_currency_to = $currency_to;
39
  $currency_to = $currency_from;
40
  $currency_from = $_currency_to;
41
  }
42
- $exchange_rates_server = get_option( 'wcj_currency_exchange_rates_server', 'ecb' );
43
  switch ( $exchange_rates_server ) {
44
  case 'tcmb':
45
  $return = alg_tcmb_get_exchange_rate( $currency_from, $currency_to );
@@ -50,6 +126,12 @@ if ( ! function_exists( 'alg_get_exchange_rate' ) ) {
50
  case 'fixer':
51
  $return = alg_fixer_io_get_exchange_rate( $currency_from, $currency_to );
52
  break;
 
 
 
 
 
 
53
  default: // 'yahoo'
54
  $return = alg_yahoo_get_exchange_rate( $currency_from, $currency_to );
55
  break;
@@ -58,6 +140,117 @@ if ( ! function_exists( 'alg_get_exchange_rate' ) ) {
58
  }
59
  }
60
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
61
  if ( ! function_exists( 'alg_ecb_get_exchange_rate' ) ) {
62
  /*
63
  * alg_ecb_get_exchange_rate.
@@ -171,23 +364,12 @@ if ( ! function_exists( 'alg_yahoo_get_exchange_rate' ) ) {
171
  /*
172
  * alg_yahoo_get_exchange_rate.
173
  *
174
- * @version 3.2.3
175
  * @return float rate on success, else 0
176
  * @todo `alg_` to `wcj_`
177
  */
178
  function alg_yahoo_get_exchange_rate( $currency_from, $currency_to ) {
179
- $url = "https://finance.yahoo.com/webservice/v1/symbols/allcurrencies/quote?format=json";
180
- $response = '';
181
- if ( 'no' === get_option( 'wcj_currency_exchange_rates_always_curl', 'no' ) && ini_get( 'allow_url_fopen' ) ) {
182
- $response = file_get_contents( $url );
183
- } elseif ( function_exists( 'curl_version' ) ) {
184
- $curl = curl_init( $url );
185
- curl_setopt( $curl, CURLOPT_RETURNTRANSFER, 1 );
186
- curl_setopt( $curl, CURLOPT_SSL_VERIFYPEER, false );
187
- $response = curl_exec( $curl );
188
- curl_close( $curl );
189
- }
190
- $response = json_decode( $response );
191
  if ( ! isset( $response->list->resources ) ) {
192
  return false;
193
  }
@@ -234,23 +416,12 @@ if ( ! function_exists( 'wcj_fixer_io_get_exchange_rate_by_date' ) ) {
234
  /*
235
  * wcj_fixer_io_get_exchange_rate_by_date.
236
  *
237
- * @version 3.2.3
238
  * @since 3.2.2
239
  * @return false or rate
240
  */
241
  function wcj_fixer_io_get_exchange_rate_by_date( $currency_from, $currency_to, $date ) {
242
- $url = 'https://api.fixer.io/' . $date . '?base=' . $currency_from . '&symbols=' . $currency_to;
243
- $response = '';
244
- if ( 'no' === get_option( 'wcj_currency_exchange_rates_always_curl', 'no' ) && ini_get( 'allow_url_fopen' ) ) {
245
- $response = file_get_contents( $url );
246
- } elseif ( function_exists( 'curl_version' ) ) {
247
- $curl = curl_init( $url );
248
- curl_setopt( $curl, CURLOPT_RETURNTRANSFER, 1 );
249
- curl_setopt( $curl, CURLOPT_SSL_VERIFYPEER, false );
250
- $response = curl_exec( $curl );
251
- curl_close( $curl );
252
- }
253
- $response = json_decode( $response );
254
  return ( isset( $response->rates->{$currency_to} ) ? $response->rates->{$currency_to} : false );
255
  }
256
  }
2
  /**
3
  * Booster for WooCommerce - Functions - Exchange Rates
4
  *
5
+ * @version 3.2.4
6
  * @since 2.7.0
7
  * @author Algoritmika Ltd.
8
  */
9
 
10
  if ( ! defined( 'ABSPATH' ) ) exit;
11
 
12
+ if ( ! function_exists( 'wcj_get_saved_exchange_rate' ) ) {
13
+ /**
14
+ * wcj_get_saved_exchange_rate.
15
+ *
16
+ * @version 3.2.4
17
+ * @since 3.2.4
18
+ * @todo `if ( $from == $to ) return 1`
19
+ */
20
+ function wcj_get_saved_exchange_rate( $from, $to ) {
21
+ // Preparing `active_currencies` array
22
+ if ( ! isset( WCJ()->modules['currency_exchange_rates']->active_currencies ) ) {
23
+ $active_currencies_settings = WCJ()->modules['currency_exchange_rates']->get_all_currencies_exchange_rates_settings();
24
+ $active_currencies = array();
25
+ foreach ( $active_currencies_settings as $currency ) {
26
+ $active_currencies[ str_replace( 'wcj_currency_exchange_rates_', '', $currency['id'] ) ] = get_option( $currency['id'] );
27
+ }
28
+ WCJ()->modules['currency_exchange_rates']->active_currencies = $active_currencies;
29
+ } else {
30
+ $active_currencies = WCJ()->modules['currency_exchange_rates']->active_currencies;
31
+ }
32
+ if ( empty( $active_currencies ) ) {
33
+ return 0;
34
+ }
35
+ // Getting exchange rate - simple method
36
+ $exchange_rate = ( isset( $active_currencies[ sanitize_title( $from . $to ) ] ) ? $active_currencies[ sanitize_title( $from . $to ) ] : 0 );
37
+ // Getting exchange rate - invert method
38
+ if ( 0 == $exchange_rate ) {
39
+ $exchange_rate = ( isset( $active_currencies[ sanitize_title( $to . $from ) ] ) ? $active_currencies[ sanitize_title( $to . $from ) ] : 0 );
40
+ if ( 0 != $exchange_rate ) {
41
+ $exchange_rate = 1 / $exchange_rate;
42
+ }
43
+ }
44
+ // Getting exchange rate - shop base
45
+ if ( 0 == $exchange_rate ) {
46
+ $shop_currency = get_option( 'woocommerce_currency' );
47
+ $exchange_rate_from = ( isset( $active_currencies[ sanitize_title( $shop_currency . $from ) ] ) ? $active_currencies[ sanitize_title( $shop_currency . $from ) ] : 0 );
48
+ $exchange_rate_to = ( isset( $active_currencies[ sanitize_title( $shop_currency . $to ) ] ) ? $active_currencies[ sanitize_title( $shop_currency . $to ) ] : 0 );
49
+ if ( 0 != $exchange_rate_from ) {
50
+ $exchange_rate = $exchange_rate_to / $exchange_rate_from;
51
+ }
52
+ }
53
+ return $exchange_rate;
54
+ }
55
+ }
56
+
57
  if ( ! function_exists( 'wcj_get_currency_exchange_rate_servers' ) ) {
58
  /**
59
  * wcj_get_currency_exchange_rate_servers.
60
  *
61
+ * @version 3.2.4
62
  * @since 2.6.0
63
  */
64
  function wcj_get_currency_exchange_rate_servers() {
65
  return array(
66
+ 'yahoo' => __( 'Yahoo', 'woocommerce-jetpack' ),
67
+ 'ecb' => __( 'European Central Bank (ECB)', 'woocommerce-jetpack' ),
68
+ 'tcmb' => __( 'TCMB', 'woocommerce-jetpack' ),
69
+ 'fixer' => __( 'Fixer.io', 'woocommerce-jetpack' ),
70
+ 'coinbase' => __( 'Coinbase', 'woocommerce-jetpack' ),
71
+ 'coinmarketcap' => __( 'CoinMarketCap', 'woocommerce-jetpack' ),
72
  );
73
  }
74
  }
75
 
76
+ if ( ! function_exists( 'wcj_get_currency_exchange_rate_server' ) ) {
77
+ /*
78
+ * wcj_get_currency_exchange_rate_server.
79
+ *
80
+ * @version 3.2.4
81
+ * @since 3.2.4
82
+ */
83
+ function wcj_get_currency_exchange_rate_server( $currency_from, $currency_to ) {
84
+ if ( 'default_server' === ( $server = get_option( 'wcj_currency_exchange_rates_server_' . sanitize_title( $currency_from . $currency_to ), 'default_server' ) ) ) {
85
+ return get_option( 'wcj_currency_exchange_rates_server', 'ecb' );
86
+ }
87
+ return $server;
88
+ }
89
+ }
90
+
91
+ if ( ! function_exists( 'wcj_get_currency_exchange_rate_server_name' ) ) {
92
+ /*
93
+ * wcj_get_currency_exchange_rate_server_name.
94
+ *
95
+ * @version 3.2.4
96
+ * @since 3.2.4
97
+ */
98
+ function wcj_get_currency_exchange_rate_server_name( $currency_from, $currency_to ) {
99
+ $servers = wcj_get_currency_exchange_rate_servers();
100
+ $server = wcj_get_currency_exchange_rate_server( $currency_from, $currency_to );
101
+ return ( isset( $servers[ $server ] ) ? $servers[ $server ] : $server );
102
+ }
103
+ }
104
+
105
  if ( ! function_exists( 'alg_get_exchange_rate' ) ) {
106
  /*
107
  * alg_get_exchange_rate.
108
  *
109
+ * @version 3.2.4
110
  * @since 2.6.0
111
  */
112
  function alg_get_exchange_rate( $currency_from, $currency_to ) {
113
+ $exchange_rates_server = wcj_get_currency_exchange_rate_server( $currency_from, $currency_to );
114
  if ( 'yes' === ( $calculate_by_invert = get_option( 'wcj_currency_exchange_rates_calculate_by_invert', 'no' ) ) ) {
115
  $_currency_to = $currency_to;
116
  $currency_to = $currency_from;
117
  $currency_from = $_currency_to;
118
  }
 
119
  switch ( $exchange_rates_server ) {
120
  case 'tcmb':
121
  $return = alg_tcmb_get_exchange_rate( $currency_from, $currency_to );
126
  case 'fixer':
127
  $return = alg_fixer_io_get_exchange_rate( $currency_from, $currency_to );
128
  break;
129
+ case 'coinbase':
130
+ $return = alg_coinbase_get_exchange_rate( $currency_from, $currency_to );
131
+ break;
132
+ case 'coinmarketcap':
133
+ $return = alg_coinmarketcap_get_exchange_rate( $currency_from, $currency_to );
134
+ break;
135
  default: // 'yahoo'
136
  $return = alg_yahoo_get_exchange_rate( $currency_from, $currency_to );
137
  break;
140
  }
141
  }
142
 
143
+ if ( ! function_exists( 'wcj_get_currency_exchange_rates_url_response' ) ) {
144
+ /*
145
+ * wcj_get_currency_exchange_rates_url_response.
146
+ *
147
+ * @version 3.2.4
148
+ * @since 3.2.4
149
+ * @todo use where needed
150
+ */
151
+ function wcj_get_currency_exchange_rates_url_response( $url ) {
152
+ $response = '';
153
+ if ( 'no' === get_option( 'wcj_currency_exchange_rates_always_curl', 'no' ) && ini_get( 'allow_url_fopen' ) ) {
154
+ $response = file_get_contents( $url );
155
+ } elseif ( function_exists( 'curl_version' ) ) {
156
+ $curl = curl_init( $url );
157
+ curl_setopt( $curl, CURLOPT_RETURNTRANSFER, 1 );
158
+ curl_setopt( $curl, CURLOPT_SSL_VERIFYPEER, false );
159
+ $response = curl_exec( $curl );
160
+ curl_close( $curl );
161
+ }
162
+ return ( '' != $response ? json_decode( $response ) : false );
163
+ }
164
+ }
165
+
166
+ if ( ! function_exists( 'alg_coinmarketcap_get_exchange_rate_specific' ) ) {
167
+ /*
168
+ * alg_coinmarketcap_get_exchange_rate_specific.
169
+ *
170
+ * @version 3.2.4
171
+ * @since 3.2.4
172
+ * @see https://coinmarketcap.com/api/
173
+ * @todo add more `$cryptocurrencies_ids`
174
+ * @todo (maybe) try reverse only if `! isset( $cryptocurrencies_ids[ $currency_from ] )`
175
+ */
176
+ function alg_coinmarketcap_get_exchange_rate_specific( $currency_from, $currency_to, $try_reverse = true ) {
177
+ $return = false;
178
+ $cryptocurrencies_ids = array(
179
+ 'BTC' => 'bitcoin',
180
+ 'XRP' => 'ripple',
181
+ );
182
+ if ( isset( $cryptocurrencies_ids[ $currency_from ] ) ) {
183
+ $url = 'https://api.coinmarketcap.com/v1/ticker/' . $cryptocurrencies_ids[ $currency_from ] . '/?convert=' . $currency_to;
184
+ if ( false != ( $response = wcj_get_currency_exchange_rates_url_response( $url ) ) ) {
185
+ $att = 'price_' . strtolower( $currency_to );
186
+ $return = ( isset( $response[0]->{$att} ) ? $response[0]->{$att} : false );
187
+ }
188
+ }
189
+ if ( false === $return && $try_reverse ) {
190
+ $return = alg_coinmarketcap_get_exchange_rate_specific( $currency_to, $currency_from, false );
191
+ if ( 0 != $return ) {
192
+ $return = round( ( 1 / $return ), 12 );
193
+ }
194
+ }
195
+ return $return;
196
+ }
197
+ }
198
+
199
+ if ( ! function_exists( 'alg_coinmarketcap_get_exchange_rate' ) ) {
200
+ /*
201
+ * alg_coinmarketcap_get_exchange_rate.
202
+ *
203
+ * @version 3.2.4
204
+ * @since 3.2.4
205
+ * @see https://coinmarketcap.com/api/
206
+ * @todo `WCJ()->modules['currency_exchange_rates']->coinmarketcap_response`
207
+ * @todo `alg_coinmarketcap_get_exchange_rate_specific()`
208
+ * @todo (maybe) `limit=0`
209
+ */
210
+ function alg_coinmarketcap_get_exchange_rate( $currency_from, $currency_to, $try_reverse = true ) {
211
+ $return = false;
212
+ /*
213
+ if ( ! isset( WCJ()->modules['currency_exchange_rates']->coinmarketcap_response ) ) {
214
+ $response = wcj_get_currency_exchange_rates_url_response( 'https://api.coinmarketcap.com/v1/ticker/?convert=' . $currency_to );
215
+ if ( false != $response ) {
216
+ WCJ()->modules['currency_exchange_rates']->coinmarketcap_response = $response;
217
+ }
218
+ } else {
219
+ $response = WCJ()->modules['currency_exchange_rates']->coinmarketcap_response;
220
+ }
221
+ */
222
+ if ( false != ( $response = wcj_get_currency_exchange_rates_url_response( 'https://api.coinmarketcap.com/v1/ticker/?convert=' . $currency_to ) ) && is_array( $response ) ) {
223
+ foreach ( $response as $pair ) {
224
+ if ( isset( $pair->symbol ) && $currency_from === $pair->symbol ) {
225
+ $att = 'price_' . strtolower( $currency_to );
226
+ $return = ( isset( $pair->{$att} ) ? $pair->{$att} : false );
227
+ break;
228
+ }
229
+ }
230
+ }
231
+ if ( false === $return && $try_reverse ) {
232
+ $return = alg_coinmarketcap_get_exchange_rate( $currency_to, $currency_from, false );
233
+ if ( 0 != $return ) {
234
+ $return = round( ( 1 / $return ), 12 );
235
+ }
236
+ }
237
+ return $return;
238
+ }
239
+ }
240
+
241
+ if ( ! function_exists( 'alg_coinbase_get_exchange_rate' ) ) {
242
+ /*
243
+ * alg_coinbase_get_exchange_rate.
244
+ *
245
+ * @version 3.2.4
246
+ * @since 3.2.4
247
+ */
248
+ function alg_coinbase_get_exchange_rate( $currency_from, $currency_to ) {
249
+ $response = wcj_get_currency_exchange_rates_url_response( "https://api.coinbase.com/v2/exchange-rates?currency=$currency_from" );
250
+ return ( isset( $response->data->rates->{$currency_to} ) ? $response->data->rates->{$currency_to} : false );
251
+ }
252
+ }
253
+
254
  if ( ! function_exists( 'alg_ecb_get_exchange_rate' ) ) {
255
  /*
256
  * alg_ecb_get_exchange_rate.
364
  /*
365
  * alg_yahoo_get_exchange_rate.
366
  *
367
+ * @version 3.2.4
368
  * @return float rate on success, else 0
369
  * @todo `alg_` to `wcj_`
370
  */
371
  function alg_yahoo_get_exchange_rate( $currency_from, $currency_to ) {
372
+ $response = wcj_get_currency_exchange_rates_url_response( "https://finance.yahoo.com/webservice/v1/symbols/allcurrencies/quote?format=json" );
 
 
 
 
 
 
 
 
 
 
 
373
  if ( ! isset( $response->list->resources ) ) {
374
  return false;
375
  }
416
  /*
417
  * wcj_fixer_io_get_exchange_rate_by_date.
418
  *
419
+ * @version 3.2.4
420
  * @since 3.2.2
421
  * @return false or rate
422
  */
423
  function wcj_fixer_io_get_exchange_rate_by_date( $currency_from, $currency_to, $date ) {
424
+ $response = wcj_get_currency_exchange_rates_url_response( 'https://api.fixer.io/' . $date . '?base=' . $currency_from . '&symbols=' . $currency_to );
 
 
 
 
 
 
 
 
 
 
 
425
  return ( isset( $response->rates->{$currency_to} ) ? $response->rates->{$currency_to} : false );
426
  }
427
  }
includes/functions/wcj-functions-general.php CHANGED
@@ -2,12 +2,34 @@
2
  /**
3
  * Booster for WooCommerce - Functions
4
  *
5
- * @version 3.2.3
6
  * @author Algoritmika Ltd.
 
7
  */
8
 
9
  if ( ! defined( 'ABSPATH' ) ) exit;
10
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
11
  if ( ! function_exists( 'wcj_session_maybe_start' ) ) {
12
  /**
13
  * wcj_session_maybe_start.
@@ -463,16 +485,16 @@ if ( ! function_exists( 'wcj_get_select_options' ) ) {
463
  /*
464
  * wcj_get_select_options()
465
  *
466
- * @version 3.2.3
467
  * @since 2.3.0
468
  * @return array
469
  */
470
  function wcj_get_select_options( $select_options_raw, $do_sanitize = true ) {
471
- $select_options_raw = explode( PHP_EOL, $select_options_raw );
472
  $select_options = array();
473
  foreach ( $select_options_raw as $select_options_title ) {
474
  $select_options_key = ( $do_sanitize ) ? sanitize_title( $select_options_title ) : $select_options_title;
475
- $select_options[ 'wcj-' . $select_options_key ] = $select_options_title;
476
  }
477
  return $select_options;
478
  }
@@ -486,7 +508,7 @@ if ( ! function_exists( 'wcj_is_frontend' ) ) {
486
  * @return boolean
487
  */
488
  function wcj_is_frontend() {
489
- return ( ! is_admin() || ( defined( 'DOING_AJAX' ) && DOING_AJAX ) ) ? true : false;
490
  }
491
  }
492
 
2
  /**
3
  * Booster for WooCommerce - Functions
4
  *
5
+ * @version 3.2.4
6
  * @author Algoritmika Ltd.
7
+ * @todo add `wcj_add_actions()` and `wcj_add_filters()`
8
  */
9
 
10
  if ( ! defined( 'ABSPATH' ) ) exit;
11
 
12
+ if ( ! function_exists( 'wcj_get_woocommerce_package_rates_module_filter_priority' ) ) {
13
+ /**
14
+ * wcj_get_woocommerce_package_rates_module_filter_priority.
15
+ *
16
+ * @version 3.2.4
17
+ * @since 3.2.4
18
+ * @todo add `shipping_by_order_amount` module
19
+ */
20
+ function wcj_get_woocommerce_package_rates_module_filter_priority( $module_id ) {
21
+ $modules_priorities = array(
22
+ 'shipping_options_hide_free_shipping' => PHP_INT_MAX,
23
+ 'shipping_by_products' => PHP_INT_MAX - 100,
24
+ 'shipping_by_user_role' => PHP_INT_MAX - 100,
25
+ );
26
+ return ( 0 != ( $priority = get_option( 'wcj_' . $module_id . '_filter_priority', 0 ) ) ?
27
+ $priority :
28
+ ( isset( $modules_priorities[ $module_id ] ) ? $modules_priorities[ $module_id ] : PHP_INT_MAX )
29
+ );
30
+ }
31
+ }
32
+
33
  if ( ! function_exists( 'wcj_session_maybe_start' ) ) {
34
  /**
35
  * wcj_session_maybe_start.
485
  /*
486
  * wcj_get_select_options()
487
  *
488
+ * @version 3.2.4
489
  * @since 2.3.0
490
  * @return array
491
  */
492
  function wcj_get_select_options( $select_options_raw, $do_sanitize = true ) {
493
+ $select_options_raw = array_map( 'trim', explode( PHP_EOL, $select_options_raw ) );
494
  $select_options = array();
495
  foreach ( $select_options_raw as $select_options_title ) {
496
  $select_options_key = ( $do_sanitize ) ? sanitize_title( $select_options_title ) : $select_options_title;
497
+ $select_options[ $select_options_key ] = $select_options_title;
498
  }
499
  return $select_options;
500
  }
508
  * @return boolean
509
  */
510
  function wcj_is_frontend() {
511
+ return ( ! is_admin() || ( defined( 'DOING_AJAX' ) && DOING_AJAX ) );
512
  }
513
  }
514
 
includes/functions/wcj-functions-orders.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Functions - Orders
4
  *
5
- * @version 3.2.2
6
  * @since 2.9.0
7
  * @author Algoritmika Ltd.
8
  */
@@ -78,10 +78,10 @@ if ( ! function_exists( 'wcj_get_order_item_meta_info' ) ) {
78
  *
79
  * from woocommerce\includes\admin\meta-boxes\views\html-order-item-meta.php
80
  *
81
- * @version 2.8.0
82
  * @since 2.5.9
83
  */
84
- function wcj_get_order_item_meta_info( $item_id, $item, $_order, $exclude_wcj_meta = false, $_product = null ) {
85
  $meta_info = '';
86
  $metadata = ( WCJ_IS_WC_VERSION_BELOW_3 ? $_order->has_meta( $item_id ) : $item->get_meta_data() );
87
  if ( $metadata ) {
@@ -107,6 +107,10 @@ if ( ! function_exists( 'wcj_get_order_item_meta_info' ) ) {
107
  continue;
108
  }
109
 
 
 
 
 
110
  if ( $exclude_wcj_meta && ( 'wcj' === substr( $_meta_key, 0, 3 ) || '_wcj' === substr( $_meta_key, 0, 4 ) ) ) {
111
  continue;
112
  }
2
  /**
3
  * Booster for WooCommerce - Functions - Orders
4
  *
5
+ * @version 3.2.4
6
  * @since 2.9.0
7
  * @author Algoritmika Ltd.
8
  */
78
  *
79
  * from woocommerce\includes\admin\meta-boxes\views\html-order-item-meta.php
80
  *
81
+ * @version 3.2.4
82
  * @since 2.5.9
83
  */
84
+ function wcj_get_order_item_meta_info( $item_id, $item, $_order, $exclude_wcj_meta = false, $_product = null, $exclude_meta = array() ) {
85
  $meta_info = '';
86
  $metadata = ( WCJ_IS_WC_VERSION_BELOW_3 ? $_order->has_meta( $item_id ) : $item->get_meta_data() );
87
  if ( $metadata ) {
107
  continue;
108
  }
109
 
110
+ if ( ! empty( $exclude_meta ) && in_array( $_meta_key, $exclude_meta ) ) {
111
+ continue;
112
+ }
113
+
114
  if ( $exclude_wcj_meta && ( 'wcj' === substr( $_meta_key, 0, 3 ) || '_wcj' === substr( $_meta_key, 0, 4 ) ) ) {
115
  continue;
116
  }
includes/functions/wcj-functions-price-currency.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Functions - Price and Currency
4
  *
5
- * @version 3.2.3
6
  * @since 2.7.0
7
  * @author Algoritmika Ltd.
8
  */
@@ -463,7 +463,7 @@ if ( ! function_exists( 'wc_get_product_purchase_price' ) ) {
463
  /**
464
  * wc_get_product_purchase_price.
465
  *
466
- * @version 3.2.2
467
  */
468
  function wc_get_product_purchase_price( $product_id = 0 ) {
469
  if ( 0 == $product_id ) {
@@ -471,20 +471,20 @@ if ( ! function_exists( 'wc_get_product_purchase_price' ) ) {
471
  }
472
  $purchase_price = 0;
473
  if ( 'yes' === get_option( 'wcj_purchase_price_enabled', 'yes' ) ) {
474
- $purchase_price += (int) get_post_meta( $product_id, '_' . 'wcj_purchase_price' , true );
475
  }
476
  if ( 'yes' === get_option( 'wcj_purchase_price_extra_enabled', 'yes' ) ) {
477
- $purchase_price += (int) get_post_meta( $product_id, '_' . 'wcj_purchase_price_extra', true );
478
  }
479
  if ( 'yes' === get_option( 'wcj_purchase_price_affiliate_commission_enabled', 'no' ) ) {
480
- $purchase_price += (int) get_post_meta( $product_id, '_' . 'wcj_purchase_price_affiliate_commission', true );
481
  }
482
  $total_number = apply_filters( 'booster_get_option', 1, get_option( 'wcj_purchase_data_custom_price_fields_total_number', 1 ) );
483
  for ( $i = 1; $i <= $total_number; $i++ ) {
484
  if ( '' == get_option( 'wcj_purchase_data_custom_price_field_name_' . $i, '' ) ) {
485
  continue;
486
  }
487
- $meta_value = (int) get_post_meta( $product_id, '_' . 'wcj_purchase_price_custom_field_' . $i, true );
488
  if ( 0 != $meta_value ) {
489
  $purchase_price += ( 'fixed' === get_option( 'wcj_purchase_data_custom_price_field_type_' . $i, 'fixed' ) ) ? $meta_value : $purchase_price * $meta_value / 100.0;
490
  }
2
  /**
3
  * Booster for WooCommerce - Functions - Price and Currency
4
  *
5
+ * @version 3.2.4
6
  * @since 2.7.0
7
  * @author Algoritmika Ltd.
8
  */
463
  /**
464
  * wc_get_product_purchase_price.
465
  *
466
+ * @version 3.2.4
467
  */
468
  function wc_get_product_purchase_price( $product_id = 0 ) {
469
  if ( 0 == $product_id ) {
471
  }
472
  $purchase_price = 0;
473
  if ( 'yes' === get_option( 'wcj_purchase_price_enabled', 'yes' ) ) {
474
+ $purchase_price += (float) get_post_meta( $product_id, '_' . 'wcj_purchase_price' , true );
475
  }
476
  if ( 'yes' === get_option( 'wcj_purchase_price_extra_enabled', 'yes' ) ) {
477
+ $purchase_price += (float) get_post_meta( $product_id, '_' . 'wcj_purchase_price_extra', true );
478
  }
479
  if ( 'yes' === get_option( 'wcj_purchase_price_affiliate_commission_enabled', 'no' ) ) {
480
+ $purchase_price += (float) get_post_meta( $product_id, '_' . 'wcj_purchase_price_affiliate_commission', true );
481
  }
482
  $total_number = apply_filters( 'booster_get_option', 1, get_option( 'wcj_purchase_data_custom_price_fields_total_number', 1 ) );
483
  for ( $i = 1; $i <= $total_number; $i++ ) {
484
  if ( '' == get_option( 'wcj_purchase_data_custom_price_field_name_' . $i, '' ) ) {
485
  continue;
486
  }
487
+ $meta_value = (float) get_post_meta( $product_id, '_' . 'wcj_purchase_price_custom_field_' . $i, true );
488
  if ( 0 != $meta_value ) {
489
  $purchase_price += ( 'fixed' === get_option( 'wcj_purchase_data_custom_price_field_type_' . $i, 'fixed' ) ) ? $meta_value : $purchase_price * $meta_value / 100.0;
490
  }
includes/functions/wcj-functions-reports.php CHANGED
@@ -2,8 +2,8 @@
2
  /**
3
  * Booster for WooCommerce - Functions - Reports
4
  *
5
- * @version 2.9.0
6
- * @version 2.9.0
7
  * @author Algoritmika Ltd.
8
  */
9
 
@@ -38,30 +38,31 @@ if ( ! function_exists( 'wcj_get_reports_standard_ranges' ) ) {
38
  /*
39
  * wcj_get_reports_standard_ranges.
40
  *
41
- * @version 2.9.0
42
  * @since 2.9.0
43
  */
44
  function wcj_get_reports_standard_ranges() {
 
45
  return array(
46
  'year' => array(
47
  'title' => __( 'Year', 'woocommerce' ),
48
- 'start_date' => date( 'Y-01-01' ),
49
- 'end_date' => date( 'Y-m-d' ),
50
  ),
51
  'last_month' => array(
52
  'title' => __( 'Last month', 'woocommerce' ),
53
- 'start_date' => date( 'Y-m-d', strtotime( 'first day of previous month' ) ),
54
- 'end_date' => date( 'Y-m-d', strtotime( 'last day of previous month' ) ),
55
  ),
56
  'this_month' => array(
57
  'title' => __( 'This month', 'woocommerce' ),
58
- 'start_date' => date( 'Y-m-01' ),
59
- 'end_date' => date( 'Y-m-d' ),
60
  ),
61
  'last_7_days' => array(
62
  'title' => __( 'Last 7 days', 'woocommerce' ),
63
- 'start_date' => date( 'Y-m-d', strtotime( '-7 days' ) ),
64
- 'end_date' => date( 'Y-m-d' ),
65
  ),
66
  );
67
  }
@@ -71,76 +72,77 @@ if ( ! function_exists( 'wcj_get_reports_custom_ranges' ) ) {
71
  /*
72
  * wcj_get_reports_custom_ranges.
73
  *
74
- * @version 2.9.0
75
  * @since 2.9.0
76
  */
77
  function wcj_get_reports_custom_ranges() {
 
78
  return array(
79
  'last_14_days' => array(
80
  'title' => __( 'Last 14 days', 'woocommerce-jetpack' ),
81
- 'start_date' => date( 'Y-m-d', strtotime( '-14 days' ) ),
82
- 'end_date' => date( 'Y-m-d' ),
83
  ),
84
  'last_30_days' => array(
85
  'title' => __( 'Last 30 days', 'woocommerce-jetpack' ),
86
- 'start_date' => date( 'Y-m-d', strtotime( '-30 days' ) ),
87
- 'end_date' => date( 'Y-m-d' ),
88
  ),
89
  'last_3_months' => array(
90
  'title' => __( 'Last 3 months', 'woocommerce-jetpack' ),
91
- 'start_date' => date( 'Y-m-d', strtotime( '-3 months' ) ),
92
- 'end_date' => date( 'Y-m-d' ),
93
  ),
94
  'last_6_months' => array(
95
  'title' => __( 'Last 6 months', 'woocommerce-jetpack' ),
96
- 'start_date' => date( 'Y-m-d', strtotime( '-6 months' ) ),
97
- 'end_date' => date( 'Y-m-d' ),
98
  ),
99
  'last_12_months' => array(
100
  'title' => __( 'Last 12 months', 'woocommerce-jetpack' ),
101
- 'start_date' => date( 'Y-m-d', strtotime( '-12 months' ) ),
102
- 'end_date' => date( 'Y-m-d' ),
103
  ),
104
  'last_24_months' => array(
105
  'title' => __( 'Last 24 months', 'woocommerce-jetpack' ),
106
- 'start_date' => date( 'Y-m-d', strtotime( '-24 months' ) ),
107
- 'end_date' => date( 'Y-m-d' ),
108
  ),
109
  'last_36_months' => array(
110
  'title' => __( 'Last 36 months', 'woocommerce-jetpack' ),
111
- 'start_date' => date( 'Y-m-d', strtotime( '-36 months' ) ),
112
- 'end_date' => date( 'Y-m-d' ),
113
  ),
114
  'same_days_last_month' => array(
115
  'title' => __( 'Same days last month', 'woocommerce-jetpack' ),
116
- 'start_date' => date( 'Y-m-01', strtotime( '-1 month' ) ),
117
- 'end_date' => date( 'Y-m-d', strtotime( '-1 month' ) ),
118
  ),
119
  'same_days_last_year' => array(
120
  'title' => __( 'Same days last year', 'woocommerce-jetpack' ),
121
- 'start_date' => date( 'Y-m-01', strtotime( '-1 year' ) ),
122
- 'end_date' => date( 'Y-m-d', strtotime( '-1 year' ) ),
123
  ),
124
  'last_year' => array(
125
  'title' => __( 'Last year', 'woocommerce-jetpack' ),
126
- 'start_date' => date( 'Y-01-01', strtotime( '-1 year' ) ),
127
- 'end_date' => date( 'Y-12-31', strtotime( '-1 year' ) ),
128
  ),
129
  'yesterday' => array(
130
  'title' => __( 'Yesterday', 'woocommerce-jetpack' ),
131
- 'start_date' => date( 'Y-m-d', strtotime( '-1 day' ) ),
132
- 'end_date' => date( 'Y-m-d', strtotime( '-1 day' ) ),
133
  ),
134
  'today' => array(
135
  'title' => __( 'Today', 'woocommerce-jetpack' ),
136
- 'start_date' => date( 'Y-m-d' ),
137
- 'end_date' => date( 'Y-m-d' ),
138
  ),
139
  /*
140
  'last_week' => array(
141
  'title' => __( 'Last week', 'woocommerce-jetpack' ),
142
- 'start_date' => date( 'Y-m-d', strtotime( 'last monday' ) ),
143
- 'end_date' => date( 'Y-m-d', strtotime( 'last sunday' ) ),
144
  ),
145
  */
146
  );
2
  /**
3
  * Booster for WooCommerce - Functions - Reports
4
  *
5
+ * @version 3.2.4
6
+ * @since 2.9.0
7
  * @author Algoritmika Ltd.
8
  */
9
 
38
  /*
39
  * wcj_get_reports_standard_ranges.
40
  *
41
+ * @version 3.2.4
42
  * @since 2.9.0
43
  */
44
  function wcj_get_reports_standard_ranges() {
45
+ $current_time = (int) current_time( 'timestamp' );
46
  return array(
47
  'year' => array(
48
  'title' => __( 'Year', 'woocommerce' ),
49
+ 'start_date' => date( 'Y-01-01', $current_time ),
50
+ 'end_date' => date( 'Y-m-d', $current_time ),
51
  ),
52
  'last_month' => array(
53
  'title' => __( 'Last month', 'woocommerce' ),
54
+ 'start_date' => date( 'Y-m-d', strtotime( 'first day of previous month', $current_time ) ),
55
+ 'end_date' => date( 'Y-m-d', strtotime( 'last day of previous month', $current_time ) ),
56
  ),
57
  'this_month' => array(
58
  'title' => __( 'This month', 'woocommerce' ),
59
+ 'start_date' => date( 'Y-m-01', $current_time ),
60
+ 'end_date' => date( 'Y-m-d', $current_time ),
61
  ),
62
  'last_7_days' => array(
63
  'title' => __( 'Last 7 days', 'woocommerce' ),
64
+ 'start_date' => date( 'Y-m-d', strtotime( '-7 days', $current_time ) ),
65
+ 'end_date' => date( 'Y-m-d', $current_time ),
66
  ),
67
  );
68
  }
72
  /*
73
  * wcj_get_reports_custom_ranges.
74
  *
75
+ * @version 3.2.4
76
  * @since 2.9.0
77
  */
78
  function wcj_get_reports_custom_ranges() {
79
+ $current_time = (int) current_time( 'timestamp' );
80
  return array(
81
  'last_14_days' => array(
82
  'title' => __( 'Last 14 days', 'woocommerce-jetpack' ),
83
+ 'start_date' => date( 'Y-m-d', strtotime( '-14 days', $current_time ) ),
84
+ 'end_date' => date( 'Y-m-d', $current_time ),
85
  ),
86
  'last_30_days' => array(
87
  'title' => __( 'Last 30 days', 'woocommerce-jetpack' ),
88
+ 'start_date' => date( 'Y-m-d', strtotime( '-30 days', $current_time ) ),
89
+ 'end_date' => date( 'Y-m-d', $current_time ),
90
  ),
91
  'last_3_months' => array(
92
  'title' => __( 'Last 3 months', 'woocommerce-jetpack' ),
93
+ 'start_date' => date( 'Y-m-d', strtotime( '-3 months', $current_time ) ),
94
+ 'end_date' => date( 'Y-m-d', $current_time ),
95
  ),
96
  'last_6_months' => array(
97
  'title' => __( 'Last 6 months', 'woocommerce-jetpack' ),
98
+ 'start_date' => date( 'Y-m-d', strtotime( '-6 months', $current_time ) ),
99
+ 'end_date' => date( 'Y-m-d', $current_time ),
100
  ),
101
  'last_12_months' => array(
102
  'title' => __( 'Last 12 months', 'woocommerce-jetpack' ),
103
+ 'start_date' => date( 'Y-m-d', strtotime( '-12 months', $current_time ) ),
104
+ 'end_date' => date( 'Y-m-d', $current_time ),
105
  ),
106
  'last_24_months' => array(
107
  'title' => __( 'Last 24 months', 'woocommerce-jetpack' ),
108
+ 'start_date' => date( 'Y-m-d', strtotime( '-24 months', $current_time ) ),
109
+ 'end_date' => date( 'Y-m-d', $current_time ),
110
  ),
111
  'last_36_months' => array(
112
  'title' => __( 'Last 36 months', 'woocommerce-jetpack' ),
113
+ 'start_date' => date( 'Y-m-d', strtotime( '-36 months', $current_time ) ),
114
+ 'end_date' => date( 'Y-m-d', $current_time ),
115
  ),
116
  'same_days_last_month' => array(
117
  'title' => __( 'Same days last month', 'woocommerce-jetpack' ),
118
+ 'start_date' => date( 'Y-m-01', strtotime( '-1 month', $current_time ) ),
119
+ 'end_date' => date( 'Y-m-d', strtotime( '-1 month', $current_time ) ),
120
  ),
121
  'same_days_last_year' => array(
122
  'title' => __( 'Same days last year', 'woocommerce-jetpack' ),
123
+ 'start_date' => date( 'Y-m-01', strtotime( '-1 year', $current_time ) ),
124
+ 'end_date' => date( 'Y-m-d', strtotime( '-1 year', $current_time ) ),
125
  ),
126
  'last_year' => array(
127
  'title' => __( 'Last year', 'woocommerce-jetpack' ),
128
+ 'start_date' => date( 'Y-01-01', strtotime( '-1 year', $current_time ) ),
129
+ 'end_date' => date( 'Y-12-31', strtotime( '-1 year', $current_time ) ),
130
  ),
131
  'yesterday' => array(
132
  'title' => __( 'Yesterday', 'woocommerce-jetpack' ),
133
+ 'start_date' => date( 'Y-m-d', strtotime( '-1 day', $current_time ) ),
134
+ 'end_date' => date( 'Y-m-d', strtotime( '-1 day', $current_time ) ),
135
  ),
136
  'today' => array(
137
  'title' => __( 'Today', 'woocommerce-jetpack' ),
138
+ 'start_date' => date( 'Y-m-d', $current_time ),
139
+ 'end_date' => date( 'Y-m-d', $current_time ),
140
  ),
141
  /*
142
  'last_week' => array(
143
  'title' => __( 'Last week', 'woocommerce-jetpack' ),
144
+ 'start_date' => date( 'Y-m-d', strtotime( 'last monday', $current_time ) ),
145
+ 'end_date' => date( 'Y-m-d', strtotime( 'last sunday', $current_time ) ),
146
  ),
147
  */
148
  );
includes/input-fields/class-wcj-product-input-fields-core.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Product Input Fields - Core
4
  *
5
- * @version 3.1.0
6
  * @author Algoritmika Ltd.
7
  */
8
 
@@ -411,7 +411,7 @@ class WCJ_Product_Input_Fields_Core {
411
  /**
412
  * add_product_input_fields_to_frontend.
413
  *
414
- * @version 3.1.0
415
  * @todo `$set_value` - add "default" option for all other types except checkbox
416
  * @todo `$set_value` - 'file' type
417
  * @todo add `required` attributes
@@ -529,7 +529,7 @@ class WCJ_Product_Input_Fields_Core {
529
  $select_options_raw = $this->get_value( 'wcj_product_input_fields_type_select_options_' . $this->scope . '_' . $i, $_product_id, '' );
530
  $select_options = wcj_get_select_options( $select_options_raw, false );
531
  if ( '' != $placeholder ) {
532
- $select_options = array_merge( array( '' => $placeholder ), $select_options );
533
  }
534
  $select_options_html = '';
535
  if ( ! empty( $select_options ) ) {
@@ -551,11 +551,16 @@ class WCJ_Product_Input_Fields_Core {
551
  if ( ! empty( $select_options ) ) {
552
  reset( $select_options );
553
  $value = ( '' != $set_value ? $set_value : key( $select_options ) );
 
 
554
  foreach ( $select_options as $option_key => $option_text ) {
555
- $select_options_html .= '<input type="radio" class="input-radio wcj_product_input_fields" value="' . esc_attr( $option_key ) .
556
- '" name="' . $field_name . '" id="' . $field_name . '_' . esc_attr( $option_key ) . '"' . checked( $value, $option_key, false ) . ' />';
557
- $select_options_html .= '<label for="' . $field_name . '_' . esc_attr( $option_key ) .
558
- '" class="radio">' . $option_text . '</label><br>';
 
 
 
559
  }
560
  $html = $select_options_html;
561
  }
2
  /**
3
  * Booster for WooCommerce - Product Input Fields - Core
4
  *
5
+ * @version 3.2.4
6
  * @author Algoritmika Ltd.
7
  */
8
 
411
  /**
412
  * add_product_input_fields_to_frontend.
413
  *
414
+ * @version 3.2.4
415
  * @todo `$set_value` - add "default" option for all other types except checkbox
416
  * @todo `$set_value` - 'file' type
417
  * @todo add `required` attributes
529
  $select_options_raw = $this->get_value( 'wcj_product_input_fields_type_select_options_' . $this->scope . '_' . $i, $_product_id, '' );
530
  $select_options = wcj_get_select_options( $select_options_raw, false );
531
  if ( '' != $placeholder ) {
532
+ $select_options = array_replace( array( '' => $placeholder ), $select_options );
533
  }
534
  $select_options_html = '';
535
  if ( ! empty( $select_options ) ) {
551
  if ( ! empty( $select_options ) ) {
552
  reset( $select_options );
553
  $value = ( '' != $set_value ? $set_value : key( $select_options ) );
554
+ $template = get_option( 'wcj_product_input_fields_field_template_radio',
555
+ '%radio_field_html%<label for="%radio_field_id%" class="radio">%radio_field_title%</label><br>' );
556
  foreach ( $select_options as $option_key => $option_text ) {
557
+ $replaced_values = array(
558
+ '%radio_field_html%' => '<input type="radio" class="input-radio wcj_product_input_fields" value="' . esc_attr( $option_key ) .
559
+ '" name="' . $field_name . '" id="' . $field_name . '_' . esc_attr( $option_key ) . '"' . checked( $value, $option_key, false ) . ' />',
560
+ '%radio_field_id%' => $field_name . '_' . esc_attr( $option_key ),
561
+ '%radio_field_title%' => $option_text,
562
+ );
563
+ $select_options_html .= str_replace( array_keys( $replaced_values ), $replaced_values, $template );
564
  }
565
  $html = $select_options_html;
566
  }
includes/js/wcj-custom-tabs-yoast-seo.js ADDED
@@ -0,0 +1,34 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * wcj-custom-tabs-yoast-seo.
3
+ *
4
+ * @version 3.2.4
5
+ * @since 3.2.4
6
+ * @see https://return-true.com/adding-content-to-yoast-seo-analysis-using-yoastseojs/
7
+ */
8
+
9
+ (function($) {
10
+
11
+ var WCJ_Yoast_Plugin = function() {
12
+ YoastSEO.app.registerPlugin('wcj_yoast_plugin', {status: 'loading'});
13
+ this.getData();
14
+ };
15
+
16
+ WCJ_Yoast_Plugin.prototype.getData = function() {
17
+ var _self = this;
18
+ YoastSEO.app.pluginReady('wcj_yoast_plugin');
19
+ YoastSEO.app.registerModification('content', $.proxy(_self.getCustomContent, _self), 'wcj_yoast_plugin', 5);
20
+ };
21
+
22
+ WCJ_Yoast_Plugin.prototype.getCustomContent = function (content) {
23
+ var custom_product_tabs_content = "";
24
+ jQuery("textarea[id^='wcj_custom_product_tabs_content_local_']").each(function() {
25
+ custom_product_tabs_content += " " + jQuery(this).val();
26
+ });
27
+ return content + custom_product_tabs_content;
28
+ };
29
+
30
+ $(window).on('YoastSEO:ready', function () {
31
+ new WCJ_Yoast_Plugin();
32
+ });
33
+
34
+ })(jQuery);
includes/reports/wcj-class-reports-sales-daily.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Reports - Product Sales (Daily)
4
  *
5
- * @version 2.9.0
6
  * @since 2.9.0
7
  * @author Algoritmika Ltd.
8
  */
@@ -38,12 +38,13 @@ class WCJ_Reports_Product_Sales_Daily {
38
  /*
39
  * get_report_args.
40
  *
41
- * @version 2.9.0
42
  * @since 2.9.0
43
  */
44
  function get_report_args() {
45
- $this->start_date = isset( $_GET['start_date'] ) ? $_GET['start_date'] : date( 'Y-m-d', strtotime( '-7 days' ) );
46
- $this->end_date = isset( $_GET['end_date'] ) ? $_GET['end_date'] : date( 'Y-m-d' );
 
47
  $this->product_title = isset( $_GET['product_title'] ) ? $_GET['product_title'] : '';
48
  }
49
 
2
  /**
3
  * Booster for WooCommerce - Reports - Product Sales (Daily)
4
  *
5
+ * @version 3.2.4
6
  * @since 2.9.0
7
  * @author Algoritmika Ltd.
8
  */
38
  /*
39
  * get_report_args.
40
  *
41
+ * @version 3.2.4
42
  * @since 2.9.0
43
  */
44
  function get_report_args() {
45
+ $current_time = (int) current_time( 'timestamp' );
46
+ $this->start_date = isset( $_GET['start_date'] ) ? $_GET['start_date'] : date( 'Y-m-d', strtotime( '-7 days', $current_time ) );
47
+ $this->end_date = isset( $_GET['end_date'] ) ? $_GET['end_date'] : date( 'Y-m-d', $current_time );
48
  $this->product_title = isset( $_GET['product_title'] ) ? $_GET['product_title'] : '';
49
  }
50
 
includes/reports/wcj-class-reports-sales.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Reports - Sales
4
  *
5
- * @version 2.7.0
6
  * @author Algoritmika Ltd.
7
  */
8
 
@@ -40,22 +40,6 @@ class WCJ_Reports_Sales {
40
  return $html;
41
  }
42
 
43
- /*
44
- * sort_by_total_sales.
45
- *
46
- * @version 2.3.0
47
- * @since 2.3.0
48
- * @deprecated 2.5.8
49
- */
50
- /*
51
- function sort_by_total_sales( $a, $b ) {
52
- if ( $a['sales'] == $b['sales'] ) {
53
- return 0;
54
- }
55
- return ( $a['sales'] < $b['sales'] ) ? 1 : -1;
56
- }
57
- */
58
-
59
  /*
60
  * sort_by_title.
61
  *
@@ -66,10 +50,24 @@ class WCJ_Reports_Sales {
66
  return strcmp( strip_tags( $a['title'] ), strip_tags( $b['title'] ) );
67
  }
68
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
69
  /*
70
  * get_products_sales.
71
  *
72
- * @version 2.7.0
73
  * @since 2.3.0
74
  * @todo (maybe) currency conversion
75
  * @todo fix when variable and variations are all (wrongfully) counted in total sums
@@ -106,6 +104,9 @@ class WCJ_Reports_Sales {
106
  $order = wc_get_order( $order_id );
107
  $items = $order->get_items();
108
  foreach ( $items as $item ) {
 
 
 
109
  $product_ids = array( $item['product_id'] );
110
  if ( 0 != $item['variation_id'] && 'yes' === get_option( 'wcj_reports_products_sales_count_variations', 'no' ) ) {
111
  $product_ids[] = $item['variation_id'];
@@ -117,7 +118,7 @@ class WCJ_Reports_Sales {
117
  $_product = wc_get_product( $product_id );
118
  if ( is_object( $_product ) ) {
119
  $products_data[ $product_id ][ 'title' ] .= $_product->get_title(); // get_the_title( $product_id );
120
- if ( 'WC_Product_Variation' === get_class( $_product ) && is_object( $_product->parent ) ) {
121
  $products_data[ $product_id ][ 'title' ] .= '<br><em>' . wcj_get_product_formatted_variation( $_product, true ) . '</em>';
122
  } elseif ( 'WC_Product_Variation' === get_class( $_product ) ) {
123
  // $products_data[ $product_id ][ 'title' ] .= ' [PARENT PRODUCT DELETED]'; // todo
2
  /**
3
  * Booster for WooCommerce - Reports - Sales
4
  *
5
+ * @version 3.2.4
6
  * @author Algoritmika Ltd.
7
  */
8
 
40
  return $html;
41
  }
42
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
43
  /*
44
  * sort_by_title.
45
  *
50
  return strcmp( strip_tags( $a['title'] ), strip_tags( $b['title'] ) );
51
  }
52
 
53
+ /*
54
+ * do_product_parent_exist.
55
+ *
56
+ * @version 3.2.4
57
+ * @since 3.2.4
58
+ */
59
+ function do_product_parent_exist( $_product ) {
60
+ if ( WCJ_IS_WC_VERSION_BELOW_3 ) {
61
+ return is_object( $_product->parent );
62
+ } else {
63
+ return ( 0 != ( $parent_id = $_product->get_parent_id() ) ? is_object( wc_get_product( $parent_id ) ) : false );
64
+ }
65
+ }
66
+
67
  /*
68
  * get_products_sales.
69
  *
70
+ * @version 3.2.4
71
  * @since 2.3.0
72
  * @todo (maybe) currency conversion
73
  * @todo fix when variable and variations are all (wrongfully) counted in total sums
104
  $order = wc_get_order( $order_id );
105
  $items = $order->get_items();
106
  foreach ( $items as $item ) {
107
+ if ( ! apply_filters( 'wcj_reports_products_sales_check_product', true, $item['product_id'] ) ) {
108
+ continue;
109
+ }
110
  $product_ids = array( $item['product_id'] );
111
  if ( 0 != $item['variation_id'] && 'yes' === get_option( 'wcj_reports_products_sales_count_variations', 'no' ) ) {
112
  $product_ids[] = $item['variation_id'];
118
  $_product = wc_get_product( $product_id );
119
  if ( is_object( $_product ) ) {
120
  $products_data[ $product_id ][ 'title' ] .= $_product->get_title(); // get_the_title( $product_id );
121
+ if ( 'WC_Product_Variation' === get_class( $_product ) && $this->do_product_parent_exist( $_product ) ) {
122
  $products_data[ $product_id ][ 'title' ] .= '<br><em>' . wcj_get_product_formatted_variation( $_product, true ) . '</em>';
123
  } elseif ( 'WC_Product_Variation' === get_class( $_product ) ) {
124
  // $products_data[ $product_id ][ 'title' ] .= ' [PARENT PRODUCT DELETED]'; // todo
includes/settings/meta-box/wcj-settings-meta-box-product-custom-visibility.php ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Booster for WooCommerce - Settings Meta Box - Product Custom Visibility
4
+ *
5
+ * @version 3.2.4
6
+ * @since 3.2.4
7
+ * @author Algoritmika Ltd.
8
+ * @todo (maybe) option to choose between `chosen_select` and "simple"
9
+ */
10
+
11
+ if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
12
+
13
+ return array(
14
+ array(
15
+ 'title' => __( 'Visible', 'woocommerce-jetpack' ),
16
+ 'name' => 'wcj_product_custom_visibility_visible',
17
+ 'default' => '',
18
+ 'type' => 'select',
19
+ 'options' => wcj_get_select_options( get_option( 'wcj_product_custom_visibility_options_list', '' ) ),
20
+ 'multiple' => true,
21
+ 'css' => 'width:100%;',
22
+ 'class' => 'chosen_select',
23
+ ),
24
+ );
includes/settings/meta-box/wcj-settings-meta-box-sale-flash.php ADDED
@@ -0,0 +1,30 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Booster for WooCommerce - Settings Meta Box - Sale Flash
4
+ *
5
+ * @version 3.2.4
6
+ * @since 3.2.4
7
+ * @author Algoritmika Ltd.
8
+ */
9
+
10
+ if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
11
+
12
+ return array(
13
+ array(
14
+ 'title' => __( 'Enable', 'woocommerce-jetpack' ),
15
+ 'name' => 'wcj_sale_flash_enabled',
16
+ 'default' => 'no',
17
+ 'type' => 'select',
18
+ 'options' => array(
19
+ 'yes' => __( 'Yes', 'woocommerce-jetpack' ),
20
+ 'no' => __( 'No', 'woocommerce-jetpack' ),
21
+ ),
22
+ ),
23
+ array(
24
+ 'title' => __( 'HTML', 'woocommerce-jetpack' ),
25
+ 'name' => 'wcj_sale_flash',
26
+ 'default' => '<span class="onsale">' . __( 'Sale!', 'woocommerce' ) . '</span>',
27
+ 'type' => 'textarea',
28
+ 'css' => 'width:100%;min-height:100px;',
29
+ ),
30
+ );
includes/settings/wcj-settings-admin-orders-list.php ADDED
@@ -0,0 +1,165 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Booster for WooCommerce - Settings - Admin Orders List
4
+ *
5
+ * @version 3.2.4
6
+ * @since 3.2.4
7
+ * @author Algoritmika Ltd.
8
+ */
9
+
10
+ if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
11
+
12
+ $settings = array(
13
+ array(
14
+ 'title' => __( 'Custom Columns', 'woocommerce-jetpack' ),
15
+ 'type' => 'title',
16
+ 'desc' => __( 'This section lets you add custom columns to WooCommerce orders list.', 'woocommerce-jetpack' ),
17
+ 'id' => 'wcj_orders_list_custom_columns_options',
18
+ ),
19
+ array(
20
+ 'title' => __( 'Custom Columns', 'woocommerce-jetpack' ),
21
+ 'desc' => '<strong>' . __( 'Enable section', 'woocommerce-jetpack' ) . '</strong>',
22
+ 'id' => 'wcj_order_admin_list_custom_columns_enabled',
23
+ 'default' => 'no',
24
+ 'type' => 'checkbox',
25
+ ),
26
+ array(
27
+ 'title' => __( 'Billing Country', 'woocommerce-jetpack' ),
28
+ 'desc' => __( 'Add column and filtering', 'woocommerce-jetpack' ),
29
+ 'id' => 'wcj_orders_list_custom_columns_country',
30
+ 'default' => 'no',
31
+ 'type' => 'checkbox',
32
+ ),
33
+ array(
34
+ 'title' => __( 'Currency Code', 'woocommerce-jetpack' ),
35
+ 'desc' => __( 'Add column and filtering', 'woocommerce-jetpack' ),
36
+ 'id' => 'wcj_orders_list_custom_columns_currency',
37
+ 'default' => 'no',
38
+ 'type' => 'checkbox',
39
+ ),
40
+ array(
41
+ 'title' => __( 'Custom Columns Total Number', 'woocommerce-jetpack' ),
42
+ 'id' => 'wcj_orders_list_custom_columns_total_number',
43
+ 'default' => 1,
44
+ 'type' => 'custom_number',
45
+ 'desc' => apply_filters( 'booster_get_message', '', 'desc' ),
46
+ 'custom_attributes' => array_merge(
47
+ is_array( apply_filters( 'booster_get_message', '', 'readonly' ) ) ? apply_filters( 'booster_get_message', '', 'readonly' ) : array(),
48
+ array( 'step' => '1', 'min' => '0', )
49
+ ),
50
+ ),
51
+ );
52
+ $total_number = apply_filters( 'booster_get_option', 1, get_option( 'wcj_orders_list_custom_columns_total_number', 1 ) );
53
+ for ( $i = 1; $i <= $total_number; $i++ ) {
54
+ $settings = array_merge( $settings, array(
55
+ array(
56
+ 'title' => __( 'Custom Column', 'woocommerce-jetpack' ) . ' #' . $i,
57
+ 'desc' => __( 'Enabled', 'woocommerce-jetpack' ),
58
+ 'desc_tip' => __( 'Key:', 'woocommerce-jetpack' ) . ' <code>' . 'wcj_orders_custom_column_' . $i . '</code>',
59
+ 'id' => 'wcj_orders_list_custom_columns_enabled_' . $i,
60
+ 'default' => 'no',
61
+ 'type' => 'checkbox',
62
+ ),
63
+ array(
64
+ 'desc' => __( 'Label', 'woocommerce-jetpack' ),
65
+ 'id' => 'wcj_orders_list_custom_columns_label_' . $i,
66
+ 'default' => '',
67
+ 'type' => 'text',
68
+ ),
69
+ array(
70
+ 'desc' => __( 'Value', 'woocommerce-jetpack' ),
71
+ 'desc_tip' => __( 'You can use shortcodes and/or HTML here.', 'woocommerce-jetpack' ),
72
+ 'id' => 'wcj_orders_list_custom_columns_value_' . $i,
73
+ 'default' => '',
74
+ 'type' => 'custom_textarea',
75
+ ),
76
+ array(
77
+ 'desc' => __( 'Sortable', 'woocommerce-jetpack' ),
78
+ 'id' => 'wcj_orders_list_custom_columns_sortable_' . $i,
79
+ 'default' => 'no',
80
+ 'type' => 'select',
81
+ 'options' => array(
82
+ 'no' => __( 'No', 'woocommerce-jetpack' ),
83
+ 'meta_value' => __( 'By meta (as text)', 'woocommerce-jetpack' ),
84
+ 'meta_value_num' => __( 'By meta (as numbers)', 'woocommerce-jetpack' ),
85
+ ),
86
+ ),
87
+ array(
88
+ 'desc' => __( 'Key (if sortable)', 'woocommerce-jetpack' ),
89
+ 'id' => 'wcj_orders_list_custom_columns_sortable_key_' . $i,
90
+ 'default' => '',
91
+ 'type' => 'text',
92
+ ),
93
+ ) );
94
+ }
95
+ $settings = array_merge( $settings, array(
96
+ array(
97
+ 'type' => 'sectionend',
98
+ 'id' => 'wcj_orders_list_custom_columns_options',
99
+ ),
100
+ array(
101
+ 'title' => __( 'Multiple Status', 'woocommerce-jetpack' ),
102
+ 'type' => 'title',
103
+ 'id' => 'wcj_order_admin_list_multiple_status_options',
104
+ ),
105
+ array(
106
+ 'title' => __( 'Multiple Status', 'woocommerce-jetpack' ),
107
+ 'desc' => '<strong>' . __( 'Enable section', 'woocommerce-jetpack' ) . '</strong>',
108
+ 'id' => 'wcj_order_admin_list_multiple_status_enabled',
109
+ 'default' => 'no',
110
+ 'type' => 'checkbox',
111
+ ),
112
+ array(
113
+ 'title' => __( 'Multiple Status Filtering', 'woocommerce-jetpack' ),
114
+ 'id' => 'wcj_order_admin_list_multiple_status_filter',
115
+ 'default' => 'no',
116
+ 'type' => 'select',
117
+ 'options' => array(
118
+ 'no' => __( 'Do not add', 'woocommerce-jetpack' ),
119
+ 'multiple_select' => __( 'Add as multiple select', 'woocommerce-jetpack' ),
120
+ 'checkboxes' => __( 'Add as checkboxes', 'woocommerce-jetpack' ),
121
+ ),
122
+ ),
123
+ array(
124
+ 'title' => __( 'Hide Default Statuses Menu', 'woocommerce-jetpack' ),
125
+ 'desc' => __( 'Hide', 'woocommerce-jetpack' ),
126
+ 'id' => 'wcj_order_admin_list_hide_default_statuses_menu',
127
+ 'default' => 'no',
128
+ 'type' => 'checkbox',
129
+ ),
130
+ array(
131
+ 'title' => __( 'Add "Not Completed" Status Link to Default Statuses Menu', 'woocommerce-jetpack' ),
132
+ 'desc' => __( 'Add', 'woocommerce-jetpack' ),
133
+ 'id' => 'wcj_order_admin_list_multiple_status_not_completed_link',
134
+ 'default' => 'no',
135
+ 'type' => 'checkbox',
136
+ ),
137
+ array(
138
+ 'type' => 'sectionend',
139
+ 'id' => 'wcj_order_admin_list_multiple_status_options',
140
+ ),
141
+ array(
142
+ 'title' => __( 'Columns Order', 'woocommerce-jetpack' ),
143
+ 'type' => 'title',
144
+ 'id' => 'wcj_order_admin_list_columns_order_options',
145
+ ),
146
+ array(
147
+ 'title' => __( 'Columns Order', 'woocommerce-jetpack' ),
148
+ 'desc' => '<strong>' . __( 'Enable section', 'woocommerce-jetpack' ) . '</strong>',
149
+ 'id' => 'wcj_order_admin_list_columns_order_enabled',
150
+ 'default' => 'no',
151
+ 'type' => 'checkbox',
152
+ ),
153
+ array(
154
+ 'id' => 'wcj_order_admin_list_columns_order',
155
+ 'desc_tip' => __( 'Default columns order', 'woocommerce-jetpack' ) . ':<br>' . str_replace( PHP_EOL, '<br>', $this->get_orders_default_columns_in_order() ),
156
+ 'default' => $this->get_orders_default_columns_in_order(),
157
+ 'type' => 'textarea',
158
+ 'css' => 'height:300px;',
159
+ ),
160
+ array(
161
+ 'type' => 'sectionend',
162
+ 'id' => 'wcj_order_admin_list_columns_order_options',
163
+ ),
164
+ ) );
165
+ return $settings;
includes/settings/wcj-settings-admin-products-list.php ADDED
@@ -0,0 +1,93 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Booster for WooCommerce - Settings - Admin Products List
4
+ *
5
+ * @version 3.2.4
6
+ * @since 3.2.4
7
+ * @author Algoritmika Ltd.
8
+ */
9
+
10
+ if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
11
+
12
+ $settings = array(
13
+ array(
14
+ 'title' => __( 'Custom Columns', 'woocommerce-jetpack' ),
15
+ 'type' => 'title',
16
+ 'id' => 'wcj_products_admin_list_custom_columns_options',
17
+ ),
18
+ array(
19
+ 'title' => __( 'Enable/Disable', 'woocommerce-jetpack' ),
20
+ 'desc' => '<strong>' . __( 'Enable section', 'woocommerce-jetpack' ) . '</strong>',
21
+ 'id' => 'wcj_products_admin_list_custom_columns_enabled',
22
+ 'default' => 'no',
23
+ 'type' => 'checkbox',
24
+ ),
25
+ array(
26
+ 'title' => __( 'Custom Columns Total Number', 'woocommerce-jetpack' ),
27
+ 'desc_tip' => __( 'Save module\'s settings after changing this option to see new settings fields.', 'woocommerce-jetpack' ),
28
+ 'id' => 'wcj_products_admin_list_custom_columns_total_number',
29
+ 'default' => 1,
30
+ 'type' => 'custom_number',
31
+ 'desc' => apply_filters( 'booster_get_message', '', 'desc' ),
32
+ 'custom_attributes' => array_merge(
33
+ is_array( apply_filters( 'booster_get_message', '', 'readonly' ) ) ? apply_filters( 'booster_get_message', '', 'readonly' ) : array(),
34
+ array( 'step' => '1', 'min' => '0', )
35
+ ),
36
+ ),
37
+ );
38
+ $total_number = apply_filters( 'booster_get_option', 1, get_option( 'wcj_products_admin_list_custom_columns_total_number', 1 ) );
39
+ for ( $i = 1; $i <= $total_number; $i++ ) {
40
+ $settings = array_merge( $settings, array(
41
+ array(
42
+ 'title' => __( 'Custom Column', 'woocommerce-jetpack' ) . ' #' . $i,
43
+ 'desc' => __( 'Enabled', 'woocommerce-jetpack' ),
44
+ 'desc_tip' => __( 'Key:', 'woocommerce-jetpack' ) . ' <code>' . 'wcj_products_custom_column_' . $i . '</code>',
45
+ 'id' => 'wcj_products_admin_list_custom_columns_enabled_' . $i,
46
+ 'default' => 'no',
47
+ 'type' => 'checkbox',
48
+ ),
49
+ array(
50
+ 'desc' => __( 'Label', 'woocommerce-jetpack' ),
51
+ 'id' => 'wcj_products_admin_list_custom_columns_label_' . $i,
52
+ 'default' => '',
53
+ 'type' => 'text',
54
+ ),
55
+ array(
56
+ 'desc' => __( 'Value', 'woocommerce-jetpack' ),
57
+ 'desc_tip' => __( 'You can use shortcodes and/or HTML here.', 'woocommerce-jetpack' ),
58
+ 'id' => 'wcj_products_admin_list_custom_columns_value_' . $i,
59
+ 'default' => '',
60
+ 'type' => 'custom_textarea',
61
+ ),
62
+ ) );
63
+ }
64
+ $settings = array_merge( $settings, array(
65
+ array(
66
+ 'type' => 'sectionend',
67
+ 'id' => 'wcj_products_admin_list_custom_columns_options',
68
+ ),
69
+ array(
70
+ 'title' => __( 'Columns Order', 'woocommerce-jetpack' ),
71
+ 'type' => 'title',
72
+ 'id' => 'wcj_products_admin_list_columns_order_options',
73
+ ),
74
+ array(
75
+ 'title' => __( 'Enable/Disable', 'woocommerce-jetpack' ),
76
+ 'desc' => '<strong>' . __( 'Enable section', 'woocommerce-jetpack' ) . '</strong>',
77
+ 'id' => 'wcj_products_admin_list_columns_order_enabled',
78
+ 'default' => 'no',
79
+ 'type' => 'checkbox',
80
+ ),
81
+ array(
82
+ 'id' => 'wcj_products_admin_list_columns_order',
83
+ 'desc_tip' => __( 'Default columns order', 'woocommerce-jetpack' ) . ':<br>' . str_replace( PHP_EOL, '<br>', $this->get_products_default_columns_in_order() ),
84
+ 'default' => $this->get_products_default_columns_in_order(),
85
+ 'type' => 'textarea',
86
+ 'css' => 'height:300px;',
87
+ ),
88
+ array(
89
+ 'type' => 'sectionend',
90
+ 'id' => 'wcj_products_admin_list_columns_order_options',
91
+ ),
92
+ ) );
93
+ return $settings;
includes/settings/wcj-settings-call-for-price.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Settings - Call for Price
4
  *
5
- * @version 2.8.0
6
  * @since 2.8.0
7
  * @author Algoritmika Ltd.
8
  */
@@ -22,9 +22,9 @@ return array(
22
  'desc_tip' => __( 'This sets the html to output on empty price. Leave blank to disable.', 'woocommerce-jetpack' ),
23
  'desc' => apply_filters( 'booster_get_message', '', 'desc' ),
24
  'id' => 'wcj_call_for_price_text',
25
- 'default' => $this->default_empty_price_text,
26
  'type' => 'textarea',
27
- 'css' => 'width:50%;min-width:300px;',
28
  'custom_attributes' => apply_filters( 'booster_get_message', '', 'readonly' ),
29
  ),
30
  array(
@@ -32,9 +32,9 @@ return array(
32
  'desc_tip' => __( 'This sets the html to output on empty price. Leave blank to disable.', 'woocommerce-jetpack' ),
33
  'desc' => apply_filters( 'booster_get_message', '', 'desc' ),
34
  'id' => 'wcj_call_for_price_text_on_archive',
35
- 'default' => $this->default_empty_price_text,
36
  'type' => 'textarea',
37
- 'css' => 'width:50%;min-width:300px;',
38
  'custom_attributes' => apply_filters( 'booster_get_message', '', 'readonly' ),
39
  ),
40
  array(
@@ -42,9 +42,9 @@ return array(
42
  'desc_tip' => __( 'This sets the html to output on empty price. Leave blank to disable.', 'woocommerce-jetpack' ),
43
  'desc' => apply_filters( 'booster_get_message', '', 'desc' ),
44
  'id' => 'wcj_call_for_price_text_on_home',
45
- 'default' => $this->default_empty_price_text,
46
  'type' => 'textarea',
47
- 'css' => 'width:50%;min-width:300px;',
48
  'custom_attributes' => apply_filters( 'booster_get_message', '', 'readonly' ),
49
  ),
50
  array(
@@ -52,9 +52,19 @@ return array(
52
  'desc_tip' => __( 'This sets the html to output on empty price. Leave blank to disable.', 'woocommerce-jetpack' ),
53
  'desc' => apply_filters( 'booster_get_message', '', 'desc' ),
54
  'id' => 'wcj_call_for_price_text_on_related',
55
- 'default' => $this->default_empty_price_text,
56
  'type' => 'textarea',
57
- 'css' => 'width:50%;min-width:300px;',
 
 
 
 
 
 
 
 
 
 
58
  'custom_attributes' => apply_filters( 'booster_get_message', '', 'readonly' ),
59
  ),
60
  array(
@@ -67,7 +77,7 @@ return array(
67
  array(
68
  'title' => __( 'Make All Products Call for Price', 'woocommerce-jetpack' ),
69
  'desc' => __( 'Enable', 'woocommerce-jetpack' ),
70
- 'desc_tip' => __( 'Enable this to make all products (except variable) prices empty. When checkbox disabled, all prices go back to normal.', 'woocommerce-jetpack' ),
71
  'id' => 'wcj_call_for_price_make_all_empty',
72
  'default' => 'no',
73
  'type' => 'checkbox',
2
  /**
3
  * Booster for WooCommerce - Settings - Call for Price
4
  *
5
+ * @version 3.2.4
6
  * @since 2.8.0
7
  * @author Algoritmika Ltd.
8
  */
22
  'desc_tip' => __( 'This sets the html to output on empty price. Leave blank to disable.', 'woocommerce-jetpack' ),
23
  'desc' => apply_filters( 'booster_get_message', '', 'desc' ),
24
  'id' => 'wcj_call_for_price_text',
25
+ 'default' => '<strong>Call for price</strong>',
26
  'type' => 'textarea',
27
+ 'css' => 'width:100%',
28
  'custom_attributes' => apply_filters( 'booster_get_message', '', 'readonly' ),
29
  ),
30
  array(
32
  'desc_tip' => __( 'This sets the html to output on empty price. Leave blank to disable.', 'woocommerce-jetpack' ),
33
  'desc' => apply_filters( 'booster_get_message', '', 'desc' ),
34
  'id' => 'wcj_call_for_price_text_on_archive',
35
+ 'default' => '<strong>Call for price</strong>',
36
  'type' => 'textarea',
37
+ 'css' => 'width:100%',
38
  'custom_attributes' => apply_filters( 'booster_get_message', '', 'readonly' ),
39
  ),
40
  array(
42
  'desc_tip' => __( 'This sets the html to output on empty price. Leave blank to disable.', 'woocommerce-jetpack' ),
43
  'desc' => apply_filters( 'booster_get_message', '', 'desc' ),
44
  'id' => 'wcj_call_for_price_text_on_home',
45
+ 'default' => '<strong>Call for price</strong>',
46
  'type' => 'textarea',
47
+ 'css' => 'width:100%',
48
  'custom_attributes' => apply_filters( 'booster_get_message', '', 'readonly' ),
49
  ),
50
  array(
52
  'desc_tip' => __( 'This sets the html to output on empty price. Leave blank to disable.', 'woocommerce-jetpack' ),
53
  'desc' => apply_filters( 'booster_get_message', '', 'desc' ),
54
  'id' => 'wcj_call_for_price_text_on_related',
55
+ 'default' => '<strong>Call for price</strong>',
56
  'type' => 'textarea',
57
+ 'css' => 'width:100%',
58
+ 'custom_attributes' => apply_filters( 'booster_get_message', '', 'readonly' ),
59
+ ),
60
+ array(
61
+ 'title' => __( 'Label to Show for Variations', 'woocommerce-jetpack' ),
62
+ 'desc_tip' => __( 'This sets the html to output on empty price. Leave blank to disable.', 'woocommerce-jetpack' ),
63
+ 'desc' => apply_filters( 'booster_get_message', '', 'desc' ),
64
+ 'id' => 'wcj_call_for_price_text_variation',
65
+ 'default' => '<strong>Call for price</strong>',
66
+ 'type' => 'textarea',
67
+ 'css' => 'width:100%',
68
  'custom_attributes' => apply_filters( 'booster_get_message', '', 'readonly' ),
69
  ),
70
  array(
77
  array(
78
  'title' => __( 'Make All Products Call for Price', 'woocommerce-jetpack' ),
79
  'desc' => __( 'Enable', 'woocommerce-jetpack' ),
80
+ 'desc_tip' => __( 'Enable this to make all products prices empty. When checkbox disabled, all prices go back to normal.', 'woocommerce-jetpack' ),
81
  'id' => 'wcj_call_for_price_make_all_empty',
82
  'default' => 'no',
83
  'type' => 'checkbox',
includes/settings/wcj-settings-checkout-custom-fields.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Settings - Checkout Custom Fields
4
  *
5
- * @version 3.2.2
6
  * @since 2.8.0
7
  * @author Algoritmika Ltd.
8
  */
@@ -104,7 +104,7 @@ for ( $i = 1; $i <= apply_filters( 'booster_get_option', 1, get_option( 'wcj_che
104
  ),
105
  array(
106
  'title' => __( 'Enable/Disable', 'woocommerce-jetpack' ),
107
- 'desc' => __( 'Enable', 'woocommerce-jetpack' ),
108
  'desc_tip' => __( 'Key', 'woocommerce-jetpack' ) . ': ' .
109
  '<code>' . get_option( 'wcj_checkout_custom_field_section_' . $i, 'billing' ) . '_' . 'wcj_checkout_field_' . $i . '</code>',
110
  'id' => 'wcj_checkout_custom_field_enabled_' . $i,
@@ -189,6 +189,13 @@ for ( $i = 1; $i <= apply_filters( 'booster_get_option', 1, get_option( 'wcj_che
189
  'default' => 'yes',
190
  'type' => 'checkbox',
191
  ),
 
 
 
 
 
 
 
192
  array(
193
  'title' => __( 'Select/Radio: Options', 'woocommerce-jetpack' ),
194
  'desc' => __( 'One option per line', 'woocommerce-jetpack' ),
@@ -326,6 +333,22 @@ for ( $i = 1; $i <= apply_filters( 'booster_get_option', 1, get_option( 'wcj_che
326
  'class' => 'chosen_select',
327
  'options' => $products,
328
  ),
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
329
  array(
330
  'type' => 'sectionend',
331
  'id' => 'wcj_checkout_custom_fields_options_' . $i,
2
  /**
3
  * Booster for WooCommerce - Settings - Checkout Custom Fields
4
  *
5
+ * @version 3.2.4
6
  * @since 2.8.0
7
  * @author Algoritmika Ltd.
8
  */
104
  ),
105
  array(
106
  'title' => __( 'Enable/Disable', 'woocommerce-jetpack' ),
107
+ 'desc' => '<strong>' . __( 'Enable', 'woocommerce-jetpack' ) . '</strong>',
108
  'desc_tip' => __( 'Key', 'woocommerce-jetpack' ) . ': ' .
109
  '<code>' . get_option( 'wcj_checkout_custom_field_section_' . $i, 'billing' ) . '_' . 'wcj_checkout_field_' . $i . '</code>',
110
  'id' => 'wcj_checkout_custom_field_enabled_' . $i,
189
  'default' => 'yes',
190
  'type' => 'checkbox',
191
  ),
192
+ array(
193
+ 'title' => __( 'Customer Meta Fields', 'woocommerce-jetpack' ),
194
+ 'desc' => __( 'Add', 'woocommerce-jetpack' ),
195
+ 'id' => 'wcj_checkout_custom_field_customer_meta_fields_' . $i,
196
+ 'default' => 'yes',
197
+ 'type' => 'checkbox',
198
+ ),
199
  array(
200
  'title' => __( 'Select/Radio: Options', 'woocommerce-jetpack' ),
201
  'desc' => __( 'One option per line', 'woocommerce-jetpack' ),
333
  'class' => 'chosen_select',
334
  'options' => $products,
335
  ),
336
+ array(
337
+ 'title' => __( 'Min Cart Amount', 'woocommerce-jetpack' ),
338
+ 'desc_tip' => __( 'Show this field only if cart total is at least this amount. Set zero to disable.', 'woocommerce-jetpack' ),
339
+ 'id' => 'wcj_checkout_custom_field_min_cart_amount_' . $i,
340
+ 'default' => 0,
341
+ 'type' => 'number',
342
+ 'custom_attributes' => array( 'min' => 0, 'step' => wcj_get_wc_price_step() ),
343
+ ),
344
+ array(
345
+ 'title' => __( 'Max Cart Amount', 'woocommerce-jetpack' ),
346
+ 'desc_tip' => __( 'Show this field only if cart total is not more than this amount. Set zero to disable.', 'woocommerce-jetpack' ),
347
+ 'id' => 'wcj_checkout_custom_field_max_cart_amount_' . $i,
348
+ 'default' => 0,
349
+ 'type' => 'number',
350
+ 'custom_attributes' => array( 'min' => 0, 'step' => wcj_get_wc_price_step() ),
351
+ ),
352
  array(
353
  'type' => 'sectionend',
354
  'id' => 'wcj_checkout_custom_fields_options_' . $i,
includes/settings/wcj-settings-currency-exchange-rates.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Settings - Currency Exchange Rates
4
  *
5
- * @version 3.2.3
6
  * @since 2.8.0
7
  * @author Algoritmika Ltd.
8
  * @todo add "rounding" and "offset" options for each pair separately
@@ -149,7 +149,7 @@ $settings = array_merge( $settings, array(
149
  ),
150
  ) );
151
  // Exchange rates
152
- $exchange_rate_settings = $this->get_all_currencies_exchange_rates_settings();
153
  if ( ! empty( $exchange_rate_settings ) ) {
154
  $settings = array_merge( $settings, array(
155
  array(
2
  /**
3
  * Booster for WooCommerce - Settings - Currency Exchange Rates
4
  *
5
+ * @version 3.2.4
6
  * @since 2.8.0
7
  * @author Algoritmika Ltd.
8
  * @todo add "rounding" and "offset" options for each pair separately
149
  ),
150
  ) );
151
  // Exchange rates
152
+ $exchange_rate_settings = $this->get_all_currencies_exchange_rates_settings( true );
153
  if ( ! empty( $exchange_rate_settings ) ) {
154
  $settings = array_merge( $settings, array(
155
  array(
includes/settings/wcj-settings-currency-per-product.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Settings - Currency per Product
4
  *
5
- * @version 3.2.1
6
  * @since 2.8.0
7
  * @author Algoritmika Ltd.
8
  */
@@ -172,9 +172,7 @@ for ( $i = 1; $i <= $total_number; $i++ ) {
172
  'id' => 'wcj_currency_per_product_exchange_rate_' . $i,
173
  'default' => 1,
174
  'type' => 'exchange_rate',
175
- 'custom_attributes' => array( 'step' => '0.000001', 'min' => '0', ),
176
  'custom_attributes_button' => $custom_attributes,
177
- 'css' => 'width:100px;',
178
  'value' => $currency_from . '/' . $currency_to,
179
  ),
180
  ) );
2
  /**
3
  * Booster for WooCommerce - Settings - Currency per Product
4
  *
5
+ * @version 3.2.4
6
  * @since 2.8.0
7
  * @author Algoritmika Ltd.
8
  */
172
  'id' => 'wcj_currency_per_product_exchange_rate_' . $i,
173
  'default' => 1,
174
  'type' => 'exchange_rate',
 
175
  'custom_attributes_button' => $custom_attributes,
 
176
  'value' => $currency_from . '/' . $currency_to,
177
  ),
178
  ) );
includes/settings/wcj-settings-general.php CHANGED
@@ -7,6 +7,7 @@
7
  * @author Algoritmika Ltd.
8
  * @todo add link to Booster's shortcodes list
9
  * @todo clean up
 
10
  */
11
 
12
  if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
7
  * @author Algoritmika Ltd.
8
  * @todo add link to Booster's shortcodes list
9
  * @todo clean up
10
+ * @todo (maybe) move `wcj_general_advanced_disable_save_sys_temp_dir` to "PDF Invoicing" module
11
  */
12
 
13
  if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
includes/settings/wcj-settings-multicurrency-base-price.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Settings - Multicurrency Product Base Price
4
  *
5
- * @version 3.1.0
6
  * @since 2.8.0
7
  * @author Algoritmika Ltd.
8
  */
@@ -103,9 +103,7 @@ for ( $i = 1; $i <= $total_number; $i++ ) {
103
  'id' => 'wcj_multicurrency_base_price_exchange_rate_' . $i,
104
  'default' => 1,
105
  'type' => 'exchange_rate',
106
- 'custom_attributes' => array( 'step' => '0.000001', 'min' => '0', ),
107
  'custom_attributes_button' => $custom_attributes,
108
- 'css' => 'width:100px;',
109
  'value' => $currency_from . '/' . $currency_to,
110
  ),
111
  ) );
2
  /**
3
  * Booster for WooCommerce - Settings - Multicurrency Product Base Price
4
  *
5
+ * @version 3.2.4
6
  * @since 2.8.0
7
  * @author Algoritmika Ltd.
8
  */
103
  'id' => 'wcj_multicurrency_base_price_exchange_rate_' . $i,
104
  'default' => 1,
105
  'type' => 'exchange_rate',
 
106
  'custom_attributes_button' => $custom_attributes,
 
107
  'value' => $currency_from . '/' . $currency_to,
108
  ),
109
  ) );
includes/settings/wcj-settings-multicurrency.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Settings - Multicurrency (Currency Switcher)
4
  *
5
- * @version 3.2.2
6
  * @since 2.8.0
7
  * @author Algoritmika Ltd.
8
  * @todo "pretty prices"
@@ -144,9 +144,7 @@ for ( $i = 1; $i <= $total_number; $i++ ) {
144
  'id' => 'wcj_multicurrency_exchange_rate_' . $i,
145
  'default' => 1,
146
  'type' => 'exchange_rate',
147
- 'custom_attributes' => array( 'step' => '0.000001', 'min' => '0', ),
148
  'custom_attributes_button' => $custom_attributes,
149
- 'css' => 'width:100px;',
150
  'value' => $currency_from . '/' . $currency_to,
151
  ),
152
  ) );
2
  /**
3
  * Booster for WooCommerce - Settings - Multicurrency (Currency Switcher)
4
  *
5
+ * @version 3.2.4
6
  * @since 2.8.0
7
  * @author Algoritmika Ltd.
8
  * @todo "pretty prices"
144
  'id' => 'wcj_multicurrency_exchange_rate_' . $i,
145
  'default' => 1,
146
  'type' => 'exchange_rate',
 
147
  'custom_attributes_button' => $custom_attributes,
 
148
  'value' => $currency_from . '/' . $currency_to,
149
  ),
150
  ) );
includes/settings/wcj-settings-order-min-amount.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Settings - Order Minimum Amount
4
  *
5
- * @version 2.9.0
6
  * @since 2.8.0
7
  * @author Algoritmika Ltd.
8
  */
@@ -31,6 +31,13 @@ $settings = array(
31
  'default' => 'no',
32
  'type' => 'checkbox',
33
  ),
 
 
 
 
 
 
 
34
  array(
35
  'title' => __( 'Error message', 'woocommerce-jetpack' ),
36
  'desc' => apply_filters( 'booster_get_message', '', 'desc' ),
2
  /**
3
  * Booster for WooCommerce - Settings - Order Minimum Amount
4
  *
5
+ * @version 3.2.4
6
  * @since 2.8.0
7
  * @author Algoritmika Ltd.
8
  */
31
  'default' => 'no',
32
  'type' => 'checkbox',
33
  ),
34
+ array(
35
+ 'title' => __( 'Exclude Discounts from Cart Total', 'woocommerce-jetpack' ),
36
+ 'desc' => __( 'Exclude', 'woocommerce-jetpack' ),
37
+ 'id' => 'wcj_order_minimum_amount_exclude_discounts',
38
+ 'default' => 'no',
39
+ 'type' => 'checkbox',
40
+ ),
41
  array(
42
  'title' => __( 'Error message', 'woocommerce-jetpack' ),
43
  'desc' => apply_filters( 'booster_get_message', '', 'desc' ),
includes/settings/wcj-settings-orders.php CHANGED
@@ -2,13 +2,18 @@
2
  /**
3
  * Booster for WooCommerce Settings - Orders
4
  *
5
- * @version 3.2.0
6
  * @since 2.8.0
7
  * @author Algoritmika Ltd.
8
  */
9
 
10
  if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
11
 
 
 
 
 
 
12
  $settings = array(
13
  array(
14
  'title' => __( 'Admin Order Currency', 'woocommerce-jetpack' ),
@@ -56,147 +61,6 @@ $settings = array(
56
  'type' => 'sectionend',
57
  'id' => 'wcj_order_auto_complete_options',
58
  ),
59
- array(
60
- 'title' => __( 'Admin Orders List Custom Columns', 'woocommerce-jetpack' ),
61
- 'type' => 'title',
62
- 'desc' => __( 'This section lets you add custom columns to WooCommerce orders list.', 'woocommerce-jetpack' ),
63
- 'id' => 'wcj_orders_list_custom_columns_options',
64
- ),
65
- array(
66
- 'title' => __( 'Billing Country', 'woocommerce-jetpack' ),
67
- 'desc' => __( 'Add column and filtering', 'woocommerce-jetpack' ),
68
- 'id' => 'wcj_orders_list_custom_columns_country',
69
- 'default' => 'no',
70
- 'type' => 'checkbox',
71
- ),
72
- array(
73
- 'title' => __( 'Currency Code', 'woocommerce-jetpack' ),
74
- 'desc' => __( 'Add column and filtering', 'woocommerce-jetpack' ),
75
- 'id' => 'wcj_orders_list_custom_columns_currency',
76
- 'default' => 'no',
77
- 'type' => 'checkbox',
78
- ),
79
- array(
80
- 'title' => __( 'Custom Columns Total Number', 'woocommerce-jetpack' ),
81
- 'id' => 'wcj_orders_list_custom_columns_total_number',
82
- 'default' => 1,
83
- 'type' => 'custom_number',
84
- 'desc' => apply_filters( 'booster_get_message', '', 'desc' ),
85
- 'custom_attributes' => array_merge(
86
- is_array( apply_filters( 'booster_get_message', '', 'readonly' ) ) ? apply_filters( 'booster_get_message', '', 'readonly' ) : array(),
87
- array( 'step' => '1', 'min' => '0', )
88
- ),
89
- ),
90
- );
91
- $total_number = apply_filters( 'booster_get_option', 1, get_option( 'wcj_orders_list_custom_columns_total_number', 1 ) );
92
- for ( $i = 1; $i <= $total_number; $i++ ) {
93
- $settings = array_merge( $settings, array(
94
- array(
95
- 'title' => __( 'Custom Column', 'woocommerce-jetpack' ) . ' #' . $i,
96
- 'desc' => __( 'Enabled', 'woocommerce-jetpack' ),
97
- 'desc_tip' => __( 'Key:', 'woocommerce-jetpack' ) . ' <code>' . 'wcj_orders_custom_column_' . $i . '</code>',
98
- 'id' => 'wcj_orders_list_custom_columns_enabled_' . $i,
99
- 'default' => 'no',
100
- 'type' => 'checkbox',
101
- ),
102
- array(
103
- 'desc' => __( 'Label', 'woocommerce-jetpack' ),
104
- 'id' => 'wcj_orders_list_custom_columns_label_' . $i,
105
- 'default' => '',
106
- 'type' => 'text',
107
- 'css' => 'width:300px;',
108
- ),
109
- array(
110
- 'desc' => __( 'Value', 'woocommerce-jetpack' ),
111
- 'desc_tip' => __( 'You can use shortcodes and/or HTML here.', 'woocommerce-jetpack' ),
112
- 'id' => 'wcj_orders_list_custom_columns_value_' . $i,
113
- 'default' => '',
114
- 'type' => 'custom_textarea',
115
- 'css' => 'width:300px;',
116
- ),
117
- array(
118
- 'desc' => __( 'Sortable', 'woocommerce-jetpack' ),
119
- 'id' => 'wcj_orders_list_custom_columns_sortable_' . $i,
120
- 'default' => 'no',
121
- 'type' => 'select',
122
- 'options' => array(
123
- 'no' => __( 'No', 'woocommerce-jetpack' ),
124
- 'meta_value' => __( 'By meta (as text)', 'woocommerce-jetpack' ),
125
- 'meta_value_num' => __( 'By meta (as numbers)', 'woocommerce-jetpack' ),
126
- ),
127
- 'css' => 'min-width:300px;',
128
- ),
129
- array(
130
- 'desc' => __( 'Key (if sortable)', 'woocommerce-jetpack' ),
131
- 'id' => 'wcj_orders_list_custom_columns_sortable_key_' . $i,
132
- 'default' => '',
133
- 'type' => 'text',
134
- 'css' => 'width:300px;',
135
- ),
136
- ) );
137
- }
138
- $settings = array_merge( $settings, array(
139
- array(
140
- 'type' => 'sectionend',
141
- 'id' => 'wcj_orders_list_custom_columns_options',
142
- ),
143
- array(
144
- 'title' => __( 'Admin Orders List Multiple Status', 'woocommerce-jetpack' ),
145
- 'type' => 'title',
146
- 'id' => 'wcj_order_admin_list_multiple_status_options',
147
- ),
148
- array(
149
- 'title' => __( 'Multiple Status Filtering', 'woocommerce-jetpack' ),
150
- 'id' => 'wcj_order_admin_list_multiple_status_filter',
151
- 'default' => 'no',
152
- 'type' => 'select',
153
- 'options' => array(
154
- 'no' => __( 'Do not add', 'woocommerce-jetpack' ),
155
- 'multiple_select' => __( 'Add as multiple select', 'woocommerce-jetpack' ),
156
- 'checkboxes' => __( 'Add as checkboxes', 'woocommerce-jetpack' ),
157
- ),
158
- ),
159
- array(
160
- 'title' => __( 'Hide Default Statuses Menu', 'woocommerce-jetpack' ),
161
- 'desc' => __( 'Hide', 'woocommerce-jetpack' ),
162
- 'id' => 'wcj_order_admin_list_hide_default_statuses_menu',
163
- 'default' => 'no',
164
- 'type' => 'checkbox',
165
- ),
166
- array(
167
- 'title' => __( 'Add "Not Completed" Status Link to Default Statuses Menu', 'woocommerce-jetpack' ),
168
- 'desc' => __( 'Add', 'woocommerce-jetpack' ),
169
- 'id' => 'wcj_order_admin_list_multiple_status_not_completed_link',
170
- 'default' => 'no',
171
- 'type' => 'checkbox',
172
- ),
173
- array(
174
- 'type' => 'sectionend',
175
- 'id' => 'wcj_order_admin_list_multiple_status_options',
176
- ),
177
- array(
178
- 'title' => __( 'Admin Orders List Columns Order', 'woocommerce-jetpack' ),
179
- 'type' => 'title',
180
- 'id' => 'wcj_order_admin_list_columns_order_options',
181
- ),
182
- array(
183
- 'title' => __( 'Columns Order', 'woocommerce-jetpack' ),
184
- 'desc' => __( 'Enable', 'woocommerce-jetpack' ),
185
- 'id' => 'wcj_order_admin_list_columns_order_enabled',
186
- 'default' => 'no',
187
- 'type' => 'checkbox',
188
- ),
189
- array(
190
- 'id' => 'wcj_order_admin_list_columns_order',
191
- 'desc_tip' => __( 'Default columns order', 'woocommerce-jetpack' ) . ':<br>' . str_replace( PHP_EOL, '<br>', $this->get_orders_default_columns_in_order() ),
192
- 'default' => $this->get_orders_default_columns_in_order(),
193
- 'type' => 'textarea',
194
- 'css' => 'height:300px;min-width:300px;',
195
- ),
196
- array(
197
- 'type' => 'sectionend',
198
- 'id' => 'wcj_order_admin_list_columns_order_options',
199
- ),
200
  array(
201
  'title' => __( 'Bulk Regenerate Download Permissions for Orders', 'woocommerce-jetpack' ),
202
  'type' => 'title',
@@ -212,7 +76,7 @@ $settings = array_merge( $settings, array(
212
  'custom_attributes' => apply_filters( 'booster_get_message', '', 'disabled' ),
213
  ),
214
  array(
215
- 'title' => __( 'Add Regenerate Download Permissions to Bulk Actions', 'woocommerce-jetpack' ),
216
  'desc_tip' => __( 'When enabled this will add "Regenerate download permissions" action to "Bulk Actions" select box on admin orders page.', 'woocommerce-jetpack' ) . ' ' . apply_filters( 'booster_get_message', '', 'desc' ),
217
  'desc' => __( 'Add', 'woocommerce-jetpack' ),
218
  'id' => 'wcj_order_bulk_regenerate_download_permissions_actions',
@@ -221,17 +85,27 @@ $settings = array_merge( $settings, array(
221
  'custom_attributes' => apply_filters( 'booster_get_message', '', 'disabled' ),
222
  ),
223
  array(
224
- 'title' => __( 'Regenerate Download Permissions for All Orders', 'woocommerce-jetpack' ),
225
- 'desc_tip' => __( 'Check this box and press "Save changes" button to start regeneration. Please note that both module and current section must be enabled.', 'woocommerce-jetpack' ) . ' ' . apply_filters( 'booster_get_message', '', 'desc' ),
226
- 'desc' => __( 'Regenerate', 'woocommerce-jetpack' ),
227
  'id' => 'wcj_order_bulk_regenerate_download_permissions_all_orders',
228
  'default' => 'no',
229
  'type' => 'checkbox',
230
  'custom_attributes' => apply_filters( 'booster_get_message', '', 'disabled' ),
231
  ),
 
 
 
 
 
 
 
 
 
 
232
  array(
233
  'type' => 'sectionend',
234
  'id' => 'wcj_order_bulk_regenerate_download_permissions_options',
235
  ),
236
- ) );
237
  return $settings;
2
  /**
3
  * Booster for WooCommerce Settings - Orders
4
  *
5
+ * @version 3.2.4
6
  * @since 2.8.0
7
  * @author Algoritmika Ltd.
8
  */
9
 
10
  if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
11
 
12
+ $bulk_regenerate_download_permissions_all_orders_cron_desc = '';
13
+ if ( $this->is_enabled() && 'yes' === apply_filters( 'booster_get_option', 'no', get_option( 'wcj_order_bulk_regenerate_download_permissions_enabled', 'no' ) ) ) {
14
+ $bulk_regenerate_download_permissions_all_orders_cron_desc = wcj_crons_get_next_event_time_message( 'wcj_bulk_regenerate_download_permissions_all_orders_cron_time' );
15
+ }
16
+
17
  $settings = array(
18
  array(
19
  'title' => __( 'Admin Order Currency', 'woocommerce-jetpack' ),
61
  'type' => 'sectionend',
62
  'id' => 'wcj_order_auto_complete_options',
63
  ),
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
64
  array(
65
  'title' => __( 'Bulk Regenerate Download Permissions for Orders', 'woocommerce-jetpack' ),
66
  'type' => 'title',
76
  'custom_attributes' => apply_filters( 'booster_get_message', '', 'disabled' ),
77
  ),
78
  array(
79
+ 'title' => __( 'Bulk Actions', 'woocommerce-jetpack' ),
80
  'desc_tip' => __( 'When enabled this will add "Regenerate download permissions" action to "Bulk Actions" select box on admin orders page.', 'woocommerce-jetpack' ) . ' ' . apply_filters( 'booster_get_message', '', 'desc' ),
81
  'desc' => __( 'Add', 'woocommerce-jetpack' ),
82
  'id' => 'wcj_order_bulk_regenerate_download_permissions_actions',
85
  'custom_attributes' => apply_filters( 'booster_get_message', '', 'disabled' ),
86
  ),
87
  array(
88
+ 'title' => __( 'All Orders - Now', 'woocommerce-jetpack' ),
89
+ 'desc_tip' => __( 'Check this box and press "Save changes" button to start regeneration. Please note that both module and current section must be enabled before that.', 'woocommerce-jetpack' ) . ' ' . apply_filters( 'booster_get_message', '', 'desc' ),
90
+ 'desc' => __( 'Regenerate now', 'woocommerce-jetpack' ),
91
  'id' => 'wcj_order_bulk_regenerate_download_permissions_all_orders',
92
  'default' => 'no',
93
  'type' => 'checkbox',
94
  'custom_attributes' => apply_filters( 'booster_get_message', '', 'disabled' ),
95
  ),
96
+ array(
97
+ 'title' => __( 'All Orders - Periodically', 'woocommerce-jetpack' ),
98
+ 'desc' => $bulk_regenerate_download_permissions_all_orders_cron_desc . ' ' . apply_filters( 'booster_get_message', '', 'desc' ),
99
+ 'id' => 'wcj_order_bulk_regenerate_download_permissions_all_orders_cron',
100
+ 'default' => 'disabled',
101
+ 'type' => 'select',
102
+ 'options' => array_merge( array( 'disabled' => __( 'Disabled', 'woocommerce-jetpack' ) ),
103
+ wcj_crons_get_all_intervals( __( 'Regenerate', 'woocommerce-jetpack' ), array( 'minutely' ) ) ),
104
+ 'custom_attributes' => apply_filters( 'booster_get_message', '', 'disabled' ),
105
+ ),
106
  array(
107
  'type' => 'sectionend',
108
  'id' => 'wcj_order_bulk_regenerate_download_permissions_options',
109
  ),
110
+ );
111
  return $settings;
includes/settings/wcj-settings-payment-gateways-currency.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Settings - Gateways Currency
4
  *
5
- * @version 2.8.0
6
  * @since 2.8.0
7
  * @author Algoritmika Ltd.
8
  */
@@ -49,9 +49,7 @@ foreach ( $available_gateways as $key => $gateway ) {
49
  'id' => 'wcj_gateways_currency_exchange_rate_' . $key,
50
  'default' => 1,
51
  'type' => 'exchange_rate',
52
- 'custom_attributes' => array( 'step' => '0.000001', 'min' => '0', ),
53
  'custom_attributes_button' => $custom_attributes,
54
- 'css' => 'width:100px;',
55
  'value' => $currency_from . '/' . $currency_to,
56
  ),
57
  ) );
2
  /**
3
  * Booster for WooCommerce - Settings - Gateways Currency
4
  *
5
+ * @version 3.2.4
6
  * @since 2.8.0
7
  * @author Algoritmika Ltd.
8
  */
49
  'id' => 'wcj_gateways_currency_exchange_rate_' . $key,
50
  'default' => 1,
51
  'type' => 'exchange_rate',
 
52
  'custom_attributes_button' => $custom_attributes,
 
53
  'value' => $currency_from . '/' . $currency_to,
54
  ),
55
  ) );
includes/settings/wcj-settings-pdf-invoicing-page.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Settings - PDF Invoicing - Page Settings
4
  *
5
- * @version 3.2.3
6
  * @since 2.8.0
7
  * @author Algoritmika Ltd.
8
  */
@@ -31,9 +31,23 @@ foreach ( $invoice_types as $invoice_type ) {
31
  array(
32
  'title' => __( 'Page Format', 'woocommerce-jetpack' ),
33
  'id' => 'wcj_invoicing_' . $invoice_type['id'] . '_page_format',
34
- 'default' => 'A4',
35
  'type' => 'select',
36
- 'options' => $this->get_page_formats(),
 
 
 
 
 
 
 
 
 
 
 
 
 
 
37
  ),
38
  array(
39
  'title' => __( 'Margin Left', 'woocommerce-jetpack' ),
2
  /**
3
  * Booster for WooCommerce - Settings - PDF Invoicing - Page Settings
4
  *
5
+ * @version 3.2.4
6
  * @since 2.8.0
7
  * @author Algoritmika Ltd.
8
  */
31
  array(
32
  'title' => __( 'Page Format', 'woocommerce-jetpack' ),
33
  'id' => 'wcj_invoicing_' . $invoice_type['id'] . '_page_format',
34
+ 'default' => 'A4', // PDF_PAGE_FORMAT
35
  'type' => 'select',
36
+ 'options' => array_replace( array( 'custom' => __( 'Custom', 'woocommerce-jetpack' ) ), $this->get_page_formats() ),
37
+ ),
38
+ array(
39
+ 'desc' => __( 'Custom: width (millimeters)', 'woocommerce-jetpack' ),
40
+ 'id' => 'wcj_invoicing_' . $invoice_type['id'] . '_page_format_custom_width',
41
+ 'default' => '0',
42
+ 'type' => 'number',
43
+ 'custom_attributes' => array( 'min' => 0 ),
44
+ ),
45
+ array(
46
+ 'desc' => __( 'Custom: height (millimeters)', 'woocommerce-jetpack' ),
47
+ 'id' => 'wcj_invoicing_' . $invoice_type['id'] . '_page_format_custom_height',
48
+ 'default' => '0',
49
+ 'type' => 'number',
50
+ 'custom_attributes' => array( 'min' => 0 ),
51
  ),
52
  array(
53
  'title' => __( 'Margin Left', 'woocommerce-jetpack' ),
includes/settings/wcj-settings-pdf-invoicing.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Settings - PDF Invoicing - General
4
  *
5
- * @version 3.2.3
6
  * @since 2.8.0
7
  * @author Algoritmika Ltd.
8
  */
@@ -97,6 +97,13 @@ $settings = array_merge( $settings, array(
97
  'document_root' => __( 'DOCUMENT_ROOT', 'woocommerce-jetpack' ), // . ': ' . $_SERVER['DOCUMENT_ROOT'],
98
  ),
99
  ),
 
 
 
 
 
 
 
100
  array(
101
  'type' => 'sectionend',
102
  'id' => 'wcj_pdf_invoicing_options',
2
  /**
3
  * Booster for WooCommerce - Settings - PDF Invoicing - General
4
  *
5
+ * @version 3.2.4
6
  * @since 2.8.0
7
  * @author Algoritmika Ltd.
8
  */
97
  'document_root' => __( 'DOCUMENT_ROOT', 'woocommerce-jetpack' ), // . ': ' . $_SERVER['DOCUMENT_ROOT'],
98
  ),
99
  ),
100
+ array(
101
+ 'title' => __( 'Advanced', 'woocommerce-jetpack' ) . ': ' . __( 'Temp Directory', 'woocommerce-jetpack' ),
102
+ 'desc_tip' => __( 'Leave blank to use the default temp directory.', 'woocommerce-jetpack' ),
103
+ 'id' => 'wcj_invoicing_general_tmp_dir',
104
+ 'default' => '',
105
+ 'type' => 'text',
106
+ ),
107
  array(
108
  'type' => 'sectionend',
109
  'id' => 'wcj_pdf_invoicing_options',
includes/settings/wcj-settings-price-by-country.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Settings - Prices and Currencies by Country
4
  *
5
- * @version 2.8.0
6
  * @since 2.8.0
7
  * @author Algoritmika Ltd.
8
  */
@@ -273,8 +273,6 @@ for ( $i = 1; $i <= apply_filters( 'booster_get_option', 1, get_option( 'wcj_pri
273
  'id' => 'wcj_price_by_country_exchange_rate_group_' . $i,
274
  'default' => 1,
275
  'type' => 'exchange_rate',
276
- 'css' => 'width:100px;',
277
- 'custom_attributes' => array( 'step' => '0.000001', 'min' => '0', ),
278
  'custom_attributes_button' => $custom_attributes,
279
  'value' => $currency_from . '/' . $currency_to,
280
  ),
2
  /**
3
  * Booster for WooCommerce - Settings - Prices and Currencies by Country
4
  *
5
+ * @version 3.2.4
6
  * @since 2.8.0
7
  * @author Algoritmika Ltd.
8
  */
273
  'id' => 'wcj_price_by_country_exchange_rate_group_' . $i,
274
  'default' => 1,
275
  'type' => 'exchange_rate',
 
 
276
  'custom_attributes_button' => $custom_attributes,
277
  'value' => $currency_from . '/' . $currency_to,
278
  ),
includes/settings/wcj-settings-price-formats.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Settings - Price Formats
4
  *
5
- * @version 3.1.3
6
  * @since 2.8.0
7
  * @author Algoritmika Ltd.
8
  * @todo (maybe) add `desc_tip` to `wcj_price_formats_general_trim_zeros`
@@ -76,6 +76,19 @@ for ( $i = 1; $i <= apply_filters( 'booster_get_option', 1, get_option( 'wcj_pri
76
  ),
77
  'css' => 'width:300px;',
78
  ),
 
 
 
 
 
 
 
 
 
 
 
 
 
79
  array(
80
  'desc' => __( 'Thousand Separator', 'woocommerce-jetpack' ),
81
  'id' => 'wcj_price_formats_thousand_separator_' . $i,
2
  /**
3
  * Booster for WooCommerce - Settings - Price Formats
4
  *
5
+ * @version 3.2.4
6
  * @since 2.8.0
7
  * @author Algoritmika Ltd.
8
  * @todo (maybe) add `desc_tip` to `wcj_price_formats_general_trim_zeros`
76
  ),
77
  'css' => 'width:300px;',
78
  ),
79
+ array(
80
+ 'desc' => __( 'Additional Currency Code Position', 'woocommerce-jetpack' ),
81
+ 'id' => 'wcj_price_formats_currency_code_position_' . $i,
82
+ 'default' => 'none',
83
+ 'type' => 'select',
84
+ 'options' => array(
85
+ 'none' => __( 'Do not add currency code', 'woocommerce-jetpack' ),
86
+ 'left' => __( 'Left', 'woocommerce' ),
87
+ 'right' => __( 'Right', 'woocommerce' ),
88
+ 'left_space' => __( 'Left with space', 'woocommerce' ),
89
+ 'right_space' => __( 'Right with space', 'woocommerce' ),
90
+ ),
91
+ ),
92
  array(
93
  'desc' => __( 'Thousand Separator', 'woocommerce-jetpack' ),
94
  'id' => 'wcj_price_formats_thousand_separator_' . $i,
includes/settings/wcj-settings-product-add-to-cart.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Settings - Product Add To Cart
4
  *
5
- * @version 3.1.0
6
  * @since 2.8.0
7
  * @author Algoritmika Ltd.
8
  */
@@ -157,6 +157,13 @@ return array(
157
  'type' => 'checkbox',
158
  'checkboxgroup' => 'end',
159
  ),
 
 
 
 
 
 
 
160
  array(
161
  'type' => 'sectionend',
162
  'id' => 'wcj_add_to_cart_quantity_options',
2
  /**
3
  * Booster for WooCommerce - Settings - Product Add To Cart
4
  *
5
+ * @version 3.2.4
6
  * @since 2.8.0
7
  * @author Algoritmika Ltd.
8
  */
157
  'type' => 'checkbox',
158
  'checkboxgroup' => 'end',
159
  ),
160
+ array(
161
+ 'title' => __( 'Set All Products to "Sold individually"', 'woocommerce-jetpack' ),
162
+ 'desc' => __( 'Enable', 'woocommerce-jetpack' ),
163
+ 'id' => 'wcj_add_to_cart_quantity_sold_individually_all',
164
+ 'default' => 'no',
165
+ 'type' => 'checkbox',
166
+ ),
167
  array(
168
  'type' => 'sectionend',
169
  'id' => 'wcj_add_to_cart_quantity_options',
includes/settings/wcj-settings-product-addons.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Settings - Product Addons
4
  *
5
- * @version 3.2.2
6
  * @since 2.8.0
7
  * @author Algoritmika Ltd.
8
  * @todo add "frontend template" options
@@ -218,6 +218,13 @@ $settings = array_merge( $settings, array(
218
  'default' => 'no',
219
  'type' => 'checkbox',
220
  ),
 
 
 
 
 
 
 
221
  array(
222
  'type' => 'sectionend',
223
  'id' => 'wcj_product_addons_options',
2
  /**
3
  * Booster for WooCommerce - Settings - Product Addons
4
  *
5
+ * @version 3.2.4
6
  * @since 2.8.0
7
  * @author Algoritmika Ltd.
8
  * @todo add "frontend template" options
218
  'default' => 'no',
219
  'type' => 'checkbox',
220
  ),
221
+ array(
222
+ 'title' => __( 'Position Priority on Frontend', 'woocommerce-jetpack' ),
223
+ 'desc_tip' => __( 'Set to zero to use the default priority.', 'woocommerce-jetpack' ),
224
+ 'id' => 'wcj_product_addons_position_priority',
225
+ 'default' => 0,
226
+ 'type' => 'number',
227
+ ),
228
  array(
229
  'type' => 'sectionend',
230
  'id' => 'wcj_product_addons_options',
includes/settings/wcj-settings-product-custom-visibility.php ADDED
@@ -0,0 +1,54 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Booster for WooCommerce - Settings - Product Custom Visibility
4
+ *
5
+ * @version 3.2.4
6
+ * @since 3.2.4
7
+ * @author Algoritmika Ltd.
8
+ */
9
+
10
+ if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
11
+
12
+ return array(
13
+ array(
14
+ 'title' => __( 'Visibility Options', 'woocommerce-jetpack' ),
15
+ 'type' => 'title',
16
+ 'id' => 'wcj_product_custom_visibility_options',
17
+ ),
18
+ array(
19
+ 'title' => __( 'Hide Visibility', 'woocommerce-jetpack' ),
20
+ 'desc_tip' => __( 'This will hide selected products in shop and search results. However product still will be accessible via direct link.', 'woocommerce-jetpack' ),
21
+ 'desc' => __( 'Enable', 'woocommerce-jetpack' ),
22
+ 'id' => 'wcj_product_custom_visibility_visibility',
23
+ 'default' => 'yes',
24
+ 'type' => 'checkbox',
25
+ ),
26
+ array(
27
+ 'title' => __( 'Make Non-purchasable', 'woocommerce-jetpack' ),
28
+ 'desc_tip' => __( 'This will make selected products non-purchasable (i.e. product can\'t be added to the cart).', 'woocommerce-jetpack' ),
29
+ 'desc' => __( 'Enable', 'woocommerce-jetpack' ),
30
+ 'id' => 'wcj_product_custom_visibility_purchasable',
31
+ 'default' => 'no',
32
+ 'type' => 'checkbox',
33
+ ),
34
+ array(
35
+ 'title' => __( 'Modify Query', 'woocommerce-jetpack' ),
36
+ 'desc_tip' => __( 'This will hide selected products completely (including direct link).', 'woocommerce-jetpack' ),
37
+ 'desc' => __( 'Enable', 'woocommerce-jetpack' ),
38
+ 'id' => 'wcj_product_custom_visibility_query',
39
+ 'default' => 'no',
40
+ 'type' => 'checkbox',
41
+ ),
42
+ array(
43
+ 'title' => __( 'Options', 'woocommerce-jetpack' ),
44
+ 'desc_tip' => __( 'One per line.', 'woocommerce-jetpack' ),
45
+ 'id' => 'wcj_product_custom_visibility_options_list',
46
+ 'default' => '',
47
+ 'type' => 'textarea',
48
+ 'css' => 'width:100%;height:200px;',
49
+ ),
50
+ array(
51
+ 'type' => 'sectionend',
52
+ 'id' => 'wcj_product_custom_visibility_options',
53
+ ),
54
+ );
includes/settings/wcj-settings-product-images.php CHANGED
@@ -1,8 +1,8 @@
1
  <?php
2
  /**
3
- * Booster for WooCommerce Settings - More Button Labels
4
  *
5
- * @version 2.9.0
6
  * @since 2.8.0
7
  * @author Algoritmika Ltd.
8
  */
@@ -15,12 +15,6 @@ return array(
15
  'type' => 'title',
16
  'id' => 'wcj_product_images_and_thumbnails_options',
17
  ),
18
- array(
19
- 'title' => __( 'Enable Section', 'woocommerce-jetpack' ),
20
- 'id' => 'wcj_product_images_and_thumbnails_enabled',
21
- 'default' => 'no',
22
- 'type' => 'checkbox',
23
- ),
24
  array(
25
  'title' => __( 'Image and Thumbnails on Single', 'woocommerce-jetpack' ),
26
  'desc' => __( 'Hide', 'woocommerce-jetpack' ),
@@ -56,7 +50,7 @@ return array(
56
  'id' => 'wcj_product_images_custom_on_single',
57
  'default' => '',
58
  'type' => 'textarea',
59
- 'css' => 'width:66%; min-width:300px;',
60
  ),
61
  array(
62
  'title' => __( 'Replace Thumbnails on Single', 'woocommerce-jetpack' ),
@@ -65,7 +59,7 @@ return array(
65
  'id' => 'wcj_product_images_thumbnails_custom_on_single',
66
  'default' => '',
67
  'type' => 'textarea',
68
- 'css' => 'width:66%; min-width:300px;',
69
  ),
70
  array(
71
  'title' => __( 'Replace Image on Archive', 'woocommerce-jetpack' ),
@@ -74,7 +68,7 @@ return array(
74
  'id' => 'wcj_product_images_custom_on_archives',
75
  'default' => '',
76
  'type' => 'textarea',
77
- 'css' => 'width:66%; min-width:300px;',
78
  ),
79
  array(
80
  'title' => __( 'Single Product Thumbnails Columns', 'woocommerce-jetpack' ),
@@ -86,44 +80,4 @@ return array(
86
  'type' => 'sectionend',
87
  'id' => 'wcj_product_images_and_thumbnails_options',
88
  ),
89
- array(
90
- 'title' => __( 'Product Images Sale Flash', 'woocommerce-jetpack' ),
91
- 'type' => 'title',
92
- 'id' => 'wcj_product_images_sale_flash_options',
93
- ),
94
- array(
95
- 'title' => __( 'Enable Section', 'woocommerce-jetpack' ),
96
- 'id' => 'wcj_product_images_sale_flash_enabled',
97
- 'default' => 'no',
98
- 'type' => 'checkbox',
99
- ),
100
- array(
101
- 'title' => __( 'HTML', 'woocommerce-jetpack' ),
102
- 'id' => 'wcj_product_images_sale_flash_html',
103
- 'default' => '<span class="onsale">' . __( 'Sale!', 'woocommerce' ) . '</span>',
104
- 'type' => 'textarea',
105
- 'css' => 'width:300px;height:100px;',
106
- ),
107
- array(
108
- 'title' => __( 'Hide Everywhere', 'woocommerce-jetpack' ),
109
- 'id' => 'wcj_product_images_sale_flash_hide_everywhere',
110
- 'default' => 'no',
111
- 'type' => 'checkbox',
112
- ),
113
- array(
114
- 'title' => __( 'Hide on Archives (Categories) Only', 'woocommerce-jetpack' ),
115
- 'id' => 'wcj_product_images_sale_flash_hide_on_archives',
116
- 'default' => 'no',
117
- 'type' => 'checkbox',
118
- ),
119
- array(
120
- 'title' => __( 'Hide on Single Page Only', 'woocommerce-jetpack' ),
121
- 'id' => 'wcj_product_images_sale_flash_hide_on_single',
122
- 'default' => 'no',
123
- 'type' => 'checkbox',
124
- ),
125
- array(
126
- 'type' => 'sectionend',
127
- 'id' => 'wcj_product_images_sale_flash_options',
128
- ),
129
  );
1
  <?php
2
  /**
3
+ * Booster for WooCommerce - Settings - Product Images
4
  *
5
+ * @version 3.2.4
6
  * @since 2.8.0
7
  * @author Algoritmika Ltd.
8
  */
15
  'type' => 'title',
16
  'id' => 'wcj_product_images_and_thumbnails_options',
17
  ),
 
 
 
 
 
 
18
  array(
19
  'title' => __( 'Image and Thumbnails on Single', 'woocommerce-jetpack' ),
20
  'desc' => __( 'Hide', 'woocommerce-jetpack' ),
50
  'id' => 'wcj_product_images_custom_on_single',
51
  'default' => '',
52
  'type' => 'textarea',
53
+ 'css' => 'width:100%;',
54
  ),
55
  array(
56
  'title' => __( 'Replace Thumbnails on Single', 'woocommerce-jetpack' ),
59
  'id' => 'wcj_product_images_thumbnails_custom_on_single',
60
  'default' => '',
61
  'type' => 'textarea',
62
+ 'css' => 'width:100%;',
63
  ),
64
  array(
65
  'title' => __( 'Replace Image on Archive', 'woocommerce-jetpack' ),
68
  'id' => 'wcj_product_images_custom_on_archives',
69
  'default' => '',
70
  'type' => 'textarea',
71
+ 'css' => 'width:100%;',
72
  ),
73
  array(
74
  'title' => __( 'Single Product Thumbnails Columns', 'woocommerce-jetpack' ),
80
  'type' => 'sectionend',
81
  'id' => 'wcj_product_images_and_thumbnails_options',
82
  ),
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
83
  );
includes/settings/wcj-settings-product-input-fields.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Settings - Product Input Fields
4
  *
5
- * @version 3.1.0
6
  * @since 2.8.0
7
  * @author Algoritmika Ltd.
8
  */
@@ -222,6 +222,13 @@ $settings = array_merge( $settings, array(
222
  'type' => 'custom_textarea',
223
  'css' => 'width:50%;min-width:300px;',
224
  ),
 
 
 
 
 
 
 
225
  array(
226
  'title' => __( 'HTML to add after required field title', 'woocommerce-jetpack' ),
227
  'id' => 'wcj_product_input_fields_frontend_view_required_html',
2
  /**
3
  * Booster for WooCommerce - Settings - Product Input Fields
4
  *
5
+ * @version 3.2.4
6
  * @since 2.8.0
7
  * @author Algoritmika Ltd.
8
  */
222
  'type' => 'custom_textarea',
223
  'css' => 'width:50%;min-width:300px;',
224
  ),
225
+ array(
226
+ 'title' => __( 'HTML Template - Radio Field', 'woocommerce-jetpack' ),
227
+ 'id' => 'wcj_product_input_fields_field_template_radio',
228
+ 'default' => '%radio_field_html%<label for="%radio_field_id%" class="radio">%radio_field_title%</label><br>',
229
+ 'type' => 'custom_textarea',
230
+ 'css' => 'width:50%;min-width:300px;',
231
+ ),
232
  array(
233
  'title' => __( 'HTML to add after required field title', 'woocommerce-jetpack' ),
234
  'id' => 'wcj_product_input_fields_frontend_view_required_html',
includes/settings/wcj-settings-product-listings.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Settings - Admin Tools
4
  *
5
- * @version 3.2.3
6
  * @since 2.8.0
7
  * @author Algoritmika Ltd.
8
  */
@@ -25,11 +25,8 @@ foreach ( $options as $option ) {
25
  // Prepare categories
26
  $product_cats = wcj_get_terms( 'product_cat' );
27
 
28
- // Prepare products
29
- $products = wcj_get_products();
30
-
31
  // Settings
32
- $settings = array(
33
  array(
34
  'title' => __( 'Shop Page Display Options', 'woocommerce-jetpack' ),
35
  'type' => 'title',
@@ -153,183 +150,4 @@ $settings = array(
153
  'type' => 'sectionend',
154
  'id' => 'wcj_product_listings_product_visibility_by_price_options',
155
  ),
156
- array(
157
- 'title' => __( 'TAX Display in the Shop - by Product', 'woocommerce-jetpack' ),
158
- 'type' => 'title',
159
- 'desc' => __( 'If you want to display part of your products including TAX and another part excluding TAX, you can set it here.', 'woocommerce-jetpack' ),
160
- 'id' => 'wcj_product_listings_display_taxes_options',
161
- ),
162
- array(
163
- 'title' => __( 'Products - Including TAX', 'woocommerce-jetpack' ),
164
- 'id' => 'wcj_product_listings_display_taxes_products_incl_tax',
165
- 'desc_tip' => __( 'Select products to display including TAX.', 'woocommerce-jetpack' ),
166
- 'default' => '',
167
- 'type' => 'multiselect',
168
- 'class' => 'chosen_select',
169
- 'css' => 'width: 450px;',
170
- 'options' => $products,
171
- ),
172
- array(
173
- 'title' => __( 'Products - Excluding TAX', 'woocommerce-jetpack' ),
174
- 'id' => 'wcj_product_listings_display_taxes_products_excl_tax',
175
- 'desc_tip' => __( 'Select products to display excluding TAX.', 'woocommerce-jetpack' ),
176
- 'default' => '',
177
- 'type' => 'multiselect',
178
- 'class' => 'chosen_select',
179
- 'css' => 'width: 450px;',
180
- 'options' => $products,
181
- ),
182
- array(
183
- 'title' => __( 'Product Categories - Including TAX', 'woocommerce-jetpack' ),
184
- 'id' => 'wcj_product_listings_display_taxes_product_cats_incl_tax',
185
- 'desc_tip' => __( 'Select product categories to display including TAX.', 'woocommerce-jetpack' ),
186
- 'default' => '',
187
- 'type' => 'multiselect',
188
- 'class' => 'chosen_select',
189
- 'css' => 'width: 450px;',
190
- 'options' => $product_cats,
191
- ),
192
- array(
193
- 'title' => __( 'Product Categories - Excluding TAX', 'woocommerce-jetpack' ),
194
- 'id' => 'wcj_product_listings_display_taxes_product_cats_excl_tax',
195
- 'desc_tip' => __( 'Select product categories to display excluding TAX.', 'woocommerce-jetpack' ),
196
- 'default' => '',
197
- 'type' => 'multiselect',
198
- 'class' => 'chosen_select',
199
- 'css' => 'width: 450px;',
200
- 'options' => $product_cats,
201
- ),
202
- array(
203
- 'type' => 'sectionend',
204
- 'id' => 'wcj_product_listings_display_taxes_options',
205
- ),
206
- array(
207
- 'title' => __( 'TAX Display in the Shop - by User Role', 'woocommerce-jetpack' ),
208
- 'type' => 'title',
209
- 'desc' => __( 'If you want to display prices including TAX or excluding TAX for different user roles, you can set it here.', 'woocommerce-jetpack' ),
210
- 'id' => 'wcj_product_listings_display_taxes_by_user_role_options',
211
- ),
212
- array(
213
- 'title' => __( 'TAX Display by User Role', 'woocommerce-jetpack' ),
214
- 'desc' => '<strong>' . __( 'Enable section', 'woocommerce-jetpack' ) . '</strong>',
215
- 'id' => 'wcj_product_listings_display_taxes_by_user_role_enabled',
216
- 'type' => 'checkbox',
217
- 'default' => 'no',
218
- ),
219
- array(
220
- 'title' => __( 'User Roles', 'woocommerce-jetpack' ),
221
- 'desc_tip' => __( 'Save changes after you change this option and new settings fields will appear.', 'woocommerce-jetpack' ),
222
- 'desc' => '<br>' . sprintf( __( 'Select user roles that you want to change tax display for. For all remaining (i.e. not selected) user roles - default TAX display (set in %s) will be applied.', 'woocommerce-jetpack' ),
223
- '<a href="' . admin_url( 'admin.php?page=wc-settings&tab=tax' ) . '">' . __( 'WooCommerce > Settings > Tax', 'woocommerce-jetpack' ) . '</a>' ),
224
- 'id' => 'wcj_product_listings_display_taxes_by_user_role_roles',
225
- 'type' => 'multiselect',
226
- 'class' => 'chosen_select',
227
- 'default' => '',
228
- 'options' => wcj_get_user_roles_options(),
229
- ),
230
  );
231
- if ( '' != ( $display_taxes_by_user_role_roles = get_option( 'wcj_product_listings_display_taxes_by_user_role_roles', '' ) ) ) {
232
- foreach ( $display_taxes_by_user_role_roles as $display_taxes_by_user_role_role ) {
233
- $settings = array_merge( $settings, array(
234
- array(
235
- 'title' => sprintf( __( 'Role: %s', 'woocommerce-jetpack' ), $display_taxes_by_user_role_role ),
236
- 'id' => 'wcj_product_listings_display_taxes_by_user_role_' . $display_taxes_by_user_role_role,
237
- 'default' => 'no_changes',
238
- 'type' => 'select',
239
- 'options' => array(
240
- 'no_changes' => __( 'Default TAX display (no changes)', 'woocommerce-jetpack' ),
241
- 'incl' => __( 'Including tax', 'woocommerce-jetpack' ),
242
- 'excl' => __( 'Excluding tax', 'woocommerce-jetpack' ),
243
- ),
244
- ),
245
- ) );
246
- }
247
- }
248
- $settings = array_merge( $settings, array(
249
- array(
250
- 'type' => 'sectionend',
251
- 'id' => 'wcj_product_listings_display_taxes_by_user_role_options',
252
- ),
253
- array(
254
- 'title' => __( 'Admin Products List - Custom Columns', 'woocommerce-jetpack' ),
255
- 'type' => 'title',
256
- 'id' => 'wcj_products_admin_list_custom_columns_options',
257
- ),
258
- array(
259
- 'title' => __( 'Enable/Disable', 'woocommerce-jetpack' ),
260
- 'desc' => '<strong>' . __( 'Enable section', 'woocommerce-jetpack' ) . '</strong>',
261
- 'id' => 'wcj_products_admin_list_custom_columns_enabled',
262
- 'default' => 'no',
263
- 'type' => 'checkbox',
264
- ),
265
- array(
266
- 'title' => __( 'Custom Columns Total Number', 'woocommerce-jetpack' ),
267
- 'desc_tip' => __( 'Save module\'s settings after changing this option to see new settings fields.', 'woocommerce-jetpack' ),
268
- 'id' => 'wcj_products_admin_list_custom_columns_total_number',
269
- 'default' => 1,
270
- 'type' => 'custom_number',
271
- 'desc' => apply_filters( 'booster_get_message', '', 'desc' ),
272
- 'custom_attributes' => array_merge(
273
- is_array( apply_filters( 'booster_get_message', '', 'readonly' ) ) ? apply_filters( 'booster_get_message', '', 'readonly' ) : array(),
274
- array( 'step' => '1', 'min' => '0', )
275
- ),
276
- ),
277
- ) );
278
- $total_number = apply_filters( 'booster_get_option', 1, get_option( 'wcj_products_admin_list_custom_columns_total_number', 1 ) );
279
- for ( $i = 1; $i <= $total_number; $i++ ) {
280
- $settings = array_merge( $settings, array(
281
- array(
282
- 'title' => __( 'Custom Column', 'woocommerce-jetpack' ) . ' #' . $i,
283
- 'desc' => __( 'Enabled', 'woocommerce-jetpack' ),
284
- 'desc_tip' => __( 'Key:', 'woocommerce-jetpack' ) . ' <code>' . 'wcj_products_custom_column_' . $i . '</code>',
285
- 'id' => 'wcj_products_admin_list_custom_columns_enabled_' . $i,
286
- 'default' => 'no',
287
- 'type' => 'checkbox',
288
- ),
289
- array(
290
- 'desc' => __( 'Label', 'woocommerce-jetpack' ),
291
- 'id' => 'wcj_products_admin_list_custom_columns_label_' . $i,
292
- 'default' => '',
293
- 'type' => 'text',
294
- 'css' => 'width:300px;',
295
- ),
296
- array(
297
- 'desc' => __( 'Value', 'woocommerce-jetpack' ),
298
- 'desc_tip' => __( 'You can use shortcodes and/or HTML here.', 'woocommerce-jetpack' ),
299
- 'id' => 'wcj_products_admin_list_custom_columns_value_' . $i,
300
- 'default' => '',
301
- 'type' => 'custom_textarea',
302
- 'css' => 'width:300px;',
303
- ),
304
- ) );
305
- }
306
- $settings = array_merge( $settings, array(
307
- array(
308
- 'type' => 'sectionend',
309
- 'id' => 'wcj_products_admin_list_custom_columns_options',
310
- ),
311
- array(
312
- 'title' => __( 'Admin Products List - Columns Order', 'woocommerce-jetpack' ),
313
- 'type' => 'title',
314
- 'id' => 'wcj_products_admin_list_columns_order_options',
315
- ),
316
- array(
317
- 'title' => __( 'Enable/Disable', 'woocommerce-jetpack' ),
318
- 'desc' => '<strong>' . __( 'Enable section', 'woocommerce-jetpack' ) . '</strong>',
319
- 'id' => 'wcj_products_admin_list_columns_order_enabled',
320
- 'default' => 'no',
321
- 'type' => 'checkbox',
322
- ),
323
- array(
324
- 'id' => 'wcj_products_admin_list_columns_order',
325
- 'desc_tip' => __( 'Default columns order', 'woocommerce-jetpack' ) . ':<br>' . str_replace( PHP_EOL, '<br>', $this->get_products_default_columns_in_order() ),
326
- 'default' => $this->get_products_default_columns_in_order(),
327
- 'type' => 'textarea',
328
- 'css' => 'height:300px;min-width:300px;',
329
- ),
330
- array(
331
- 'type' => 'sectionend',
332
- 'id' => 'wcj_products_admin_list_columns_order_options',
333
- ),
334
- ) );
335
- return $settings;
2
  /**
3
  * Booster for WooCommerce - Settings - Admin Tools
4
  *
5
+ * @version 3.2.4
6
  * @since 2.8.0
7
  * @author Algoritmika Ltd.
8
  */
25
  // Prepare categories
26
  $product_cats = wcj_get_terms( 'product_cat' );
27
 
 
 
 
28
  // Settings
29
+ return array(
30
  array(
31
  'title' => __( 'Shop Page Display Options', 'woocommerce-jetpack' ),
32
  'type' => 'title',
150
  'type' => 'sectionend',
151
  'id' => 'wcj_product_listings_product_visibility_by_price_options',
152
  ),
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
153
  );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
includes/settings/wcj-settings-product-tabs.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce Settings - Product Tabs
4
  *
5
- * @version 3.1.0
6
  * @since 2.8.0
7
  * @author Algoritmika Ltd.
8
  * @todo clean up
@@ -222,6 +222,13 @@ $settings = array_merge( $settings, array(
222
  'default' => 'yes',
223
  'type' => 'checkbox',
224
  ),
 
 
 
 
 
 
 
225
  array(
226
  'title' => __( 'Default Per Product Custom Product Tabs Number', 'woocommerce-jetpack' ),
227
  'id' => 'wcj_custom_product_tabs_local_total_number_default',
2
  /**
3
  * Booster for WooCommerce Settings - Product Tabs
4
  *
5
+ * @version 3.2.4
6
  * @since 2.8.0
7
  * @author Algoritmika Ltd.
8
  * @todo clean up
222
  'default' => 'yes',
223
  'type' => 'checkbox',
224
  ),
225
+ array(
226
+ 'title' => __( 'Add Per Product Tabs Content to "Yoast SEO" plugin analysis', 'woocommerce-jetpack' ),
227
+ 'desc' => __( 'Add', 'woocommerce-jetpack' ),
228
+ 'id' => 'wcj_custom_product_tabs_yoast_seo_enabled',
229
+ 'default' => 'no',
230
+ 'type' => 'checkbox',
231
+ ),
232
  array(
233
  'title' => __( 'Default Per Product Custom Product Tabs Number', 'woocommerce-jetpack' ),
234
  'id' => 'wcj_custom_product_tabs_local_total_number_default',
includes/settings/wcj-settings-products-xml.php CHANGED
@@ -2,16 +2,17 @@
2
  /**
3
  * Booster for WooCommerce - Settings - Products XML
4
  *
5
- * @version 2.8.0
6
  * @since 2.8.0
7
  * @author Algoritmika Ltd.
8
  */
9
 
10
  if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
11
 
12
- $product_cats_options = wcj_get_terms( 'product_cat' );
13
- $product_tags_options = wcj_get_terms( 'product_tag' );
14
- $products_options = wcj_get_products();
 
15
  $settings = array(
16
  array(
17
  'title' => __( 'Options', 'woocommerce-jetpack' ),
@@ -42,6 +43,10 @@ $settings = array(
42
  ),
43
  );
44
  for ( $i = 1; $i <= apply_filters( 'booster_get_option', 1, get_option( 'wcj_products_xml_total_files', 1 ) ); $i++ ) {
 
 
 
 
45
  $products_xml_cron_desc = '';
46
  if ( $this->is_enabled() ) {
47
  if ( '' != get_option( 'wcj_create_products_xml_cron_time_' . $i, '' ) ) {
@@ -134,23 +139,25 @@ for ( $i = 1; $i <= apply_filters( 'booster_get_option', 1, get_option( 'wcj_pro
134
  'desc_tip' => __( 'Possible update periods are: every minute, hourly, twice daily, daily and weekly.', 'woocommerce-jetpack' ) . ' ' . apply_filters( 'booster_get_message', '', 'desc_no_link' ),
135
  'custom_attributes' => apply_filters( 'booster_get_message', '', 'disabled' ),
136
  ),
137
- array(
138
- 'title' => __( 'Products to Include', 'woocommerce-jetpack' ),
139
- 'desc_tip' => __( 'To include selected products only, enter products here. Leave blank to include all products.', 'woocommerce-jetpack' ),
140
- 'id' => 'wcj_products_xml_products_incl_' . $i,
141
- 'default' => '',
142
- 'class' => 'chosen_select',
143
- 'type' => 'multiselect',
144
- 'options' => $products_options,
 
145
  ),
146
- array(
147
- 'title' => __( 'Products to Exclude', 'woocommerce-jetpack' ),
148
- 'desc_tip' => __( 'To exclude selected products, enter products here. Leave blank to include all products.', 'woocommerce-jetpack' ),
149
- 'id' => 'wcj_products_xml_products_excl_' . $i,
150
- 'default' => '',
151
- 'class' => 'chosen_select',
152
- 'type' => 'multiselect',
153
- 'options' => $products_options,
 
154
  ),
155
  array(
156
  'title' => __( 'Categories to Include', 'woocommerce-jetpack' ),
2
  /**
3
  * Booster for WooCommerce - Settings - Products XML
4
  *
5
+ * @version 3.2.4
6
  * @since 2.8.0
7
  * @author Algoritmika Ltd.
8
  */
9
 
10
  if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
11
 
12
+ $product_cats_options = wcj_get_terms( 'product_cat' );
13
+ $product_tags_options = wcj_get_terms( 'product_tag' );
14
+ $products_options = wcj_get_products();
15
+ $is_multiselect_products = ( 'yes' === get_option( 'wcj_list_for_products', 'yes' ) );
16
  $settings = array(
17
  array(
18
  'title' => __( 'Options', 'woocommerce-jetpack' ),
43
  ),
44
  );
45
  for ( $i = 1; $i <= apply_filters( 'booster_get_option', 1, get_option( 'wcj_products_xml_total_files', 1 ) ); $i++ ) {
46
+ wcj_maybe_convert_and_update_option_value( array(
47
+ array( 'id' => 'wcj_products_xml_products_incl_' . $i, 'default' => '' ),
48
+ array( 'id' => 'wcj_products_xml_products_excl_' . $i, 'default' => '' ),
49
+ ), $is_multiselect_products );
50
  $products_xml_cron_desc = '';
51
  if ( $this->is_enabled() ) {
52
  if ( '' != get_option( 'wcj_create_products_xml_cron_time_' . $i, '' ) ) {
139
  'desc_tip' => __( 'Possible update periods are: every minute, hourly, twice daily, daily and weekly.', 'woocommerce-jetpack' ) . ' ' . apply_filters( 'booster_get_message', '', 'desc_no_link' ),
140
  'custom_attributes' => apply_filters( 'booster_get_message', '', 'disabled' ),
141
  ),
142
+ wcj_get_settings_as_multiselect_or_text(
143
+ array(
144
+ 'title' => __( 'Products to Include', 'woocommerce-jetpack' ),
145
+ 'desc_tip' => __( 'To include selected products only, enter products here. Leave blank to include all products.', 'woocommerce-jetpack' ),
146
+ 'id' => 'wcj_products_xml_products_incl_' . $i,
147
+ 'default' => '',
148
+ ),
149
+ $products_options,
150
+ $is_multiselect_products
151
  ),
152
+ wcj_get_settings_as_multiselect_or_text(
153
+ array(
154
+ 'title' => __( 'Products to Exclude', 'woocommerce-jetpack' ),
155
+ 'desc_tip' => __( 'To exclude selected products, enter products here. Leave blank to include all products.', 'woocommerce-jetpack' ),
156
+ 'id' => 'wcj_products_xml_products_excl_' . $i,
157
+ 'default' => '',
158
+ ),
159
+ $products_options,
160
+ $is_multiselect_products
161
  ),
162
  array(
163
  'title' => __( 'Categories to Include', 'woocommerce-jetpack' ),
includes/settings/wcj-settings-sale-flash.php ADDED
@@ -0,0 +1,118 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Booster for WooCommerce - Settings - Sale Flash
4
+ *
5
+ * @version 3.2.4
6
+ * @since 3.2.4
7
+ * @author Algoritmika Ltd.
8
+ */
9
+
10
+ if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
11
+
12
+ $settings = array(
13
+ array(
14
+ 'title' => __( 'Globally', 'woocommerce-jetpack' ),
15
+ 'type' => 'title',
16
+ 'id' => 'wcj_sale_flash_global_options',
17
+ ),
18
+ array(
19
+ 'title' => __( 'Globally', 'woocommerce-jetpack' ),
20
+ 'desc' => '<strong>' . __( 'Enable section', 'woocommerce-jetpack' ) . '</strong>',
21
+ 'id' => 'wcj_product_images_sale_flash_enabled',
22
+ 'default' => 'no',
23
+ 'type' => 'checkbox',
24
+ ),
25
+ array(
26
+ 'title' => __( 'Sale Flash', 'woocommerce-jetpack' ),
27
+ 'desc_tip' => __( 'You can use HTML and/or shortcodes here.', 'woocommerce-jetpack' ),
28
+ 'id' => 'wcj_product_images_sale_flash_html',
29
+ 'default' => '<span class="onsale">' . __( 'Sale!', 'woocommerce' ) . '</span>',
30
+ 'type' => 'textarea',
31
+ 'css' => 'width:100%',
32
+ ),
33
+ array(
34
+ 'title' => __( 'Hide Everywhere', 'woocommerce-jetpack' ),
35
+ 'desc' => __( 'Hide', 'woocommerce-jetpack' ),
36
+ 'id' => 'wcj_product_images_sale_flash_hide_everywhere',
37
+ 'default' => 'no',
38
+ 'type' => 'checkbox',
39
+ ),
40
+ array(
41
+ 'title' => __( 'Hide on Archives (Categories) Only', 'woocommerce-jetpack' ),
42
+ 'desc' => __( 'Hide', 'woocommerce-jetpack' ),
43
+ 'id' => 'wcj_product_images_sale_flash_hide_on_archives',
44
+ 'default' => 'no',
45
+ 'type' => 'checkbox',
46
+ ),
47
+ array(
48
+ 'title' => __( 'Hide on Single Page Only', 'woocommerce-jetpack' ),
49
+ 'desc' => __( 'Hide', 'woocommerce-jetpack' ),
50
+ 'id' => 'wcj_product_images_sale_flash_hide_on_single',
51
+ 'default' => 'no',
52
+ 'type' => 'checkbox',
53
+ ),
54
+ array(
55
+ 'type' => 'sectionend',
56
+ 'id' => 'wcj_sale_flash_global_options',
57
+ ),
58
+ array(
59
+ 'title' => __( 'Per Product', 'woocommerce-jetpack' ),
60
+ 'type' => 'title',
61
+ 'id' => 'wcj_sale_flash_per_product_options',
62
+ ),
63
+ array(
64
+ 'title' => __( 'Per Product', 'woocommerce-jetpack' ),
65
+ 'desc' => '<strong>' . __( 'Enable section', 'woocommerce-jetpack' ) . '</strong>',
66
+ 'desc_tip' => __( 'This will add meta box to each product\'s edit page.', 'woocommerce-jetpack' ) . ' ' . apply_filters( 'booster_get_message', '', 'desc' ),
67
+ 'id' => 'wcj_sale_flash_per_product_enabled',
68
+ 'default' => 'no',
69
+ 'type' => 'checkbox',
70
+ 'custom_attributes' => apply_filters( 'booster_get_message', '', 'disabled' ),
71
+ ),
72
+ array(
73
+ 'type' => 'sectionend',
74
+ 'id' => 'wcj_sale_flash_per_product_options',
75
+ ),
76
+ );
77
+
78
+ $product_terms['product_cat'] = wcj_get_terms( 'product_cat' );
79
+ $product_terms['product_tag'] = wcj_get_terms( 'product_tag' );
80
+ foreach ( $product_terms as $id => $product_term ) {
81
+ $title = ( 'product_cat' === $id ? __( 'Per Category', 'woocommerce-jetpack' ) : __( 'Per Tag', 'woocommerce-jetpack' ) );
82
+ $settings = array_merge( $settings, array(
83
+ array(
84
+ 'title' => $title,
85
+ 'type' => 'title',
86
+ 'id' => 'wcj_sale_flash_per_' . $id . '_options',
87
+ ),
88
+ array(
89
+ 'title' => $title,
90
+ 'desc' => '<strong>' . __( 'Enable section', 'woocommerce-jetpack' ) . '</strong>',
91
+ 'desc_tip' => apply_filters( 'booster_get_message', '', 'desc' ),
92
+ 'id' => 'wcj_sale_flash_per_' . $id . '_enabled',
93
+ 'default' => 'no',
94
+ 'type' => 'checkbox',
95
+ 'custom_attributes' => apply_filters( 'booster_get_message', '', 'disabled' ),
96
+ ),
97
+ ) );
98
+ foreach ( $product_term as $term_id => $term_desc ) {
99
+ $settings = array_merge( $settings, array(
100
+ array(
101
+ 'title' => $term_desc,
102
+ 'desc_tip' => __( 'You can use HTML and/or shortcodes here.', 'woocommerce-jetpack' ),
103
+ 'id' => 'wcj_sale_flash_per_' . $id . '_' . $term_id . '_html',
104
+ 'default' => '<span class="onsale">' . __( 'Sale!', 'woocommerce' ) . '</span>',
105
+ 'type' => 'textarea',
106
+ 'css' => 'width:100%;',
107
+ ),
108
+ ) );
109
+ }
110
+ $settings = array_merge( $settings, array(
111
+ array(
112
+ 'type' => 'sectionend',
113
+ 'id' => 'wcj_sale_flash_per_' . $id . '_options',
114
+ ),
115
+ ) );
116
+ }
117
+
118
+ return $settings;
includes/settings/wcj-settings-shipping-by-condition.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Settings - Shipping by Condition
4
  *
5
- * @version 3.2.1
6
  * @since 3.2.1
7
  * @author Algoritmika Ltd.
8
  */
@@ -73,4 +73,22 @@ foreach ( $this->condition_options as $options_id => $options_data ) {
73
  ),
74
  ) );
75
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
76
  return $settings;
2
  /**
3
  * Booster for WooCommerce - Settings - Shipping by Condition
4
  *
5
+ * @version 3.2.4
6
  * @since 3.2.1
7
  * @author Algoritmika Ltd.
8
  */
73
  ),
74
  ) );
75
  }
76
+ $settings = array_merge( $settings, array(
77
+ array(
78
+ 'title' => __( 'Advanced Options', 'woocommerce-jetpack' ),
79
+ 'type' => 'title',
80
+ 'id' => 'wcj_' . $this->id . '_advanced_options',
81
+ ),
82
+ array(
83
+ 'title' => __( 'Filter Priority', 'woocommerce-jetpack' ),
84
+ 'desc_tip' => __( 'Set to zero to use the default priority.', 'woocommerce-jetpack' ),
85
+ 'id' => 'wcj_' . $this->id . '_filter_priority',
86
+ 'default' => 0,
87
+ 'type' => 'number',
88
+ ),
89
+ array(
90
+ 'type' => 'sectionend',
91
+ 'id' => 'wcj_' . $this->id . '_advanced_options',
92
+ ),
93
+ ) );
94
  return $settings;
includes/settings/wcj-settings-shipping-options.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Settings - Shipping Options
4
  *
5
- * @version 3.2.1
6
  * @since 2.9.0
7
  * @author Algoritmika Ltd.
8
  */
@@ -36,6 +36,13 @@ $settings = array(
36
  'desc' => apply_filters( 'booster_get_message', '', 'desc' ),
37
  'custom_attributes' => apply_filters( 'booster_get_message', '', 'disabled' ),
38
  ),
 
 
 
 
 
 
 
39
  array(
40
  'type' => 'sectionend',
41
  'id' => 'wcj_shipping_hide_if_free_available_options',
2
  /**
3
  * Booster for WooCommerce - Settings - Shipping Options
4
  *
5
+ * @version 3.2.4
6
  * @since 2.9.0
7
  * @author Algoritmika Ltd.
8
  */
36
  'desc' => apply_filters( 'booster_get_message', '', 'desc' ),
37
  'custom_attributes' => apply_filters( 'booster_get_message', '', 'disabled' ),
38
  ),
39
+ array(
40
+ 'title' => __( 'Advanced: Filter Priority', 'woocommerce-jetpack' ),
41
+ 'desc_tip' => __( 'Set to zero to use the default priority.', 'woocommerce-jetpack' ),
42
+ 'id' => 'wcj_shipping_options_hide_free_shipping_filter_priority',
43
+ 'default' => 0,
44
+ 'type' => 'number',
45
+ ),
46
  array(
47
  'type' => 'sectionend',
48
  'id' => 'wcj_shipping_hide_if_free_available_options',
includes/settings/wcj-settings-tax-display.php ADDED
@@ -0,0 +1,141 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Booster for WooCommerce - Settings - Tax Display
4
+ *
5
+ * @version 3.2.4
6
+ * @since 3.2.4
7
+ * @author Algoritmika Ltd.
8
+ */
9
+
10
+ if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
11
+
12
+ // Prepare products
13
+ $products = wcj_get_products();
14
+
15
+ // Prepare categories
16
+ $product_cats = wcj_get_terms( 'product_cat' );
17
+
18
+ $settings = array(
19
+ array(
20
+ 'title' => __( 'TAX Display - Toggle Button', 'woocommerce-jetpack' ),
21
+ 'type' => 'title',
22
+ 'desc' => sprintf( __( 'Use %s shortcode to display the button on frontend.', 'woocommerce-jetpack' ), '<code>[wcj_button_toggle_tax_display]</code>' ),
23
+ 'id' => 'wcj_tax_display_toggle_options',
24
+ ),
25
+ array(
26
+ 'title' => __( 'TAX Toggle Button', 'woocommerce-jetpack' ),
27
+ 'desc' => '<strong>' . __( 'Enable section', 'woocommerce-jetpack' ) . '</strong>',
28
+ 'id' => 'wcj_tax_display_toggle_enabled',
29
+ 'default' => 'no',
30
+ 'type' => 'checkbox',
31
+ ),
32
+ array(
33
+ 'type' => 'sectionend',
34
+ 'id' => 'wcj_tax_display_toggle_options',
35
+ ),
36
+ array(
37
+ 'title' => __( 'TAX Display by Product', 'woocommerce-jetpack' ),
38
+ 'type' => 'title',
39
+ 'desc' => __( 'If you want to display part of your products including TAX and another part excluding TAX, you can set it here.', 'woocommerce-jetpack' ),
40
+ 'id' => 'wcj_product_listings_display_taxes_options',
41
+ ),
42
+ array(
43
+ 'title' => __( 'TAX Display by Product', 'woocommerce-jetpack' ),
44
+ 'desc' => '<strong>' . __( 'Enable section', 'woocommerce-jetpack' ) . '</strong>',
45
+ 'id' => 'wcj_product_listings_display_taxes_by_products_enabled',
46
+ 'type' => 'checkbox',
47
+ 'default' => 'no',
48
+ ),
49
+ array(
50
+ 'title' => __( 'Products - Including TAX', 'woocommerce-jetpack' ),
51
+ 'id' => 'wcj_product_listings_display_taxes_products_incl_tax',
52
+ 'desc_tip' => __( 'Select products to display including TAX.', 'woocommerce-jetpack' ),
53
+ 'default' => '',
54
+ 'type' => 'multiselect',
55
+ 'class' => 'chosen_select',
56
+ 'css' => 'width: 450px;',
57
+ 'options' => $products,
58
+ ),
59
+ array(
60
+ 'title' => __( 'Products - Excluding TAX', 'woocommerce-jetpack' ),
61
+ 'id' => 'wcj_product_listings_display_taxes_products_excl_tax',
62
+ 'desc_tip' => __( 'Select products to display excluding TAX.', 'woocommerce-jetpack' ),
63
+ 'default' => '',
64
+ 'type' => 'multiselect',
65
+ 'class' => 'chosen_select',
66
+ 'css' => 'width: 450px;',
67
+ 'options' => $products,
68
+ ),
69
+ array(
70
+ 'title' => __( 'Product Categories - Including TAX', 'woocommerce-jetpack' ),
71
+ 'id' => 'wcj_product_listings_display_taxes_product_cats_incl_tax',
72
+ 'desc_tip' => __( 'Select product categories to display including TAX.', 'woocommerce-jetpack' ),
73
+ 'default' => '',
74
+ 'type' => 'multiselect',
75
+ 'class' => 'chosen_select',
76
+ 'css' => 'width: 450px;',
77
+ 'options' => $product_cats,
78
+ ),
79
+ array(
80
+ 'title' => __( 'Product Categories - Excluding TAX', 'woocommerce-jetpack' ),
81
+ 'id' => 'wcj_product_listings_display_taxes_product_cats_excl_tax',
82
+ 'desc_tip' => __( 'Select product categories to display excluding TAX.', 'woocommerce-jetpack' ),
83
+ 'default' => '',
84
+ 'type' => 'multiselect',
85
+ 'class' => 'chosen_select',
86
+ 'css' => 'width: 450px;',
87
+ 'options' => $product_cats,
88
+ ),
89
+ array(
90
+ 'type' => 'sectionend',
91
+ 'id' => 'wcj_product_listings_display_taxes_options',
92
+ ),
93
+ array(
94
+ 'title' => __( 'TAX Display by User Role', 'woocommerce-jetpack' ),
95
+ 'type' => 'title',
96
+ 'desc' => __( 'If you want to display prices including TAX or excluding TAX for different user roles, you can set it here.', 'woocommerce-jetpack' ),
97
+ 'id' => 'wcj_product_listings_display_taxes_by_user_role_options',
98
+ ),
99
+ array(
100
+ 'title' => __( 'TAX Display by User Role', 'woocommerce-jetpack' ),
101
+ 'desc' => '<strong>' . __( 'Enable section', 'woocommerce-jetpack' ) . '</strong>',
102
+ 'id' => 'wcj_product_listings_display_taxes_by_user_role_enabled',
103
+ 'type' => 'checkbox',
104
+ 'default' => 'no',
105
+ ),
106
+ array(
107
+ 'title' => __( 'User Roles', 'woocommerce-jetpack' ),
108
+ 'desc_tip' => __( 'Save changes after you change this option and new settings fields will appear.', 'woocommerce-jetpack' ),
109
+ 'desc' => '<br>' . sprintf( __( 'Select user roles that you want to change tax display for. For all remaining (i.e. not selected) user roles - default TAX display (set in %s) will be applied.', 'woocommerce-jetpack' ),
110
+ '<a href="' . admin_url( 'admin.php?page=wc-settings&tab=tax' ) . '">' . __( 'WooCommerce > Settings > Tax', 'woocommerce-jetpack' ) . '</a>' ),
111
+ 'id' => 'wcj_product_listings_display_taxes_by_user_role_roles',
112
+ 'type' => 'multiselect',
113
+ 'class' => 'chosen_select',
114
+ 'default' => '',
115
+ 'options' => wcj_get_user_roles_options(),
116
+ ),
117
+ );
118
+ if ( '' != ( $display_taxes_by_user_role_roles = get_option( 'wcj_product_listings_display_taxes_by_user_role_roles', '' ) ) ) {
119
+ foreach ( $display_taxes_by_user_role_roles as $display_taxes_by_user_role_role ) {
120
+ $settings = array_merge( $settings, array(
121
+ array(
122
+ 'title' => sprintf( __( 'Role: %s', 'woocommerce-jetpack' ), $display_taxes_by_user_role_role ),
123
+ 'id' => 'wcj_product_listings_display_taxes_by_user_role_' . $display_taxes_by_user_role_role,
124
+ 'default' => 'no_changes',
125
+ 'type' => 'select',
126
+ 'options' => array(
127
+ 'no_changes' => __( 'Default TAX display (no changes)', 'woocommerce-jetpack' ),
128
+ 'incl' => __( 'Including tax', 'woocommerce-jetpack' ),
129
+ 'excl' => __( 'Excluding tax', 'woocommerce-jetpack' ),
130
+ ),
131
+ ),
132
+ ) );
133
+ }
134
+ }
135
+ $settings = array_merge( $settings, array(
136
+ array(
137
+ 'type' => 'sectionend',
138
+ 'id' => 'wcj_product_listings_display_taxes_by_user_role_options',
139
+ ),
140
+ ) );
141
+ return $settings;
includes/shortcodes/{class-wcj-general-shortcodes.php → class-wcj-shortcodes-general.php} RENAMED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Shortcodes - General
4
  *
5
- * @version 3.2.1
6
  * @author Algoritmika Ltd.
7
  */
8
 
@@ -15,11 +15,14 @@ class WCJ_General_Shortcodes extends WCJ_Shortcodes {
15
  /**
16
  * Constructor.
17
  *
18
- * @version 3.2.1
19
  */
20
  function __construct() {
21
 
22
  $this->the_shortcodes = array(
 
 
 
23
  'wcj_cart_items_total_quantity',
24
  'wcj_cart_items_total_weight',
25
  'wcj_cart_total',
@@ -40,6 +43,7 @@ class WCJ_General_Shortcodes extends WCJ_Shortcodes {
40
  'wcj_customer_shipping_country',
41
  'wcj_empty_cart_button',
42
  'wcj_get_left_to_free_shipping',
 
43
  'wcj_selector',
44
  'wcj_site_url',
45
  'wcj_store_address',
@@ -79,12 +83,158 @@ class WCJ_General_Shortcodes extends WCJ_Shortcodes {
79
  'selector_type' => 'country',
80
  'option' => '',
81
  'company' => '',
 
 
 
 
 
 
 
 
 
82
  );
83
 
84
  parent::__construct();
85
 
86
  }
87
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
88
  /**
89
  * wcj_store_address.
90
  *
@@ -141,8 +291,9 @@ class WCJ_General_Shortcodes extends WCJ_Shortcodes {
141
  /**
142
  * wcj_selector.
143
  *
144
- * @version 3.1.0
145
  * @since 3.1.0
 
146
  * @todo (maybe) add more selector types (e.g.: currency)
147
  * @todo (maybe) remove country switcher and currency switcher shortcodes and use this shortcode instead
148
  */
@@ -154,9 +305,13 @@ class WCJ_General_Shortcodes extends WCJ_Shortcodes {
154
  wcj_session_get( 'wcj_selected_' . $atts['selector_type'] )
155
  );
156
  switch ( $atts['selector_type'] ) {
 
 
 
157
  default: // 'country'
158
  $options = wcj_get_countries();
159
  asort( $options );
 
160
  }
161
  foreach ( $options as $value => $title ) {
162
  $html .= '<option value="' . $value . '" ' . selected( $selected_value, $value, false ) . '>' . $title . '</option>';
2
  /**
3
  * Booster for WooCommerce - Shortcodes - General
4
  *
5
+ * @version 3.2.4
6
  * @author Algoritmika Ltd.
7
  */
8
 
15
  /**
16
  * Constructor.
17
  *
18
+ * @version 3.2.4
19
  */
20
  function __construct() {
21
 
22
  $this->the_shortcodes = array(
23
+ 'wcj_barcode',
24
+ 'wcj_tcpdf_barcode',
25
+ 'wcj_button_toggle_tax_display',
26
  'wcj_cart_items_total_quantity',
27
  'wcj_cart_items_total_weight',
28
  'wcj_cart_total',
43
  'wcj_customer_shipping_country',
44
  'wcj_empty_cart_button',
45
  'wcj_get_left_to_free_shipping',
46
+ 'wcj_product_category_count',
47
  'wcj_selector',
48
  'wcj_site_url',
49
  'wcj_store_address',
83
  'selector_type' => 'country',
84
  'option' => '',
85
  'company' => '',
86
+ 'label_incl' => __( 'Tax toggle (incl.)', 'woocommerce-jetpack' ),
87
+ 'label_excl' => __( 'Tax toggle (excl.)', 'woocommerce-jetpack' ),
88
+ 'slug' => '',
89
+ 'code' => '',
90
+ 'type' => '',
91
+ 'dimension' => '2D',
92
+ 'width' => 0,
93
+ 'height' => 0,
94
+ 'color' => 'black',
95
  );
96
 
97
  parent::__construct();
98
 
99
  }
100
 
101
+ /**
102
+ * wcj_tcpdf_barcode.
103
+ *
104
+ * @version 3.2.4
105
+ * @since 3.2.4
106
+ * @todo `color`
107
+ * @todo `align` (try 'T')
108
+ */
109
+ function wcj_tcpdf_barcode( $atts ) {
110
+ if ( '' === $atts['code'] ) {
111
+ return '';
112
+ }
113
+ if ( '' === $atts['type'] ) {
114
+ $atts['type'] = ( '1D' === $atts['dimension'] ? 'C39' : 'PDF417' );
115
+ }
116
+ if ( 0 === $atts['width'] ) {
117
+ $atts['width'] = ( '1D' === $atts['dimension'] ? 80 : 80 );
118
+ }
119
+ if ( 0 === $atts['height'] ) {
120
+ $atts['height'] = ( '1D' === $atts['dimension'] ? 30 : 80 );
121
+ }
122
+ if ( '1D' === $atts['dimension'] ) {
123
+ $params = array(
124
+ $atts['code'],
125
+ $atts['type'],
126
+ '', // x
127
+ '', // y
128
+ $atts['width'],
129
+ $atts['height'],
130
+ 0.4, // xres
131
+ array( // style
132
+ 'position' => 'S',
133
+ 'border' => true,
134
+ 'padding' => 4,
135
+ 'fgcolor' => array( 0, 0, 0 ),
136
+ 'bgcolor' => array( 255, 255, 255 ),
137
+ 'text' => false,
138
+ ),
139
+ 'N', // align
140
+ );
141
+ } else {
142
+ $params = array(
143
+ $atts['code'],
144
+ $atts['type'],
145
+ '', // x
146
+ '', // y
147
+ $atts['width'],
148
+ $atts['height'],
149
+ array( // style
150
+ 'border' => true,
151
+ 'vpadding' => 'auto',
152
+ 'hpadding' => 'auto',
153
+ 'fgcolor' => array( 0, 0, 0 ),
154
+ 'bgcolor' => array( 255, 255, 255 ),
155
+ 'module_width' => 1, // width of a single module in points
156
+ 'module_height' => 1, // height of a single module in points
157
+ ),
158
+ 'N', // align
159
+ false, // distort
160
+ );
161
+ }
162
+ require_once( WCJ_PLUGIN_PATH . '/includes/lib/tcpdf_min/include/tcpdf_static.php' );
163
+ $params = TCPDF_STATIC::serializeTCPDFtagParameters( $params );
164
+ $method = ( '1D' === $atts['dimension'] ? 'write1DBarcode' : 'write2DBarcode' );
165
+ return '<tcpdf method="' . $method . '" params="' . $params . '" />';
166
+ }
167
+
168
+ /**
169
+ * wcj_barcode.
170
+ *
171
+ * @version 3.2.4
172
+ * @since 3.2.4
173
+ * @todo barcode in `[wcj_order_items_table]`
174
+ * @todo `code` from product data (SKU etc.), i.e. `[wcj_product_barcode]`
175
+ * @todo (maybe) "Barcodes" module
176
+ * @todo (maybe) `getBarcodePNG()`
177
+ */
178
+ function wcj_barcode( $atts ) {
179
+ if ( '' === $atts['code'] ) {
180
+ return '';
181
+ }
182
+ if ( '' === $atts['type'] ) {
183
+ $atts['type'] = ( '1D' === $atts['dimension'] ? 'C39' : 'PDF417' );
184
+ }
185
+ if ( 0 === $atts['width'] ) {
186
+ $atts['width'] = ( '1D' === $atts['dimension'] ? 2 : 10 );
187
+ }
188
+ if ( 0 === $atts['height'] ) {
189
+ $atts['height'] = ( '1D' === $atts['dimension'] ? 30 : 10 );
190
+ }
191
+ if ( '1D' === $atts['dimension'] ) {
192
+ require_once( WCJ_PLUGIN_PATH . '/includes/lib/tcpdf_min/tcpdf_barcodes_1d.php' );
193
+ $barcode = new TCPDFBarcode( $atts['code'], $atts['type'] );
194
+ } else {
195
+ require_once( WCJ_PLUGIN_PATH . '/includes/lib/tcpdf_min/tcpdf_barcodes_2d.php' );
196
+ $barcode = new TCPDF2DBarcode( $atts['code'], $atts['type'] );
197
+ }
198
+ $barcode_array = $barcode->getBarcodeArray();
199
+ return ( ! empty( $barcode_array ) && is_array( $barcode_array ) ? $barcode->getBarcodeHTML( $atts['width'], $atts['height'], $atts['color'] ) : '' );
200
+ }
201
+
202
+ /**
203
+ * wcj_product_category_count.
204
+ *
205
+ * @version 3.2.4
206
+ * @since 3.2.4
207
+ * @todo option to use `name` or `term_id` instead of `slug`
208
+ * @todo `pad_counts`
209
+ * @todo add similar `[wcj_product_tag_count]` and `[wcj_product_taxonomy_count]`
210
+ */
211
+ function wcj_product_category_count( $atts ) {
212
+ if ( ! isset( $atts['slug'] ) ) {
213
+ return '';
214
+ }
215
+ $product_categories = get_categories( array(
216
+ 'hide_empty' => 0,
217
+ 'hierarchical' => 1,
218
+ 'taxonomy' => 'product_cat',
219
+ 'slug' => $atts['slug'],
220
+ ) );
221
+ return ( isset( $product_categories[0]->count ) ? $product_categories[0]->count : '' );
222
+ }
223
+
224
+ /**
225
+ * wcj_button_toggle_tax_display.
226
+ *
227
+ * @version 3.2.4
228
+ * @since 3.2.4
229
+ * @todo (maybe) `get` instead of `post`
230
+ */
231
+ function wcj_button_toggle_tax_display( $atts ) {
232
+ $current_value = ( '' == ( $session_value = wcj_session_get( 'wcj_toggle_tax_display' ) ) ? get_option( 'woocommerce_tax_display_shop', 'excl' ) : $session_value );
233
+ $label = $atts[ 'label_' . $current_value ];
234
+ return '<form method="post" action=""><input type="submit" name="wcj_button_toggle_tax_display"' .
235
+ ' class="' . $atts['class'] . '" style="' . $atts['style'] . '" value="' . $label . '"></form>';
236
+ }
237
+
238
  /**
239
  * wcj_store_address.
240
  *
291
  /**
292
  * wcj_selector.
293
  *
294
+ * @version 3.2.4
295
  * @since 3.1.0
296
+ * @todo add `default` attribute
297
  * @todo (maybe) add more selector types (e.g.: currency)
298
  * @todo (maybe) remove country switcher and currency switcher shortcodes and use this shortcode instead
299
  */
305
  wcj_session_get( 'wcj_selected_' . $atts['selector_type'] )
306
  );
307
  switch ( $atts['selector_type'] ) {
308
+ case 'product_custom_visibility':
309
+ $options = wcj_get_select_options( get_option( 'wcj_product_custom_visibility_options_list', '' ) );
310
+ break;
311
  default: // 'country'
312
  $options = wcj_get_countries();
313
  asort( $options );
314
+ break;
315
  }
316
  foreach ( $options as $value => $title ) {
317
  $html .= '<option value="' . $value . '" ' . selected( $selected_value, $value, false ) . '>' . $title . '</option>';
includes/shortcodes/{class-wcj-input-field-shortcodes.php → class-wcj-shortcodes-input-field.php} RENAMED
File without changes
includes/shortcodes/{class-wcj-invoices-shortcodes.php → class-wcj-shortcodes-invoices.php} RENAMED
File without changes
includes/shortcodes/{class-wcj-order-items-shortcodes.php → class-wcj-shortcodes-order-items.php} RENAMED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Shortcodes - Order Items
4
  *
5
- * @version 3.2.2
6
  * @author Algoritmika Ltd.
7
  */
8
 
@@ -438,7 +438,7 @@ class WCJ_Order_Items_Shortcodes extends WCJ_Shortcodes {
438
  /**
439
  * get_cell.
440
  *
441
- * @version 3.2.0
442
  * @since 3.2.0
443
  */
444
  function get_cell( $column, $column_param, $atts, $the_order, $columns, $item_counter, $item_id, $item, $the_product ) {
@@ -478,7 +478,7 @@ class WCJ_Order_Items_Shortcodes extends WCJ_Shortcodes {
478
  return $item_counter;
479
 
480
  case 'item_meta':
481
- return wcj_get_order_item_meta_info( $item_id, $item, $this->the_order, false, $the_product );
482
 
483
  case 'item_name':
484
  case 'product_name': // "product_" because of possible variation
2
  /**
3
  * Booster for WooCommerce - Shortcodes - Order Items
4
  *
5
+ * @version 3.2.4
6
  * @author Algoritmika Ltd.
7
  */
8
 
438
  /**
439
  * get_cell.
440
  *
441
+ * @version 3.2.4
442
  * @since 3.2.0
443
  */
444
  function get_cell( $column, $column_param, $atts, $the_order, $columns, $item_counter, $item_id, $item, $the_product ) {
478
  return $item_counter;
479
 
480
  case 'item_meta':
481
+ return wcj_get_order_item_meta_info( $item_id, $item, $this->the_order, false, $the_product, array( 'is_custom' ) );
482
 
483
  case 'item_name':
484
  case 'product_name': // "product_" because of possible variation
includes/shortcodes/{class-wcj-orders-shortcodes.php → class-wcj-shortcodes-orders.php} RENAMED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Shortcodes - Orders
4
  *
5
- * @version 3.2.0
6
  * @author Algoritmika Ltd.
7
  */
8
 
@@ -92,7 +92,7 @@ class WCJ_Orders_Shortcodes extends WCJ_Shortcodes {
92
  /**
93
  * add_extra_atts.
94
  *
95
- * @version 3.2.0
96
  */
97
  function add_extra_atts( $atts ) {
98
  $modified_atts = array_merge( array(
@@ -127,6 +127,7 @@ class WCJ_Orders_Shortcodes extends WCJ_Shortcodes {
127
  'display_refunded' => 'yes',
128
  'insert_page_break' => '',
129
  'key' => null,
 
130
  ), $atts );
131
 
132
  return $modified_atts;
@@ -833,10 +834,11 @@ class WCJ_Orders_Shortcodes extends WCJ_Shortcodes {
833
  /**
834
  * wcj_order_date.
835
  *
836
- * @version 3.1.0
 
837
  */
838
  function wcj_order_date( $atts ) {
839
- return date_i18n( $atts['date_format'], strtotime( wcj_get_order_date( $this->the_order ) ) );
840
  }
841
 
842
  /**
2
  /**
3
  * Booster for WooCommerce - Shortcodes - Orders
4
  *
5
+ * @version 3.2.4
6
  * @author Algoritmika Ltd.
7
  */
8
 
92
  /**
93
  * add_extra_atts.
94
  *
95
+ * @version 3.2.4
96
  */
97
  function add_extra_atts( $atts ) {
98
  $modified_atts = array_merge( array(
127
  'display_refunded' => 'yes',
128
  'insert_page_break' => '',
129
  'key' => null,
130
+ 'days' => 0,
131
  ), $atts );
132
 
133
  return $modified_atts;
834
  /**
835
  * wcj_order_date.
836
  *
837
+ * @version 3.2.4
838
+ * @todo (maybe) rename `days` to `extra_days`
839
  */
840
  function wcj_order_date( $atts ) {
841
+ return date_i18n( $atts['date_format'], strtotime( wcj_get_order_date( $this->the_order ) ) + $atts['days'] * 24 * 60 * 60 );
842
  }
843
 
844
  /**
includes/shortcodes/{class-wcj-products-add-form-shortcodes.php → class-wcj-shortcodes-products-add-form.php} RENAMED
File without changes
includes/shortcodes/{class-wcj-products-crowdfunding-shortcodes.php → class-wcj-shortcodes-products-crowdfunding.php} RENAMED
File without changes
includes/shortcodes/{class-wcj-products-shortcodes.php → class-wcj-shortcodes-products.php} RENAMED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Shortcodes - Products
4
  *
5
- * @version 3.1.1
6
  * @author Algoritmika Ltd.
7
  */
8
 
@@ -15,7 +15,8 @@ class WCJ_Products_Shortcodes extends WCJ_Shortcodes {
15
  /**
16
  * Constructor.
17
  *
18
- * @version 3.1.0
 
19
  */
20
  function __construct() {
21
 
@@ -104,6 +105,7 @@ class WCJ_Products_Shortcodes extends WCJ_Shortcodes {
104
  'count_variations' => 'no',
105
  'variations' => 'no',
106
  'columns_style' => 'text-align: center;',
 
107
  );
108
 
109
  parent::__construct();
@@ -561,13 +563,11 @@ class WCJ_Products_Shortcodes extends WCJ_Shortcodes {
561
  /**
562
  * wcj_product_purchase_price.
563
  *
564
- * @version 2.7.0
565
- * @return string
566
- * @todo maybe just `wcj_get_product_id` instead of `wcj_get_product_id_or_variation_parent_id`
567
  */
568
  function wcj_product_purchase_price( $atts ) {
569
- $purchase_price = wc_get_product_purchase_price( wcj_get_product_id_or_variation_parent_id( $this->the_product ) );
570
- return wc_price( $purchase_price );
571
  }
572
 
573
  /**
@@ -595,6 +595,7 @@ class WCJ_Products_Shortcodes extends WCJ_Shortcodes {
595
  *
596
  * @return string
597
  * @version 3.1.1
 
598
  */
599
  function wcj_product_you_save( $atts ) {
600
  if ( $this->the_product->is_on_sale() ) {
@@ -665,7 +666,7 @@ class WCJ_Products_Shortcodes extends WCJ_Shortcodes {
665
  /**
666
  * Returns product (modified) price.
667
  *
668
- * @version 2.4.8
669
  * @todo variable products: a) not range; and b) price by country.
670
  * @return string The product (modified) price
671
  */
@@ -678,17 +679,34 @@ class WCJ_Products_Shortcodes extends WCJ_Shortcodes {
678
  $min = $min * $atts['multiply_by'];
679
  $max = $max * $atts['multiply_by'];
680
  }
 
 
 
 
 
 
 
 
681
  if ( 'yes' !== $atts['hide_currency'] ) {
682
- $min = wc_price( $min );
683
- $max = wc_price( $max );
684
  }
685
  return ( $min != $max ) ? sprintf( '%s-%s', $min, $max ) : $min;
686
  }
687
  // Simple etc.
688
  else {
689
  $the_price = $this->the_product->get_price();
690
- if ( '' !== $atts['multiply_by'] && is_numeric( $atts['multiply_by'] ) ) $the_price = $the_price * $atts['multiply_by'];
691
- return ( 'yes' === $atts['hide_currency'] ) ? $the_price : wc_price( $the_price );
 
 
 
 
 
 
 
 
 
692
  }
693
  }
694
 
2
  /**
3
  * Booster for WooCommerce - Shortcodes - Products
4
  *
5
+ * @version 3.2.4
6
  * @author Algoritmika Ltd.
7
  */
8
 
15
  /**
16
  * Constructor.
17
  *
18
+ * @version 3.2.4
19
+ * @todo (maybe) add `[wcj_product_stock_price]`
20
  */
21
  function __construct() {
22
 
105
  'count_variations' => 'no',
106
  'variations' => 'no',
107
  'columns_style' => 'text-align: center;',
108
+ 'currency' => '',
109
  );
110
 
111
  parent::__construct();
563
  /**
564
  * wcj_product_purchase_price.
565
  *
566
+ * @version 3.2.4
 
 
567
  */
568
  function wcj_product_purchase_price( $atts ) {
569
+ $purchase_price = wc_get_product_purchase_price( wcj_get_product_id( $this->the_product ) );
570
+ return ( 'yes' === $atts['hide_currency'] ? $purchase_price : wc_price( $purchase_price ) );
571
  }
572
 
573
  /**
595
  *
596
  * @return string
597
  * @version 3.1.1
598
+ * @todo (maybe) add `[wcj_product_discount]` alias
599
  */
600
  function wcj_product_you_save( $atts ) {
601
  if ( $this->the_product->is_on_sale() ) {
666
  /**
667
  * Returns product (modified) price.
668
  *
669
+ * @version 3.2.4
670
  * @todo variable products: a) not range; and b) price by country.
671
  * @return string The product (modified) price
672
  */
679
  $min = $min * $atts['multiply_by'];
680
  $max = $max * $atts['multiply_by'];
681
  }
682
+ if (
683
+ '' != $atts['currency'] &&
684
+ ( $base_product_currency = get_woocommerce_currency() ) != $atts['currency'] &&
685
+ 0 != ( $exchange_rate = wcj_get_saved_exchange_rate( $base_product_currency, $atts['currency'] ) )
686
+ ) {
687
+ $min = $min * $exchange_rate;
688
+ $max = $max * $exchange_rate;
689
+ }
690
  if ( 'yes' !== $atts['hide_currency'] ) {
691
+ $min = wc_price( $min, array( 'currency' => $atts['currency'] ) );
692
+ $max = wc_price( $max, array( 'currency' => $atts['currency'] ) );
693
  }
694
  return ( $min != $max ) ? sprintf( '%s-%s', $min, $max ) : $min;
695
  }
696
  // Simple etc.
697
  else {
698
  $the_price = $this->the_product->get_price();
699
+ if ( '' !== $atts['multiply_by'] && is_numeric( $atts['multiply_by'] ) ) {
700
+ $the_price = $the_price * $atts['multiply_by'];
701
+ }
702
+ if (
703
+ '' != $atts['currency'] &&
704
+ ( $base_product_currency = get_woocommerce_currency() ) != $atts['currency'] &&
705
+ 0 != ( $exchange_rate = wcj_get_saved_exchange_rate( $base_product_currency, $atts['currency'] ) )
706
+ ) {
707
+ $the_price = $the_price * $exchange_rate;
708
+ }
709
+ return ( 'yes' === $atts['hide_currency'] ) ? $the_price : wc_price( $the_price, array( 'currency' => $atts['currency'] ) );
710
  }
711
  }
712
 
includes/widgets/class-wcj-widget-selector.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Widget - Selector
4
  *
5
- * @version 3.1.0
6
  * @since 3.1.0
7
  * @author Algoritmika Ltd.
8
  */
@@ -43,7 +43,7 @@ class WCJ_Widget_Selector extends WCJ_Widget {
43
  /**
44
  * get_options.
45
  *
46
- * @version 3.1.0
47
  * @since 3.1.0
48
  */
49
  function get_options() {
@@ -61,7 +61,8 @@ class WCJ_Widget_Selector extends WCJ_Widget {
61
  'default' => 'country',
62
  'type' => 'select',
63
  'options' => array(
64
- 'country' => __( 'Countries', 'woocommerce-jetpack' ),
 
65
  ),
66
  'class' => 'widefat',
67
  ),
2
  /**
3
  * Booster for WooCommerce - Widget - Selector
4
  *
5
+ * @version 3.2.4
6
  * @since 3.1.0
7
  * @author Algoritmika Ltd.
8
  */
43
  /**
44
  * get_options.
45
  *
46
+ * @version 3.2.4
47
  * @since 3.1.0
48
  */
49
  function get_options() {
61
  'default' => 'country',
62
  'type' => 'select',
63
  'options' => array(
64
+ 'country' => __( 'Countries', 'woocommerce-jetpack' ),
65
+ 'product_custom_visibility' => __( 'Product custom visibility', 'woocommerce-jetpack' ),
66
  ),
67
  'class' => 'widefat',
68
  ),
langs/woocommerce-jetpack.pot CHANGED
@@ -1,81 +1,3 @@
1
- # SOME DESCRIPTIVE TITLE.
2
- # Copyright (C) YEAR Booster for WooCommerce
3
- # This file is distributed under the same license as the PACKAGE package.
4
- # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
5
- #
6
- #: includes/settings/wcj-settings-add-to-cart.php:60
7
- #: includes/settings/wcj-settings-shipping-calculator.php:47
8
- #, fuzzy
9
- msgid ""
10
- msgstr ""
11
- "Project-Id-Version: Booster for WooCommerce 3.2.3\n"
12
- "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/woocommerce-"
13
- "jetpack\n"
14
- "POT-Creation-Date: 2017-12-03 17:52+0200\n"
15
- "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
16
- "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
17
- "Language-Team: LANGUAGE <LL@li.org>\n"
18
- "Language: \n"
19
- "MIME-Version: 1.0\n"
20
- "Content-Type: text/plain; charset=UTF-8\n"
21
- "Content-Transfer-Encoding: 8bit\n"
22
- "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
23
-
24
- #: woocommerce-jetpack.php:184
25
- #, php-format
26
- msgid ""
27
- "Please upgrade <strong>Booster Plus for WooCommerce</strong> plugin. Visit "
28
- "<a target=\"_blank\" href=\"%s\">your account page</a> on booster.io to "
29
- "download the latest Booster Plus version."
30
- msgstr ""
31
-
32
- #: woocommerce-jetpack.php:188
33
- #, php-format
34
- msgid ""
35
- "There is new version of <strong>Booster Plus for WooCommerce</strong> plugin "
36
- "available. We recommend upgrading. Please visit <a target=\"_blank\" href="
37
- "\"%s\">your account page</a> on booster.io to download the latest Booster "
38
- "Plus version."
39
- msgstr ""
40
-
41
- #: woocommerce-jetpack.php:208
42
- #, php-format
43
- msgid ""
44
- "If you like <strong>Booster for WooCommerce</strong> please leave us a %s "
45
- "rating. Thank you, we couldn't have done it without you!"
46
- msgstr ""
47
-
48
- #: woocommerce-jetpack.php:224
49
- #: includes/admin/class-wc-settings-jetpack.php:486
50
- msgid "Booster for WooCommerce"
51
- msgstr ""
52
-
53
- #: woocommerce-jetpack.php:225
54
- msgid "Booster Settings"
55
- msgstr ""
56
-
57
- #: woocommerce-jetpack.php:240 includes/class-wcj-admin-bar.php:166
58
- #: includes/class-wcj-admin-bar.php:461 includes/class-wcj-admin-bar.php:561
59
- #: includes/admin/class-wc-settings-jetpack.php:211
60
- #: includes/admin/class-wc-settings-jetpack.php:404
61
- msgid "Settings"
62
- msgstr ""
63
-
64
- #: woocommerce-jetpack.php:241
65
- msgid "Docs"
66
- msgstr ""
67
-
68
- #: woocommerce-jetpack.php:244
69
- msgid "Unlock all"
70
- msgstr ""
71
-
72
- #: woocommerce-jetpack.php:510
73
- #, php-format
74
- msgid ""
75
- "<strong>Booster for WooCommerce</strong> plugin was successfully updated to "
76
- "version <strong>%s</strong>."
77
- msgstr ""
78
-
79
  #: includes/class-wcj-add-to-cart.php:23
80
  msgid "Add to Cart Labels"
81
  msgstr ""
@@ -124,15 +46,23 @@ msgstr ""
124
  msgid "Manage Settings"
125
  msgstr ""
126
 
 
 
 
 
 
 
 
 
127
  #: includes/class-wcj-admin-bar.php:170
128
- #: includes/admin/class-wc-settings-jetpack.php:406
129
  #: includes/classes/class-wcj-module.php:645
130
  msgid "Documentation"
131
  msgstr ""
132
 
133
  #: includes/class-wcj-admin-bar.php:212
134
  #: includes/admin/class-wc-settings-jetpack.php:138
135
- #: includes/admin/wcj-modules-cats.php:13
136
  msgid "Dashboard"
137
  msgstr ""
138
 
@@ -192,22 +122,22 @@ msgid "Coupons by date"
192
  msgstr ""
193
 
194
  #: includes/class-wcj-admin-bar.php:304 includes/class-wcj-track-users.php:34
195
- #: includes/functions/wcj-functions-reports.php:62
196
  msgid "Last 7 days"
197
  msgstr ""
198
 
199
  #: includes/class-wcj-admin-bar.php:308
200
- #: includes/functions/wcj-functions-reports.php:57
201
  msgid "This month"
202
  msgstr ""
203
 
204
  #: includes/class-wcj-admin-bar.php:312
205
- #: includes/functions/wcj-functions-reports.php:52
206
  msgid "Last month"
207
  msgstr ""
208
 
209
  #: includes/class-wcj-admin-bar.php:316
210
- #: includes/functions/wcj-functions-reports.php:47
211
  #: includes/pdf-invoices/class-wcj-pdf-invoicing-report-tool.php:111
212
  msgid "Year"
213
  msgstr ""
@@ -223,7 +153,7 @@ msgid "WooCommerce settings"
223
  msgstr ""
224
 
225
  #: includes/class-wcj-admin-bar.php:346 includes/class-wcj-admin-bar.php:350
226
- #: includes/class-wcj-admin-bar.php:368 includes/class-wcj-orders.php:23
227
  #: includes/settings/wcj-settings-reports.php:16
228
  #: includes/settings/wcj-settings-reports.php:54
229
  #: includes/settings/wcj-settings-reports.php:95
@@ -291,8 +221,8 @@ msgstr ""
291
  #: includes/class-wcj-product-by-user.php:96
292
  #: includes/class-wcj-product-by-user.php:132
293
  #: includes/class-wcj-shipping-by-products.php:32
294
- #: includes/admin/wcj-modules-cats.php:58
295
- #: includes/settings/wcj-settings-shipping-options.php:62
296
  msgid "Products"
297
  msgstr ""
298
 
@@ -306,16 +236,16 @@ msgstr ""
306
  #: includes/export/class-wcj-fields-helper.php:318
307
  #: includes/settings/wcj-settings-price-by-user-role.php:129
308
  #: includes/settings/wcj-settings-product-by-user.php:19
309
- #: includes/shortcodes/class-wcj-products-add-form-shortcodes.php:185
310
- #: includes/shortcodes/class-wcj-products-add-form-shortcodes.php:406
311
  msgid "Categories"
312
  msgstr ""
313
 
314
  #: includes/class-wcj-admin-bar.php:437
315
  #: includes/export/class-wcj-fields-helper.php:319
316
  #: includes/settings/wcj-settings-product-by-user.php:20
317
- #: includes/shortcodes/class-wcj-products-add-form-shortcodes.php:186
318
- #: includes/shortcodes/class-wcj-products-add-form-shortcodes.php:411
319
  msgid "Tags"
320
  msgstr ""
321
 
@@ -440,6 +370,50 @@ msgstr ""
440
  msgid "Extensions"
441
  msgstr ""
442
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
443
  #: includes/class-wcj-admin-tools.php:23 includes/class-wcj-admin-tools.php:30
444
  msgid "Admin Tools"
445
  msgstr ""
@@ -516,11 +490,11 @@ msgstr ""
516
  msgid "Customize WooCommerce breadcrumbs."
517
  msgstr ""
518
 
519
- #: includes/class-wcj-call-for-price.php:23
520
  msgid "Call for Price"
521
  msgstr ""
522
 
523
- #: includes/class-wcj-call-for-price.php:24
524
  msgid ""
525
  "Create any custom price label for all WooCommerce products with empty price."
526
  msgstr ""
@@ -560,11 +534,11 @@ msgid ""
560
  "required, change labels and/or placeholders."
561
  msgstr ""
562
 
563
- #: includes/class-wcj-checkout-custom-fields.php:23
564
  msgid "Checkout Custom Fields"
565
  msgstr ""
566
 
567
- #: includes/class-wcj-checkout-custom-fields.php:24
568
  msgid "Add custom fields to WooCommerce checkout page."
569
  msgstr ""
570
 
@@ -710,7 +684,8 @@ msgstr ""
710
 
711
  #: includes/class-wcj-currencies.php:24
712
  msgid ""
713
- "Add all world currencies to your WooCommerce store; change currency symbol."
 
714
  msgstr ""
715
 
716
  #: includes/class-wcj-currencies.php:69
@@ -729,6 +704,16 @@ msgstr ""
729
  msgid "Automatic currency exchange rates for WooCommerce."
730
  msgstr ""
731
 
 
 
 
 
 
 
 
 
 
 
732
  #: includes/class-wcj-currency-external-products.php:23
733
  msgid "Currency for External Products"
734
  msgstr ""
@@ -737,29 +722,29 @@ msgstr ""
737
  msgid "Set different currency for external WooCommerce products."
738
  msgstr ""
739
 
740
- #: includes/class-wcj-currency-per-product.php:25
741
  msgid "Currency per Product"
742
  msgstr ""
743
 
744
- #: includes/class-wcj-currency-per-product.php:26
745
  msgid "Display prices for WooCommerce products in different currencies."
746
  msgstr ""
747
 
748
- #: includes/class-wcj-currency-per-product.php:169
749
  #: includes/settings/wcj-settings-currency-per-product.php:43
750
  msgid ""
751
  "Only one product can be added to the cart. Clear the cart or finish the "
752
  "order, before adding another product to the cart."
753
  msgstr ""
754
 
755
- #: includes/class-wcj-currency-per-product.php:184
756
  #: includes/settings/wcj-settings-currency-per-product.php:50
757
  msgid ""
758
  "Only products with same currency can be added to the cart. Clear the cart or "
759
  "finish the order, before adding products with another currency to the cart."
760
  msgstr ""
761
 
762
- #: includes/class-wcj-currency-per-product.php:230
763
  #, php-format
764
  msgctxt "Price range: from-to"
765
  msgid "%1$s&ndash;%2$s"
@@ -915,6 +900,7 @@ msgstr ""
915
  #: includes/class-wcj-emails.php:58 includes/class-wcj-emails.php:76
916
  #: includes/emails/class-wc-email-wcj-custom.php:30
917
  #: includes/settings/wcj-settings-emails.php:37
 
918
  #: includes/settings/wcj-settings-shipping.php:63
919
  #: includes/shipping/class-wc-shipping-wcj-custom.php:46
920
  msgid "Custom"
@@ -926,7 +912,7 @@ msgid "Booster: Send Email: %s"
926
  msgstr ""
927
 
928
  #: includes/class-wcj-empty-cart-button.php:25
929
- #: includes/shortcodes/class-wcj-general-shortcodes.php:220
930
  msgid "Empty Cart Button"
931
  msgstr ""
932
 
@@ -996,7 +982,7 @@ msgid "<strong>EU VAT Number</strong> is not valid."
996
  msgstr ""
997
 
998
  #: includes/class-wcj-export-import.php:26
999
- #: includes/admin/class-wc-settings-jetpack.php:290
1000
  msgid "Export"
1001
  msgstr ""
1002
 
@@ -1058,8 +1044,8 @@ msgid "Filter by Product Title"
1058
  msgstr ""
1059
 
1060
  #: includes/class-wcj-export-import.php:214
1061
- #: includes/reports/wcj-class-reports-sales-daily.php:188
1062
- #: includes/settings/wcj-settings-orders.php:33
1063
  msgid "Filter"
1064
  msgstr ""
1065
 
@@ -1153,7 +1139,7 @@ msgstr ""
1153
 
1154
  #: includes/class-wcj-general.php:197 includes/class-wcj-general.php:210
1155
  #: includes/class-wcj-sku.php:333
1156
- #: includes/reports/wcj-class-reports-sales.php:191
1157
  #: includes/settings/wcj-settings-order-numbers.php:123
1158
  #: includes/settings/wcj-settings-product-by-user.php:161
1159
  #: includes/settings/wcj-settings-related-products.php:30
@@ -1181,7 +1167,7 @@ msgstr ""
1181
  #: includes/class-wcj-product-by-user.php:206
1182
  #: includes/pdf-invoices/submodules/class-wcj-pdf-invoicing-display.php:138
1183
  #: includes/pdf-invoices/submodules/class-wcj-pdf-invoicing-display.php:303
1184
- #: includes/shortcodes/class-wcj-products-add-form-shortcodes.php:367
1185
  #: includes/tools/class-wcj-order-statuses-tool.php:157
1186
  msgid "Delete"
1187
  msgstr ""
@@ -1195,9 +1181,11 @@ msgid "Add New Role"
1195
  msgstr ""
1196
 
1197
  #: includes/class-wcj-general.php:215
 
1198
  #: includes/settings/wcj-settings-checkout-custom-fields.php:22
1199
  #: includes/settings/wcj-settings-checkout-custom-fields.php:29
1200
  #: includes/settings/wcj-settings-checkout-custom-fields.php:55
 
1201
  #: includes/settings/wcj-settings-email-options.php:20
1202
  #: includes/settings/wcj-settings-eu-vat-number.php:157
1203
  #: includes/settings/wcj-settings-eu-vat-number.php:193
@@ -1205,20 +1193,20 @@ msgstr ""
1205
  #: includes/settings/wcj-settings-order-custom-statuses.php:29
1206
  #: includes/settings/wcj-settings-order-custom-statuses.php:37
1207
  #: includes/settings/wcj-settings-order-custom-statuses.php:70
1208
- #: includes/settings/wcj-settings-order-min-amount.php:46
1209
- #: includes/settings/wcj-settings-orders.php:168
1210
- #: includes/settings/wcj-settings-orders.php:217
1211
  #: includes/settings/wcj-settings-pdf-invoicing-display.php:151
1212
- #: includes/settings/wcj-settings-pdf-invoicing.php:125
1213
  #: includes/settings/wcj-settings-product-by-country.php:110
1214
  #: includes/settings/wcj-settings-product-by-user.php:114
 
1215
  #: includes/settings/wcj-settings-purchase-data.php:134
1216
  #: includes/settings/wcj-settings-purchase-data.php:143
1217
  #: includes/settings/wcj-settings-purchase-data.php:162
1218
  #: includes/settings/wcj-settings-purchase-data.php:169
1219
  #: includes/settings/wcj-settings-sku.php:181
1220
  #: includes/settings/wcj-settings-sku.php:197
1221
- #: includes/shortcodes/class-wcj-products-add-form-shortcodes.php:425
1222
  #: includes/tools/class-wcj-order-statuses-tool.php:228
1223
  msgid "Add"
1224
  msgstr ""
@@ -1227,7 +1215,7 @@ msgstr ""
1227
  #: includes/class-wcj-product-bulk-meta-editor.php:339
1228
  #: includes/class-wcj-product-bulk-price-converter.php:148
1229
  #: includes/class-wcj-sku.php:334
1230
- #: includes/reports/wcj-class-reports-sales.php:192
1231
  #: includes/reports/wcj-class-reports-stock.php:253
1232
  msgid "Product"
1233
  msgstr ""
@@ -1242,7 +1230,7 @@ msgid "Total Products:"
1242
  msgstr ""
1243
 
1244
  #: includes/class-wcj-global-discount.php:27
1245
- #: includes/admin/class-wc-settings-jetpack.php:461
1246
  msgid "Global Discount"
1247
  msgstr ""
1248
 
@@ -1261,7 +1249,7 @@ msgstr ""
1261
  #: includes/class-wcj-left-to-free-shipping.php:62
1262
  #: includes/class-wcj-left-to-free-shipping.php:72
1263
  #: includes/class-wcj-left-to-free-shipping.php:82
1264
- #: includes/functions/wcj-functions-general.php:337
1265
  #: includes/settings/wcj-settings-left-to-free-shipping.php:37
1266
  #: includes/settings/wcj-settings-left-to-free-shipping.php:72
1267
  #: includes/settings/wcj-settings-left-to-free-shipping.php:111
@@ -1332,7 +1320,7 @@ msgstr ""
1332
  #: includes/functions/wcj-functions-html.php:95
1333
  #: includes/reports/wcj-class-reports-monthly-sales.php:341
1334
  #: includes/settings/wcj-settings-empty-cart.php:80
1335
- #: includes/shortcodes/class-wcj-products-add-form-shortcodes.php:367
1336
  #: includes/tools/class-wcj-order-statuses-tool.php:157
1337
  #: includes/tools/class-wcj-order-statuses-tool.php:261
1338
  msgid "Are you sure?"
@@ -1668,49 +1656,23 @@ msgid ""
1668
  "Your current item quantity is %item_quantity%."
1669
  msgstr ""
1670
 
1671
- #: includes/class-wcj-orders.php:24
1672
  msgid ""
1673
- "Orders auto-complete. Custom admin order list columns. Admin order currency. "
1674
- "Admin order list multiple status filtering."
1675
  msgstr ""
1676
 
1677
- #: includes/class-wcj-orders.php:122
1678
  msgid "Regenerate download permissions"
1679
  msgstr ""
1680
 
1681
- #: includes/class-wcj-orders.php:136
1682
  #, php-format
1683
  msgid "Download permissions regenerated for %s order."
1684
  msgid_plural "Download permissions regenerated for %s orders."
1685
  msgstr[0] ""
1686
  msgstr[1] ""
1687
 
1688
- #: includes/class-wcj-orders.php:289
1689
- msgid "Not Completed"
1690
- msgstr ""
1691
-
1692
- #: includes/class-wcj-orders.php:415
1693
- #: includes/settings/wcj-settings-product-by-country.php:86
1694
- msgid "All countries"
1695
- msgstr ""
1696
-
1697
- #: includes/class-wcj-orders.php:424
1698
- msgid "All currencies"
1699
- msgstr ""
1700
-
1701
- #: includes/class-wcj-orders.php:464
1702
- #: includes/export/class-wcj-fields-helper.php:44
1703
- #: includes/export/class-wcj-fields-helper.php:129
1704
- #: includes/export/class-wcj-fields-helper.php:214
1705
- #: includes/settings/wcj-settings-orders.php:66
1706
- msgid "Billing Country"
1707
- msgstr ""
1708
-
1709
- #: includes/class-wcj-orders.php:467
1710
- #: includes/settings/wcj-settings-orders.php:73
1711
- msgid "Currency Code"
1712
- msgstr ""
1713
-
1714
  #: includes/class-wcj-payment-gateways-by-country.php:24
1715
  msgid "Gateways by Country or State"
1716
  msgstr ""
@@ -1881,7 +1843,7 @@ msgid "Booster: ZipArchive error."
1881
  msgstr ""
1882
 
1883
  #: includes/class-wcj-pdf-invoicing.php:250
1884
- #: includes/classes/class-wcj-pdf-invoice.php:279
1885
  #: includes/pdf-invoices/class-wcj-pdf-invoicing-report-tool.php:230
1886
  msgid "Unexpected error"
1887
  msgstr ""
@@ -1957,7 +1919,7 @@ msgstr ""
1957
 
1958
  #: includes/class-wcj-price-labels.php:40
1959
  #: includes/class-wcj-product-info.php:254
1960
- #: includes/class-wcj-shipping-options.php:172
1961
  #: includes/settings/wcj-settings-add-to-cart.php:52
1962
  #: includes/settings/wcj-settings-address-formats.php:20
1963
  #: includes/settings/wcj-settings-admin-bar.php:20
@@ -1969,11 +1931,11 @@ msgstr ""
1969
  #: includes/settings/wcj-settings-admin-tools.php:74
1970
  #: includes/settings/wcj-settings-admin-tools.php:81
1971
  #: includes/settings/wcj-settings-breadcrumbs.php:20
1972
- #: includes/settings/wcj-settings-call-for-price.php:69
1973
  #: includes/settings/wcj-settings-cart-customization.php:34
1974
  #: includes/settings/wcj-settings-cart-customization.php:57
1975
  #: includes/settings/wcj-settings-checkout-custom-fields.php:107
1976
- #: includes/settings/wcj-settings-checkout-custom-fields.php:202
1977
  #: includes/settings/wcj-settings-checkout-customization.php:78
1978
  #: includes/settings/wcj-settings-checkout-files-upload.php:291
1979
  #: includes/settings/wcj-settings-coupon-code-generator.php:32
@@ -1987,11 +1949,11 @@ msgstr ""
1987
  #: includes/settings/wcj-settings-custom-css.php:34
1988
  #: includes/settings/wcj-settings-emails-verification.php:28
1989
  #: includes/settings/wcj-settings-emails-verification.php:36
1990
- #: includes/settings/wcj-settings-general.php:42
1991
- #: includes/settings/wcj-settings-general.php:66
1992
- #: includes/settings/wcj-settings-general.php:82
1993
- #: includes/settings/wcj-settings-general.php:150
1994
- #: includes/settings/wcj-settings-general.php:201
1995
  #: includes/settings/wcj-settings-global-discount.php:52
1996
  #: includes/settings/wcj-settings-left-to-free-shipping.php:27
1997
  #: includes/settings/wcj-settings-left-to-free-shipping.php:60
@@ -2009,9 +1971,8 @@ msgstr ""
2009
  #: includes/settings/wcj-settings-order-quantities.php:111
2010
  #: includes/settings/wcj-settings-order-quantities.php:137
2011
  #: includes/settings/wcj-settings-order-quantities.php:144
2012
- #: includes/settings/wcj-settings-orders.php:20
2013
- #: includes/settings/wcj-settings-orders.php:49
2014
- #: includes/settings/wcj-settings-orders.php:184
2015
  #: includes/settings/wcj-settings-pdf-invoicing-display.php:113
2016
  #: includes/settings/wcj-settings-pdf-invoicing-footer.php:23
2017
  #: includes/settings/wcj-settings-pdf-invoicing-header.php:23
@@ -2031,11 +1992,12 @@ msgstr ""
2031
  #: includes/settings/wcj-settings-product-add-to-cart.php:41
2032
  #: includes/settings/wcj-settings-product-add-to-cart.php:80
2033
  #: includes/settings/wcj-settings-product-add-to-cart.php:132
2034
- #: includes/settings/wcj-settings-product-add-to-cart.php:171
2035
- #: includes/settings/wcj-settings-product-add-to-cart.php:202
2036
- #: includes/settings/wcj-settings-product-add-to-cart.php:219
2037
- #: includes/settings/wcj-settings-product-add-to-cart.php:260
2038
- #: includes/settings/wcj-settings-product-add-to-cart.php:274
 
2039
  #: includes/settings/wcj-settings-product-addons.php:24
2040
  #: includes/settings/wcj-settings-product-addons.php:43
2041
  #: includes/settings/wcj-settings-product-addons.php:67
@@ -2053,11 +2015,14 @@ msgstr ""
2053
  #: includes/settings/wcj-settings-product-by-user-role.php:29
2054
  #: includes/settings/wcj-settings-product-by-user-role.php:37
2055
  #: includes/settings/wcj-settings-product-by-user.php:107
 
 
 
2056
  #: includes/settings/wcj-settings-product-info.php:35
2057
  #: includes/settings/wcj-settings-product-info.php:68
2058
  #: includes/settings/wcj-settings-product-input-fields.php:22
2059
  #: includes/settings/wcj-settings-product-input-fields.php:52
2060
- #: includes/settings/wcj-settings-product-input-fields.php:310
2061
  #: includes/settings/wcj-settings-product-open-pricing.php:87
2062
  #: includes/settings/wcj-settings-product-open-pricing.php:94
2063
  #: includes/settings/wcj-settings-product-open-pricing.php:108
@@ -2065,7 +2030,7 @@ msgstr ""
2065
  #: includes/settings/wcj-settings-product-tabs.php:23
2066
  #: includes/settings/wcj-settings-product-tabs.php:212
2067
  #: includes/settings/wcj-settings-product-tabs.php:220
2068
- #: includes/settings/wcj-settings-products-xml.php:72
2069
  #: includes/settings/wcj-settings-purchase-data.php:22
2070
  #: includes/settings/wcj-settings-purchase-data.php:29
2071
  #: includes/settings/wcj-settings-purchase-data.php:36
@@ -2081,7 +2046,7 @@ msgstr ""
2081
  #: includes/settings/wcj-settings-shipping-calculator.php:27
2082
  #: includes/settings/wcj-settings-shipping-calculator.php:34
2083
  #: includes/settings/wcj-settings-shipping-calculator.php:41
2084
- #: includes/settings/wcj-settings-shipping-options.php:56
2085
  #: includes/settings/wcj-settings-shipping.php:24
2086
  #: includes/settings/wcj-settings-sku.php:50
2087
  #: includes/settings/wcj-settings-sku.php:157
@@ -2097,6 +2062,7 @@ msgstr ""
2097
  #: includes/settings/meta-box/wcj-settings-meta-box-product-add-to-cart.php:92
2098
  #: includes/settings/meta-box/wcj-settings-meta-box-product-addons.php:35
2099
  #: includes/settings/meta-box/wcj-settings-meta-box-related-products.php:17
 
2100
  msgid "Enable"
2101
  msgstr ""
2102
 
@@ -2169,26 +2135,26 @@ msgstr ""
2169
  msgid "Customize Add to Cart messages."
2170
  msgstr ""
2171
 
2172
- #: includes/class-wcj-product-add-to-cart.php:142
2173
  #, php-format
2174
  msgctxt "Item name in quotes"
2175
  msgid "&ldquo;%s&rdquo;"
2176
  msgstr ""
2177
 
2178
- #: includes/class-wcj-product-add-to-cart.php:147
2179
  #, php-format
2180
  msgid "%s has been added to your cart."
2181
  msgid_plural "%s have been added to your cart."
2182
  msgstr[0] ""
2183
  msgstr[1] ""
2184
 
2185
- #: includes/class-wcj-product-add-to-cart.php:151
2186
- #: includes/settings/wcj-settings-product-add-to-cart.php:269
2187
  msgid "Continue shopping"
2188
  msgstr ""
2189
 
2190
- #: includes/class-wcj-product-add-to-cart.php:153
2191
- #: includes/settings/wcj-settings-product-add-to-cart.php:283
2192
  msgid "View cart"
2193
  msgstr ""
2194
 
@@ -2200,11 +2166,11 @@ msgstr ""
2200
  msgid "Add (paid/free/discount) addons to WooCommerce products."
2201
  msgstr ""
2202
 
2203
- #: includes/class-wcj-product-addons.php:100
2204
  msgid "Some of the required addons are not selected!"
2205
  msgstr ""
2206
 
2207
- #: includes/class-wcj-product-addons.php:115
2208
  msgid ""
2209
  "Booster: Free plugin's version is limited to only three products with per "
2210
  "product addons enabled at a time. You will need to get <a href=\"http://"
@@ -2328,12 +2294,12 @@ msgid ""
2328
  msgstr ""
2329
 
2330
  #: includes/class-wcj-product-bulk-meta-editor.php:294
 
 
2331
  #: includes/settings/wcj-settings-export.php:91
2332
  #: includes/settings/wcj-settings-export.php:162
2333
  #: includes/settings/wcj-settings-export.php:241
2334
  #: includes/settings/wcj-settings-global-discount.php:69
2335
- #: includes/settings/wcj-settings-orders.php:110
2336
- #: includes/settings/wcj-settings-product-listings.php:297
2337
  msgid "Value"
2338
  msgstr ""
2339
 
@@ -2437,7 +2403,7 @@ msgid "Products category"
2437
  msgstr ""
2438
 
2439
  #: includes/class-wcj-product-bulk-price-converter.php:260
2440
- #: includes/shortcodes/class-wcj-products-shortcodes.php:303
2441
  msgid "Any"
2442
  msgstr ""
2443
 
@@ -2556,7 +2522,7 @@ msgstr ""
2556
 
2557
  #: includes/class-wcj-product-by-user.php:154
2558
  #: includes/class-wcj-product-by-user.php:163
2559
- #: includes/shortcodes/class-wcj-products-add-form-shortcodes.php:313
2560
  msgid "Wrong user ID!"
2561
  msgstr ""
2562
 
@@ -2567,7 +2533,7 @@ msgid "Status"
2567
  msgstr ""
2568
 
2569
  #: includes/class-wcj-product-by-user.php:197
2570
- #: includes/class-wcj-product-tabs.php:555
2571
  #: includes/gateways/class-wc-gateway-wcj-custom.php:66
2572
  #: includes/input-fields/wcj-product-input-fields-options.php:51
2573
  #: includes/settings/wcj-settings-export.php:75
@@ -2576,15 +2542,15 @@ msgstr ""
2576
  #: includes/settings/wcj-settings-product-addons.php:86
2577
  #: includes/settings/wcj-settings-product-by-user.php:167
2578
  #: includes/settings/wcj-settings-product-tabs.php:52
2579
- #: includes/settings/wcj-settings-product-tabs.php:361
2580
- #: includes/settings/wcj-settings-product-tabs.php:382
2581
- #: includes/settings/wcj-settings-product-tabs.php:403
2582
  #: includes/settings/wcj-settings-purchase-data.php:66
2583
  #: includes/settings/wcj-settings-related-products.php:24
2584
  #: includes/settings/meta-box/wcj-settings-meta-box-product-addons.php:57
2585
  #: includes/shipping/class-wc-shipping-wcj-custom-with-shipping-zones.php:157
2586
  #: includes/shipping/class-wc-shipping-wcj-custom.php:116
2587
- #: includes/shortcodes/class-wcj-products-add-form-shortcodes.php:337
2588
  #: includes/widgets/class-wcj-widget-country-switcher.php:62
2589
  #: includes/widgets/class-wcj-widget-left-to-free-shipping.php:52
2590
  #: includes/widgets/class-wcj-widget-multicurrency.php:63
@@ -2593,15 +2559,15 @@ msgid "Title"
2593
  msgstr ""
2594
 
2595
  #: includes/class-wcj-product-by-user.php:205
2596
- #: includes/shortcodes/class-wcj-products-add-form-shortcodes.php:425
2597
  #: includes/tools/class-wcj-order-statuses-tool.php:160
2598
  #: includes/tools/class-wcj-order-statuses-tool.php:228
2599
  msgid "Edit"
2600
  msgstr ""
2601
 
2602
  #: includes/class-wcj-product-custom-info.php:24
2603
- #: includes/admin/class-wc-settings-jetpack.php:458
2604
- #: includes/functions/wcj-functions-general.php:148
2605
  msgid "Product Info"
2606
  msgstr ""
2607
 
@@ -2610,17 +2576,39 @@ msgstr ""
2610
  msgid "Add additional info to WooCommerce category and single product pages."
2611
  msgstr ""
2612
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2613
  #: includes/class-wcj-product-images.php:25
2614
  msgid "Product Images"
2615
  msgstr ""
2616
 
2617
  #: includes/class-wcj-product-images.php:26
2618
- msgid "Customize WooCommerce products images, thumbnails and sale flashes."
2619
- msgstr ""
2620
-
2621
- #: includes/class-wcj-product-images.php:204
2622
- #: includes/settings/wcj-settings-product-images.php:103
2623
- msgid "Sale!"
2624
  msgstr ""
2625
 
2626
  #: includes/class-wcj-product-info.php:101
@@ -2687,9 +2675,9 @@ msgstr ""
2687
  #: includes/settings/wcj-settings-product-info.php:61
2688
  #: includes/settings/wcj-settings-product-info.php:94
2689
  #: includes/settings/wcj-settings-product-tabs.php:66
2690
- #: includes/settings/wcj-settings-product-tabs.php:371
2691
- #: includes/settings/wcj-settings-product-tabs.php:392
2692
- #: includes/settings/wcj-settings-product-tabs.php:413
2693
  msgid "Priority (i.e. Order)"
2694
  msgstr ""
2695
 
@@ -2711,7 +2699,7 @@ msgid "[wcj_product_total_sales before=\"Total sales: \"]"
2711
  msgstr ""
2712
 
2713
  #: includes/class-wcj-product-input-fields.php:24
2714
- #: includes/admin/class-wc-settings-jetpack.php:460
2715
  #: includes/input-fields/class-wcj-product-input-fields-core.php:123
2716
  msgid "Product Input Fields"
2717
  msgstr ""
@@ -2805,33 +2793,33 @@ msgid ""
2805
  "remove WooCommerce default product tabs."
2806
  msgstr ""
2807
 
2808
- #: includes/class-wcj-product-tabs.php:512
2809
  msgid "Booster: Custom Tabs"
2810
  msgstr ""
2811
 
2812
- #: includes/class-wcj-product-tabs.php:539
2813
  msgid "Total number of custom tabs"
2814
  msgstr ""
2815
 
2816
- #: includes/class-wcj-product-tabs.php:545
2817
  #: includes/input-fields/class-wcj-product-input-fields-core.php:149
2818
  msgid "Click \"Update\" product after you change this number."
2819
  msgstr ""
2820
 
2821
- #: includes/class-wcj-product-tabs.php:560
2822
  #: includes/settings/wcj-settings-checkout-custom-fields.php:108
2823
  #: includes/settings/wcj-settings-product-tabs.php:59
2824
  msgid "Key"
2825
  msgstr ""
2826
 
2827
- #: includes/class-wcj-product-tabs.php:565
2828
  #: includes/input-fields/wcj-product-input-fields-options.php:21
2829
  #: includes/settings/wcj-settings-related-products.php:59
2830
  #: includes/settings/wcj-settings-related-products.php:84
2831
  msgid "Order"
2832
  msgstr ""
2833
 
2834
- #: includes/class-wcj-product-tabs.php:570
2835
  #: includes/settings/wcj-settings-cart.php:44
2836
  #: includes/settings/wcj-settings-checkout-custom-info.php:40
2837
  #: includes/settings/wcj-settings-left-to-free-shipping.php:34
@@ -2844,28 +2832,28 @@ msgstr ""
2844
  msgid "Content"
2845
  msgstr ""
2846
 
2847
- #: includes/class-wcj-product-tabs.php:575
2848
  #: includes/settings/wcj-settings-cart-customization.php:63
2849
  #: includes/settings/wcj-settings-product-tabs.php:80
2850
  msgid "Link"
2851
  msgstr ""
2852
 
2853
- #: includes/class-wcj-product-tabs.php:577
2854
  #: includes/settings/wcj-settings-product-tabs.php:81
2855
  msgid ""
2856
  "If you wish to forward tab to new link, enter it here. In this case content "
2857
  "is ignored. Leave blank to show content."
2858
  msgstr ""
2859
 
2860
- #: includes/class-wcj-product-tabs.php:581
2861
  #: includes/settings/wcj-settings-product-tabs.php:88
2862
  msgid "Link - Open in New Window"
2863
  msgstr ""
2864
 
2865
- #: includes/class-wcj-product-tabs.php:584
2866
  #: includes/input-fields/wcj-product-input-fields-options.php:95
2867
- #: includes/settings/wcj-settings-checkout-custom-fields.php:217
2868
- #: includes/settings/wcj-settings-orders.php:123
2869
  #: includes/settings/meta-box/wcj-settings-meta-box-custom-css.php:20
2870
  #: includes/settings/meta-box/wcj-settings-meta-box-offer-price.php:20
2871
  #: includes/settings/meta-box/wcj-settings-meta-box-price-by-user-role.php:35
@@ -2884,14 +2872,15 @@ msgstr ""
2884
  #: includes/settings/meta-box/wcj-settings-meta-box-product-open-pricing.php:20
2885
  #: includes/settings/meta-box/wcj-settings-meta-box-product-price-by-formula.php:19
2886
  #: includes/settings/meta-box/wcj-settings-meta-box-related-products.php:23
 
2887
  #: includes/settings/meta-box/wcj-settings-meta-box-wholesale-price.php:32
2888
  #: includes/widgets/class-wcj-widget-country-switcher.php:82
2889
  msgid "No"
2890
  msgstr ""
2891
 
2892
- #: includes/class-wcj-product-tabs.php:585
2893
  #: includes/input-fields/wcj-product-input-fields-options.php:88
2894
- #: includes/settings/wcj-settings-checkout-custom-fields.php:211
2895
  #: includes/settings/wcj-settings-eu-vat-number.php:50
2896
  #: includes/settings/wcj-settings-eu-vat-number.php:57
2897
  #: includes/settings/wcj-settings-eu-vat-number.php:75
@@ -2916,23 +2905,25 @@ msgstr ""
2916
  #: includes/settings/meta-box/wcj-settings-meta-box-product-open-pricing.php:19
2917
  #: includes/settings/meta-box/wcj-settings-meta-box-product-price-by-formula.php:18
2918
  #: includes/settings/meta-box/wcj-settings-meta-box-related-products.php:24
 
2919
  #: includes/settings/meta-box/wcj-settings-meta-box-wholesale-price.php:31
2920
  #: includes/widgets/class-wcj-widget-country-switcher.php:83
2921
  msgid "Yes"
2922
  msgstr ""
2923
 
2924
- #: includes/class-wcj-product-tabs.php:593
2925
  #: includes/settings/wcj-settings-checkout-core-fields.php:61
2926
  #: includes/settings/wcj-settings-currency-exchange-rates.php:141
 
2927
  #: includes/settings/wcj-settings-product-add-to-cart.php:64
2928
  #: includes/settings/meta-box/wcj-settings-meta-box-product-by-date.php:19
2929
  #: includes/settings/meta-box/wcj-settings-meta-box-product-by-time.php:19
2930
  msgid "Disabled"
2931
  msgstr ""
2932
 
2933
- #: includes/class-wcj-product-tabs.php:596
2934
  #: includes/settings/wcj-settings-product-tabs.php:51
2935
- #: includes/settings/wcj-settings-product-tabs.php:243
2936
  msgid "Custom Product Tab"
2937
  msgstr ""
2938
 
@@ -2952,11 +2943,11 @@ msgid ""
2952
  msgstr ""
2953
 
2954
  #: includes/class-wcj-products-xml.php:26
2955
- msgid "Products XML"
2956
  msgstr ""
2957
 
2958
  #: includes/class-wcj-products-xml.php:27
2959
- msgid "WooCommerce products XML feed."
2960
  msgstr ""
2961
 
2962
  #: includes/class-wcj-products-xml.php:94
@@ -3006,7 +2997,7 @@ msgid "Booster: Product cost (destination)"
3006
  msgstr ""
3007
 
3008
  #: includes/class-wcj-purchase-data.php:92
3009
- #: includes/admin/class-wc-settings-jetpack.php:294
3010
  msgid "Import"
3011
  msgstr ""
3012
 
@@ -3046,7 +3037,7 @@ msgid "Report"
3046
  msgstr ""
3047
 
3048
  #: includes/class-wcj-related-products.php:38
3049
- #: includes/admin/class-wc-settings-jetpack.php:462
3050
  #: includes/settings/wcj-settings-free-price.php:20
3051
  #: includes/settings/meta-box/wcj-settings-meta-box-related-products.php:28
3052
  msgid "Related Products"
@@ -3076,46 +3067,62 @@ msgstr ""
3076
  msgid "Booster: More Ranges - Months"
3077
  msgstr ""
3078
 
3079
- #: includes/class-wcj-reports.php:74 includes/class-wcj-reports.php:118
3080
  msgid "Select Range"
3081
  msgstr ""
3082
 
3083
- #: includes/class-wcj-reports.php:116
3084
  msgid "Booster: More Ranges"
3085
  msgstr ""
3086
 
3087
- #: includes/class-wcj-reports.php:207
3088
  msgid "Booster: Product Sales (Daily)"
3089
  msgstr ""
3090
 
3091
- #: includes/class-wcj-reports.php:214
3092
  msgid "Booster: Product Sales (Monthly)"
3093
  msgstr ""
3094
 
3095
- #: includes/class-wcj-reports.php:221
3096
  msgid "Booster: Monthly Sales (with Currency Conversion)"
3097
  msgstr ""
3098
 
3099
- #: includes/class-wcj-reports.php:236
3100
  msgid "Booster: All in stock"
3101
  msgstr ""
3102
 
3103
- #: includes/class-wcj-reports.php:243
3104
  msgid "Booster: Understocked"
3105
  msgstr ""
3106
 
3107
- #: includes/class-wcj-reports.php:250
3108
  msgid "Booster: Overstocked"
3109
  msgstr ""
3110
 
3111
- #: includes/class-wcj-reports.php:265
3112
  msgid "Booster: Customers by Country"
3113
  msgstr ""
3114
 
3115
- #: includes/class-wcj-reports.php:272
3116
  msgid "Booster: Customers by Country Sets"
3117
  msgstr ""
3118
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3119
  #: includes/class-wcj-shipping-by-order-amount.php:26
3120
  #: includes/settings/wcj-settings-shipping-by-order-amount.php:14
3121
  msgid "Shipping Methods by Min/Max Order Amount"
@@ -3128,7 +3135,7 @@ msgid ""
3128
  msgstr ""
3129
 
3130
  #: includes/class-wcj-shipping-by-products.php:26
3131
- #: includes/settings/wcj-settings-shipping-options.php:50
3132
  msgid "Shipping Methods by Products"
3133
  msgstr ""
3134
 
@@ -3143,7 +3150,7 @@ msgid "Shipping methods by <strong>products</strong>."
3143
  msgstr ""
3144
 
3145
  #: includes/class-wcj-shipping-by-products.php:36
3146
- #: includes/settings/wcj-settings-currency-per-product.php:208
3147
  msgid "Product Categories"
3148
  msgstr ""
3149
 
@@ -3152,7 +3159,7 @@ msgid "Shipping methods by <strong>products categories</strong>."
3152
  msgstr ""
3153
 
3154
  #: includes/class-wcj-shipping-by-products.php:40
3155
- #: includes/settings/wcj-settings-currency-per-product.php:220
3156
  msgid "Product Tags"
3157
  msgstr ""
3158
 
@@ -3185,13 +3192,13 @@ msgid ""
3185
  msgstr ""
3186
 
3187
  #: includes/class-wcj-shipping-by-user-role.php:31
3188
- #: includes/settings/wcj-settings-product-listings.php:220
3189
  msgid "User Roles"
3190
  msgstr ""
3191
 
3192
  #: includes/class-wcj-shipping-by-user-role.php:33
3193
- #: includes/settings/wcj-settings-multicurrency.php:164
3194
- #: includes/settings/wcj-settings-order-min-amount.php:97
3195
  #: includes/settings/wcj-settings-price-by-user-role.php:82
3196
  #, php-format
3197
  msgid ""
@@ -3238,28 +3245,28 @@ msgstr ""
3238
  msgid "Grant free shipping on per product basis."
3239
  msgstr ""
3240
 
3241
- #: includes/class-wcj-shipping-options.php:171
3242
  msgid "Booster: Hide when free is available"
3243
  msgstr ""
3244
 
3245
- #: includes/class-wcj-shipping-options.php:179
3246
  #: includes/settings/wcj-settings-shipping-options.php:28
3247
  msgid ""
3248
  "Available options: hide all; hide all except \"Local Pickup\"; hide \"Flat "
3249
  "Rate\" only."
3250
  msgstr ""
3251
 
3252
- #: includes/class-wcj-shipping-options.php:183
3253
  #: includes/settings/wcj-settings-shipping-options.php:32
3254
  msgid "Hide all"
3255
  msgstr ""
3256
 
3257
- #: includes/class-wcj-shipping-options.php:184
3258
  #: includes/settings/wcj-settings-shipping-options.php:33
3259
  msgid "Hide all except \"Local Pickup\""
3260
  msgstr ""
3261
 
3262
- #: includes/class-wcj-shipping-options.php:185
3263
  #: includes/settings/wcj-settings-shipping-options.php:34
3264
  msgid "Hide \"Flat Rate\" only"
3265
  msgstr ""
@@ -3347,6 +3354,14 @@ msgstr ""
3347
  msgid "WooCommerce products stock management."
3348
  msgstr ""
3349
 
 
 
 
 
 
 
 
 
3350
  #: includes/class-wcj-track-users.php:26
3351
  msgid "User Tracking"
3352
  msgstr ""
@@ -3372,7 +3387,7 @@ msgid "Other"
3372
  msgstr ""
3373
 
3374
  #: includes/class-wcj-track-users.php:159
3375
- #: includes/settings/wcj-settings-products-xml.php:115
3376
  msgid "URL:"
3377
  msgstr ""
3378
 
@@ -3476,93 +3491,107 @@ msgid ""
3476
  "can be moved to paid plugin version."
3477
  msgstr ""
3478
 
3479
- #: includes/admin/class-wc-settings-jetpack.php:262
3480
  msgid ""
3481
  "This section lets you export, import or reset all Booster's modules settings."
3482
  msgstr ""
3483
 
3484
- #: includes/admin/class-wc-settings-jetpack.php:291
3485
  msgid "Export all Booster's options to a file."
3486
  msgstr ""
3487
 
3488
- #: includes/admin/class-wc-settings-jetpack.php:296
3489
  msgid "Import all Booster's options from a file."
3490
  msgstr ""
3491
 
3492
- #: includes/admin/class-wc-settings-jetpack.php:299
3493
  msgid ""
3494
  "This will reset settings to defaults for all Booster modules. Are you sure?"
3495
  msgstr ""
3496
 
3497
- #: includes/admin/class-wc-settings-jetpack.php:299
3498
  msgid "Reset"
3499
  msgstr ""
3500
 
3501
- #: includes/admin/class-wc-settings-jetpack.php:300
3502
  msgid "Reset all Booster's options."
3503
  msgstr ""
3504
 
3505
- #: includes/admin/class-wc-settings-jetpack.php:337
3506
  msgid "Version"
3507
  msgstr ""
3508
 
3509
- #: includes/admin/class-wc-settings-jetpack.php:361
3510
- #: includes/admin/class-wc-settings-jetpack.php:368
3511
  msgid "Select All"
3512
  msgstr ""
3513
 
3514
- #: includes/admin/class-wc-settings-jetpack.php:362
3515
- #: includes/admin/class-wc-settings-jetpack.php:369
3516
  #: includes/admin/class-wcj-tools.php:72
3517
  msgid "Module"
3518
  msgstr ""
3519
 
3520
- #: includes/admin/class-wc-settings-jetpack.php:363
3521
- #: includes/admin/class-wc-settings-jetpack.php:370
3522
  #: includes/admin/class-wcj-tools.php:73
3523
  #: includes/export/class-wcj-fields-helper.php:293
3524
  #: includes/gateways/class-wc-gateway-wcj-custom.php:74
3525
  #: includes/settings/wcj-settings-eu-vat-number.php:34
3526
  #: includes/settings/wcj-settings-product-by-user.php:13
3527
- #: includes/shortcodes/class-wcj-products-add-form-shortcodes.php:179
3528
- #: includes/shortcodes/class-wcj-products-add-form-shortcodes.php:345
3529
  msgid "Description"
3530
  msgstr ""
3531
 
3532
- #: includes/admin/class-wc-settings-jetpack.php:418
3533
  msgid "No active modules found."
3534
  msgstr ""
3535
 
3536
- #: includes/admin/class-wc-settings-jetpack.php:421
3537
  msgid "Total Modules:"
3538
  msgstr ""
3539
 
3540
- #: includes/admin/class-wc-settings-jetpack.php:448
3541
  msgid "Autoload Booster's Options"
3542
  msgstr ""
3543
 
3544
- #: includes/admin/class-wc-settings-jetpack.php:450
3545
  msgid ""
3546
  "Choose if you want Booster's options to be autoloaded when calling "
3547
  "add_option. After saving this option, you need to Reset all Booster's "
3548
  "settings. Leave default value (i.e. Enabled) if not sure."
3549
  msgstr ""
3550
 
3551
- #: includes/admin/class-wc-settings-jetpack.php:455
3552
  msgid "Use List Instead of Comma Separated Text for Products in Settings"
3553
  msgstr ""
3554
 
3555
- #: includes/admin/class-wc-settings-jetpack.php:457
3556
  #, php-format
3557
  msgid "Supported modules: %s."
3558
  msgstr ""
3559
 
3560
- #: includes/admin/class-wcj-settings-custom-fields.php:198
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3561
  #: includes/settings/wcj-settings-wpml.php:21
3562
  msgid "To use tools, module must be enabled."
3563
  msgstr ""
3564
 
3565
- #: includes/admin/class-wcj-settings-custom-fields.php:237
3566
  msgid "Save changes"
3567
  msgstr ""
3568
 
@@ -3575,14 +3604,14 @@ msgstr ""
3575
  msgid "Wrong file format!"
3576
  msgstr ""
3577
 
3578
- #: includes/admin/class-wcj-settings-manager.php:79
3579
  #, php-format
3580
  msgid "%d options successfully imported."
3581
  msgstr ""
3582
 
3583
- #: includes/admin/class-wcj-settings-manager.php:144
3584
  #, php-format
3585
- msgid "%d options successfully deleted."
3586
  msgstr ""
3587
 
3588
  #: includes/admin/class-wcj-tools.php:32
@@ -3613,7 +3642,7 @@ msgstr ""
3613
  msgid "Tool"
3614
  msgstr ""
3615
 
3616
- #: includes/admin/wcj-modules-cats.php:14
3617
  msgid ""
3618
  "This dashboard lets you enable/disable any Booster's module. Each checkbox "
3619
  "comes with short module's description. Please visit <a href=\"http://booster."
@@ -3621,41 +3650,41 @@ msgid ""
3621
  "feature."
3622
  msgstr ""
3623
 
3624
- #: includes/admin/wcj-modules-cats.php:24
3625
  msgid "Prices & Currencies"
3626
  msgstr ""
3627
 
3628
- #: includes/admin/wcj-modules-cats.php:25
3629
  msgid ""
3630
  "Multicurrency, Price Converter, Wholesale Pricing, Name You Price, Price by "
3631
  "User Role and more."
3632
  msgstr ""
3633
 
3634
- #: includes/admin/wcj-modules-cats.php:46
3635
  msgid "Button & Price Labels"
3636
  msgstr ""
3637
 
3638
- #: includes/admin/wcj-modules-cats.php:47
3639
  msgid "Add to Cart Labels, Call for Price, Custom Price Labels and more."
3640
  msgstr ""
3641
 
3642
- #: includes/admin/wcj-modules-cats.php:59
3643
  msgid ""
3644
  "Bookings, Crowdfunding Products, Product Addons and Input Fields, Product "
3645
  "Listings, Product Tabs and more."
3646
  msgstr ""
3647
 
3648
- #: includes/admin/wcj-modules-cats.php:87
3649
  msgid "Cart & Checkout"
3650
  msgstr ""
3651
 
3652
- #: includes/admin/wcj-modules-cats.php:88
3653
  msgid ""
3654
  "Cart and Checkout Customization, Empty Cart Button, Mini Cart, Coupons and "
3655
  "more."
3656
  msgstr ""
3657
 
3658
- #: includes/admin/wcj-modules-cats.php:106
3659
  #: includes/settings/wcj-settings-payment-gateways-by-country.php:14
3660
  #: includes/settings/wcj-settings-payment-gateways-by-currency.php:14
3661
  #: includes/settings/wcj-settings-payment-gateways-by-shipping.php:21
@@ -3664,35 +3693,35 @@ msgstr ""
3664
  msgid "Payment Gateways"
3665
  msgstr ""
3666
 
3667
- #: includes/admin/wcj-modules-cats.php:107
3668
  msgid ""
3669
  "Custom Payment Gateways, Gateways Currency, Gateways Fees and Discounts and "
3670
  "more."
3671
  msgstr ""
3672
 
3673
- #: includes/admin/wcj-modules-cats.php:123
3674
  msgid "Shipping & Orders"
3675
  msgstr ""
3676
 
3677
- #: includes/admin/wcj-modules-cats.php:124
3678
  msgid ""
3679
  "Order Custom Statuses, Order Minimum Amount, Order Numbers, Custom Shipping "
3680
  "Methods and more."
3681
  msgstr ""
3682
 
3683
- #: includes/admin/wcj-modules-cats.php:143
3684
  msgid "PDF Invoicing & Packing Slips"
3685
  msgstr ""
3686
 
3687
- #: includes/admin/wcj-modules-cats.php:144
3688
  msgid "PDF Documents"
3689
  msgstr ""
3690
 
3691
- #: includes/admin/wcj-modules-cats.php:159
3692
  msgid "Emails & Misc."
3693
  msgstr ""
3694
 
3695
- #: includes/admin/wcj-modules-cats.php:160
3696
  msgid "Emails, Reports, Export, Admin Tools, General Options and more."
3697
  msgstr ""
3698
 
@@ -3760,16 +3789,58 @@ msgstr ""
3760
  msgid "Enable Module"
3761
  msgstr ""
3762
 
3763
- #: includes/classes/class-wcj-pdf-invoice.php:74
3764
  #: includes/settings/wcj-settings-pdf-invoicing-header.php:55
3765
  msgid "Company Name"
3766
  msgstr ""
3767
 
 
 
 
 
 
 
3768
  #: includes/classes/class-wcj-tcpdf.php:34
3769
  #: includes/settings/wcj-settings-pdf-invoicing-footer.php:31
3770
  msgid "Page %page_number% / %total_pages%"
3771
  msgstr ""
3772
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3773
  #: includes/emails/class-wc-email-wcj-custom.php:31
3774
  msgid ""
3775
  "Custom emails are sent to the recipient list when selected triggers are "
@@ -3784,39 +3855,39 @@ msgstr ""
3784
  msgid "[{site_title}] Custom Subject - Order ({order_number}) - {order_date}"
3785
  msgstr ""
3786
 
3787
- #: includes/emails/class-wc-email-wcj-custom.php:214
3788
  #, php-format
3789
  msgid "New order (%s)"
3790
  msgstr ""
3791
 
3792
- #: includes/emails/class-wc-email-wcj-custom.php:215
3793
  #, php-format
3794
  msgid "Order status updated to %s"
3795
  msgstr ""
3796
 
3797
- #: includes/emails/class-wc-email-wcj-custom.php:218
3798
  #, php-format
3799
  msgid "Order status %s to %s"
3800
  msgstr ""
3801
 
3802
- #: includes/emails/class-wc-email-wcj-custom.php:225
3803
  #: includes/gateways/class-wc-gateway-wcj-custom.php:59
 
 
3804
  #: includes/settings/wcj-settings-checkout-custom-fields.php:106
3805
- #: includes/settings/wcj-settings-product-listings.php:259
3806
- #: includes/settings/wcj-settings-product-listings.php:317
3807
  #: includes/shipping/class-wc-shipping-wcj-custom.php:110
3808
  msgid "Enable/Disable"
3809
  msgstr ""
3810
 
3811
- #: includes/emails/class-wc-email-wcj-custom.php:227
3812
  msgid "Enable this email notification"
3813
  msgstr ""
3814
 
3815
- #: includes/emails/class-wc-email-wcj-custom.php:231
3816
  msgid "Trigger(s)"
3817
  msgstr ""
3818
 
3819
- #: includes/emails/class-wc-email-wcj-custom.php:235
3820
  msgid ""
3821
  "Please note, that all new orders in WooCommerce by default are created with "
3822
  "Pending Payment status. If you want to change the default order status - you "
@@ -3824,133 +3895,133 @@ msgid ""
3824
  "Settings > Booster > Shipping & Orders > Order Custom Statuses)."
3825
  msgstr ""
3826
 
3827
- #: includes/emails/class-wc-email-wcj-custom.php:238
3828
  msgid "New order (Any status)"
3829
  msgstr ""
3830
 
3831
- #: includes/emails/class-wc-email-wcj-custom.php:243
3832
  msgid "Reset password notification"
3833
  msgstr ""
3834
 
3835
- #: includes/emails/class-wc-email-wcj-custom.php:244
3836
  msgid "Order fully refunded notification"
3837
  msgstr ""
3838
 
3839
- #: includes/emails/class-wc-email-wcj-custom.php:245
3840
  msgid "Order partially refunded notification"
3841
  msgstr ""
3842
 
3843
- #: includes/emails/class-wc-email-wcj-custom.php:246
3844
  msgid "New customer note notification"
3845
  msgstr ""
3846
 
3847
- #: includes/emails/class-wc-email-wcj-custom.php:247
3848
  msgid "Low stock notification"
3849
  msgstr ""
3850
 
3851
- #: includes/emails/class-wc-email-wcj-custom.php:248
3852
  msgid "No stock notification"
3853
  msgstr ""
3854
 
3855
- #: includes/emails/class-wc-email-wcj-custom.php:249
3856
  msgid "Product on backorder notification"
3857
  msgstr ""
3858
 
3859
- #: includes/emails/class-wc-email-wcj-custom.php:250
3860
  msgid "Created customer notification"
3861
  msgstr ""
3862
 
3863
- #: includes/emails/class-wc-email-wcj-custom.php:257
3864
  msgid "Recipient(s)"
3865
  msgstr ""
3866
 
3867
- #: includes/emails/class-wc-email-wcj-custom.php:259
3868
  #, php-format
3869
  msgid ""
3870
  "Enter recipients (comma separated) for this email. Defaults to <code>%s</"
3871
  "code>."
3872
  msgstr ""
3873
 
3874
- #: includes/emails/class-wc-email-wcj-custom.php:260
3875
  msgid "Or enter <code>%customer%</code> to send to customer billing email."
3876
  msgstr ""
3877
 
3878
- #: includes/emails/class-wc-email-wcj-custom.php:266
3879
  msgid "Subject"
3880
  msgstr ""
3881
 
3882
- #: includes/emails/class-wc-email-wcj-custom.php:268
3883
  #, php-format
3884
  msgid ""
3885
  "This controls the email subject line. Leave blank to use the default "
3886
  "subject: <code>%s</code>."
3887
  msgstr ""
3888
 
3889
- #: includes/emails/class-wc-email-wcj-custom.php:274
3890
  msgid "Email type"
3891
  msgstr ""
3892
 
3893
- #: includes/emails/class-wc-email-wcj-custom.php:276
3894
  msgid "Choose which format of email to send."
3895
  msgstr ""
3896
 
3897
- #: includes/emails/class-wc-email-wcj-custom.php:282
3898
  msgid "Wrap in WC Email Template"
3899
  msgstr ""
3900
 
3901
- #: includes/emails/class-wc-email-wcj-custom.php:288
3902
  msgid ""
3903
  "WC Email Heading. Used only if \"Wrap in WC Email Template\" is enabled and "
3904
  "only for HTML templates."
3905
  msgstr ""
3906
 
3907
- #: includes/emails/class-wc-email-wcj-custom.php:289
3908
  #, php-format
3909
  msgid ""
3910
  "This controls the main heading contained within the email notification. "
3911
  "Leave blank to use the default heading: <code>%s</code>."
3912
  msgstr ""
3913
 
3914
- #: includes/emails/class-wc-email-wcj-custom.php:295
3915
  msgid "HTML template"
3916
  msgstr ""
3917
 
3918
- #: includes/emails/class-wc-email-wcj-custom.php:297
3919
- #: includes/emails/class-wc-email-wcj-custom.php:306
3920
  msgid "You can use shortcodes here. E.g. Booster's order shortcodes."
3921
  msgstr ""
3922
 
3923
- #: includes/emails/class-wc-email-wcj-custom.php:304
3924
  msgid "Plain text template"
3925
  msgstr ""
3926
 
3927
  #: includes/exchange-rates/class-wcj-exchange-rates-crons.php:22
3928
  #: includes/settings/wcj-settings-currency-exchange-rates.php:38
3929
- #: includes/settings/wcj-settings-products-xml.php:128
3930
  msgid "Update Every Minute"
3931
  msgstr ""
3932
 
3933
  #: includes/exchange-rates/class-wcj-exchange-rates-crons.php:23
3934
  #: includes/settings/wcj-settings-currency-exchange-rates.php:39
3935
- #: includes/settings/wcj-settings-products-xml.php:129
3936
  msgid "Update Hourly"
3937
  msgstr ""
3938
 
3939
  #: includes/exchange-rates/class-wcj-exchange-rates-crons.php:24
3940
  #: includes/settings/wcj-settings-currency-exchange-rates.php:40
3941
- #: includes/settings/wcj-settings-products-xml.php:130
3942
  msgid "Update Twice Daily"
3943
  msgstr ""
3944
 
3945
  #: includes/exchange-rates/class-wcj-exchange-rates-crons.php:25
3946
  #: includes/settings/wcj-settings-currency-exchange-rates.php:41
3947
- #: includes/settings/wcj-settings-products-xml.php:131
3948
  msgid "Update Daily"
3949
  msgstr ""
3950
 
3951
  #: includes/exchange-rates/class-wcj-exchange-rates-crons.php:26
3952
  #: includes/settings/wcj-settings-currency-exchange-rates.php:42
3953
- #: includes/settings/wcj-settings-products-xml.php:132
3954
  msgid "Update Weekly"
3955
  msgstr ""
3956
 
@@ -3966,11 +4037,6 @@ msgstr ""
3966
  msgid "Cron job: exchange rates update failed"
3967
  msgstr ""
3968
 
3969
- #: includes/exchange-rates/class-wcj-exchange-rates.php:129
3970
- #, php-format
3971
- msgid "Grab %s rate from %s"
3972
- msgstr ""
3973
-
3974
  #: includes/export/class-wcj-fields-helper.php:34
3975
  msgid "Customer Nr."
3976
  msgstr ""
@@ -4257,8 +4323,8 @@ msgstr ""
4257
  #: includes/settings/wcj-settings-product-by-user.php:16
4258
  #: includes/settings/meta-box/wcj-settings-meta-box-multicurrency.php:37
4259
  #: includes/settings/meta-box/wcj-settings-meta-box-price-by-user-role.php:55
4260
- #: includes/shortcodes/class-wcj-products-add-form-shortcodes.php:182
4261
- #: includes/shortcodes/class-wcj-products-add-form-shortcodes.php:381
4262
  msgid "Regular Price"
4263
  msgstr ""
4264
 
@@ -4267,8 +4333,8 @@ msgstr ""
4267
  #: includes/settings/wcj-settings-product-by-user.php:17
4268
  #: includes/settings/meta-box/wcj-settings-meta-box-multicurrency.php:46
4269
  #: includes/settings/meta-box/wcj-settings-meta-box-price-by-user-role.php:64
4270
- #: includes/shortcodes/class-wcj-products-add-form-shortcodes.php:183
4271
- #: includes/shortcodes/class-wcj-products-add-form-shortcodes.php:390
4272
  msgid "Sale Price"
4273
  msgstr ""
4274
 
@@ -4281,7 +4347,7 @@ msgstr ""
4281
  #: includes/settings/wcj-settings-global-discount.php:58
4282
  #: includes/settings/wcj-settings-product-addons.php:73
4283
  #: includes/settings/wcj-settings-purchase-data.php:73
4284
- #: includes/settings/wcj-settings-shipping-options.php:70
4285
  #: includes/settings/meta-box/wcj-settings-meta-box-product-addons.php:45
4286
  #: includes/shipping/class-wc-shipping-wcj-custom-with-shipping-zones.php:164
4287
  #: includes/shipping/class-wc-shipping-wcj-custom.php:123
@@ -4290,14 +4356,14 @@ msgid "Type"
4290
  msgstr ""
4291
 
4292
  #: includes/export/class-wcj-fields-helper.php:291
4293
- #: includes/settings/wcj-settings-shipping-options.php:184
4294
  msgid "Image URL"
4295
  msgstr ""
4296
 
4297
  #: includes/export/class-wcj-fields-helper.php:292
4298
  #: includes/settings/wcj-settings-product-by-user.php:14
4299
- #: includes/shortcodes/class-wcj-products-add-form-shortcodes.php:180
4300
- #: includes/shortcodes/class-wcj-products-add-form-shortcodes.php:354
4301
  msgid "Short Description"
4302
  msgstr ""
4303
 
@@ -4407,11 +4473,18 @@ msgstr ""
4407
  msgid "Availability Class"
4408
  msgstr ""
4409
 
4410
- #: includes/functions/wcj-functions-admin.php:29
 
 
 
 
 
 
 
4411
  msgid "Enter comma separated list of IDs."
4412
  msgstr ""
4413
 
4414
- #: includes/functions/wcj-functions-admin.php:103
4415
  #: includes/settings/wcj-settings-emails-verification.php:59
4416
  #: includes/settings/wcj-settings-emails-verification.php:67
4417
  #: includes/settings/wcj-settings-emails-verification.php:107
@@ -4419,60 +4492,60 @@ msgstr ""
4419
  msgid "Replaced value: %s"
4420
  msgstr ""
4421
 
4422
- #: includes/functions/wcj-functions-admin.php:103
4423
  #, php-format
4424
  msgid "Replaced values: %s"
4425
  msgstr ""
4426
 
4427
- #: includes/functions/wcj-functions-admin.php:132
4428
  msgid "Install Booster Plus to unlock all features"
4429
  msgstr ""
4430
 
4431
- #: includes/functions/wcj-functions-admin.php:133
4432
  #, php-format
4433
  msgid ""
4434
  "Some settings fields are locked and you will need %s to modify all locked "
4435
  "fields."
4436
  msgstr ""
4437
 
4438
- #: includes/functions/wcj-functions-admin.php:134
4439
  msgid "Buy now"
4440
  msgstr ""
4441
 
4442
- #: includes/functions/wcj-functions-admin.php:134
4443
  msgid "Visit Booster Site"
4444
  msgstr ""
4445
 
4446
- #: includes/functions/wcj-functions-admin.php:138
4447
  #, php-format
4448
  msgid "Get <a href=\"%s\" target=\"_blank\">Booster Plus</a> to change value."
4449
  msgstr ""
4450
 
4451
- #: includes/functions/wcj-functions-admin.php:141
4452
  #, php-format
4453
  msgid ""
4454
  "Get <a href=\"%s\" target=\"_blank\">Booster Plus</a> to enable \"%s\" "
4455
  "option."
4456
  msgstr ""
4457
 
4458
- #: includes/functions/wcj-functions-admin.php:144
4459
  #, php-format
4460
  msgid "Get Booster Plus to enable \"%s\" option."
4461
  msgstr ""
4462
 
4463
- #: includes/functions/wcj-functions-admin.php:147
4464
  #, php-format
4465
  msgid ""
4466
  "Get <a href=\"%s\" target=\"_blank\">Booster Plus</a> to change values below."
4467
  msgstr ""
4468
 
4469
- #: includes/functions/wcj-functions-admin.php:150
4470
  #, php-format
4471
  msgid ""
4472
  "Get <a href=\"%s\" target=\"_blank\">Booster Plus</a> to change values above."
4473
  msgstr ""
4474
 
4475
- #: includes/functions/wcj-functions-admin.php:153
4476
  msgid "Get Booster Plus to change value."
4477
  msgstr ""
4478
 
@@ -5456,6 +5529,80 @@ msgstr ""
5456
  msgid "European Union"
5457
  msgstr ""
5458
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5459
  #: includes/functions/wcj-functions-currencies.php:15
5460
  msgid "United Arab Emirates Dirham"
5461
  msgstr ""
@@ -5922,7 +6069,7 @@ msgid "Polish Zloty"
5922
  msgstr ""
5923
 
5924
  #: includes/functions/wcj-functions-currencies.php:131
5925
- msgid "Paraguayan Guaraní"
5926
  msgstr ""
5927
 
5928
  #: includes/functions/wcj-functions-currencies.php:132
@@ -6105,116 +6252,232 @@ msgstr ""
6105
  msgid "Zimbabwean dollar"
6106
  msgstr ""
6107
 
6108
- #: includes/functions/wcj-functions-currencies.php:178
 
 
 
 
 
 
 
 
 
 
 
 
6109
  msgid "Bitcoin"
6110
  msgstr ""
6111
 
6112
- #: includes/functions/wcj-functions-currencies.php:179
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6113
  msgid "Ethereum"
6114
  msgstr ""
6115
 
6116
- #: includes/functions/wcj-functions-currencies.php:180
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6117
  msgid "myCred"
6118
  msgstr ""
6119
 
6120
- #: includes/functions/wcj-functions-exchange-rates.php:21
6121
  msgid "Yahoo"
6122
  msgstr ""
6123
 
6124
- #: includes/functions/wcj-functions-exchange-rates.php:22
6125
  msgid "European Central Bank (ECB)"
6126
  msgstr ""
6127
 
6128
- #: includes/functions/wcj-functions-exchange-rates.php:23
6129
  msgid "TCMB"
6130
  msgstr ""
6131
 
6132
- #: includes/functions/wcj-functions-exchange-rates.php:24
6133
  msgid "Fixer.io"
6134
  msgstr ""
6135
 
6136
- #: includes/functions/wcj-functions-general.php:377
 
 
 
 
 
 
 
 
6137
  #: includes/settings/wcj-settings-left-to-free-shipping.php:147
6138
  msgid "You have Free delivery"
6139
  msgstr ""
6140
 
6141
- #: includes/functions/wcj-functions-general.php:398
6142
  msgid "Before cart"
6143
  msgstr ""
6144
 
6145
- #: includes/functions/wcj-functions-general.php:399
6146
  msgid "Before cart table"
6147
  msgstr ""
6148
 
6149
- #: includes/functions/wcj-functions-general.php:400
6150
  msgid "Before cart contents"
6151
  msgstr ""
6152
 
6153
- #: includes/functions/wcj-functions-general.php:401
6154
  msgid "Cart contents"
6155
  msgstr ""
6156
 
6157
- #: includes/functions/wcj-functions-general.php:402
6158
  msgid "Cart coupon"
6159
  msgstr ""
6160
 
6161
- #: includes/functions/wcj-functions-general.php:403
6162
  msgid "Cart actions"
6163
  msgstr ""
6164
 
6165
- #: includes/functions/wcj-functions-general.php:404
6166
  msgid "After cart contents"
6167
  msgstr ""
6168
 
6169
- #: includes/functions/wcj-functions-general.php:405
6170
  msgid "After cart table"
6171
  msgstr ""
6172
 
6173
- #: includes/functions/wcj-functions-general.php:406
6174
  msgid "Cart collaterals"
6175
  msgstr ""
6176
 
6177
- #: includes/functions/wcj-functions-general.php:407
6178
  msgid "After cart"
6179
  msgstr ""
6180
 
6181
- #: includes/functions/wcj-functions-general.php:409
6182
  msgid "Before cart totals"
6183
  msgstr ""
6184
 
6185
- #: includes/functions/wcj-functions-general.php:410
6186
  msgid "Cart totals: Before shipping"
6187
  msgstr ""
6188
 
6189
- #: includes/functions/wcj-functions-general.php:411
6190
  msgid "Cart totals: After shipping"
6191
  msgstr ""
6192
 
6193
- #: includes/functions/wcj-functions-general.php:412
6194
  msgid "Cart totals: Before order total"
6195
  msgstr ""
6196
 
6197
- #: includes/functions/wcj-functions-general.php:413
6198
  msgid "Cart totals: After order total"
6199
  msgstr ""
6200
 
6201
- #: includes/functions/wcj-functions-general.php:414
6202
  msgid "Proceed to checkout"
6203
  msgstr ""
6204
 
6205
- #: includes/functions/wcj-functions-general.php:415
6206
  msgid "After cart totals"
6207
  msgstr ""
6208
 
6209
- #: includes/functions/wcj-functions-general.php:417
6210
  msgid "Before shipping calculator"
6211
  msgstr ""
6212
 
6213
- #: includes/functions/wcj-functions-general.php:418
6214
  msgid "After shipping calculator"
6215
  msgstr ""
6216
 
6217
- #: includes/functions/wcj-functions-general.php:420
6218
  msgid "If cart is empty"
6219
  msgstr ""
6220
 
@@ -6270,51 +6533,51 @@ msgstr ""
6270
  msgid "Last Sale Order Status"
6271
  msgstr ""
6272
 
6273
- #: includes/functions/wcj-functions-reports.php:80
6274
  msgid "Last 14 days"
6275
  msgstr ""
6276
 
6277
- #: includes/functions/wcj-functions-reports.php:85
6278
  msgid "Last 30 days"
6279
  msgstr ""
6280
 
6281
- #: includes/functions/wcj-functions-reports.php:90
6282
  msgid "Last 3 months"
6283
  msgstr ""
6284
 
6285
- #: includes/functions/wcj-functions-reports.php:95
6286
  msgid "Last 6 months"
6287
  msgstr ""
6288
 
6289
- #: includes/functions/wcj-functions-reports.php:100
6290
  msgid "Last 12 months"
6291
  msgstr ""
6292
 
6293
- #: includes/functions/wcj-functions-reports.php:105
6294
  msgid "Last 24 months"
6295
  msgstr ""
6296
 
6297
- #: includes/functions/wcj-functions-reports.php:110
6298
  msgid "Last 36 months"
6299
  msgstr ""
6300
 
6301
- #: includes/functions/wcj-functions-reports.php:115
6302
  msgid "Same days last month"
6303
  msgstr ""
6304
 
6305
- #: includes/functions/wcj-functions-reports.php:120
6306
  msgid "Same days last year"
6307
  msgstr ""
6308
 
6309
- #: includes/functions/wcj-functions-reports.php:125
6310
  msgid "Last year"
6311
  msgstr ""
6312
 
6313
- #: includes/functions/wcj-functions-reports.php:130
6314
  msgid "Yesterday"
6315
  msgstr ""
6316
 
6317
- #: includes/functions/wcj-functions-reports.php:135
6318
  msgid "Today"
6319
  msgstr ""
6320
 
@@ -6481,21 +6744,21 @@ msgstr ""
6481
  msgid "File is too big!"
6482
  msgstr ""
6483
 
6484
- #: includes/input-fields/class-wcj-product-input-fields-core.php:569
6485
  msgid "Select a country&hellip;"
6486
  msgstr ""
6487
 
6488
  #: includes/input-fields/wcj-product-input-fields-options.php:15
 
 
6489
  #: includes/settings/wcj-settings-checkout-core-fields.php:60
6490
  #: includes/settings/wcj-settings-checkout-files-upload.php:39
6491
  #: includes/settings/wcj-settings-export.php:70
6492
  #: includes/settings/wcj-settings-export.php:138
6493
  #: includes/settings/wcj-settings-export.php:220
6494
  #: includes/settings/wcj-settings-global-discount.php:50
6495
- #: includes/settings/wcj-settings-orders.php:96
6496
  #: includes/settings/wcj-settings-product-by-user.php:149
6497
- #: includes/settings/wcj-settings-product-listings.php:283
6498
- #: includes/settings/wcj-settings-products-xml.php:71
6499
  #: includes/settings/meta-box/wcj-settings-meta-box-price-by-user-role.php:37
6500
  #: includes/settings/meta-box/wcj-settings-meta-box-product-addons.php:21
6501
  #: includes/settings/meta-box/wcj-settings-meta-box-product-bookings.php:14
@@ -6617,12 +6880,12 @@ msgid "Checkbox: Default"
6617
  msgstr ""
6618
 
6619
  #: includes/input-fields/wcj-product-input-fields-options.php:104
6620
- #: includes/settings/wcj-settings-checkout-custom-fields.php:225
6621
  msgid "Not Checked"
6622
  msgstr ""
6623
 
6624
  #: includes/input-fields/wcj-product-input-fields-options.php:105
6625
- #: includes/settings/wcj-settings-checkout-custom-fields.php:226
6626
  #: includes/settings/wcj-settings-checkout-customization.php:26
6627
  msgid "Checked"
6628
  msgstr ""
@@ -6665,7 +6928,7 @@ msgid ""
6665
  msgstr ""
6666
 
6667
  #: includes/input-fields/wcj-product-input-fields-options.php:126
6668
- #: includes/settings/wcj-settings-checkout-custom-fields.php:232
6669
  msgid "Leave blank to use your current WordPress format"
6670
  msgstr ""
6671
 
@@ -6717,37 +6980,37 @@ msgid "Datepicker/Weekpicker: First week day"
6717
  msgstr ""
6718
 
6719
  #: includes/input-fields/wcj-product-input-fields-options.php:167
6720
- #: includes/settings/wcj-settings-checkout-custom-fields.php:270
6721
  msgid "Sunday"
6722
  msgstr ""
6723
 
6724
  #: includes/input-fields/wcj-product-input-fields-options.php:168
6725
- #: includes/settings/wcj-settings-checkout-custom-fields.php:271
6726
  msgid "Monday"
6727
  msgstr ""
6728
 
6729
  #: includes/input-fields/wcj-product-input-fields-options.php:169
6730
- #: includes/settings/wcj-settings-checkout-custom-fields.php:272
6731
  msgid "Tuesday"
6732
  msgstr ""
6733
 
6734
  #: includes/input-fields/wcj-product-input-fields-options.php:170
6735
- #: includes/settings/wcj-settings-checkout-custom-fields.php:273
6736
  msgid "Wednesday"
6737
  msgstr ""
6738
 
6739
  #: includes/input-fields/wcj-product-input-fields-options.php:171
6740
- #: includes/settings/wcj-settings-checkout-custom-fields.php:274
6741
  msgid "Thursday"
6742
  msgstr ""
6743
 
6744
  #: includes/input-fields/wcj-product-input-fields-options.php:172
6745
- #: includes/settings/wcj-settings-checkout-custom-fields.php:275
6746
  msgid "Friday"
6747
  msgstr ""
6748
 
6749
  #: includes/input-fields/wcj-product-input-fields-options.php:173
6750
- #: includes/settings/wcj-settings-checkout-custom-fields.php:276
6751
  msgid "Saturday"
6752
  msgstr ""
6753
 
@@ -6789,7 +7052,7 @@ msgid "If timepicker is selected, set interval (in minutes) here"
6789
  msgstr ""
6790
 
6791
  #: includes/input-fields/wcj-product-input-fields-options.php:200
6792
- #: includes/settings/wcj-settings-checkout-custom-fields.php:287
6793
  msgid "Timepicker: Interval"
6794
  msgstr ""
6795
 
@@ -6798,7 +7061,7 @@ msgid "If select/radio is selected, set options here. One option per line"
6798
  msgstr ""
6799
 
6800
  #: includes/input-fields/wcj-product-input-fields-options.php:207
6801
- #: includes/settings/wcj-settings-checkout-custom-fields.php:193
6802
  msgid "Select/Radio: Options"
6803
  msgstr ""
6804
 
@@ -7028,7 +7291,7 @@ msgid "Country Groups Generated."
7028
  msgstr ""
7029
 
7030
  #: includes/price-by-country/class-wcj-price-by-country-local.php:140
7031
- #: includes/settings/wcj-settings-price-by-country.php:291
7032
  msgid "Make empty price"
7033
  msgstr ""
7034
 
@@ -7099,7 +7362,7 @@ msgid "Orders Average / Day"
7099
  msgstr ""
7100
 
7101
  #: includes/reports/wcj-class-reports-monthly-sales.php:87
7102
- #: includes/reports/wcj-class-reports-sales.php:325
7103
  msgid "Total Sum"
7104
  msgstr ""
7105
 
@@ -7148,65 +7411,65 @@ msgstr ""
7148
  msgid "Reset Currency Rates"
7149
  msgstr ""
7150
 
7151
- #: includes/reports/wcj-class-reports-sales-daily.php:163
7152
- #: includes/reports/wcj-class-reports-sales.php:331
7153
  msgid "Reports Settings"
7154
  msgstr ""
7155
 
7156
- #: includes/reports/wcj-class-reports-sales-daily.php:180
7157
  msgid "From:"
7158
  msgstr ""
7159
 
7160
- #: includes/reports/wcj-class-reports-sales-daily.php:183
7161
  msgid "To:"
7162
  msgstr ""
7163
 
7164
- #: includes/reports/wcj-class-reports-sales-daily.php:186
7165
  msgid "Product:"
7166
  msgstr ""
7167
 
7168
- #: includes/reports/wcj-class-reports-sales-daily.php:275
7169
  #, php-format
7170
  msgid "Total: %d"
7171
  msgstr ""
7172
 
7173
- #: includes/reports/wcj-class-reports-sales-daily.php:279
7174
- #: includes/reports/wcj-class-reports-sales-daily.php:283
7175
  #, php-format
7176
  msgid "Total: %s"
7177
  msgstr ""
7178
 
7179
- #: includes/reports/wcj-class-reports-sales-daily.php:295
7180
  #, php-format
7181
  msgid "Total orders: %d"
7182
  msgstr ""
7183
 
7184
- #: includes/reports/wcj-class-reports-sales-daily.php:296
7185
- #: includes/reports/wcj-class-reports-sales.php:352
7186
  msgid "No sales data for current period."
7187
  msgstr ""
7188
 
7189
- #: includes/reports/wcj-class-reports-sales.php:124
7190
  msgid "Variation"
7191
  msgstr ""
7192
 
7193
- #: includes/reports/wcj-class-reports-sales.php:193
7194
  msgid "Last Sale"
7195
  msgstr ""
7196
 
7197
- #: includes/reports/wcj-class-reports-sales.php:194
7198
  msgid "Total"
7199
  msgstr ""
7200
 
7201
- #: includes/reports/wcj-class-reports-sales.php:322
7202
  msgid "Total Items"
7203
  msgstr ""
7204
 
7205
- #: includes/reports/wcj-class-reports-sales.php:328
7206
  msgid "Total Profit"
7207
  msgstr ""
7208
 
7209
- #: includes/reports/wcj-class-reports-sales.php:347
7210
  msgid "Filter products"
7211
  msgstr ""
7212
 
@@ -7330,12 +7593,10 @@ msgstr ""
7330
  #: includes/settings/wcj-settings-add-to-cart.php:21
7331
  #: includes/settings/wcj-settings-add-to-cart.php:99
7332
  #: includes/settings/wcj-settings-add-to-cart.php:117
7333
- #: includes/settings/wcj-settings-general.php:167
7334
- #: includes/settings/wcj-settings-product-images.php:19
7335
- #: includes/settings/wcj-settings-product-images.php:95
7336
  #: includes/settings/wcj-settings-shipping-calculator.php:69
7337
- #: includes/settings/wcj-settings-shipping-options.php:96
7338
- #: includes/settings/wcj-settings-shipping-options.php:142
7339
  #: includes/settings/wcj-settings-sorting.php:20
7340
  #: includes/settings/wcj-settings-sorting.php:99
7341
  #: includes/settings/wcj-settings-sorting.php:123
@@ -7363,6 +7624,11 @@ msgstr ""
7363
  msgid "categories"
7364
  msgstr ""
7365
 
 
 
 
 
 
7366
  #: includes/settings/wcj-settings-add-to-cart.php:70
7367
  msgid "Button text - single product view"
7368
  msgstr ""
@@ -7526,9 +7792,10 @@ msgstr ""
7526
  #: includes/settings/wcj-settings-product-bookings.php:86
7527
  #: includes/settings/wcj-settings-product-by-user-role.php:14
7528
  #: includes/settings/wcj-settings-product-by-user.php:59
 
7529
  #: includes/settings/wcj-settings-product-open-pricing.php:16
7530
  #: includes/settings/wcj-settings-products-per-page.php:14
7531
- #: includes/settings/wcj-settings-products-xml.php:17
7532
  #: includes/settings/wcj-settings-track-users.php:14
7533
  #: includes/settings/wcj-settings-url-coupons.php:14
7534
  #: includes/settings/wcj-settings-wholesale-price.php:15
@@ -7547,107 +7814,251 @@ msgstr ""
7547
  msgid "\"Booster: Active\" Admin Bar"
7548
  msgstr ""
7549
 
7550
- #: includes/settings/wcj-settings-admin-tools.php:14
7551
- msgid "Admin Tools Options"
 
 
7552
  msgstr ""
7553
 
7554
- #: includes/settings/wcj-settings-admin-tools.php:26
7555
- msgid "WooCommerce Log"
7556
  msgstr ""
7557
 
7558
- #: includes/settings/wcj-settings-admin-tools.php:33
7559
- msgid "Debug"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7560
  msgstr ""
7561
 
7562
- #: includes/settings/wcj-settings-admin-tools.php:40
7563
- msgid "PHP Memory Limit"
 
7564
  msgstr ""
7565
 
7566
- #: includes/settings/wcj-settings-admin-tools.php:41
7567
- msgid "megabytes."
 
7568
  msgstr ""
7569
 
7570
- #: includes/settings/wcj-settings-admin-tools.php:42
7571
- #: includes/settings/wcj-settings-admin-tools.php:51
7572
- #: includes/settings/wcj-settings-offer-price.php:139
7573
- #: includes/settings/wcj-settings-offer-price.php:147
7574
- #: includes/settings/meta-box/wcj-settings-meta-box-offer-price.php:43
7575
- #: includes/settings/meta-box/wcj-settings-meta-box-offer-price.php:52
7576
- msgid "Set zero to disable."
7577
  msgstr ""
7578
 
7579
- #: includes/settings/wcj-settings-admin-tools.php:49
7580
- msgid "PHP Time Limit"
 
7581
  msgstr ""
7582
 
7583
- #: includes/settings/wcj-settings-admin-tools.php:50
7584
- msgid "seconds."
 
 
 
 
 
 
 
 
 
 
 
 
7585
  msgstr ""
7586
 
7587
- #: includes/settings/wcj-settings-admin-tools.php:66
7588
- msgid "System Info"
 
7589
  msgstr ""
7590
 
7591
- #: includes/settings/wcj-settings-admin-tools.php:73
7592
- msgid "Show Order Meta"
7593
  msgstr ""
7594
 
7595
- #: includes/settings/wcj-settings-admin-tools.php:80
7596
- msgid "Show Product Meta"
7597
  msgstr ""
7598
 
7599
- #: includes/settings/wcj-settings-breadcrumbs.php:19
7600
- msgid "Change Breadcrumbs Home URL"
7601
  msgstr ""
7602
 
7603
- #: includes/settings/wcj-settings-breadcrumbs.php:26
7604
- msgid "Home URL"
7605
  msgstr ""
7606
 
7607
- #: includes/settings/wcj-settings-breadcrumbs.php:33
7608
- msgid "Hide Breadcrumbs"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7609
  msgstr ""
7610
 
 
 
 
 
 
 
 
 
 
7611
  #: includes/settings/wcj-settings-breadcrumbs.php:34
7612
  #: includes/settings/wcj-settings-cart-customization.php:20
7613
  #: includes/settings/wcj-settings-cart-customization.php:27
7614
  #: includes/settings/wcj-settings-checkout-customization.php:32
7615
  #: includes/settings/wcj-settings-currency.php:21
7616
  #: includes/settings/wcj-settings-order-custom-statuses.php:63
7617
- #: includes/settings/wcj-settings-orders.php:161
7618
  #: includes/settings/wcj-settings-pdf-invoicing.php:74
7619
  #: includes/settings/wcj-settings-product-bookings.php:92
7620
- #: includes/settings/wcj-settings-product-images.php:26
7621
- #: includes/settings/wcj-settings-product-images.php:33
7622
- #: includes/settings/wcj-settings-product-images.php:40
7623
- #: includes/settings/wcj-settings-product-images.php:47
7624
  #: includes/settings/wcj-settings-related-products.php:163
7625
  #: includes/settings/wcj-settings-related-products.php:169
 
 
 
7626
  #: includes/settings/wcj-settings-shipping-calculator.php:54
7627
  msgid "Hide"
7628
  msgstr ""
7629
 
7630
- #: includes/settings/wcj-settings-call-for-price.php:14
7631
- msgid "Call for Price Options"
7632
- msgstr ""
7633
-
7634
- #: includes/settings/wcj-settings-call-for-price.php:16
7635
- msgid ""
7636
- "Leave price empty when adding or editing products. Then set the options here."
7637
  msgstr ""
7638
 
7639
- #: includes/settings/wcj-settings-call-for-price.php:17
7640
- msgid "You can use shortcodes in options."
 
 
7641
  msgstr ""
7642
 
7643
- #: includes/settings/wcj-settings-call-for-price.php:21
7644
- msgid "Label to Show on Single"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7645
  msgstr ""
7646
 
7647
  #: includes/settings/wcj-settings-call-for-price.php:22
7648
  #: includes/settings/wcj-settings-call-for-price.php:32
7649
  #: includes/settings/wcj-settings-call-for-price.php:42
7650
  #: includes/settings/wcj-settings-call-for-price.php:52
 
7651
  msgid "This sets the html to output on empty price. Leave blank to disable."
7652
  msgstr ""
7653
 
@@ -7664,21 +8075,25 @@ msgid "Label to Show on Related"
7664
  msgstr ""
7665
 
7666
  #: includes/settings/wcj-settings-call-for-price.php:61
 
 
 
 
7667
  msgid "Hide Sale! Tag"
7668
  msgstr ""
7669
 
7670
- #: includes/settings/wcj-settings-call-for-price.php:62
7671
  msgid "Hide the tag"
7672
  msgstr ""
7673
 
7674
- #: includes/settings/wcj-settings-call-for-price.php:68
7675
  msgid "Make All Products Call for Price"
7676
  msgstr ""
7677
 
7678
- #: includes/settings/wcj-settings-call-for-price.php:70
7679
  msgid ""
7680
- "Enable this to make all products (except variable) prices empty. When "
7681
- "checkbox disabled, all prices go back to normal."
7682
  msgstr ""
7683
 
7684
  #: includes/settings/wcj-settings-cart-customization.php:19
@@ -7811,7 +8226,7 @@ msgid "Default"
7811
  msgstr ""
7812
 
7813
  #: includes/settings/wcj-settings-checkout-core-fields.php:66
7814
- #: includes/shortcodes/class-wcj-products-add-form-shortcodes.php:330
7815
  msgid "required"
7816
  msgstr ""
7817
 
@@ -7910,22 +8325,6 @@ msgstr ""
7910
  msgid "State"
7911
  msgstr ""
7912
 
7913
- #: includes/settings/wcj-settings-checkout-custom-fields.php:143
7914
- #: includes/settings/wcj-settings-checkout-files-upload.php:82
7915
- #: includes/settings/wcj-settings-checkout-files-upload.php:256
7916
- #: includes/settings/wcj-settings-offer-price.php:43
7917
- #: includes/settings/wcj-settings-offer-price.php:115
7918
- #: includes/settings/wcj-settings-offer-price.php:155
7919
- #: includes/settings/wcj-settings-offer-price.php:163
7920
- #: includes/settings/wcj-settings-offer-price.php:171
7921
- #: includes/settings/wcj-settings-offer-price.php:179
7922
- #: includes/settings/wcj-settings-orders.php:103
7923
- #: includes/settings/wcj-settings-product-listings.php:290
7924
- #: includes/tools/class-wcj-order-statuses-tool.php:139
7925
- #: includes/tools/class-wcj-order-statuses-tool.php:211
7926
- msgid "Label"
7927
- msgstr ""
7928
-
7929
  #: includes/settings/wcj-settings-checkout-custom-fields.php:164
7930
  msgid "Section"
7931
  msgstr ""
@@ -7963,59 +8362,63 @@ msgstr ""
7963
  msgid "Clear"
7964
  msgstr ""
7965
 
7966
- #: includes/settings/wcj-settings-checkout-custom-fields.php:194
7967
- msgid "One option per line"
7968
  msgstr ""
7969
 
7970
  #: includes/settings/wcj-settings-checkout-custom-fields.php:201
 
 
 
 
7971
  msgid "Select: Use select2 Library"
7972
  msgstr ""
7973
 
7974
- #: includes/settings/wcj-settings-checkout-custom-fields.php:209
7975
  msgid "Checkbox: Value for ON"
7976
  msgstr ""
7977
 
7978
- #: includes/settings/wcj-settings-checkout-custom-fields.php:215
7979
  msgid "Checkbox: Value for OFF"
7980
  msgstr ""
7981
 
7982
- #: includes/settings/wcj-settings-checkout-custom-fields.php:221
7983
  msgid "Checkbox: Default Value"
7984
  msgstr ""
7985
 
7986
- #: includes/settings/wcj-settings-checkout-custom-fields.php:230
7987
  msgid "Datepicker/Weekpicker: Date Format"
7988
  msgstr ""
7989
 
7990
- #: includes/settings/wcj-settings-checkout-custom-fields.php:231
7991
  msgid ""
7992
  "Visit <a href=\"https://codex.wordpress.org/Formatting_Date_and_Time\" "
7993
  "target=\"_blank\">documentation on date and time formatting</a> for valid "
7994
  "date formats"
7995
  msgstr ""
7996
 
7997
- #: includes/settings/wcj-settings-checkout-custom-fields.php:238
7998
  msgid "Datepicker/Weekpicker: Min Date"
7999
  msgstr ""
8000
 
8001
- #: includes/settings/wcj-settings-checkout-custom-fields.php:239
8002
  #: includes/settings/wcj-settings-checkout-custom-fields.php:246
 
8003
  msgid "days"
8004
  msgstr ""
8005
 
8006
- #: includes/settings/wcj-settings-checkout-custom-fields.php:245
8007
  msgid "Datepicker/Weekpicker: Max Date"
8008
  msgstr ""
8009
 
8010
- #: includes/settings/wcj-settings-checkout-custom-fields.php:252
8011
  msgid "Datepicker/Weekpicker: Add Year Selector"
8012
  msgstr ""
8013
 
8014
- #: includes/settings/wcj-settings-checkout-custom-fields.php:258
8015
  msgid "Datepicker/Weekpicker: Year Selector: Year Range"
8016
  msgstr ""
8017
 
8018
- #: includes/settings/wcj-settings-checkout-custom-fields.php:259
8019
  msgid ""
8020
  "The range of years displayed in the year drop-down: either relative to "
8021
  "today's year (\"-nn:+nn\"), relative to the currently selected year (\"c-nn:c"
@@ -8024,63 +8427,83 @@ msgid ""
8024
  "restrict which dates may be selected use the minDate and/or maxDate options."
8025
  msgstr ""
8026
 
8027
- #: includes/settings/wcj-settings-checkout-custom-fields.php:265
8028
  msgid "Datepicker/Weekpicker: First Week Day"
8029
  msgstr ""
8030
 
8031
- #: includes/settings/wcj-settings-checkout-custom-fields.php:280
8032
  msgid "Timepicker: Time Format"
8033
  msgstr ""
8034
 
8035
- #: includes/settings/wcj-settings-checkout-custom-fields.php:281
8036
  msgid ""
8037
  "Visit <a href=\"http://timepicker.co/options/\" target=\"_blank\">timepicker "
8038
  "options page</a> for valid time formats"
8039
  msgstr ""
8040
 
8041
- #: includes/settings/wcj-settings-checkout-custom-fields.php:288
8042
  msgid "minutes"
8043
  msgstr ""
8044
 
8045
- #: includes/settings/wcj-settings-checkout-custom-fields.php:294
8046
- #: includes/settings/wcj-settings-product-listings.php:50
8047
  msgid "Exclude Categories"
8048
  msgstr ""
8049
 
8050
- #: includes/settings/wcj-settings-checkout-custom-fields.php:295
8051
  msgid "Hide this field if there is a product of selected category in cart."
8052
  msgstr ""
8053
 
8054
- #: includes/settings/wcj-settings-checkout-custom-fields.php:303
8055
  msgid "Include Categories"
8056
  msgstr ""
8057
 
8058
- #: includes/settings/wcj-settings-checkout-custom-fields.php:304
8059
  msgid ""
8060
  "Show this field only if there is a product of selected category in cart."
8061
  msgstr ""
8062
 
8063
- #: includes/settings/wcj-settings-checkout-custom-fields.php:312
8064
  #: includes/settings/wcj-settings-global-discount.php:137
8065
  #: includes/settings/wcj-settings-product-addons.php:140
8066
  #: includes/settings/wcj-settings-related-products.php:223
8067
  msgid "Exclude Products"
8068
  msgstr ""
8069
 
8070
- #: includes/settings/wcj-settings-checkout-custom-fields.php:313
8071
  msgid "Hide this field if there is a selected product in cart."
8072
  msgstr ""
8073
 
8074
- #: includes/settings/wcj-settings-checkout-custom-fields.php:321
8075
  #: includes/settings/wcj-settings-global-discount.php:126
8076
  #: includes/settings/wcj-settings-related-products.php:212
8077
  msgid "Include Products"
8078
  msgstr ""
8079
 
8080
- #: includes/settings/wcj-settings-checkout-custom-fields.php:322
8081
  msgid "Show this field only if there is a selected product in cart."
8082
  msgstr ""
8083
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8084
  #: includes/settings/wcj-settings-checkout-custom-info.php:14
8085
  msgid "Checkout Custom Info Blocks"
8086
  msgstr ""
@@ -8246,11 +8669,13 @@ msgid "Customize \"order received\" message"
8246
  msgstr ""
8247
 
8248
  #: includes/settings/wcj-settings-checkout-customization.php:84
 
 
8249
  msgid "You can use HTML and/or shortcodes here."
8250
  msgstr ""
8251
 
8252
  #: includes/settings/wcj-settings-checkout-files-upload.php:22
8253
- #: includes/settings/wcj-settings-products-xml.php:22
8254
  msgid "Total Files"
8255
  msgstr ""
8256
 
@@ -8384,24 +8809,24 @@ msgid ""
8384
  msgstr ""
8385
 
8386
  #: includes/settings/wcj-settings-checkout-files-upload.php:219
8387
- #: includes/settings/wcj-settings-product-input-fields.php:279
8388
  msgid "Emails Options"
8389
  msgstr ""
8390
 
8391
  #: includes/settings/wcj-settings-checkout-files-upload.php:224
8392
- #: includes/settings/wcj-settings-product-input-fields.php:284
8393
  msgid "Attach Files to Admin's New Order Emails"
8394
  msgstr ""
8395
 
8396
  #: includes/settings/wcj-settings-checkout-files-upload.php:225
8397
  #: includes/settings/wcj-settings-checkout-files-upload.php:232
8398
- #: includes/settings/wcj-settings-product-input-fields.php:285
8399
  #: includes/settings/wcj-settings-product-input-fields.php:292
 
8400
  msgid "Attach"
8401
  msgstr ""
8402
 
8403
  #: includes/settings/wcj-settings-checkout-files-upload.php:231
8404
- #: includes/settings/wcj-settings-product-input-fields.php:291
8405
  msgid "Attach Files to Customer's Processing Order Emails"
8406
  msgstr ""
8407
 
@@ -8438,8 +8863,9 @@ msgstr ""
8438
 
8439
  #: includes/settings/wcj-settings-checkout-files-upload.php:285
8440
  #: includes/settings/wcj-settings-eu-vat-number.php:203
8441
- #: includes/settings/wcj-settings-general.php:76
8442
  #: includes/settings/wcj-settings-product-custom-info.php:188
 
8443
  msgid "Advanced Options"
8444
  msgstr ""
8445
 
@@ -8515,7 +8941,7 @@ msgid "%s till next update."
8515
  msgstr ""
8516
 
8517
  #: includes/settings/wcj-settings-currency-exchange-rates.php:20
8518
- #: includes/settings/wcj-settings-products-xml.php:50
8519
  #, php-format
8520
  msgid "%s seconds till next update."
8521
  msgstr ""
@@ -8531,15 +8957,11 @@ msgstr ""
8531
  #: includes/settings/wcj-settings-currency-per-product.php:102
8532
  #: includes/settings/wcj-settings-multicurrency-base-price.php:24
8533
  #: includes/settings/wcj-settings-multicurrency.php:22
8534
- #: includes/settings/wcj-settings-payment-gateways-currency.php:61
8535
  #: includes/settings/wcj-settings-price-by-country.php:244
8536
  msgid "Exchange Rates Updates"
8537
  msgstr ""
8538
 
8539
- #: includes/settings/wcj-settings-currency-exchange-rates.php:46
8540
- msgid "Exchange Rates Server"
8541
- msgstr ""
8542
-
8543
  #: includes/settings/wcj-settings-currency-exchange-rates.php:53
8544
  msgid "Exchange Rates Rounding"
8545
  msgstr ""
@@ -8693,7 +9115,7 @@ msgstr ""
8693
  #: includes/settings/wcj-settings-currency-per-product.php:107
8694
  #: includes/settings/wcj-settings-multicurrency-base-price.php:29
8695
  #: includes/settings/wcj-settings-multicurrency.php:28
8696
- #: includes/settings/wcj-settings-payment-gateways-currency.php:66
8697
  #: includes/settings/wcj-settings-price-by-country.php:249
8698
  msgid "Enter Rates Manually"
8699
  msgstr ""
@@ -8701,7 +9123,7 @@ msgstr ""
8701
  #: includes/settings/wcj-settings-currency-per-product.php:108
8702
  #: includes/settings/wcj-settings-multicurrency-base-price.php:30
8703
  #: includes/settings/wcj-settings-multicurrency.php:29
8704
- #: includes/settings/wcj-settings-payment-gateways-currency.php:67
8705
  #: includes/settings/wcj-settings-price-by-country.php:250
8706
  msgid "Automatically via Currency Exchange Rates module"
8707
  msgstr ""
@@ -8709,7 +9131,7 @@ msgstr ""
8709
  #: includes/settings/wcj-settings-currency-per-product.php:111
8710
  #: includes/settings/wcj-settings-multicurrency-base-price.php:33
8711
  #: includes/settings/wcj-settings-multicurrency.php:32
8712
- #: includes/settings/wcj-settings-payment-gateways-currency.php:70
8713
  #: includes/settings/wcj-settings-price-by-country.php:253
8714
  msgid "Visit"
8715
  msgstr ""
@@ -8717,7 +9139,7 @@ msgstr ""
8717
  #: includes/settings/wcj-settings-currency-per-product.php:111
8718
  #: includes/settings/wcj-settings-multicurrency-base-price.php:33
8719
  #: includes/settings/wcj-settings-multicurrency.php:32
8720
- #: includes/settings/wcj-settings-payment-gateways-currency.php:70
8721
  #: includes/settings/wcj-settings-price-by-country.php:253
8722
  msgid "Currency Exchange Rates module"
8723
  msgstr ""
@@ -8741,11 +9163,11 @@ msgstr ""
8741
  msgid "Total Currencies"
8742
  msgstr ""
8743
 
8744
- #: includes/settings/wcj-settings-currency-per-product.php:184
8745
  msgid "Product Authors"
8746
  msgstr ""
8747
 
8748
- #: includes/settings/wcj-settings-currency-per-product.php:196
8749
  msgid "Product Authors User Roles"
8750
  msgstr ""
8751
 
@@ -8795,9 +9217,9 @@ msgid ""
8795
  msgstr ""
8796
 
8797
  #: includes/settings/wcj-settings-custom-css.php:36
8798
- #: includes/settings/wcj-settings-product-add-to-cart.php:172
8799
- #: includes/settings/wcj-settings-product-add-to-cart.php:203
8800
- #: includes/settings/wcj-settings-product-add-to-cart.php:220
8801
  msgid "This will add meta box to each product's edit page"
8802
  msgstr ""
8803
 
@@ -8939,14 +9361,6 @@ msgstr ""
8939
  msgid "Button position on the Cart page"
8940
  msgstr ""
8941
 
8942
- #: includes/settings/wcj-settings-empty-cart.php:40
8943
- #: includes/settings/wcj-settings-empty-cart.php:55
8944
- #: includes/settings/wcj-settings-offer-price.php:69
8945
- #: includes/settings/wcj-settings-offer-price.php:90
8946
- #: includes/settings/wcj-settings-orders.php:154
8947
- msgid "Do not add"
8948
- msgstr ""
8949
-
8950
  #: includes/settings/wcj-settings-empty-cart.php:41
8951
  msgid "After Cart"
8952
  msgstr ""
@@ -9103,7 +9517,7 @@ msgid "Export Options"
9103
  msgstr ""
9104
 
9105
  #: includes/settings/wcj-settings-export.php:20
9106
- #: includes/settings/wcj-settings-pdf-invoicing.php:118
9107
  msgid "CSV Separator"
9108
  msgstr ""
9109
 
@@ -9247,7 +9661,7 @@ msgid "Grouped Products"
9247
  msgstr ""
9248
 
9249
  #: includes/settings/wcj-settings-free-price.php:16
9250
- #: includes/settings/wcj-settings-product-add-to-cart.php:230
9251
  msgid "External Products"
9252
  msgstr ""
9253
 
@@ -9275,34 +9689,34 @@ msgstr ""
9275
  msgid "Variations"
9276
  msgstr ""
9277
 
9278
- #: includes/settings/wcj-settings-general.php:35
9279
  msgid "Shortcodes Options"
9280
  msgstr ""
9281
 
9282
- #: includes/settings/wcj-settings-general.php:40
9283
  msgid "Enable All Shortcodes in WordPress Text Widgets"
9284
  msgstr ""
9285
 
9286
- #: includes/settings/wcj-settings-general.php:41
9287
  msgid ""
9288
  "This will enable all (including non Booster's) shortcodes in WordPress text "
9289
  "widgets."
9290
  msgstr ""
9291
 
9292
- #: includes/settings/wcj-settings-general.php:48
9293
  msgid "Disable Booster's Shortcodes"
9294
  msgstr ""
9295
 
9296
- #: includes/settings/wcj-settings-general.php:49
9297
  msgid "Disable all Booster's shortcodes (for memory saving)."
9298
  msgstr ""
9299
 
9300
- #: includes/settings/wcj-settings-general.php:50
9301
- #: includes/settings/wcj-settings-general.php:99
9302
- #: includes/settings/wcj-settings-general.php:113
9303
- #: includes/settings/wcj-settings-general.php:120
9304
- #: includes/settings/wcj-settings-general.php:127
9305
- #: includes/settings/wcj-settings-general.php:134
9306
  #: includes/settings/wcj-settings-pdf-invoicing-styling.php:126
9307
  #: includes/settings/wcj-settings-price-by-user-role.php:56
9308
  #: includes/settings/wcj-settings-price-by-user-role.php:88
@@ -9313,99 +9727,99 @@ msgstr ""
9313
  msgid "Disable"
9314
  msgstr ""
9315
 
9316
- #: includes/settings/wcj-settings-general.php:60
9317
- #: includes/settings/wcj-settings-general.php:65
9318
  msgid "Product Revisions"
9319
  msgstr ""
9320
 
9321
- #: includes/settings/wcj-settings-general.php:81
9322
  msgid "Recalculate Cart Totals on Every Page Load"
9323
  msgstr ""
9324
 
9325
- #: includes/settings/wcj-settings-general.php:88
9326
  msgid "Session Type in Booster"
9327
  msgstr ""
9328
 
9329
- #: includes/settings/wcj-settings-general.php:93
9330
  msgid "Standard PHP sessions"
9331
  msgstr ""
9332
 
9333
- #: includes/settings/wcj-settings-general.php:94
9334
  msgid "WC sessions"
9335
  msgstr ""
9336
 
9337
- #: includes/settings/wcj-settings-general.php:98
9338
  msgid "Disable Loading Datepicker/Weekpicker CSS"
9339
  msgstr ""
9340
 
9341
- #: includes/settings/wcj-settings-general.php:105
9342
  msgid "Datepicker/Weekpicker CSS"
9343
  msgstr ""
9344
 
9345
- #: includes/settings/wcj-settings-general.php:112
9346
  msgid "Disable Loading Datepicker/Weekpicker JavaScript"
9347
  msgstr ""
9348
 
9349
- #: includes/settings/wcj-settings-general.php:119
9350
  msgid "Disable Loading Timepicker CSS"
9351
  msgstr ""
9352
 
9353
- #: includes/settings/wcj-settings-general.php:126
9354
  msgid "Disable Loading Timepicker JavaScript"
9355
  msgstr ""
9356
 
9357
- #: includes/settings/wcj-settings-general.php:133
9358
  msgid "Disable Saving PDFs in PHP directory for temporary files"
9359
  msgstr ""
9360
 
9361
- #: includes/settings/wcj-settings-general.php:144
9362
  msgid "PayPal Email per Product Options"
9363
  msgstr ""
9364
 
9365
- #: includes/settings/wcj-settings-general.php:149
9366
  msgid "PayPal Email per Product"
9367
  msgstr ""
9368
 
9369
- #: includes/settings/wcj-settings-general.php:151
9370
  #: includes/settings/wcj-settings-product-by-date.php:54
9371
  #: includes/settings/wcj-settings-product-by-time.php:54
9372
  msgid "This will add new meta box to each product's edit page."
9373
  msgstr ""
9374
 
9375
- #: includes/settings/wcj-settings-general.php:161
9376
  msgid "Session Expiration Options"
9377
  msgstr ""
9378
 
9379
- #: includes/settings/wcj-settings-general.php:166
9380
- #: includes/settings/wcj-settings-general.php:181
9381
  msgid "Session Expiration"
9382
  msgstr ""
9383
 
9384
- #: includes/settings/wcj-settings-general.php:173
9385
  msgid "Session Expiring"
9386
  msgstr ""
9387
 
9388
- #: includes/settings/wcj-settings-general.php:174
9389
  msgid "In seconds. Default: 47 hours (60 * 60 * 47)"
9390
  msgstr ""
9391
 
9392
- #: includes/settings/wcj-settings-general.php:182
9393
  msgid "In seconds. Default: 48 hours (60 * 60 * 48)"
9394
  msgstr ""
9395
 
9396
- #: includes/settings/wcj-settings-general.php:193
9397
  msgid "Booster User Roles Changer Options"
9398
  msgstr ""
9399
 
9400
- #: includes/settings/wcj-settings-general.php:194
9401
  msgid "This will add user roles changer tool to admin bar."
9402
  msgstr ""
9403
 
9404
- #: includes/settings/wcj-settings-general.php:200
9405
  msgid "Booster User Roles Changer"
9406
  msgstr ""
9407
 
9408
- #: includes/settings/wcj-settings-general.php:209
9409
  msgid "Enabled for"
9410
  msgstr ""
9411
 
@@ -9415,7 +9829,7 @@ msgstr ""
9415
 
9416
  #: includes/settings/wcj-settings-global-discount.php:28
9417
  #: includes/settings/wcj-settings-product-by-user.php:138
9418
- #: includes/settings/wcj-settings-products-xml.php:26
9419
  #: includes/shipping/class-wc-shipping-wcj-custom.php:157
9420
  msgid "Press Save changes after you change this number."
9421
  msgstr ""
@@ -9465,7 +9879,7 @@ msgstr ""
9465
 
9466
  #: includes/settings/wcj-settings-global-discount.php:83
9467
  #: includes/settings/wcj-settings-product-add-to-cart.php:65
9468
- #: includes/settings/wcj-settings-products-xml.php:197
9469
  msgid "All products"
9470
  msgstr ""
9471
 
@@ -9474,7 +9888,7 @@ msgid "Only products that are already on sale"
9474
  msgstr ""
9475
 
9476
  #: includes/settings/wcj-settings-global-discount.php:85
9477
- #: includes/settings/wcj-settings-products-xml.php:199
9478
  msgid "Only products that are not on sale"
9479
  msgstr ""
9480
 
@@ -9743,20 +10157,20 @@ msgid ""
9743
  "added."
9744
  msgstr ""
9745
 
9746
- #: includes/settings/wcj-settings-multicurrency.php:162
9747
  msgid "Role Defaults"
9748
  msgstr ""
9749
 
9750
- #: includes/settings/wcj-settings-multicurrency.php:169
9751
  msgid "Roles"
9752
  msgstr ""
9753
 
9754
- #: includes/settings/wcj-settings-multicurrency.php:170
9755
  #: includes/settings/wcj-settings-wholesale-price.php:137
9756
  msgid "Save settings after you change this option. Leave blank to disable."
9757
  msgstr ""
9758
 
9759
- #: includes/settings/wcj-settings-multicurrency.php:193
9760
  msgid "No default currency"
9761
  msgstr ""
9762
 
@@ -10017,16 +10431,21 @@ msgid "Exclude Shipping from Cart Total"
10017
  msgstr ""
10018
 
10019
  #: includes/settings/wcj-settings-order-min-amount.php:29
 
10020
  #: includes/settings/wcj-settings-payment-gateways-fees.php:99
10021
  msgid "Exclude"
10022
  msgstr ""
10023
 
10024
  #: includes/settings/wcj-settings-order-min-amount.php:35
 
 
 
 
10025
  msgid "Error message"
10026
  msgstr ""
10027
 
10028
- #: includes/settings/wcj-settings-order-min-amount.php:37
10029
- #: includes/settings/wcj-settings-order-min-amount.php:54
10030
  #, php-format
10031
  msgid ""
10032
  "Message to customer if order is below minimum amount. Default: You must have "
@@ -10034,55 +10453,56 @@ msgid ""
10034
  "is %s."
10035
  msgstr ""
10036
 
10037
- #: includes/settings/wcj-settings-order-min-amount.php:45
10038
  msgid "Add notice to cart page also"
10039
  msgstr ""
10040
 
10041
- #: includes/settings/wcj-settings-order-min-amount.php:52
10042
  msgid "Message on cart page"
10043
  msgstr ""
10044
 
10045
- #: includes/settings/wcj-settings-order-min-amount.php:62
10046
  #: includes/settings/wcj-settings-pdf-invoicing.php:87
 
10047
  msgid "Advanced"
10048
  msgstr ""
10049
 
10050
- #: includes/settings/wcj-settings-order-min-amount.php:63
10051
  msgid "Cart notice method"
10052
  msgstr ""
10053
 
10054
- #: includes/settings/wcj-settings-order-min-amount.php:68
10055
  msgid "Print notice"
10056
  msgstr ""
10057
 
10058
- #: includes/settings/wcj-settings-order-min-amount.php:69
10059
  msgid "Add notice"
10060
  msgstr ""
10061
 
10062
- #: includes/settings/wcj-settings-order-min-amount.php:73
10063
  msgid "Cart notice type"
10064
  msgstr ""
10065
 
10066
- #: includes/settings/wcj-settings-order-min-amount.php:78
10067
  #: includes/settings/wcj-settings-payment-gateways-min-max.php:55
10068
  msgid "Notice"
10069
  msgstr ""
10070
 
10071
- #: includes/settings/wcj-settings-order-min-amount.php:79
10072
  #: includes/settings/wcj-settings-payment-gateways-min-max.php:56
10073
  msgid "Error"
10074
  msgstr ""
10075
 
10076
- #: includes/settings/wcj-settings-order-min-amount.php:83
10077
  msgid ""
10078
  "Stop customer from seeing the Checkout page if minimum amount not reached"
10079
  msgstr ""
10080
 
10081
- #: includes/settings/wcj-settings-order-min-amount.php:84
10082
  msgid "Redirect back to Cart page"
10083
  msgstr ""
10084
 
10085
- #: includes/settings/wcj-settings-order-min-amount.php:94
10086
  msgid "Order Minimum Amount by User Role"
10087
  msgstr ""
10088
 
@@ -10240,20 +10660,6 @@ msgstr ""
10240
  msgid "Minimum Quantity"
10241
  msgstr ""
10242
 
10243
- #: includes/settings/wcj-settings-order-quantities.php:21
10244
- #: includes/settings/wcj-settings-order-quantities.php:79
10245
- #: includes/settings/wcj-settings-orders.php:208
10246
- #: includes/settings/wcj-settings-price-formats.php:37
10247
- #: includes/settings/wcj-settings-product-listings.php:131
10248
- #: includes/settings/wcj-settings-product-listings.php:214
10249
- #: includes/settings/wcj-settings-product-listings.php:260
10250
- #: includes/settings/wcj-settings-product-listings.php:318
10251
- #: includes/settings/wcj-settings-shipping-by-condition.php:25
10252
- #: includes/settings/wcj-settings-shipping-options.php:21
10253
- #: includes/settings/wcj-settings-stock.php:23
10254
- msgid "Enable section"
10255
- msgstr ""
10256
-
10257
  #: includes/settings/wcj-settings-order-quantities.php:27
10258
  #: includes/settings/wcj-settings-order-quantities.php:85
10259
  msgid "Cart Total Quantity"
@@ -10284,6 +10690,7 @@ msgstr ""
10284
 
10285
  #: includes/settings/wcj-settings-order-quantities.php:54
10286
  #: includes/settings/wcj-settings-order-quantities.php:112
 
10287
  msgid "This will add meta box to each product's edit page."
10288
  msgstr ""
10289
 
@@ -10337,22 +10744,22 @@ msgstr ""
10337
  msgid "Force quantity correction on add to cart button click"
10338
  msgstr ""
10339
 
10340
- #: includes/settings/wcj-settings-orders.php:14
10341
  #: includes/settings/wcj-settings-orders.php:19
 
10342
  msgid "Admin Order Currency"
10343
  msgstr ""
10344
 
10345
- #: includes/settings/wcj-settings-orders.php:21
10346
  msgid ""
10347
  "When enabled this will add \"Booster: Orders\" metabox to each order's edit "
10348
  "page."
10349
  msgstr ""
10350
 
10351
- #: includes/settings/wcj-settings-orders.php:27
10352
  msgid "Admin Order Currency Method"
10353
  msgstr ""
10354
 
10355
- #: includes/settings/wcj-settings-orders.php:28
10356
  msgid ""
10357
  "Choose if you want changed order currency to be saved directly to DB, or if "
10358
  "you want to use filter. When using <em>filter</em> method, changes will be "
@@ -10361,177 +10768,98 @@ msgid ""
10361
  "Booster plugin is removed."
10362
  msgstr ""
10363
 
10364
- #: includes/settings/wcj-settings-orders.php:34
10365
  msgid "Directly to DB"
10366
  msgstr ""
10367
 
10368
- #: includes/settings/wcj-settings-orders.php:42
10369
  msgid "Orders Auto-Complete"
10370
  msgstr ""
10371
 
10372
- #: includes/settings/wcj-settings-orders.php:44
10373
  msgid "This section lets you enable orders auto-complete function."
10374
  msgstr ""
10375
 
10376
- #: includes/settings/wcj-settings-orders.php:48
10377
  msgid "Auto-complete all WooCommerce orders"
10378
  msgstr ""
10379
 
10380
- #: includes/settings/wcj-settings-orders.php:50
10381
  msgid ""
10382
  "E.g. if you sell digital products then you are not shipping anything and you "
10383
  "may want auto-complete all your orders."
10384
  msgstr ""
10385
 
10386
- #: includes/settings/wcj-settings-orders.php:60
10387
- #: includes/settings/wcj-settings-purchase-data.php:155
10388
- msgid "Admin Orders List Custom Columns"
10389
  msgstr ""
10390
 
10391
- #: includes/settings/wcj-settings-orders.php:62
10392
- msgid "This section lets you add custom columns to WooCommerce orders list."
10393
  msgstr ""
10394
 
10395
- #: includes/settings/wcj-settings-orders.php:67
10396
- #: includes/settings/wcj-settings-orders.php:74
10397
- msgid "Add column and filtering"
10398
  msgstr ""
10399
 
10400
  #: includes/settings/wcj-settings-orders.php:80
10401
- #: includes/settings/wcj-settings-product-listings.php:266
10402
- msgid "Custom Columns Total Number"
 
10403
  msgstr ""
10404
 
10405
- #: includes/settings/wcj-settings-orders.php:95
10406
- #: includes/settings/wcj-settings-product-listings.php:282
10407
- msgid "Custom Column"
10408
  msgstr ""
10409
 
10410
- #: includes/settings/wcj-settings-orders.php:97
10411
- #: includes/settings/wcj-settings-product-listings.php:284
10412
- msgid "Key:"
 
10413
  msgstr ""
10414
 
10415
- #: includes/settings/wcj-settings-orders.php:111
10416
- #: includes/settings/wcj-settings-product-listings.php:298
10417
- msgid "You can use shortcodes and/or HTML here."
10418
  msgstr ""
10419
 
10420
- #: includes/settings/wcj-settings-orders.php:118
10421
- msgid "Sortable"
10422
  msgstr ""
10423
 
10424
- #: includes/settings/wcj-settings-orders.php:124
10425
- msgid "By meta (as text)"
10426
  msgstr ""
10427
 
10428
- #: includes/settings/wcj-settings-orders.php:125
10429
- msgid "By meta (as numbers)"
 
 
 
10430
  msgstr ""
10431
 
10432
- #: includes/settings/wcj-settings-orders.php:130
10433
- msgid "Key (if sortable)"
10434
  msgstr ""
10435
 
10436
- #: includes/settings/wcj-settings-orders.php:144
10437
- msgid "Admin Orders List Multiple Status"
10438
  msgstr ""
10439
 
10440
- #: includes/settings/wcj-settings-orders.php:149
10441
- msgid "Multiple Status Filtering"
10442
  msgstr ""
10443
 
10444
- #: includes/settings/wcj-settings-orders.php:155
10445
- msgid "Add as multiple select"
10446
  msgstr ""
10447
 
10448
- #: includes/settings/wcj-settings-orders.php:156
10449
- msgid "Add as checkboxes"
 
10450
  msgstr ""
10451
 
10452
- #: includes/settings/wcj-settings-orders.php:160
10453
- msgid "Hide Default Statuses Menu"
10454
- msgstr ""
10455
-
10456
- #: includes/settings/wcj-settings-orders.php:167
10457
- msgid "Add \"Not Completed\" Status Link to Default Statuses Menu"
10458
- msgstr ""
10459
-
10460
- #: includes/settings/wcj-settings-orders.php:178
10461
- msgid "Admin Orders List Columns Order"
10462
- msgstr ""
10463
-
10464
- #: includes/settings/wcj-settings-orders.php:183
10465
- msgid "Columns Order"
10466
- msgstr ""
10467
-
10468
- #: includes/settings/wcj-settings-orders.php:191
10469
- #: includes/settings/wcj-settings-product-listings.php:325
10470
- msgid "Default columns order"
10471
- msgstr ""
10472
-
10473
- #: includes/settings/wcj-settings-orders.php:201
10474
- msgid "Bulk Regenerate Download Permissions for Orders"
10475
- msgstr ""
10476
-
10477
- #: includes/settings/wcj-settings-orders.php:206
10478
- msgid "Bulk Regenerate Download Permissions"
10479
- msgstr ""
10480
-
10481
- #: includes/settings/wcj-settings-orders.php:215
10482
- msgid "Add Regenerate Download Permissions to Bulk Actions"
10483
- msgstr ""
10484
-
10485
- #: includes/settings/wcj-settings-orders.php:216
10486
- msgid ""
10487
- "When enabled this will add \"Regenerate download permissions\" action to "
10488
- "\"Bulk Actions\" select box on admin orders page."
10489
- msgstr ""
10490
-
10491
- #: includes/settings/wcj-settings-orders.php:224
10492
- msgid "Regenerate Download Permissions for All Orders"
10493
- msgstr ""
10494
-
10495
- #: includes/settings/wcj-settings-orders.php:225
10496
- msgid ""
10497
- "Check this box and press \"Save changes\" button to start regeneration. "
10498
- "Please note that both module and current section must be enabled."
10499
- msgstr ""
10500
-
10501
- #: includes/settings/wcj-settings-orders.php:226
10502
- msgid "Regenerate"
10503
- msgstr ""
10504
-
10505
- #: includes/settings/wcj-settings-payment-gateways-by-country.php:16
10506
- #: includes/settings/wcj-settings-payment-gateways-by-currency.php:16
10507
- #: includes/settings/wcj-settings-payment-gateways-by-user-role.php:16
10508
- #: includes/settings/wcj-settings-shipping-by-condition.php:20
10509
- msgid "Leave empty to disable."
10510
- msgstr ""
10511
-
10512
- #: includes/settings/wcj-settings-payment-gateways-by-country.php:39
10513
- msgid "Include Countries"
10514
- msgstr ""
10515
-
10516
- #: includes/settings/wcj-settings-payment-gateways-by-country.php:51
10517
- msgid "Exclude Countries"
10518
- msgstr ""
10519
-
10520
- #: includes/settings/wcj-settings-payment-gateways-by-country.php:63
10521
- msgid "Include States (Base Country)"
10522
- msgstr ""
10523
-
10524
- #: includes/settings/wcj-settings-payment-gateways-by-country.php:75
10525
- msgid "Exclude States (Base Country)"
10526
- msgstr ""
10527
-
10528
- #: includes/settings/wcj-settings-payment-gateways-by-currency.php:27
10529
- #, php-format
10530
- msgid "PayPal allows only these currencies:<br>%s."
10531
- msgstr ""
10532
-
10533
- #: includes/settings/wcj-settings-payment-gateways-by-currency.php:44
10534
- msgid "Allowed Currencies"
10535
  msgstr ""
10536
 
10537
  #: includes/settings/wcj-settings-payment-gateways-by-currency.php:55
@@ -10578,7 +10906,7 @@ msgstr ""
10578
 
10579
  #: includes/settings/wcj-settings-payment-gateways-fees.php:25
10580
  #: includes/settings/wcj-settings-pdf-invoicing-header.php:36
10581
- #: includes/settings/wcj-settings-pdf-invoicing-page.php:69
10582
  #: includes/settings/wcj-settings-purchase-data.php:67
10583
  msgid "Leave blank to disable"
10584
  msgstr ""
@@ -10998,26 +11326,34 @@ msgid "Page Format"
10998
  msgstr ""
10999
 
11000
  #: includes/settings/wcj-settings-pdf-invoicing-page.php:39
 
 
 
 
 
 
 
 
11001
  msgid "Margin Left"
11002
  msgstr ""
11003
 
11004
- #: includes/settings/wcj-settings-pdf-invoicing-page.php:45
11005
  msgid "Margin Right"
11006
  msgstr ""
11007
 
11008
- #: includes/settings/wcj-settings-pdf-invoicing-page.php:51
11009
  msgid "Margin Top"
11010
  msgstr ""
11011
 
11012
- #: includes/settings/wcj-settings-pdf-invoicing-page.php:57
11013
  msgid "Margin Bottom"
11014
  msgstr ""
11015
 
11016
- #: includes/settings/wcj-settings-pdf-invoicing-page.php:63
11017
  msgid "Background Image"
11018
  msgstr ""
11019
 
11020
- #: includes/settings/wcj-settings-pdf-invoicing-page.php:67
11021
  #, php-format
11022
  msgid ""
11023
  "Enter a local URL to an image. Upload your image using the <a href=\"%s"
@@ -11172,23 +11508,31 @@ msgstr ""
11172
  msgid "DOCUMENT_ROOT"
11173
  msgstr ""
11174
 
11175
- #: includes/settings/wcj-settings-pdf-invoicing.php:105
 
 
 
 
 
 
 
 
11176
  msgid "Report Tool Options"
11177
  msgstr ""
11178
 
11179
- #: includes/settings/wcj-settings-pdf-invoicing.php:110
11180
  msgid "Reports Filename"
11181
  msgstr ""
11182
 
11183
- #: includes/settings/wcj-settings-pdf-invoicing.php:124
11184
  msgid "CSV UTF-8 BOM"
11185
  msgstr ""
11186
 
11187
- #: includes/settings/wcj-settings-pdf-invoicing.php:131
11188
  msgid "Replace Periods with Commas in CSV Data"
11189
  msgstr ""
11190
 
11191
- #: includes/settings/wcj-settings-pdf-invoicing.php:132
11192
  msgid "Replace"
11193
  msgstr ""
11194
 
@@ -11439,13 +11783,6 @@ msgstr ""
11439
  msgid "Price by User Role by Products Categories"
11440
  msgstr ""
11441
 
11442
- #: includes/settings/wcj-settings-price-by-user-role.php:130
11443
- #: includes/settings/wcj-settings-product-listings.php:267
11444
- #: includes/settings/wcj-settings-shipping.php:51
11445
- msgid ""
11446
- "Save module's settings after changing this option to see new settings fields."
11447
- msgstr ""
11448
-
11449
  #: includes/settings/wcj-settings-price-formats.php:20
11450
  msgid "Trim Zeros in Prices"
11451
  msgstr ""
@@ -11468,38 +11805,50 @@ msgid "Currency Position"
11468
  msgstr ""
11469
 
11470
  #: includes/settings/wcj-settings-price-formats.php:72
 
11471
  msgid "Left"
11472
  msgstr ""
11473
 
11474
  #: includes/settings/wcj-settings-price-formats.php:73
 
11475
  msgid "Right"
11476
  msgstr ""
11477
 
11478
  #: includes/settings/wcj-settings-price-formats.php:74
 
11479
  msgid "Left with space"
11480
  msgstr ""
11481
 
11482
  #: includes/settings/wcj-settings-price-formats.php:75
 
11483
  msgid "Right with space"
11484
  msgstr ""
11485
 
11486
  #: includes/settings/wcj-settings-price-formats.php:80
 
 
 
 
 
 
 
 
11487
  msgid "Thousand Separator"
11488
  msgstr ""
11489
 
11490
- #: includes/settings/wcj-settings-price-formats.php:88
11491
  msgid "Decimal Separator"
11492
  msgstr ""
11493
 
11494
- #: includes/settings/wcj-settings-price-formats.php:96
11495
  msgid "Number of Decimals"
11496
  msgstr ""
11497
 
11498
- #: includes/settings/wcj-settings-price-formats.php:104
11499
  msgid "WPML Language Code"
11500
  msgstr ""
11501
 
11502
- #: includes/settings/wcj-settings-price-formats.php:105
11503
  msgid ""
11504
  "Option to set different price formats for different WPML languages. Can be "
11505
  "comma separated list. Leave empty to disable."
@@ -11646,6 +11995,8 @@ msgstr ""
11646
  #: includes/settings/wcj-settings-product-add-to-cart.php:39
11647
  #: includes/settings/wcj-settings-product-by-date.php:52
11648
  #: includes/settings/wcj-settings-product-by-time.php:52
 
 
11649
  msgid "Per Product"
11650
  msgstr ""
11651
 
@@ -11726,64 +12077,68 @@ msgstr ""
11726
  msgid "Disable on Cart Page"
11727
  msgstr ""
11728
 
11729
- #: includes/settings/wcj-settings-product-add-to-cart.php:165
 
 
 
 
11730
  msgid "Add to Cart Button Disabling"
11731
  msgstr ""
11732
 
11733
- #: includes/settings/wcj-settings-product-add-to-cart.php:170
11734
  msgid "Disable Add to Cart Buttons on per Product Basis"
11735
  msgstr ""
11736
 
11737
- #: includes/settings/wcj-settings-product-add-to-cart.php:178
11738
  msgid "Disable Add to Cart Buttons on All Category/Archives Pages"
11739
  msgstr ""
11740
 
11741
- #: includes/settings/wcj-settings-product-add-to-cart.php:179
11742
  #: includes/settings/wcj-settings-product-add-to-cart.php:186
 
11743
  msgid "Disable Buttons"
11744
  msgstr ""
11745
 
11746
- #: includes/settings/wcj-settings-product-add-to-cart.php:185
11747
  msgid "Disable Add to Cart Buttons on All Single Product Pages"
11748
  msgstr ""
11749
 
11750
- #: includes/settings/wcj-settings-product-add-to-cart.php:196
11751
  msgid "Add to Cart Button Custom URL"
11752
  msgstr ""
11753
 
11754
- #: includes/settings/wcj-settings-product-add-to-cart.php:201
11755
  msgid "Custom Add to Cart Buttons URL on Archives on per Product Basis"
11756
  msgstr ""
11757
 
11758
- #: includes/settings/wcj-settings-product-add-to-cart.php:213
11759
  msgid "Add to Cart Button AJAX"
11760
  msgstr ""
11761
 
11762
- #: includes/settings/wcj-settings-product-add-to-cart.php:218
11763
  msgid "Disable/Enable Add to Cart Button AJAX on per Product Basis"
11764
  msgstr ""
11765
 
11766
- #: includes/settings/wcj-settings-product-add-to-cart.php:235
11767
  msgid "Open External Products on Add to Cart in New Window"
11768
  msgstr ""
11769
 
11770
- #: includes/settings/wcj-settings-product-add-to-cart.php:236
11771
  msgid "Enable on Single Product Pages"
11772
  msgstr ""
11773
 
11774
- #: includes/settings/wcj-settings-product-add-to-cart.php:243
11775
  msgid "Enable on Category/Archive Pages"
11776
  msgstr ""
11777
 
11778
- #: includes/settings/wcj-settings-product-add-to-cart.php:254
11779
  msgid "Add to Cart Message Options"
11780
  msgstr ""
11781
 
11782
- #: includes/settings/wcj-settings-product-add-to-cart.php:259
11783
  msgid "Change \"Continue shopping\" Text"
11784
  msgstr ""
11785
 
11786
- #: includes/settings/wcj-settings-product-add-to-cart.php:273
11787
  msgid "Change \"View cart\" Text"
11788
  msgstr ""
11789
 
@@ -11913,6 +12268,16 @@ msgstr ""
11913
  msgid "Hide all addons"
11914
  msgstr ""
11915
 
 
 
 
 
 
 
 
 
 
 
11916
  #: includes/settings/wcj-settings-product-bookings.php:28
11917
  msgid "Labels and Messages"
11918
  msgstr ""
@@ -12009,16 +12374,19 @@ msgid "Additional Columns"
12009
  msgstr ""
12010
 
12011
  #: includes/settings/wcj-settings-product-by-country.php:14
 
12012
  msgid "Visibility Options"
12013
  msgstr ""
12014
 
12015
  #: includes/settings/wcj-settings-product-by-country.php:19
12016
  #: includes/settings/wcj-settings-product-by-user-role.php:19
 
12017
  msgid "Hide Visibility"
12018
  msgstr ""
12019
 
12020
  #: includes/settings/wcj-settings-product-by-country.php:20
12021
  #: includes/settings/wcj-settings-product-by-user-role.php:20
 
12022
  msgid ""
12023
  "This will hide selected products in shop and search results. However product "
12024
  "still will be accessible via direct link."
@@ -12026,11 +12394,13 @@ msgstr ""
12026
 
12027
  #: includes/settings/wcj-settings-product-by-country.php:27
12028
  #: includes/settings/wcj-settings-product-by-user-role.php:27
 
12029
  msgid "Make Non-purchasable"
12030
  msgstr ""
12031
 
12032
  #: includes/settings/wcj-settings-product-by-country.php:28
12033
  #: includes/settings/wcj-settings-product-by-user-role.php:28
 
12034
  msgid ""
12035
  "This will make selected products non-purchasable (i.e. product can't be "
12036
  "added to the cart)."
@@ -12038,11 +12408,13 @@ msgstr ""
12038
 
12039
  #: includes/settings/wcj-settings-product-by-country.php:35
12040
  #: includes/settings/wcj-settings-product-by-user-role.php:35
 
12041
  msgid "Modify Query"
12042
  msgstr ""
12043
 
12044
  #: includes/settings/wcj-settings-product-by-country.php:36
12045
  #: includes/settings/wcj-settings-product-by-user-role.php:36
 
12046
  msgid "This will hide selected products completely (including direct link)."
12047
  msgstr ""
12048
 
@@ -12065,11 +12437,6 @@ msgid ""
12065
  "to frontend with \"%s\" widget or %s shortcode."
12066
  msgstr ""
12067
 
12068
- #: includes/settings/wcj-settings-product-by-country.php:56
12069
- #: includes/widgets/class-wcj-widget-selector.php:27
12070
- msgid "Booster - Selector"
12071
- msgstr ""
12072
-
12073
  #: includes/settings/wcj-settings-product-by-country.php:62
12074
  msgid "Automatically by IP"
12075
  msgstr ""
@@ -12204,8 +12571,8 @@ msgid "Replaceable value:"
12204
  msgstr ""
12205
 
12206
  #: includes/settings/wcj-settings-product-by-user.php:15
12207
- #: includes/shortcodes/class-wcj-products-add-form-shortcodes.php:181
12208
- #: includes/shortcodes/class-wcj-products-add-form-shortcodes.php:373
12209
  msgid "Image"
12210
  msgstr ""
12211
 
@@ -12254,7 +12621,7 @@ msgid "Message: Product Successfully Added"
12254
  msgstr ""
12255
 
12256
  #: includes/settings/wcj-settings-product-by-user.php:122
12257
- #: includes/shortcodes/class-wcj-products-add-form-shortcodes.php:291
12258
  msgid "\"%product_title%\" successfully added!"
12259
  msgstr ""
12260
 
@@ -12263,7 +12630,7 @@ msgid "Message: Product Successfully Edited"
12263
  msgstr ""
12264
 
12265
  #: includes/settings/wcj-settings-product-by-user.php:129
12266
- #: includes/shortcodes/class-wcj-products-add-form-shortcodes.php:298
12267
  msgid "\"%product_title%\" successfully edited!"
12268
  msgstr ""
12269
 
@@ -12288,10 +12655,10 @@ msgid "Product Custom Info Blocks"
12288
  msgstr ""
12289
 
12290
  #: includes/settings/wcj-settings-product-custom-info.php:81
12291
- #: includes/settings/wcj-settings-product-images.php:55
12292
- #: includes/settings/wcj-settings-product-images.php:64
12293
- #: includes/settings/wcj-settings-product-images.php:73
12294
- #: includes/settings/wcj-settings-products-xml.php:106
12295
  #: includes/settings/meta-box/wcj-settings-meta-box-product-images.php:18
12296
  #: includes/settings/meta-box/wcj-settings-meta-box-product-images.php:25
12297
  msgid "You can use shortcodes here."
@@ -12345,12 +12712,12 @@ msgid "Product Tags to Exclude"
12345
  msgstr ""
12346
 
12347
  #: includes/settings/wcj-settings-product-custom-info.php:160
12348
- #: includes/settings/wcj-settings-products-xml.php:138
12349
  msgid "Products to Include"
12350
  msgstr ""
12351
 
12352
  #: includes/settings/wcj-settings-product-custom-info.php:171
12353
- #: includes/settings/wcj-settings-products-xml.php:147
12354
  msgid "Products to Exclude"
12355
  msgstr ""
12356
 
@@ -12364,79 +12731,63 @@ msgid ""
12364
  "g.: <code>rehub_woo_after_compact_grid_title|Rehub: After title</code>."
12365
  msgstr ""
12366
 
 
 
 
 
12367
  #: includes/settings/wcj-settings-product-images.php:14
12368
  msgid "Product Image and Thumbnails"
12369
  msgstr ""
12370
 
12371
- #: includes/settings/wcj-settings-product-images.php:25
12372
  msgid "Image and Thumbnails on Single"
12373
  msgstr ""
12374
 
12375
- #: includes/settings/wcj-settings-product-images.php:32
12376
  msgid "Image on Single"
12377
  msgstr ""
12378
 
12379
- #: includes/settings/wcj-settings-product-images.php:39
12380
  msgid "Thumbnails on Single"
12381
  msgstr ""
12382
 
12383
- #: includes/settings/wcj-settings-product-images.php:46
12384
  msgid "Image on Archives"
12385
  msgstr ""
12386
 
12387
- #: includes/settings/wcj-settings-product-images.php:53
12388
  msgid "Replace Image on Single"
12389
  msgstr ""
12390
 
12391
- #: includes/settings/wcj-settings-product-images.php:54
12392
  msgid ""
12393
  "Replace image on single product page with custom HTML. Leave blank to "
12394
  "disable."
12395
  msgstr ""
12396
 
12397
- #: includes/settings/wcj-settings-product-images.php:62
12398
  msgid "Replace Thumbnails on Single"
12399
  msgstr ""
12400
 
12401
- #: includes/settings/wcj-settings-product-images.php:63
12402
  msgid ""
12403
  "Replace thumbnails on single product page with custom HTML. Leave blank to "
12404
  "disable."
12405
  msgstr ""
12406
 
12407
- #: includes/settings/wcj-settings-product-images.php:71
12408
  msgid "Replace Image on Archive"
12409
  msgstr ""
12410
 
12411
- #: includes/settings/wcj-settings-product-images.php:72
12412
  msgid ""
12413
  "Replace image on archive pages with custom HTML. Leave blank to disable."
12414
  msgstr ""
12415
 
12416
- #: includes/settings/wcj-settings-product-images.php:80
12417
  msgid "Single Product Thumbnails Columns"
12418
  msgstr ""
12419
 
12420
- #: includes/settings/wcj-settings-product-images.php:90
12421
- msgid "Product Images Sale Flash"
12422
- msgstr ""
12423
-
12424
- #: includes/settings/wcj-settings-product-images.php:101
12425
- msgid "HTML"
12426
- msgstr ""
12427
-
12428
- #: includes/settings/wcj-settings-product-images.php:108
12429
- msgid "Hide Everywhere"
12430
- msgstr ""
12431
-
12432
- #: includes/settings/wcj-settings-product-images.php:114
12433
- msgid "Hide on Archives (Categories) Only"
12434
- msgstr ""
12435
-
12436
- #: includes/settings/wcj-settings-product-images.php:120
12437
- msgid "Hide on Single Page Only"
12438
- msgstr ""
12439
-
12440
  #: includes/settings/wcj-settings-product-info.php:14
12441
  msgid "Products Info"
12442
  msgstr ""
@@ -12603,102 +12954,106 @@ msgid "HTML Template - End"
12603
  msgstr ""
12604
 
12605
  #: includes/settings/wcj-settings-product-input-fields.php:226
12606
- msgid "HTML to add after required field title"
12607
  msgstr ""
12608
 
12609
  #: includes/settings/wcj-settings-product-input-fields.php:233
 
 
 
 
12610
  msgid "Cart Display Options"
12611
  msgstr ""
12612
 
12613
- #: includes/settings/wcj-settings-product-input-fields.php:234
12614
  msgid ""
12615
  "When \"Add to cart item data\" is selected, \"Cart HTML Template\" options "
12616
  "below will be ignored."
12617
  msgstr ""
12618
 
12619
- #: includes/settings/wcj-settings-product-input-fields.php:239
12620
  msgid "Add to cart item name"
12621
  msgstr ""
12622
 
12623
- #: includes/settings/wcj-settings-product-input-fields.php:240
12624
  msgid "Add to cart item data"
12625
  msgstr ""
12626
 
12627
- #: includes/settings/wcj-settings-product-input-fields.php:244
12628
  msgid "Cart HTML Template - Start"
12629
  msgstr ""
12630
 
12631
- #: includes/settings/wcj-settings-product-input-fields.php:251
12632
  msgid "Cart HTML Template - Each Field"
12633
  msgstr ""
12634
 
12635
- #: includes/settings/wcj-settings-product-input-fields.php:258
12636
  msgid "Cart HTML Template - End"
12637
  msgstr ""
12638
 
12639
- #: includes/settings/wcj-settings-product-input-fields.php:265
12640
  msgid "Order Table Template - Each Field"
12641
  msgstr ""
12642
 
12643
- #: includes/settings/wcj-settings-product-input-fields.php:266
12644
  msgid "Affects Order received page, Emails and Admin Orders View"
12645
  msgstr ""
12646
 
12647
- #: includes/settings/wcj-settings-product-input-fields.php:304
12648
  msgid "Admin Order View Options"
12649
  msgstr ""
12650
 
12651
- #: includes/settings/wcj-settings-product-input-fields.php:309
12652
  msgid "Replace Field ID with Field Label"
12653
  msgstr ""
12654
 
12655
- #: includes/settings/wcj-settings-product-listings.php:34
12656
  msgid "Shop Page Display Options"
12657
  msgstr ""
12658
 
12659
- #: includes/settings/wcj-settings-product-listings.php:37
12660
  #, php-format
12661
  msgid ""
12662
  "You can control what is shown on the product archive in <a href=\"%s"
12663
  "\">WooCommerce > Settings > Products > Display > Shop page display</a>."
12664
  msgstr ""
12665
 
12666
- #: includes/settings/wcj-settings-product-listings.php:43
12667
  msgid "Categories Count"
12668
  msgstr ""
12669
 
12670
- #: includes/settings/wcj-settings-product-listings.php:44
12671
  msgid "Hide categories count on shop page"
12672
  msgstr ""
12673
 
12674
- #: includes/settings/wcj-settings-product-listings.php:51
12675
  msgid ""
12676
  " Excludes one or more categories from the shop page. Leave blank to disable."
12677
  msgstr ""
12678
 
12679
- #: includes/settings/wcj-settings-product-listings.php:60
12680
- #: includes/settings/wcj-settings-product-listings.php:106
12681
  msgid "Hide Empty"
12682
  msgstr ""
12683
 
12684
- #: includes/settings/wcj-settings-product-listings.php:61
12685
  msgid "Hide empty categories on shop page"
12686
  msgstr ""
12687
 
12688
- #: includes/settings/wcj-settings-product-listings.php:67
12689
- #: includes/settings/wcj-settings-product-listings.php:113
12690
  msgid "Show Products"
12691
  msgstr ""
12692
 
12693
- #: includes/settings/wcj-settings-product-listings.php:68
12694
  msgid "Show products if no categories are displayed on shop page"
12695
  msgstr ""
12696
 
12697
- #: includes/settings/wcj-settings-product-listings.php:78
12698
  msgid "Category Display Options"
12699
  msgstr ""
12700
 
12701
- #: includes/settings/wcj-settings-product-listings.php:81
12702
  #, php-format
12703
  msgid ""
12704
  "You can control what is shown on category archives in <a href=\"%s"
@@ -12706,162 +13061,63 @@ msgid ""
12706
  "a>."
12707
  msgstr ""
12708
 
12709
- #: includes/settings/wcj-settings-product-listings.php:87
12710
  msgid "Subcategories Count"
12711
  msgstr ""
12712
 
12713
- #: includes/settings/wcj-settings-product-listings.php:88
12714
  msgid "Hide subcategories count on category pages"
12715
  msgstr ""
12716
 
12717
- #: includes/settings/wcj-settings-product-listings.php:96
12718
  msgid "Exclude Subcategories"
12719
  msgstr ""
12720
 
12721
- #: includes/settings/wcj-settings-product-listings.php:97
12722
  msgid ""
12723
  " Excludes one or more categories from the category (archive) pages. Leave "
12724
  "blank to disable."
12725
  msgstr ""
12726
 
12727
- #: includes/settings/wcj-settings-product-listings.php:107
12728
  msgid "Hide empty subcategories on category pages"
12729
  msgstr ""
12730
 
12731
- #: includes/settings/wcj-settings-product-listings.php:114
12732
  msgid "Show products if no categories are displayed on category page"
12733
  msgstr ""
12734
 
12735
- #: includes/settings/wcj-settings-product-listings.php:124
12736
- #: includes/settings/wcj-settings-product-listings.php:130
12737
  msgid "Product Shop Visibility by Price"
12738
  msgstr ""
12739
 
12740
- #: includes/settings/wcj-settings-product-listings.php:126
12741
  msgid ""
12742
  "Here you can set to hide products from shop and search results depending on "
12743
  "product's price. Products will still be accessible via direct link."
12744
  msgstr ""
12745
 
12746
- #: includes/settings/wcj-settings-product-listings.php:137
12747
  #: includes/settings/meta-box/wcj-settings-meta-box-product-open-pricing.php:31
12748
  msgid "Min Price"
12749
  msgstr ""
12750
 
12751
- #: includes/settings/wcj-settings-product-listings.php:138
12752
  msgid ""
12753
  "Products with price below this value will be hidden. Ignored if set to zero."
12754
  msgstr ""
12755
 
12756
- #: includes/settings/wcj-settings-product-listings.php:145
12757
  #: includes/settings/meta-box/wcj-settings-meta-box-product-open-pricing.php:38
12758
  msgid "Max Price"
12759
  msgstr ""
12760
 
12761
- #: includes/settings/wcj-settings-product-listings.php:146
12762
  msgid ""
12763
  "Products with price above this value will be hidden. Ignored if set to zero."
12764
  msgstr ""
12765
 
12766
- #: includes/settings/wcj-settings-product-listings.php:157
12767
- msgid "TAX Display in the Shop - by Product"
12768
- msgstr ""
12769
-
12770
- #: includes/settings/wcj-settings-product-listings.php:159
12771
- msgid ""
12772
- "If you want to display part of your products including TAX and another part "
12773
- "excluding TAX, you can set it here."
12774
- msgstr ""
12775
-
12776
- #: includes/settings/wcj-settings-product-listings.php:163
12777
- msgid "Products - Including TAX"
12778
- msgstr ""
12779
-
12780
- #: includes/settings/wcj-settings-product-listings.php:165
12781
- msgid "Select products to display including TAX."
12782
- msgstr ""
12783
-
12784
- #: includes/settings/wcj-settings-product-listings.php:173
12785
- msgid "Products - Excluding TAX"
12786
- msgstr ""
12787
-
12788
- #: includes/settings/wcj-settings-product-listings.php:175
12789
- msgid "Select products to display excluding TAX."
12790
- msgstr ""
12791
-
12792
- #: includes/settings/wcj-settings-product-listings.php:183
12793
- msgid "Product Categories - Including TAX"
12794
- msgstr ""
12795
-
12796
- #: includes/settings/wcj-settings-product-listings.php:185
12797
- msgid "Select product categories to display including TAX."
12798
- msgstr ""
12799
-
12800
- #: includes/settings/wcj-settings-product-listings.php:193
12801
- msgid "Product Categories - Excluding TAX"
12802
- msgstr ""
12803
-
12804
- #: includes/settings/wcj-settings-product-listings.php:195
12805
- msgid "Select product categories to display excluding TAX."
12806
- msgstr ""
12807
-
12808
- #: includes/settings/wcj-settings-product-listings.php:207
12809
- msgid "TAX Display in the Shop - by User Role"
12810
- msgstr ""
12811
-
12812
- #: includes/settings/wcj-settings-product-listings.php:209
12813
- msgid ""
12814
- "If you want to display prices including TAX or excluding TAX for different "
12815
- "user roles, you can set it here."
12816
- msgstr ""
12817
-
12818
- #: includes/settings/wcj-settings-product-listings.php:213
12819
- msgid "TAX Display by User Role"
12820
- msgstr ""
12821
-
12822
- #: includes/settings/wcj-settings-product-listings.php:221
12823
- msgid ""
12824
- "Save changes after you change this option and new settings fields will "
12825
- "appear."
12826
- msgstr ""
12827
-
12828
- #: includes/settings/wcj-settings-product-listings.php:222
12829
- #, php-format
12830
- msgid ""
12831
- "Select user roles that you want to change tax display for. For all remaining "
12832
- "(i.e. not selected) user roles - default TAX display (set in %s) will be "
12833
- "applied."
12834
- msgstr ""
12835
-
12836
- #: includes/settings/wcj-settings-product-listings.php:223
12837
- msgid "WooCommerce > Settings > Tax"
12838
- msgstr ""
12839
-
12840
- #: includes/settings/wcj-settings-product-listings.php:235
12841
- #, php-format
12842
- msgid "Role: %s"
12843
- msgstr ""
12844
-
12845
- #: includes/settings/wcj-settings-product-listings.php:240
12846
- msgid "Default TAX display (no changes)"
12847
- msgstr ""
12848
-
12849
- #: includes/settings/wcj-settings-product-listings.php:241
12850
- msgid "Including tax"
12851
- msgstr ""
12852
-
12853
- #: includes/settings/wcj-settings-product-listings.php:242
12854
- msgid "Excluding tax"
12855
- msgstr ""
12856
-
12857
- #: includes/settings/wcj-settings-product-listings.php:254
12858
- msgid "Admin Products List - Custom Columns"
12859
- msgstr ""
12860
-
12861
- #: includes/settings/wcj-settings-product-listings.php:312
12862
- msgid "Admin Products List - Columns Order"
12863
- msgstr ""
12864
-
12865
  #: includes/settings/wcj-settings-product-open-pricing.php:21
12866
  msgid "Frontend Label"
12867
  msgstr ""
@@ -12962,72 +13218,72 @@ msgid "Custom Product Tabs Number"
12962
  msgstr ""
12963
 
12964
  #: includes/settings/wcj-settings-product-tabs.php:60
12965
- #: includes/settings/wcj-settings-product-tabs.php:252
12966
  msgid "Make sure it's unique for each tab."
12967
  msgstr ""
12968
 
12969
  #: includes/settings/wcj-settings-product-tabs.php:73
12970
- #: includes/settings/wcj-settings-product-tabs.php:265
12971
  msgid "You can use shortcodes here..."
12972
  msgstr ""
12973
 
12974
  #: includes/settings/wcj-settings-product-tabs.php:94
12975
- #: includes/settings/wcj-settings-product-tabs.php:286
12976
  msgid "PRODUCTS to HIDE this tab"
12977
  msgstr ""
12978
 
12979
  #: includes/settings/wcj-settings-product-tabs.php:95
12980
- #: includes/settings/wcj-settings-product-tabs.php:287
12981
  msgid "To hide this tab from some products, enter products here."
12982
  msgstr ""
12983
 
12984
  #: includes/settings/wcj-settings-product-tabs.php:103
12985
- #: includes/settings/wcj-settings-product-tabs.php:295
12986
  msgid "PRODUCTS to SHOW this tab"
12987
  msgstr ""
12988
 
12989
  #: includes/settings/wcj-settings-product-tabs.php:104
12990
- #: includes/settings/wcj-settings-product-tabs.php:296
12991
  msgid "To show this tab only for some products, enter products here."
12992
  msgstr ""
12993
 
12994
  #: includes/settings/wcj-settings-product-tabs.php:112
12995
- #: includes/settings/wcj-settings-product-tabs.php:304
12996
  msgid "CATEGORIES to HIDE this tab"
12997
  msgstr ""
12998
 
12999
  #: includes/settings/wcj-settings-product-tabs.php:113
13000
- #: includes/settings/wcj-settings-product-tabs.php:305
13001
  msgid "To hide this tab from some categories, enter categories here."
13002
  msgstr ""
13003
 
13004
  #: includes/settings/wcj-settings-product-tabs.php:121
13005
- #: includes/settings/wcj-settings-product-tabs.php:313
13006
  msgid "CATEGORIES to SHOW this tab"
13007
  msgstr ""
13008
 
13009
  #: includes/settings/wcj-settings-product-tabs.php:122
13010
- #: includes/settings/wcj-settings-product-tabs.php:314
13011
  msgid "To show this tab only for some categories, enter categories here."
13012
  msgstr ""
13013
 
13014
  #: includes/settings/wcj-settings-product-tabs.php:130
13015
- #: includes/settings/wcj-settings-product-tabs.php:322
13016
  msgid "TAGS to HIDE this tab"
13017
  msgstr ""
13018
 
13019
  #: includes/settings/wcj-settings-product-tabs.php:131
13020
- #: includes/settings/wcj-settings-product-tabs.php:323
13021
  msgid "To hide this tab from some tags, enter tags here."
13022
  msgstr ""
13023
 
13024
  #: includes/settings/wcj-settings-product-tabs.php:139
13025
- #: includes/settings/wcj-settings-product-tabs.php:331
13026
  msgid "TAGS to SHOW this tab"
13027
  msgstr ""
13028
 
13029
  #: includes/settings/wcj-settings-product-tabs.php:140
13030
- #: includes/settings/wcj-settings-product-tabs.php:332
13031
  msgid "To show this tab only for some tags, enter tags here."
13032
  msgstr ""
13033
 
@@ -13080,66 +13336,70 @@ msgid "Use Visual Editor"
13080
  msgstr ""
13081
 
13082
  #: includes/settings/wcj-settings-product-tabs.php:226
 
 
 
 
13083
  msgid "Default Per Product Custom Product Tabs Number"
13084
  msgstr ""
13085
 
13086
- #: includes/settings/wcj-settings-product-tabs.php:244
13087
  msgid "Default Title"
13088
  msgstr ""
13089
 
13090
- #: includes/settings/wcj-settings-product-tabs.php:251
13091
  msgid "Default Key"
13092
  msgstr ""
13093
 
13094
- #: includes/settings/wcj-settings-product-tabs.php:258
13095
  msgid "Default Priority (i.e. Order)"
13096
  msgstr ""
13097
 
13098
- #: includes/settings/wcj-settings-product-tabs.php:264
13099
  msgid "Default Content"
13100
  msgstr ""
13101
 
13102
- #: includes/settings/wcj-settings-product-tabs.php:272
13103
  msgid "Default Link"
13104
  msgstr ""
13105
 
13106
- #: includes/settings/wcj-settings-product-tabs.php:273
13107
  msgid "Leave blank for default behaviour."
13108
  msgstr ""
13109
 
13110
- #: includes/settings/wcj-settings-product-tabs.php:280
13111
  msgid "Default \"Link - Open in New Window\""
13112
  msgstr ""
13113
 
13114
- #: includes/settings/wcj-settings-product-tabs.php:348
13115
  msgid "WooCommerce Standard Product Tabs Options"
13116
  msgstr ""
13117
 
13118
- #: includes/settings/wcj-settings-product-tabs.php:350
13119
  msgid "This section lets you customize single product tabs."
13120
  msgstr ""
13121
 
13122
- #: includes/settings/wcj-settings-product-tabs.php:354
13123
  msgid "Description Tab"
13124
  msgstr ""
13125
 
13126
- #: includes/settings/wcj-settings-product-tabs.php:355
13127
- #: includes/settings/wcj-settings-product-tabs.php:376
13128
- #: includes/settings/wcj-settings-product-tabs.php:397
13129
- msgid "Remove tab from product page"
13130
- msgstr ""
13131
-
13132
  #: includes/settings/wcj-settings-product-tabs.php:362
13133
  #: includes/settings/wcj-settings-product-tabs.php:383
13134
  #: includes/settings/wcj-settings-product-tabs.php:404
 
 
 
 
 
 
13135
  msgid "Leave blank for WooCommerce defaults"
13136
  msgstr ""
13137
 
13138
- #: includes/settings/wcj-settings-product-tabs.php:375
13139
  msgid "Additional Information Tab"
13140
  msgstr ""
13141
 
13142
- #: includes/settings/wcj-settings-product-tabs.php:396
13143
  msgid "Reviews Tab"
13144
  msgstr ""
13145
 
@@ -13175,135 +13435,135 @@ msgstr ""
13175
  msgid "Template - After Form"
13176
  msgstr ""
13177
 
13178
- #: includes/settings/wcj-settings-products-xml.php:32
13179
  msgid "Advanced: Block Size"
13180
  msgstr ""
13181
 
13182
- #: includes/settings/wcj-settings-products-xml.php:33
13183
  msgid ""
13184
  "If you have large number of products you may want to modify block size for "
13185
  "WP_Query call. Leave default value if not sure."
13186
  msgstr ""
13187
 
13188
- #: includes/settings/wcj-settings-products-xml.php:53
13189
  msgid "Create Now"
13190
  msgstr ""
13191
 
13192
- #: includes/settings/wcj-settings-products-xml.php:58
13193
  #, php-format
13194
  msgid "Recent file was created on %s"
13195
  msgstr ""
13196
 
13197
- #: includes/settings/wcj-settings-products-xml.php:65
13198
  msgid "XML File"
13199
  msgstr ""
13200
 
13201
- #: includes/settings/wcj-settings-products-xml.php:78
13202
  msgid "XML Header"
13203
  msgstr ""
13204
 
13205
- #: includes/settings/wcj-settings-products-xml.php:79
13206
  msgid "You can use shortcodes here. For example [wcj_current_datetime]."
13207
  msgstr ""
13208
 
13209
- #: includes/settings/wcj-settings-products-xml.php:86
13210
  msgid "XML Item"
13211
  msgstr ""
13212
 
13213
- #: includes/settings/wcj-settings-products-xml.php:88
13214
  #, php-format
13215
  msgid ""
13216
  "You can use shortcodes here. Please take a look at <a target=\"_blank\" href="
13217
  "\"%s\">Booster's products shortcodes</a>."
13218
  msgstr ""
13219
 
13220
- #: includes/settings/wcj-settings-products-xml.php:105
13221
  msgid "XML Footer"
13222
  msgstr ""
13223
 
13224
- #: includes/settings/wcj-settings-products-xml.php:113
13225
  msgid "XML File Path and Name"
13226
  msgstr ""
13227
 
13228
- #: includes/settings/wcj-settings-products-xml.php:114
13229
  msgid "Path on server:"
13230
  msgstr ""
13231
 
13232
- #: includes/settings/wcj-settings-products-xml.php:122
13233
  msgid "Update Period"
13234
  msgstr ""
13235
 
13236
- #: includes/settings/wcj-settings-products-xml.php:134
13237
  msgid ""
13238
  "Possible update periods are: every minute, hourly, twice daily, daily and "
13239
  "weekly."
13240
  msgstr ""
13241
 
13242
- #: includes/settings/wcj-settings-products-xml.php:139
13243
  msgid ""
13244
  "To include selected products only, enter products here. Leave blank to "
13245
  "include all products."
13246
  msgstr ""
13247
 
13248
- #: includes/settings/wcj-settings-products-xml.php:148
13249
  msgid ""
13250
  "To exclude selected products, enter products here. Leave blank to include "
13251
  "all products."
13252
  msgstr ""
13253
 
13254
- #: includes/settings/wcj-settings-products-xml.php:156
13255
  msgid "Categories to Include"
13256
  msgstr ""
13257
 
13258
- #: includes/settings/wcj-settings-products-xml.php:157
13259
  msgid ""
13260
  "To include products from selected categories only, enter categories here. "
13261
  "Leave blank to include all products."
13262
  msgstr ""
13263
 
13264
- #: includes/settings/wcj-settings-products-xml.php:165
13265
  msgid "Categories to Exclude"
13266
  msgstr ""
13267
 
13268
- #: includes/settings/wcj-settings-products-xml.php:166
13269
  msgid ""
13270
  "To exclude products from selected categories, enter categories here. Leave "
13271
  "blank to include all products."
13272
  msgstr ""
13273
 
13274
- #: includes/settings/wcj-settings-products-xml.php:174
13275
  msgid "Tags to Include"
13276
  msgstr ""
13277
 
13278
- #: includes/settings/wcj-settings-products-xml.php:175
13279
  msgid ""
13280
  "To include products from selected tags only, enter tags here. Leave blank to "
13281
  "include all products."
13282
  msgstr ""
13283
 
13284
- #: includes/settings/wcj-settings-products-xml.php:183
13285
  msgid "Tags to Exclude"
13286
  msgstr ""
13287
 
13288
- #: includes/settings/wcj-settings-products-xml.php:184
13289
  msgid ""
13290
  "To exclude products from selected tags, enter tags here. Leave blank to "
13291
  "include all products."
13292
  msgstr ""
13293
 
13294
- #: includes/settings/wcj-settings-products-xml.php:192
13295
  msgid "Products Scope"
13296
  msgstr ""
13297
 
13298
- #: includes/settings/wcj-settings-products-xml.php:198
13299
  msgid "Only products that are on sale"
13300
  msgstr ""
13301
 
13302
- #: includes/settings/wcj-settings-products-xml.php:200
13303
  msgid "Only products that are featured"
13304
  msgstr ""
13305
 
13306
- #: includes/settings/wcj-settings-products-xml.php:201
13307
  msgid "Only products that are not featured"
13308
  msgstr ""
13309
 
@@ -13377,6 +13637,10 @@ msgid ""
13377
  "This section lets you add custom columns to WooCommerce admin products list."
13378
  msgstr ""
13379
 
 
 
 
 
13380
  #: includes/settings/wcj-settings-purchase-data.php:157
13381
  msgid ""
13382
  "This section lets you add custom columns to WooCommerce admin orders list."
@@ -13616,6 +13880,31 @@ msgstr ""
13616
  msgid "View report"
13617
  msgstr ""
13618
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
13619
  #: includes/settings/wcj-settings-shipping-by-condition.php:18
13620
  #: includes/settings/wcj-settings-shipping-by-condition.php:24
13621
  #, php-format
@@ -13632,6 +13921,10 @@ msgstr ""
13632
  msgid "Exclude %s"
13633
  msgstr ""
13634
 
 
 
 
 
13635
  #: includes/settings/wcj-settings-shipping-by-order-amount.php:44
13636
  msgid "Maximum order amount"
13637
  msgstr ""
@@ -13708,42 +14001,46 @@ msgstr ""
13708
  msgid "Hide when free is available"
13709
  msgstr ""
13710
 
13711
- #: includes/settings/wcj-settings-shipping-options.php:46
13712
- #: includes/settings/wcj-settings-shipping-options.php:55
 
 
 
 
13713
  msgid "Free Shipping by Product"
13714
  msgstr ""
13715
 
13716
- #: includes/settings/wcj-settings-shipping-options.php:47
13717
  msgid ""
13718
  "In this section you can select products which grant free shipping when added "
13719
  "to cart."
13720
  msgstr ""
13721
 
13722
- #: includes/settings/wcj-settings-shipping-options.php:48
13723
  #, php-format
13724
  msgid "Similar results can be achieved with %s module."
13725
  msgstr ""
13726
 
13727
- #: includes/settings/wcj-settings-shipping-options.php:71
13728
  msgid ""
13729
  "Select either <strong>all products</strong> or <strong>at least one product</"
13730
  "strong> in cart must grant free shipping."
13731
  msgstr ""
13732
 
13733
- #: includes/settings/wcj-settings-shipping-options.php:76
13734
  msgid "All products in cart must grant free shipping"
13735
  msgstr ""
13736
 
13737
- #: includes/settings/wcj-settings-shipping-options.php:77
13738
  msgid "At least one product in cart must grant free shipping"
13739
  msgstr ""
13740
 
13741
- #: includes/settings/wcj-settings-shipping-options.php:89
13742
- #: includes/settings/wcj-settings-shipping-options.php:95
13743
  msgid "Shipping Descriptions"
13744
  msgstr ""
13745
 
13746
- #: includes/settings/wcj-settings-shipping-options.php:91
13747
  #, php-format
13748
  msgid ""
13749
  "This section will allow you to add any text (e.g. description) for shipping "
@@ -13751,64 +14048,64 @@ msgid ""
13751
  "tags here, e.g. try \"%s\""
13752
  msgstr ""
13753
 
13754
- #: includes/settings/wcj-settings-shipping-options.php:102
13755
  msgid "Description Visibility"
13756
  msgstr ""
13757
 
13758
- #: includes/settings/wcj-settings-shipping-options.php:107
13759
- #: includes/settings/wcj-settings-shipping-options.php:163
13760
  msgid "On both cart and checkout pages"
13761
  msgstr ""
13762
 
13763
- #: includes/settings/wcj-settings-shipping-options.php:108
13764
- #: includes/settings/wcj-settings-shipping-options.php:164
13765
  msgid "Only on cart page"
13766
  msgstr ""
13767
 
13768
- #: includes/settings/wcj-settings-shipping-options.php:109
13769
- #: includes/settings/wcj-settings-shipping-options.php:165
13770
  msgid "Only on checkout page"
13771
  msgstr ""
13772
 
13773
- #: includes/settings/wcj-settings-shipping-options.php:111
13774
- #: includes/settings/wcj-settings-shipping-options.php:167
13775
  msgid ""
13776
  "Possible values: on both cart and checkout pages; only on cart page; only on "
13777
  "checkout page"
13778
  msgstr ""
13779
 
13780
- #: includes/settings/wcj-settings-shipping-options.php:135
13781
- #: includes/settings/wcj-settings-shipping-options.php:141
13782
  msgid "Shipping Icons"
13783
  msgstr ""
13784
 
13785
- #: includes/settings/wcj-settings-shipping-options.php:137
13786
  msgid ""
13787
  "This section will allow you to add icons for shipping method. Icons will be "
13788
  "visible on cart and checkout pages."
13789
  msgstr ""
13790
 
13791
- #: includes/settings/wcj-settings-shipping-options.php:148
13792
  msgid "Icon Position"
13793
  msgstr ""
13794
 
13795
- #: includes/settings/wcj-settings-shipping-options.php:153
13796
  msgid "Before label"
13797
  msgstr ""
13798
 
13799
- #: includes/settings/wcj-settings-shipping-options.php:154
13800
  msgid "After label"
13801
  msgstr ""
13802
 
13803
- #: includes/settings/wcj-settings-shipping-options.php:158
13804
  msgid "Icon Visibility"
13805
  msgstr ""
13806
 
13807
- #: includes/settings/wcj-settings-shipping-options.php:172
13808
  msgid "Icon Style"
13809
  msgstr ""
13810
 
13811
- #: includes/settings/wcj-settings-shipping-options.php:173
13812
  msgid ""
13813
  "You can also style icons with CSS class \"wcj_shipping_icon\", or id "
13814
  "\"wcj_shipping_icon_method_id\""
@@ -14116,6 +14413,108 @@ msgstr ""
14116
  msgid "Custom Out of Stock Class"
14117
  msgstr ""
14118
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
14119
  #: includes/settings/wcj-settings-track-users.php:19
14120
  msgid "Countries by Visits"
14121
  msgstr ""
@@ -14417,6 +14816,10 @@ msgstr ""
14417
  msgid "Hold Control (Ctrl) key to select multiple roles."
14418
  msgstr ""
14419
 
 
 
 
 
14420
  #: includes/settings/meta-box/wcj-settings-meta-box-product-images.php:17
14421
  msgid "Replace image with custom HTML on single product page"
14422
  msgstr ""
@@ -14469,6 +14872,10 @@ msgstr ""
14469
  msgid "Hold Control (Ctrl) key to select multiple products."
14470
  msgstr ""
14471
 
 
 
 
 
14472
  #: includes/settings/meta-box/wcj-settings-meta-box-wholesale-price.php:20
14473
  msgid "Price directly"
14474
  msgstr ""
@@ -14574,72 +14981,74 @@ msgstr ""
14574
  msgid "Enable Custom Shipping"
14575
  msgstr ""
14576
 
14577
- #: includes/shortcodes/class-wcj-general-shortcodes.php:220
14578
- #: includes/shortcodes/class-wcj-shortcodes.php:107
14579
- #, php-format
14580
- msgid "\"%s\" module is not enabled!"
 
 
14581
  msgstr ""
14582
 
14583
- #: includes/shortcodes/class-wcj-input-field-shortcodes.php:51
14584
  msgid "Attribute \"name\" is required!"
14585
  msgstr ""
14586
 
14587
- #: includes/shortcodes/class-wcj-order-items-shortcodes.php:187
14588
  msgid "Standard"
14589
  msgstr ""
14590
 
14591
- #: includes/shortcodes/class-wcj-orders-shortcodes.php:108
14592
  msgid "Dollars"
14593
  msgstr ""
14594
 
14595
- #: includes/shortcodes/class-wcj-orders-shortcodes.php:109
14596
  msgid "Cents"
14597
  msgstr ""
14598
 
14599
- #: includes/shortcodes/class-wcj-products-add-form-shortcodes.php:53
14600
  msgid "Product by User"
14601
  msgstr ""
14602
 
14603
- #: includes/shortcodes/class-wcj-products-add-form-shortcodes.php:166
14604
  msgid "Title is required!"
14605
  msgstr ""
14606
 
14607
- #: includes/shortcodes/class-wcj-products-add-form-shortcodes.php:174
14608
  msgid "Product exists!"
14609
  msgstr ""
14610
 
14611
- #: includes/shortcodes/class-wcj-products-add-form-shortcodes.php:184
14612
- #: includes/shortcodes/class-wcj-products-add-form-shortcodes.php:399
14613
  msgid "Product URL"
14614
  msgstr ""
14615
 
14616
- #: includes/shortcodes/class-wcj-products-add-form-shortcodes.php:200
14617
  #, php-format
14618
  msgid "%s is required!"
14619
  msgstr ""
14620
 
14621
- #: includes/shortcodes/class-wcj-products-add-form-shortcodes.php:206
14622
  msgid "Sale price must be less than the regular price!"
14623
  msgstr ""
14624
 
14625
- #: includes/shortcodes/class-wcj-products-add-form-shortcodes.php:283
14626
  msgid "Error!"
14627
  msgstr ""
14628
 
14629
- #: includes/shortcodes/class-wcj-products-add-form-shortcodes.php:325
14630
  msgid "Add New Product"
14631
  msgstr ""
14632
 
14633
- #: includes/shortcodes/class-wcj-products-add-form-shortcodes.php:325
14634
  msgid "Edit Product"
14635
  msgstr ""
14636
 
14637
- #: includes/shortcodes/class-wcj-products-shortcodes.php:271
14638
  #, php-format
14639
  msgid "%s ago"
14640
  msgstr ""
14641
 
14642
- #: includes/shortcodes/class-wcj-products-shortcodes.php:287
14643
  msgid "No sales yet."
14644
  msgstr ""
14645
 
@@ -14827,3 +15236,7 @@ msgstr ""
14827
  #: includes/widgets/class-wcj-widget-selector.php:59
14828
  msgid "Selector Type"
14829
  msgstr ""
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  #: includes/class-wcj-add-to-cart.php:23
2
  msgid "Add to Cart Labels"
3
  msgstr ""
46
  msgid "Manage Settings"
47
  msgstr ""
48
 
49
+ #: includes/class-wcj-admin-bar.php:166 includes/class-wcj-admin-bar.php:461
50
+ #: includes/class-wcj-admin-bar.php:561
51
+ #: includes/admin/class-wc-settings-jetpack.php:211
52
+ #: includes/admin/class-wc-settings-jetpack.php:405
53
+ #: includes/core/class-wcj-admin.php:129
54
+ msgid "Settings"
55
+ msgstr ""
56
+
57
  #: includes/class-wcj-admin-bar.php:170
58
+ #: includes/admin/class-wc-settings-jetpack.php:407
59
  #: includes/classes/class-wcj-module.php:645
60
  msgid "Documentation"
61
  msgstr ""
62
 
63
  #: includes/class-wcj-admin-bar.php:212
64
  #: includes/admin/class-wc-settings-jetpack.php:138
65
+ #: includes/admin/wcj-modules-cats.php:14
66
  msgid "Dashboard"
67
  msgstr ""
68
 
122
  msgstr ""
123
 
124
  #: includes/class-wcj-admin-bar.php:304 includes/class-wcj-track-users.php:34
125
+ #: includes/functions/wcj-functions-reports.php:63
126
  msgid "Last 7 days"
127
  msgstr ""
128
 
129
  #: includes/class-wcj-admin-bar.php:308
130
+ #: includes/functions/wcj-functions-reports.php:58
131
  msgid "This month"
132
  msgstr ""
133
 
134
  #: includes/class-wcj-admin-bar.php:312
135
+ #: includes/functions/wcj-functions-reports.php:53
136
  msgid "Last month"
137
  msgstr ""
138
 
139
  #: includes/class-wcj-admin-bar.php:316
140
+ #: includes/functions/wcj-functions-reports.php:48
141
  #: includes/pdf-invoices/class-wcj-pdf-invoicing-report-tool.php:111
142
  msgid "Year"
143
  msgstr ""
153
  msgstr ""
154
 
155
  #: includes/class-wcj-admin-bar.php:346 includes/class-wcj-admin-bar.php:350
156
+ #: includes/class-wcj-admin-bar.php:368 includes/class-wcj-orders.php:26
157
  #: includes/settings/wcj-settings-reports.php:16
158
  #: includes/settings/wcj-settings-reports.php:54
159
  #: includes/settings/wcj-settings-reports.php:95
221
  #: includes/class-wcj-product-by-user.php:96
222
  #: includes/class-wcj-product-by-user.php:132
223
  #: includes/class-wcj-shipping-by-products.php:32
224
+ #: includes/admin/wcj-modules-cats.php:59
225
+ #: includes/settings/wcj-settings-shipping-options.php:69
226
  msgid "Products"
227
  msgstr ""
228
 
236
  #: includes/export/class-wcj-fields-helper.php:318
237
  #: includes/settings/wcj-settings-price-by-user-role.php:129
238
  #: includes/settings/wcj-settings-product-by-user.php:19
239
+ #: includes/shortcodes/class-wcj-shortcodes-products-add-form.php:185
240
+ #: includes/shortcodes/class-wcj-shortcodes-products-add-form.php:406
241
  msgid "Categories"
242
  msgstr ""
243
 
244
  #: includes/class-wcj-admin-bar.php:437
245
  #: includes/export/class-wcj-fields-helper.php:319
246
  #: includes/settings/wcj-settings-product-by-user.php:20
247
+ #: includes/shortcodes/class-wcj-shortcodes-products-add-form.php:186
248
+ #: includes/shortcodes/class-wcj-shortcodes-products-add-form.php:411
249
  msgid "Tags"
250
  msgstr ""
251
 
370
  msgid "Extensions"
371
  msgstr ""
372
 
373
+ #: includes/class-wcj-admin-orders-list.php:25
374
+ msgid "Admin Orders List"
375
+ msgstr ""
376
+
377
+ #: includes/class-wcj-admin-orders-list.php:26
378
+ msgid ""
379
+ "Customize WooCommerce admin orders list: add custom columns; add multiple "
380
+ "status filtering."
381
+ msgstr ""
382
+
383
+ #: includes/class-wcj-admin-orders-list.php:165
384
+ msgid "Not Completed"
385
+ msgstr ""
386
+
387
+ #: includes/class-wcj-admin-orders-list.php:281
388
+ #: includes/settings/wcj-settings-product-by-country.php:86
389
+ msgid "All countries"
390
+ msgstr ""
391
+
392
+ #: includes/class-wcj-admin-orders-list.php:290
393
+ msgid "All currencies"
394
+ msgstr ""
395
+
396
+ #: includes/class-wcj-admin-orders-list.php:330
397
+ #: includes/export/class-wcj-fields-helper.php:44
398
+ #: includes/export/class-wcj-fields-helper.php:129
399
+ #: includes/export/class-wcj-fields-helper.php:214
400
+ #: includes/settings/wcj-settings-admin-orders-list.php:27
401
+ msgid "Billing Country"
402
+ msgstr ""
403
+
404
+ #: includes/class-wcj-admin-orders-list.php:333
405
+ #: includes/settings/wcj-settings-admin-orders-list.php:34
406
+ msgid "Currency Code"
407
+ msgstr ""
408
+
409
+ #: includes/class-wcj-admin-products-list.php:25
410
+ msgid "Admin Products List"
411
+ msgstr ""
412
+
413
+ #: includes/class-wcj-admin-products-list.php:26
414
+ msgid "Customize WooCommerce admin products list."
415
+ msgstr ""
416
+
417
  #: includes/class-wcj-admin-tools.php:23 includes/class-wcj-admin-tools.php:30
418
  msgid "Admin Tools"
419
  msgstr ""
490
  msgid "Customize WooCommerce breadcrumbs."
491
  msgstr ""
492
 
493
+ #: includes/class-wcj-call-for-price.php:25
494
  msgid "Call for Price"
495
  msgstr ""
496
 
497
+ #: includes/class-wcj-call-for-price.php:26
498
  msgid ""
499
  "Create any custom price label for all WooCommerce products with empty price."
500
  msgstr ""
534
  "required, change labels and/or placeholders."
535
  msgstr ""
536
 
537
+ #: includes/class-wcj-checkout-custom-fields.php:24
538
  msgid "Checkout Custom Fields"
539
  msgstr ""
540
 
541
+ #: includes/class-wcj-checkout-custom-fields.php:25
542
  msgid "Add custom fields to WooCommerce checkout page."
543
  msgstr ""
544
 
684
 
685
  #: includes/class-wcj-currencies.php:24
686
  msgid ""
687
+ "Add all world currencies and cryptocurrencies to your WooCommerce store; "
688
+ "change currency symbol."
689
  msgstr ""
690
 
691
  #: includes/class-wcj-currencies.php:69
704
  msgid "Automatic currency exchange rates for WooCommerce."
705
  msgstr ""
706
 
707
+ #: includes/class-wcj-currency-exchange-rates.php:167
708
+ #: includes/settings/wcj-settings-currency-exchange-rates.php:46
709
+ msgid "Exchange Rates Server"
710
+ msgstr ""
711
+
712
+ #: includes/class-wcj-currency-exchange-rates.php:172
713
+ #, php-format
714
+ msgid "Use default: %s"
715
+ msgstr ""
716
+
717
  #: includes/class-wcj-currency-external-products.php:23
718
  msgid "Currency for External Products"
719
  msgstr ""
722
  msgid "Set different currency for external WooCommerce products."
723
  msgstr ""
724
 
725
+ #: includes/class-wcj-currency-per-product.php:26
726
  msgid "Currency per Product"
727
  msgstr ""
728
 
729
+ #: includes/class-wcj-currency-per-product.php:27
730
  msgid "Display prices for WooCommerce products in different currencies."
731
  msgstr ""
732
 
733
+ #: includes/class-wcj-currency-per-product.php:170
734
  #: includes/settings/wcj-settings-currency-per-product.php:43
735
  msgid ""
736
  "Only one product can be added to the cart. Clear the cart or finish the "
737
  "order, before adding another product to the cart."
738
  msgstr ""
739
 
740
+ #: includes/class-wcj-currency-per-product.php:185
741
  #: includes/settings/wcj-settings-currency-per-product.php:50
742
  msgid ""
743
  "Only products with same currency can be added to the cart. Clear the cart or "
744
  "finish the order, before adding products with another currency to the cart."
745
  msgstr ""
746
 
747
+ #: includes/class-wcj-currency-per-product.php:231
748
  #, php-format
749
  msgctxt "Price range: from-to"
750
  msgid "%1$s&ndash;%2$s"
900
  #: includes/class-wcj-emails.php:58 includes/class-wcj-emails.php:76
901
  #: includes/emails/class-wc-email-wcj-custom.php:30
902
  #: includes/settings/wcj-settings-emails.php:37
903
+ #: includes/settings/wcj-settings-pdf-invoicing-page.php:36
904
  #: includes/settings/wcj-settings-shipping.php:63
905
  #: includes/shipping/class-wc-shipping-wcj-custom.php:46
906
  msgid "Custom"
912
  msgstr ""
913
 
914
  #: includes/class-wcj-empty-cart-button.php:25
915
+ #: includes/shortcodes/class-wcj-shortcodes-general.php:375
916
  msgid "Empty Cart Button"
917
  msgstr ""
918
 
982
  msgstr ""
983
 
984
  #: includes/class-wcj-export-import.php:26
985
+ #: includes/admin/class-wc-settings-jetpack.php:291
986
  msgid "Export"
987
  msgstr ""
988
 
1044
  msgstr ""
1045
 
1046
  #: includes/class-wcj-export-import.php:214
1047
+ #: includes/reports/wcj-class-reports-sales-daily.php:189
1048
+ #: includes/settings/wcj-settings-orders.php:38
1049
  msgid "Filter"
1050
  msgstr ""
1051
 
1139
 
1140
  #: includes/class-wcj-general.php:197 includes/class-wcj-general.php:210
1141
  #: includes/class-wcj-sku.php:333
1142
+ #: includes/reports/wcj-class-reports-sales.php:192
1143
  #: includes/settings/wcj-settings-order-numbers.php:123
1144
  #: includes/settings/wcj-settings-product-by-user.php:161
1145
  #: includes/settings/wcj-settings-related-products.php:30
1167
  #: includes/class-wcj-product-by-user.php:206
1168
  #: includes/pdf-invoices/submodules/class-wcj-pdf-invoicing-display.php:138
1169
  #: includes/pdf-invoices/submodules/class-wcj-pdf-invoicing-display.php:303
1170
+ #: includes/shortcodes/class-wcj-shortcodes-products-add-form.php:367
1171
  #: includes/tools/class-wcj-order-statuses-tool.php:157
1172
  msgid "Delete"
1173
  msgstr ""
1181
  msgstr ""
1182
 
1183
  #: includes/class-wcj-general.php:215
1184
+ #: includes/settings/wcj-settings-admin-orders-list.php:132
1185
  #: includes/settings/wcj-settings-checkout-custom-fields.php:22
1186
  #: includes/settings/wcj-settings-checkout-custom-fields.php:29
1187
  #: includes/settings/wcj-settings-checkout-custom-fields.php:55
1188
+ #: includes/settings/wcj-settings-checkout-custom-fields.php:194
1189
  #: includes/settings/wcj-settings-email-options.php:20
1190
  #: includes/settings/wcj-settings-eu-vat-number.php:157
1191
  #: includes/settings/wcj-settings-eu-vat-number.php:193
1193
  #: includes/settings/wcj-settings-order-custom-statuses.php:29
1194
  #: includes/settings/wcj-settings-order-custom-statuses.php:37
1195
  #: includes/settings/wcj-settings-order-custom-statuses.php:70
1196
+ #: includes/settings/wcj-settings-order-min-amount.php:53
1197
+ #: includes/settings/wcj-settings-orders.php:81
 
1198
  #: includes/settings/wcj-settings-pdf-invoicing-display.php:151
1199
+ #: includes/settings/wcj-settings-pdf-invoicing.php:132
1200
  #: includes/settings/wcj-settings-product-by-country.php:110
1201
  #: includes/settings/wcj-settings-product-by-user.php:114
1202
+ #: includes/settings/wcj-settings-product-tabs.php:227
1203
  #: includes/settings/wcj-settings-purchase-data.php:134
1204
  #: includes/settings/wcj-settings-purchase-data.php:143
1205
  #: includes/settings/wcj-settings-purchase-data.php:162
1206
  #: includes/settings/wcj-settings-purchase-data.php:169
1207
  #: includes/settings/wcj-settings-sku.php:181
1208
  #: includes/settings/wcj-settings-sku.php:197
1209
+ #: includes/shortcodes/class-wcj-shortcodes-products-add-form.php:425
1210
  #: includes/tools/class-wcj-order-statuses-tool.php:228
1211
  msgid "Add"
1212
  msgstr ""
1215
  #: includes/class-wcj-product-bulk-meta-editor.php:339
1216
  #: includes/class-wcj-product-bulk-price-converter.php:148
1217
  #: includes/class-wcj-sku.php:334
1218
+ #: includes/reports/wcj-class-reports-sales.php:193
1219
  #: includes/reports/wcj-class-reports-stock.php:253
1220
  msgid "Product"
1221
  msgstr ""
1230
  msgstr ""
1231
 
1232
  #: includes/class-wcj-global-discount.php:27
1233
+ #: includes/admin/class-wc-settings-jetpack.php:460
1234
  msgid "Global Discount"
1235
  msgstr ""
1236
 
1249
  #: includes/class-wcj-left-to-free-shipping.php:62
1250
  #: includes/class-wcj-left-to-free-shipping.php:72
1251
  #: includes/class-wcj-left-to-free-shipping.php:82
1252
+ #: includes/functions/wcj-functions-general.php:359
1253
  #: includes/settings/wcj-settings-left-to-free-shipping.php:37
1254
  #: includes/settings/wcj-settings-left-to-free-shipping.php:72
1255
  #: includes/settings/wcj-settings-left-to-free-shipping.php:111
1320
  #: includes/functions/wcj-functions-html.php:95
1321
  #: includes/reports/wcj-class-reports-monthly-sales.php:341
1322
  #: includes/settings/wcj-settings-empty-cart.php:80
1323
+ #: includes/shortcodes/class-wcj-shortcodes-products-add-form.php:367
1324
  #: includes/tools/class-wcj-order-statuses-tool.php:157
1325
  #: includes/tools/class-wcj-order-statuses-tool.php:261
1326
  msgid "Are you sure?"
1656
  "Your current item quantity is %item_quantity%."
1657
  msgstr ""
1658
 
1659
+ #: includes/class-wcj-orders.php:27
1660
  msgid ""
1661
+ "WooCommerce orders auto-complete; admin order currency; bulk regenerate "
1662
+ "download permissions for orders."
1663
  msgstr ""
1664
 
1665
+ #: includes/class-wcj-orders.php:114
1666
  msgid "Regenerate download permissions"
1667
  msgstr ""
1668
 
1669
+ #: includes/class-wcj-orders.php:128
1670
  #, php-format
1671
  msgid "Download permissions regenerated for %s order."
1672
  msgid_plural "Download permissions regenerated for %s orders."
1673
  msgstr[0] ""
1674
  msgstr[1] ""
1675
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1676
  #: includes/class-wcj-payment-gateways-by-country.php:24
1677
  msgid "Gateways by Country or State"
1678
  msgstr ""
1843
  msgstr ""
1844
 
1845
  #: includes/class-wcj-pdf-invoicing.php:250
1846
+ #: includes/classes/class-wcj-pdf-invoice.php:233
1847
  #: includes/pdf-invoices/class-wcj-pdf-invoicing-report-tool.php:230
1848
  msgid "Unexpected error"
1849
  msgstr ""
1919
 
1920
  #: includes/class-wcj-price-labels.php:40
1921
  #: includes/class-wcj-product-info.php:254
1922
+ #: includes/class-wcj-shipping-options.php:173
1923
  #: includes/settings/wcj-settings-add-to-cart.php:52
1924
  #: includes/settings/wcj-settings-address-formats.php:20
1925
  #: includes/settings/wcj-settings-admin-bar.php:20
1931
  #: includes/settings/wcj-settings-admin-tools.php:74
1932
  #: includes/settings/wcj-settings-admin-tools.php:81
1933
  #: includes/settings/wcj-settings-breadcrumbs.php:20
1934
+ #: includes/settings/wcj-settings-call-for-price.php:79
1935
  #: includes/settings/wcj-settings-cart-customization.php:34
1936
  #: includes/settings/wcj-settings-cart-customization.php:57
1937
  #: includes/settings/wcj-settings-checkout-custom-fields.php:107
1938
+ #: includes/settings/wcj-settings-checkout-custom-fields.php:209
1939
  #: includes/settings/wcj-settings-checkout-customization.php:78
1940
  #: includes/settings/wcj-settings-checkout-files-upload.php:291
1941
  #: includes/settings/wcj-settings-coupon-code-generator.php:32
1949
  #: includes/settings/wcj-settings-custom-css.php:34
1950
  #: includes/settings/wcj-settings-emails-verification.php:28
1951
  #: includes/settings/wcj-settings-emails-verification.php:36
1952
+ #: includes/settings/wcj-settings-general.php:43
1953
+ #: includes/settings/wcj-settings-general.php:67
1954
+ #: includes/settings/wcj-settings-general.php:83
1955
+ #: includes/settings/wcj-settings-general.php:151
1956
+ #: includes/settings/wcj-settings-general.php:202
1957
  #: includes/settings/wcj-settings-global-discount.php:52
1958
  #: includes/settings/wcj-settings-left-to-free-shipping.php:27
1959
  #: includes/settings/wcj-settings-left-to-free-shipping.php:60
1971
  #: includes/settings/wcj-settings-order-quantities.php:111
1972
  #: includes/settings/wcj-settings-order-quantities.php:137
1973
  #: includes/settings/wcj-settings-order-quantities.php:144
1974
+ #: includes/settings/wcj-settings-orders.php:25
1975
+ #: includes/settings/wcj-settings-orders.php:54
 
1976
  #: includes/settings/wcj-settings-pdf-invoicing-display.php:113
1977
  #: includes/settings/wcj-settings-pdf-invoicing-footer.php:23
1978
  #: includes/settings/wcj-settings-pdf-invoicing-header.php:23
1992
  #: includes/settings/wcj-settings-product-add-to-cart.php:41
1993
  #: includes/settings/wcj-settings-product-add-to-cart.php:80
1994
  #: includes/settings/wcj-settings-product-add-to-cart.php:132
1995
+ #: includes/settings/wcj-settings-product-add-to-cart.php:162
1996
+ #: includes/settings/wcj-settings-product-add-to-cart.php:178
1997
+ #: includes/settings/wcj-settings-product-add-to-cart.php:209
1998
+ #: includes/settings/wcj-settings-product-add-to-cart.php:226
1999
+ #: includes/settings/wcj-settings-product-add-to-cart.php:267
2000
+ #: includes/settings/wcj-settings-product-add-to-cart.php:281
2001
  #: includes/settings/wcj-settings-product-addons.php:24
2002
  #: includes/settings/wcj-settings-product-addons.php:43
2003
  #: includes/settings/wcj-settings-product-addons.php:67
2015
  #: includes/settings/wcj-settings-product-by-user-role.php:29
2016
  #: includes/settings/wcj-settings-product-by-user-role.php:37
2017
  #: includes/settings/wcj-settings-product-by-user.php:107
2018
+ #: includes/settings/wcj-settings-product-custom-visibility.php:21
2019
+ #: includes/settings/wcj-settings-product-custom-visibility.php:29
2020
+ #: includes/settings/wcj-settings-product-custom-visibility.php:37
2021
  #: includes/settings/wcj-settings-product-info.php:35
2022
  #: includes/settings/wcj-settings-product-info.php:68
2023
  #: includes/settings/wcj-settings-product-input-fields.php:22
2024
  #: includes/settings/wcj-settings-product-input-fields.php:52
2025
+ #: includes/settings/wcj-settings-product-input-fields.php:317
2026
  #: includes/settings/wcj-settings-product-open-pricing.php:87
2027
  #: includes/settings/wcj-settings-product-open-pricing.php:94
2028
  #: includes/settings/wcj-settings-product-open-pricing.php:108
2030
  #: includes/settings/wcj-settings-product-tabs.php:23
2031
  #: includes/settings/wcj-settings-product-tabs.php:212
2032
  #: includes/settings/wcj-settings-product-tabs.php:220
2033
+ #: includes/settings/wcj-settings-products-xml.php:77
2034
  #: includes/settings/wcj-settings-purchase-data.php:22
2035
  #: includes/settings/wcj-settings-purchase-data.php:29
2036
  #: includes/settings/wcj-settings-purchase-data.php:36
2046
  #: includes/settings/wcj-settings-shipping-calculator.php:27
2047
  #: includes/settings/wcj-settings-shipping-calculator.php:34
2048
  #: includes/settings/wcj-settings-shipping-calculator.php:41
2049
+ #: includes/settings/wcj-settings-shipping-options.php:63
2050
  #: includes/settings/wcj-settings-shipping.php:24
2051
  #: includes/settings/wcj-settings-sku.php:50
2052
  #: includes/settings/wcj-settings-sku.php:157
2062
  #: includes/settings/meta-box/wcj-settings-meta-box-product-add-to-cart.php:92
2063
  #: includes/settings/meta-box/wcj-settings-meta-box-product-addons.php:35
2064
  #: includes/settings/meta-box/wcj-settings-meta-box-related-products.php:17
2065
+ #: includes/settings/meta-box/wcj-settings-meta-box-sale-flash.php:14
2066
  msgid "Enable"
2067
  msgstr ""
2068
 
2135
  msgid "Customize Add to Cart messages."
2136
  msgstr ""
2137
 
2138
+ #: includes/class-wcj-product-add-to-cart.php:146
2139
  #, php-format
2140
  msgctxt "Item name in quotes"
2141
  msgid "&ldquo;%s&rdquo;"
2142
  msgstr ""
2143
 
2144
+ #: includes/class-wcj-product-add-to-cart.php:151
2145
  #, php-format
2146
  msgid "%s has been added to your cart."
2147
  msgid_plural "%s have been added to your cart."
2148
  msgstr[0] ""
2149
  msgstr[1] ""
2150
 
2151
+ #: includes/class-wcj-product-add-to-cart.php:155
2152
+ #: includes/settings/wcj-settings-product-add-to-cart.php:276
2153
  msgid "Continue shopping"
2154
  msgstr ""
2155
 
2156
+ #: includes/class-wcj-product-add-to-cart.php:157
2157
+ #: includes/settings/wcj-settings-product-add-to-cart.php:290
2158
  msgid "View cart"
2159
  msgstr ""
2160
 
2166
  msgid "Add (paid/free/discount) addons to WooCommerce products."
2167
  msgstr ""
2168
 
2169
+ #: includes/class-wcj-product-addons.php:101
2170
  msgid "Some of the required addons are not selected!"
2171
  msgstr ""
2172
 
2173
+ #: includes/class-wcj-product-addons.php:116
2174
  msgid ""
2175
  "Booster: Free plugin's version is limited to only three products with per "
2176
  "product addons enabled at a time. You will need to get <a href=\"http://"
2294
  msgstr ""
2295
 
2296
  #: includes/class-wcj-product-bulk-meta-editor.php:294
2297
+ #: includes/settings/wcj-settings-admin-orders-list.php:70
2298
+ #: includes/settings/wcj-settings-admin-products-list.php:56
2299
  #: includes/settings/wcj-settings-export.php:91
2300
  #: includes/settings/wcj-settings-export.php:162
2301
  #: includes/settings/wcj-settings-export.php:241
2302
  #: includes/settings/wcj-settings-global-discount.php:69
 
 
2303
  msgid "Value"
2304
  msgstr ""
2305
 
2403
  msgstr ""
2404
 
2405
  #: includes/class-wcj-product-bulk-price-converter.php:260
2406
+ #: includes/shortcodes/class-wcj-shortcodes-products.php:305
2407
  msgid "Any"
2408
  msgstr ""
2409
 
2522
 
2523
  #: includes/class-wcj-product-by-user.php:154
2524
  #: includes/class-wcj-product-by-user.php:163
2525
+ #: includes/shortcodes/class-wcj-shortcodes-products-add-form.php:313
2526
  msgid "Wrong user ID!"
2527
  msgstr ""
2528
 
2533
  msgstr ""
2534
 
2535
  #: includes/class-wcj-product-by-user.php:197
2536
+ #: includes/class-wcj-product-tabs.php:576
2537
  #: includes/gateways/class-wc-gateway-wcj-custom.php:66
2538
  #: includes/input-fields/wcj-product-input-fields-options.php:51
2539
  #: includes/settings/wcj-settings-export.php:75
2542
  #: includes/settings/wcj-settings-product-addons.php:86
2543
  #: includes/settings/wcj-settings-product-by-user.php:167
2544
  #: includes/settings/wcj-settings-product-tabs.php:52
2545
+ #: includes/settings/wcj-settings-product-tabs.php:368
2546
+ #: includes/settings/wcj-settings-product-tabs.php:389
2547
+ #: includes/settings/wcj-settings-product-tabs.php:410
2548
  #: includes/settings/wcj-settings-purchase-data.php:66
2549
  #: includes/settings/wcj-settings-related-products.php:24
2550
  #: includes/settings/meta-box/wcj-settings-meta-box-product-addons.php:57
2551
  #: includes/shipping/class-wc-shipping-wcj-custom-with-shipping-zones.php:157
2552
  #: includes/shipping/class-wc-shipping-wcj-custom.php:116
2553
+ #: includes/shortcodes/class-wcj-shortcodes-products-add-form.php:337
2554
  #: includes/widgets/class-wcj-widget-country-switcher.php:62
2555
  #: includes/widgets/class-wcj-widget-left-to-free-shipping.php:52
2556
  #: includes/widgets/class-wcj-widget-multicurrency.php:63
2559
  msgstr ""
2560
 
2561
  #: includes/class-wcj-product-by-user.php:205
2562
+ #: includes/shortcodes/class-wcj-shortcodes-products-add-form.php:425
2563
  #: includes/tools/class-wcj-order-statuses-tool.php:160
2564
  #: includes/tools/class-wcj-order-statuses-tool.php:228
2565
  msgid "Edit"
2566
  msgstr ""
2567
 
2568
  #: includes/class-wcj-product-custom-info.php:24
2569
+ #: includes/admin/class-wc-settings-jetpack.php:461
2570
+ #: includes/functions/wcj-functions-general.php:170
2571
  msgid "Product Info"
2572
  msgstr ""
2573
 
2576
  msgid "Add additional info to WooCommerce category and single product pages."
2577
  msgstr ""
2578
 
2579
+ #: includes/class-wcj-product-custom-visibility.php:28
2580
+ msgid "Product Custom Visibility"
2581
+ msgstr ""
2582
+
2583
+ #: includes/class-wcj-product-custom-visibility.php:29
2584
+ msgid "Display WooCommerce products by custom param."
2585
+ msgstr ""
2586
+
2587
+ #: includes/class-wcj-product-custom-visibility.php:31
2588
+ msgid ""
2589
+ "When enabled, module will add new \"Booster: Product Custom Visibility\" "
2590
+ "meta box to each product's edit page."
2591
+ msgstr ""
2592
+
2593
+ #: includes/class-wcj-product-custom-visibility.php:33
2594
+ #, php-format
2595
+ msgid ""
2596
+ "You can add selection drop box to frontend with \"%s\" widget (set \"Product "
2597
+ "custom visibility\" as \"Selector Type\") or %s shortcode."
2598
+ msgstr ""
2599
+
2600
+ #: includes/class-wcj-product-custom-visibility.php:34
2601
+ #: includes/settings/wcj-settings-product-by-country.php:56
2602
+ #: includes/widgets/class-wcj-widget-selector.php:27
2603
+ msgid "Booster - Selector"
2604
+ msgstr ""
2605
+
2606
  #: includes/class-wcj-product-images.php:25
2607
  msgid "Product Images"
2608
  msgstr ""
2609
 
2610
  #: includes/class-wcj-product-images.php:26
2611
+ msgid "Customize WooCommerce products images and thumbnails."
 
 
 
 
 
2612
  msgstr ""
2613
 
2614
  #: includes/class-wcj-product-info.php:101
2675
  #: includes/settings/wcj-settings-product-info.php:61
2676
  #: includes/settings/wcj-settings-product-info.php:94
2677
  #: includes/settings/wcj-settings-product-tabs.php:66
2678
+ #: includes/settings/wcj-settings-product-tabs.php:378
2679
+ #: includes/settings/wcj-settings-product-tabs.php:399
2680
+ #: includes/settings/wcj-settings-product-tabs.php:420
2681
  msgid "Priority (i.e. Order)"
2682
  msgstr ""
2683
 
2699
  msgstr ""
2700
 
2701
  #: includes/class-wcj-product-input-fields.php:24
2702
+ #: includes/admin/class-wc-settings-jetpack.php:462
2703
  #: includes/input-fields/class-wcj-product-input-fields-core.php:123
2704
  msgid "Product Input Fields"
2705
  msgstr ""
2793
  "remove WooCommerce default product tabs."
2794
  msgstr ""
2795
 
2796
+ #: includes/class-wcj-product-tabs.php:533
2797
  msgid "Booster: Custom Tabs"
2798
  msgstr ""
2799
 
2800
+ #: includes/class-wcj-product-tabs.php:560
2801
  msgid "Total number of custom tabs"
2802
  msgstr ""
2803
 
2804
+ #: includes/class-wcj-product-tabs.php:566
2805
  #: includes/input-fields/class-wcj-product-input-fields-core.php:149
2806
  msgid "Click \"Update\" product after you change this number."
2807
  msgstr ""
2808
 
2809
+ #: includes/class-wcj-product-tabs.php:581
2810
  #: includes/settings/wcj-settings-checkout-custom-fields.php:108
2811
  #: includes/settings/wcj-settings-product-tabs.php:59
2812
  msgid "Key"
2813
  msgstr ""
2814
 
2815
+ #: includes/class-wcj-product-tabs.php:586
2816
  #: includes/input-fields/wcj-product-input-fields-options.php:21
2817
  #: includes/settings/wcj-settings-related-products.php:59
2818
  #: includes/settings/wcj-settings-related-products.php:84
2819
  msgid "Order"
2820
  msgstr ""
2821
 
2822
+ #: includes/class-wcj-product-tabs.php:591
2823
  #: includes/settings/wcj-settings-cart.php:44
2824
  #: includes/settings/wcj-settings-checkout-custom-info.php:40
2825
  #: includes/settings/wcj-settings-left-to-free-shipping.php:34
2832
  msgid "Content"
2833
  msgstr ""
2834
 
2835
+ #: includes/class-wcj-product-tabs.php:596
2836
  #: includes/settings/wcj-settings-cart-customization.php:63
2837
  #: includes/settings/wcj-settings-product-tabs.php:80
2838
  msgid "Link"
2839
  msgstr ""
2840
 
2841
+ #: includes/class-wcj-product-tabs.php:598
2842
  #: includes/settings/wcj-settings-product-tabs.php:81
2843
  msgid ""
2844
  "If you wish to forward tab to new link, enter it here. In this case content "
2845
  "is ignored. Leave blank to show content."
2846
  msgstr ""
2847
 
2848
+ #: includes/class-wcj-product-tabs.php:602
2849
  #: includes/settings/wcj-settings-product-tabs.php:88
2850
  msgid "Link - Open in New Window"
2851
  msgstr ""
2852
 
2853
+ #: includes/class-wcj-product-tabs.php:605
2854
  #: includes/input-fields/wcj-product-input-fields-options.php:95
2855
+ #: includes/settings/wcj-settings-admin-orders-list.php:82
2856
+ #: includes/settings/wcj-settings-checkout-custom-fields.php:224
2857
  #: includes/settings/meta-box/wcj-settings-meta-box-custom-css.php:20
2858
  #: includes/settings/meta-box/wcj-settings-meta-box-offer-price.php:20
2859
  #: includes/settings/meta-box/wcj-settings-meta-box-price-by-user-role.php:35
2872
  #: includes/settings/meta-box/wcj-settings-meta-box-product-open-pricing.php:20
2873
  #: includes/settings/meta-box/wcj-settings-meta-box-product-price-by-formula.php:19
2874
  #: includes/settings/meta-box/wcj-settings-meta-box-related-products.php:23
2875
+ #: includes/settings/meta-box/wcj-settings-meta-box-sale-flash.php:20
2876
  #: includes/settings/meta-box/wcj-settings-meta-box-wholesale-price.php:32
2877
  #: includes/widgets/class-wcj-widget-country-switcher.php:82
2878
  msgid "No"
2879
  msgstr ""
2880
 
2881
+ #: includes/class-wcj-product-tabs.php:606
2882
  #: includes/input-fields/wcj-product-input-fields-options.php:88
2883
+ #: includes/settings/wcj-settings-checkout-custom-fields.php:218
2884
  #: includes/settings/wcj-settings-eu-vat-number.php:50
2885
  #: includes/settings/wcj-settings-eu-vat-number.php:57
2886
  #: includes/settings/wcj-settings-eu-vat-number.php:75
2905
  #: includes/settings/meta-box/wcj-settings-meta-box-product-open-pricing.php:19
2906
  #: includes/settings/meta-box/wcj-settings-meta-box-product-price-by-formula.php:18
2907
  #: includes/settings/meta-box/wcj-settings-meta-box-related-products.php:24
2908
+ #: includes/settings/meta-box/wcj-settings-meta-box-sale-flash.php:19
2909
  #: includes/settings/meta-box/wcj-settings-meta-box-wholesale-price.php:31
2910
  #: includes/widgets/class-wcj-widget-country-switcher.php:83
2911
  msgid "Yes"
2912
  msgstr ""
2913
 
2914
+ #: includes/class-wcj-product-tabs.php:614
2915
  #: includes/settings/wcj-settings-checkout-core-fields.php:61
2916
  #: includes/settings/wcj-settings-currency-exchange-rates.php:141
2917
+ #: includes/settings/wcj-settings-orders.php:102
2918
  #: includes/settings/wcj-settings-product-add-to-cart.php:64
2919
  #: includes/settings/meta-box/wcj-settings-meta-box-product-by-date.php:19
2920
  #: includes/settings/meta-box/wcj-settings-meta-box-product-by-time.php:19
2921
  msgid "Disabled"
2922
  msgstr ""
2923
 
2924
+ #: includes/class-wcj-product-tabs.php:617
2925
  #: includes/settings/wcj-settings-product-tabs.php:51
2926
+ #: includes/settings/wcj-settings-product-tabs.php:250
2927
  msgid "Custom Product Tab"
2928
  msgstr ""
2929
 
2943
  msgstr ""
2944
 
2945
  #: includes/class-wcj-products-xml.php:26
2946
+ msgid "Products XML Feeds"
2947
  msgstr ""
2948
 
2949
  #: includes/class-wcj-products-xml.php:27
2950
+ msgid "WooCommerce products XML feeds."
2951
  msgstr ""
2952
 
2953
  #: includes/class-wcj-products-xml.php:94
2997
  msgstr ""
2998
 
2999
  #: includes/class-wcj-purchase-data.php:92
3000
+ #: includes/admin/class-wc-settings-jetpack.php:295
3001
  msgid "Import"
3002
  msgstr ""
3003
 
3037
  msgstr ""
3038
 
3039
  #: includes/class-wcj-related-products.php:38
3040
+ #: includes/admin/class-wc-settings-jetpack.php:464
3041
  #: includes/settings/wcj-settings-free-price.php:20
3042
  #: includes/settings/meta-box/wcj-settings-meta-box-related-products.php:28
3043
  msgid "Related Products"
3067
  msgid "Booster: More Ranges - Months"
3068
  msgstr ""
3069
 
3070
+ #: includes/class-wcj-reports.php:74 includes/class-wcj-reports.php:119
3071
  msgid "Select Range"
3072
  msgstr ""
3073
 
3074
+ #: includes/class-wcj-reports.php:117
3075
  msgid "Booster: More Ranges"
3076
  msgstr ""
3077
 
3078
+ #: includes/class-wcj-reports.php:208
3079
  msgid "Booster: Product Sales (Daily)"
3080
  msgstr ""
3081
 
3082
+ #: includes/class-wcj-reports.php:215
3083
  msgid "Booster: Product Sales (Monthly)"
3084
  msgstr ""
3085
 
3086
+ #: includes/class-wcj-reports.php:222
3087
  msgid "Booster: Monthly Sales (with Currency Conversion)"
3088
  msgstr ""
3089
 
3090
+ #: includes/class-wcj-reports.php:237
3091
  msgid "Booster: All in stock"
3092
  msgstr ""
3093
 
3094
+ #: includes/class-wcj-reports.php:244
3095
  msgid "Booster: Understocked"
3096
  msgstr ""
3097
 
3098
+ #: includes/class-wcj-reports.php:251
3099
  msgid "Booster: Overstocked"
3100
  msgstr ""
3101
 
3102
+ #: includes/class-wcj-reports.php:266
3103
  msgid "Booster: Customers by Country"
3104
  msgstr ""
3105
 
3106
+ #: includes/class-wcj-reports.php:273
3107
  msgid "Booster: Customers by Country Sets"
3108
  msgstr ""
3109
 
3110
+ #: includes/class-wcj-sale-flash.php:28
3111
+ #: includes/settings/wcj-settings-sale-flash.php:26
3112
+ msgid "Sale Flash"
3113
+ msgstr ""
3114
+
3115
+ #: includes/class-wcj-sale-flash.php:29
3116
+ msgid "Customize WooCommerce products sale flash."
3117
+ msgstr ""
3118
+
3119
+ #: includes/class-wcj-sale-flash.php:55 includes/class-wcj-sale-flash.php:89
3120
+ #: includes/settings/wcj-settings-sale-flash.php:29
3121
+ #: includes/settings/wcj-settings-sale-flash.php:104
3122
+ #: includes/settings/meta-box/wcj-settings-meta-box-sale-flash.php:26
3123
+ msgid "Sale!"
3124
+ msgstr ""
3125
+
3126
  #: includes/class-wcj-shipping-by-order-amount.php:26
3127
  #: includes/settings/wcj-settings-shipping-by-order-amount.php:14
3128
  msgid "Shipping Methods by Min/Max Order Amount"
3135
  msgstr ""
3136
 
3137
  #: includes/class-wcj-shipping-by-products.php:26
3138
+ #: includes/settings/wcj-settings-shipping-options.php:57
3139
  msgid "Shipping Methods by Products"
3140
  msgstr ""
3141
 
3150
  msgstr ""
3151
 
3152
  #: includes/class-wcj-shipping-by-products.php:36
3153
+ #: includes/settings/wcj-settings-currency-per-product.php:206
3154
  msgid "Product Categories"
3155
  msgstr ""
3156
 
3159
  msgstr ""
3160
 
3161
  #: includes/class-wcj-shipping-by-products.php:40
3162
+ #: includes/settings/wcj-settings-currency-per-product.php:218
3163
  msgid "Product Tags"
3164
  msgstr ""
3165
 
3192
  msgstr ""
3193
 
3194
  #: includes/class-wcj-shipping-by-user-role.php:31
3195
+ #: includes/settings/wcj-settings-tax-display.php:107
3196
  msgid "User Roles"
3197
  msgstr ""
3198
 
3199
  #: includes/class-wcj-shipping-by-user-role.php:33
3200
+ #: includes/settings/wcj-settings-multicurrency.php:162
3201
+ #: includes/settings/wcj-settings-order-min-amount.php:104
3202
  #: includes/settings/wcj-settings-price-by-user-role.php:82
3203
  #, php-format
3204
  msgid ""
3245
  msgid "Grant free shipping on per product basis."
3246
  msgstr ""
3247
 
3248
+ #: includes/class-wcj-shipping-options.php:172
3249
  msgid "Booster: Hide when free is available"
3250
  msgstr ""
3251
 
3252
+ #: includes/class-wcj-shipping-options.php:180
3253
  #: includes/settings/wcj-settings-shipping-options.php:28
3254
  msgid ""
3255
  "Available options: hide all; hide all except \"Local Pickup\"; hide \"Flat "
3256
  "Rate\" only."
3257
  msgstr ""
3258
 
3259
+ #: includes/class-wcj-shipping-options.php:184
3260
  #: includes/settings/wcj-settings-shipping-options.php:32
3261
  msgid "Hide all"
3262
  msgstr ""
3263
 
3264
+ #: includes/class-wcj-shipping-options.php:185
3265
  #: includes/settings/wcj-settings-shipping-options.php:33
3266
  msgid "Hide all except \"Local Pickup\""
3267
  msgstr ""
3268
 
3269
+ #: includes/class-wcj-shipping-options.php:186
3270
  #: includes/settings/wcj-settings-shipping-options.php:34
3271
  msgid "Hide \"Flat Rate\" only"
3272
  msgstr ""
3354
  msgid "WooCommerce products stock management."
3355
  msgstr ""
3356
 
3357
+ #: includes/class-wcj-tax-display.php:25
3358
+ msgid "Tax Display"
3359
+ msgstr ""
3360
+
3361
+ #: includes/class-wcj-tax-display.php:26
3362
+ msgid "Customize WooCommerce tax display."
3363
+ msgstr ""
3364
+
3365
  #: includes/class-wcj-track-users.php:26
3366
  msgid "User Tracking"
3367
  msgstr ""
3387
  msgstr ""
3388
 
3389
  #: includes/class-wcj-track-users.php:159
3390
+ #: includes/settings/wcj-settings-products-xml.php:120
3391
  msgid "URL:"
3392
  msgstr ""
3393
 
3491
  "can be moved to paid plugin version."
3492
  msgstr ""
3493
 
3494
+ #: includes/admin/class-wc-settings-jetpack.php:263
3495
  msgid ""
3496
  "This section lets you export, import or reset all Booster's modules settings."
3497
  msgstr ""
3498
 
3499
+ #: includes/admin/class-wc-settings-jetpack.php:292
3500
  msgid "Export all Booster's options to a file."
3501
  msgstr ""
3502
 
3503
+ #: includes/admin/class-wc-settings-jetpack.php:297
3504
  msgid "Import all Booster's options from a file."
3505
  msgstr ""
3506
 
3507
+ #: includes/admin/class-wc-settings-jetpack.php:300
3508
  msgid ""
3509
  "This will reset settings to defaults for all Booster modules. Are you sure?"
3510
  msgstr ""
3511
 
3512
+ #: includes/admin/class-wc-settings-jetpack.php:300
3513
  msgid "Reset"
3514
  msgstr ""
3515
 
3516
+ #: includes/admin/class-wc-settings-jetpack.php:301
3517
  msgid "Reset all Booster's options."
3518
  msgstr ""
3519
 
3520
+ #: includes/admin/class-wc-settings-jetpack.php:338
3521
  msgid "Version"
3522
  msgstr ""
3523
 
3524
+ #: includes/admin/class-wc-settings-jetpack.php:362
3525
+ #: includes/admin/class-wc-settings-jetpack.php:369
3526
  msgid "Select All"
3527
  msgstr ""
3528
 
3529
+ #: includes/admin/class-wc-settings-jetpack.php:363
3530
+ #: includes/admin/class-wc-settings-jetpack.php:370
3531
  #: includes/admin/class-wcj-tools.php:72
3532
  msgid "Module"
3533
  msgstr ""
3534
 
3535
+ #: includes/admin/class-wc-settings-jetpack.php:364
3536
+ #: includes/admin/class-wc-settings-jetpack.php:371
3537
  #: includes/admin/class-wcj-tools.php:73
3538
  #: includes/export/class-wcj-fields-helper.php:293
3539
  #: includes/gateways/class-wc-gateway-wcj-custom.php:74
3540
  #: includes/settings/wcj-settings-eu-vat-number.php:34
3541
  #: includes/settings/wcj-settings-product-by-user.php:13
3542
+ #: includes/shortcodes/class-wcj-shortcodes-products-add-form.php:179
3543
+ #: includes/shortcodes/class-wcj-shortcodes-products-add-form.php:345
3544
  msgid "Description"
3545
  msgstr ""
3546
 
3547
+ #: includes/admin/class-wc-settings-jetpack.php:419
3548
  msgid "No active modules found."
3549
  msgstr ""
3550
 
3551
+ #: includes/admin/class-wc-settings-jetpack.php:422
3552
  msgid "Total Modules:"
3553
  msgstr ""
3554
 
3555
+ #: includes/admin/class-wc-settings-jetpack.php:449
3556
  msgid "Autoload Booster's Options"
3557
  msgstr ""
3558
 
3559
+ #: includes/admin/class-wc-settings-jetpack.php:451
3560
  msgid ""
3561
  "Choose if you want Booster's options to be autoloaded when calling "
3562
  "add_option. After saving this option, you need to Reset all Booster's "
3563
  "settings. Leave default value (i.e. Enabled) if not sure."
3564
  msgstr ""
3565
 
3566
+ #: includes/admin/class-wc-settings-jetpack.php:456
3567
  msgid "Use List Instead of Comma Separated Text for Products in Settings"
3568
  msgstr ""
3569
 
3570
+ #: includes/admin/class-wc-settings-jetpack.php:458
3571
  #, php-format
3572
  msgid "Supported modules: %s."
3573
  msgstr ""
3574
 
3575
+ #: includes/admin/class-wc-settings-jetpack.php:463
3576
+ msgid "Products XML"
3577
+ msgstr ""
3578
+
3579
+ #: includes/admin/class-wc-settings-jetpack.php:488
3580
+ #: includes/core/class-wcj-admin.php:113
3581
+ msgid "Booster for WooCommerce"
3582
+ msgstr ""
3583
+
3584
+ #: includes/admin/class-wcj-settings-custom-fields.php:65
3585
+ #, php-format
3586
+ msgid "Grab %s rate from %s"
3587
+ msgstr ""
3588
+
3589
+ #: includes/admin/class-wcj-settings-custom-fields.php:259
3590
  #: includes/settings/wcj-settings-wpml.php:21
3591
  msgid "To use tools, module must be enabled."
3592
  msgstr ""
3593
 
3594
+ #: includes/admin/class-wcj-settings-custom-fields.php:298
3595
  msgid "Save changes"
3596
  msgstr ""
3597
 
3604
  msgid "Wrong file format!"
3605
  msgstr ""
3606
 
3607
+ #: includes/admin/class-wcj-settings-manager.php:81
3608
  #, php-format
3609
  msgid "%d options successfully imported."
3610
  msgstr ""
3611
 
3612
+ #: includes/admin/class-wcj-settings-manager.php:166
3613
  #, php-format
3614
+ msgid "%d options and %d meta successfully deleted."
3615
  msgstr ""
3616
 
3617
  #: includes/admin/class-wcj-tools.php:32
3642
  msgid "Tool"
3643
  msgstr ""
3644
 
3645
+ #: includes/admin/wcj-modules-cats.php:15
3646
  msgid ""
3647
  "This dashboard lets you enable/disable any Booster's module. Each checkbox "
3648
  "comes with short module's description. Please visit <a href=\"http://booster."
3650
  "feature."
3651
  msgstr ""
3652
 
3653
+ #: includes/admin/wcj-modules-cats.php:25
3654
  msgid "Prices & Currencies"
3655
  msgstr ""
3656
 
3657
+ #: includes/admin/wcj-modules-cats.php:26
3658
  msgid ""
3659
  "Multicurrency, Price Converter, Wholesale Pricing, Name You Price, Price by "
3660
  "User Role and more."
3661
  msgstr ""
3662
 
3663
+ #: includes/admin/wcj-modules-cats.php:47
3664
  msgid "Button & Price Labels"
3665
  msgstr ""
3666
 
3667
+ #: includes/admin/wcj-modules-cats.php:48
3668
  msgid "Add to Cart Labels, Call for Price, Custom Price Labels and more."
3669
  msgstr ""
3670
 
3671
+ #: includes/admin/wcj-modules-cats.php:60
3672
  msgid ""
3673
  "Bookings, Crowdfunding Products, Product Addons and Input Fields, Product "
3674
  "Listings, Product Tabs and more."
3675
  msgstr ""
3676
 
3677
+ #: includes/admin/wcj-modules-cats.php:92
3678
  msgid "Cart & Checkout"
3679
  msgstr ""
3680
 
3681
+ #: includes/admin/wcj-modules-cats.php:93
3682
  msgid ""
3683
  "Cart and Checkout Customization, Empty Cart Button, Mini Cart, Coupons and "
3684
  "more."
3685
  msgstr ""
3686
 
3687
+ #: includes/admin/wcj-modules-cats.php:111
3688
  #: includes/settings/wcj-settings-payment-gateways-by-country.php:14
3689
  #: includes/settings/wcj-settings-payment-gateways-by-currency.php:14
3690
  #: includes/settings/wcj-settings-payment-gateways-by-shipping.php:21
3693
  msgid "Payment Gateways"
3694
  msgstr ""
3695
 
3696
+ #: includes/admin/wcj-modules-cats.php:112
3697
  msgid ""
3698
  "Custom Payment Gateways, Gateways Currency, Gateways Fees and Discounts and "
3699
  "more."
3700
  msgstr ""
3701
 
3702
+ #: includes/admin/wcj-modules-cats.php:128
3703
  msgid "Shipping & Orders"
3704
  msgstr ""
3705
 
3706
+ #: includes/admin/wcj-modules-cats.php:129
3707
  msgid ""
3708
  "Order Custom Statuses, Order Minimum Amount, Order Numbers, Custom Shipping "
3709
  "Methods and more."
3710
  msgstr ""
3711
 
3712
+ #: includes/admin/wcj-modules-cats.php:149
3713
  msgid "PDF Invoicing & Packing Slips"
3714
  msgstr ""
3715
 
3716
+ #: includes/admin/wcj-modules-cats.php:150
3717
  msgid "PDF Documents"
3718
  msgstr ""
3719
 
3720
+ #: includes/admin/wcj-modules-cats.php:165
3721
  msgid "Emails & Misc."
3722
  msgstr ""
3723
 
3724
+ #: includes/admin/wcj-modules-cats.php:166
3725
  msgid "Emails, Reports, Export, Admin Tools, General Options and more."
3726
  msgstr ""
3727
 
3789
  msgid "Enable Module"
3790
  msgstr ""
3791
 
3792
+ #: includes/classes/class-wcj-pdf-invoice.php:81
3793
  #: includes/settings/wcj-settings-pdf-invoicing-header.php:55
3794
  msgid "Company Name"
3795
  msgstr ""
3796
 
3797
+ #: includes/classes/class-wcj-shortcodes.php:107
3798
+ #: includes/shortcodes/class-wcj-shortcodes-general.php:375
3799
+ #, php-format
3800
+ msgid "\"%s\" module is not enabled!"
3801
+ msgstr ""
3802
+
3803
  #: includes/classes/class-wcj-tcpdf.php:34
3804
  #: includes/settings/wcj-settings-pdf-invoicing-footer.php:31
3805
  msgid "Page %page_number% / %total_pages%"
3806
  msgstr ""
3807
 
3808
+ #: includes/core/class-wcj-admin.php:73
3809
+ #, php-format
3810
+ msgid ""
3811
+ "Please upgrade <strong>Booster Plus for WooCommerce</strong> plugin. Visit "
3812
+ "<a target=\"_blank\" href=\"%s\">your account page</a> on booster.io to "
3813
+ "download the latest Booster Plus version."
3814
+ msgstr ""
3815
+
3816
+ #: includes/core/class-wcj-admin.php:77
3817
+ #, php-format
3818
+ msgid ""
3819
+ "There is new version of <strong>Booster Plus for WooCommerce</strong> plugin "
3820
+ "available. We recommend upgrading. Please visit <a target=\"_blank\" href="
3821
+ "\"%s\">your account page</a> on booster.io to download the latest Booster "
3822
+ "Plus version."
3823
+ msgstr ""
3824
+
3825
+ #: includes/core/class-wcj-admin.php:97
3826
+ #, php-format
3827
+ msgid ""
3828
+ "If you like <strong>Booster for WooCommerce</strong> please leave us a %s "
3829
+ "rating. Thank you, we couldn't have done it without you!"
3830
+ msgstr ""
3831
+
3832
+ #: includes/core/class-wcj-admin.php:114
3833
+ msgid "Booster Settings"
3834
+ msgstr ""
3835
+
3836
+ #: includes/core/class-wcj-admin.php:130
3837
+ msgid "Docs"
3838
+ msgstr ""
3839
+
3840
+ #: includes/core/class-wcj-admin.php:133
3841
+ msgid "Unlock all"
3842
+ msgstr ""
3843
+
3844
  #: includes/emails/class-wc-email-wcj-custom.php:31
3845
  msgid ""
3846
  "Custom emails are sent to the recipient list when selected triggers are "
3855
  msgid "[{site_title}] Custom Subject - Order ({order_number}) - {order_date}"
3856
  msgstr ""
3857
 
3858
+ #: includes/emails/class-wc-email-wcj-custom.php:217
3859
  #, php-format
3860
  msgid "New order (%s)"
3861
  msgstr ""
3862
 
3863
+ #: includes/emails/class-wc-email-wcj-custom.php:218
3864
  #, php-format
3865
  msgid "Order status updated to %s"
3866
  msgstr ""
3867
 
3868
+ #: includes/emails/class-wc-email-wcj-custom.php:221
3869
  #, php-format
3870
  msgid "Order status %s to %s"
3871
  msgstr ""
3872
 
3873
+ #: includes/emails/class-wc-email-wcj-custom.php:228
3874
  #: includes/gateways/class-wc-gateway-wcj-custom.php:59
3875
+ #: includes/settings/wcj-settings-admin-products-list.php:19
3876
+ #: includes/settings/wcj-settings-admin-products-list.php:75
3877
  #: includes/settings/wcj-settings-checkout-custom-fields.php:106
 
 
3878
  #: includes/shipping/class-wc-shipping-wcj-custom.php:110
3879
  msgid "Enable/Disable"
3880
  msgstr ""
3881
 
3882
+ #: includes/emails/class-wc-email-wcj-custom.php:230
3883
  msgid "Enable this email notification"
3884
  msgstr ""
3885
 
3886
+ #: includes/emails/class-wc-email-wcj-custom.php:234
3887
  msgid "Trigger(s)"
3888
  msgstr ""
3889
 
3890
+ #: includes/emails/class-wc-email-wcj-custom.php:238
3891
  msgid ""
3892
  "Please note, that all new orders in WooCommerce by default are created with "
3893
  "Pending Payment status. If you want to change the default order status - you "
3895
  "Settings > Booster > Shipping & Orders > Order Custom Statuses)."
3896
  msgstr ""
3897
 
3898
+ #: includes/emails/class-wc-email-wcj-custom.php:241
3899
  msgid "New order (Any status)"
3900
  msgstr ""
3901
 
3902
+ #: includes/emails/class-wc-email-wcj-custom.php:246
3903
  msgid "Reset password notification"
3904
  msgstr ""
3905
 
3906
+ #: includes/emails/class-wc-email-wcj-custom.php:247
3907
  msgid "Order fully refunded notification"
3908
  msgstr ""
3909
 
3910
+ #: includes/emails/class-wc-email-wcj-custom.php:248
3911
  msgid "Order partially refunded notification"
3912
  msgstr ""
3913
 
3914
+ #: includes/emails/class-wc-email-wcj-custom.php:249
3915
  msgid "New customer note notification"
3916
  msgstr ""
3917
 
3918
+ #: includes/emails/class-wc-email-wcj-custom.php:250
3919
  msgid "Low stock notification"
3920
  msgstr ""
3921
 
3922
+ #: includes/emails/class-wc-email-wcj-custom.php:251
3923
  msgid "No stock notification"
3924
  msgstr ""
3925
 
3926
+ #: includes/emails/class-wc-email-wcj-custom.php:252
3927
  msgid "Product on backorder notification"
3928
  msgstr ""
3929
 
3930
+ #: includes/emails/class-wc-email-wcj-custom.php:253
3931
  msgid "Created customer notification"
3932
  msgstr ""
3933
 
3934
+ #: includes/emails/class-wc-email-wcj-custom.php:260
3935
  msgid "Recipient(s)"
3936
  msgstr ""
3937
 
3938
+ #: includes/emails/class-wc-email-wcj-custom.php:262
3939
  #, php-format
3940
  msgid ""
3941
  "Enter recipients (comma separated) for this email. Defaults to <code>%s</"
3942
  "code>."
3943
  msgstr ""
3944
 
3945
+ #: includes/emails/class-wc-email-wcj-custom.php:263
3946
  msgid "Or enter <code>%customer%</code> to send to customer billing email."
3947
  msgstr ""
3948
 
3949
+ #: includes/emails/class-wc-email-wcj-custom.php:269
3950
  msgid "Subject"
3951
  msgstr ""
3952
 
3953
+ #: includes/emails/class-wc-email-wcj-custom.php:271
3954
  #, php-format
3955
  msgid ""
3956
  "This controls the email subject line. Leave blank to use the default "
3957
  "subject: <code>%s</code>."
3958
  msgstr ""
3959
 
3960
+ #: includes/emails/class-wc-email-wcj-custom.php:277
3961
  msgid "Email type"
3962
  msgstr ""
3963
 
3964
+ #: includes/emails/class-wc-email-wcj-custom.php:279
3965
  msgid "Choose which format of email to send."
3966
  msgstr ""
3967
 
3968
+ #: includes/emails/class-wc-email-wcj-custom.php:285
3969
  msgid "Wrap in WC Email Template"
3970
  msgstr ""
3971
 
3972
+ #: includes/emails/class-wc-email-wcj-custom.php:291
3973
  msgid ""
3974
  "WC Email Heading. Used only if \"Wrap in WC Email Template\" is enabled and "
3975
  "only for HTML templates."
3976
  msgstr ""
3977
 
3978
+ #: includes/emails/class-wc-email-wcj-custom.php:292
3979
  #, php-format
3980
  msgid ""
3981
  "This controls the main heading contained within the email notification. "
3982
  "Leave blank to use the default heading: <code>%s</code>."
3983
  msgstr ""
3984
 
3985
+ #: includes/emails/class-wc-email-wcj-custom.php:298
3986
  msgid "HTML template"
3987
  msgstr ""
3988
 
3989
+ #: includes/emails/class-wc-email-wcj-custom.php:300
3990
+ #: includes/emails/class-wc-email-wcj-custom.php:309
3991
  msgid "You can use shortcodes here. E.g. Booster's order shortcodes."
3992
  msgstr ""
3993
 
3994
+ #: includes/emails/class-wc-email-wcj-custom.php:307
3995
  msgid "Plain text template"
3996
  msgstr ""
3997
 
3998
  #: includes/exchange-rates/class-wcj-exchange-rates-crons.php:22
3999
  #: includes/settings/wcj-settings-currency-exchange-rates.php:38
4000
+ #: includes/settings/wcj-settings-products-xml.php:133
4001
  msgid "Update Every Minute"
4002
  msgstr ""
4003
 
4004
  #: includes/exchange-rates/class-wcj-exchange-rates-crons.php:23
4005
  #: includes/settings/wcj-settings-currency-exchange-rates.php:39
4006
+ #: includes/settings/wcj-settings-products-xml.php:134
4007
  msgid "Update Hourly"
4008
  msgstr ""
4009
 
4010
  #: includes/exchange-rates/class-wcj-exchange-rates-crons.php:24
4011
  #: includes/settings/wcj-settings-currency-exchange-rates.php:40
4012
+ #: includes/settings/wcj-settings-products-xml.php:135
4013
  msgid "Update Twice Daily"
4014
  msgstr ""
4015
 
4016
  #: includes/exchange-rates/class-wcj-exchange-rates-crons.php:25
4017
  #: includes/settings/wcj-settings-currency-exchange-rates.php:41
4018
+ #: includes/settings/wcj-settings-products-xml.php:136
4019
  msgid "Update Daily"
4020
  msgstr ""
4021
 
4022
  #: includes/exchange-rates/class-wcj-exchange-rates-crons.php:26
4023
  #: includes/settings/wcj-settings-currency-exchange-rates.php:42
4024
+ #: includes/settings/wcj-settings-products-xml.php:137
4025
  msgid "Update Weekly"
4026
  msgstr ""
4027
 
4037
  msgid "Cron job: exchange rates update failed"
4038
  msgstr ""
4039
 
 
 
 
 
 
4040
  #: includes/export/class-wcj-fields-helper.php:34
4041
  msgid "Customer Nr."
4042
  msgstr ""
4323
  #: includes/settings/wcj-settings-product-by-user.php:16
4324
  #: includes/settings/meta-box/wcj-settings-meta-box-multicurrency.php:37
4325
  #: includes/settings/meta-box/wcj-settings-meta-box-price-by-user-role.php:55
4326
+ #: includes/shortcodes/class-wcj-shortcodes-products-add-form.php:182
4327
+ #: includes/shortcodes/class-wcj-shortcodes-products-add-form.php:381
4328
  msgid "Regular Price"
4329
  msgstr ""
4330
 
4333
  #: includes/settings/wcj-settings-product-by-user.php:17
4334
  #: includes/settings/meta-box/wcj-settings-meta-box-multicurrency.php:46
4335
  #: includes/settings/meta-box/wcj-settings-meta-box-price-by-user-role.php:64
4336
+ #: includes/shortcodes/class-wcj-shortcodes-products-add-form.php:183
4337
+ #: includes/shortcodes/class-wcj-shortcodes-products-add-form.php:390
4338
  msgid "Sale Price"
4339
  msgstr ""
4340
 
4347
  #: includes/settings/wcj-settings-global-discount.php:58
4348
  #: includes/settings/wcj-settings-product-addons.php:73
4349
  #: includes/settings/wcj-settings-purchase-data.php:73
4350
+ #: includes/settings/wcj-settings-shipping-options.php:77
4351
  #: includes/settings/meta-box/wcj-settings-meta-box-product-addons.php:45
4352
  #: includes/shipping/class-wc-shipping-wcj-custom-with-shipping-zones.php:164
4353
  #: includes/shipping/class-wc-shipping-wcj-custom.php:123
4356
  msgstr ""
4357
 
4358
  #: includes/export/class-wcj-fields-helper.php:291
4359
+ #: includes/settings/wcj-settings-shipping-options.php:191
4360
  msgid "Image URL"
4361
  msgstr ""
4362
 
4363
  #: includes/export/class-wcj-fields-helper.php:292
4364
  #: includes/settings/wcj-settings-product-by-user.php:14
4365
+ #: includes/shortcodes/class-wcj-shortcodes-products-add-form.php:180
4366
+ #: includes/shortcodes/class-wcj-shortcodes-products-add-form.php:354
4367
  msgid "Short Description"
4368
  msgstr ""
4369
 
4473
  msgid "Availability Class"
4474
  msgstr ""
4475
 
4476
+ #: includes/functions/wcj-functions-admin.php:37
4477
+ #, php-format
4478
+ msgid ""
4479
+ "<strong>Booster for WooCommerce</strong> plugin was successfully updated to "
4480
+ "version <strong>%s</strong>."
4481
+ msgstr ""
4482
+
4483
+ #: includes/functions/wcj-functions-admin.php:60
4484
  msgid "Enter comma separated list of IDs."
4485
  msgstr ""
4486
 
4487
+ #: includes/functions/wcj-functions-admin.php:134
4488
  #: includes/settings/wcj-settings-emails-verification.php:59
4489
  #: includes/settings/wcj-settings-emails-verification.php:67
4490
  #: includes/settings/wcj-settings-emails-verification.php:107
4492
  msgid "Replaced value: %s"
4493
  msgstr ""
4494
 
4495
+ #: includes/functions/wcj-functions-admin.php:134
4496
  #, php-format
4497
  msgid "Replaced values: %s"
4498
  msgstr ""
4499
 
4500
+ #: includes/functions/wcj-functions-admin.php:163
4501
  msgid "Install Booster Plus to unlock all features"
4502
  msgstr ""
4503
 
4504
+ #: includes/functions/wcj-functions-admin.php:164
4505
  #, php-format
4506
  msgid ""
4507
  "Some settings fields are locked and you will need %s to modify all locked "
4508
  "fields."
4509
  msgstr ""
4510
 
4511
+ #: includes/functions/wcj-functions-admin.php:165
4512
  msgid "Buy now"
4513
  msgstr ""
4514
 
4515
+ #: includes/functions/wcj-functions-admin.php:165
4516
  msgid "Visit Booster Site"
4517
  msgstr ""
4518
 
4519
+ #: includes/functions/wcj-functions-admin.php:169
4520
  #, php-format
4521
  msgid "Get <a href=\"%s\" target=\"_blank\">Booster Plus</a> to change value."
4522
  msgstr ""
4523
 
4524
+ #: includes/functions/wcj-functions-admin.php:172
4525
  #, php-format
4526
  msgid ""
4527
  "Get <a href=\"%s\" target=\"_blank\">Booster Plus</a> to enable \"%s\" "
4528
  "option."
4529
  msgstr ""
4530
 
4531
+ #: includes/functions/wcj-functions-admin.php:175
4532
  #, php-format
4533
  msgid "Get Booster Plus to enable \"%s\" option."
4534
  msgstr ""
4535
 
4536
+ #: includes/functions/wcj-functions-admin.php:178
4537
  #, php-format
4538
  msgid ""
4539
  "Get <a href=\"%s\" target=\"_blank\">Booster Plus</a> to change values below."
4540
  msgstr ""
4541
 
4542
+ #: includes/functions/wcj-functions-admin.php:181
4543
  #, php-format
4544
  msgid ""
4545
  "Get <a href=\"%s\" target=\"_blank\">Booster Plus</a> to change values above."
4546
  msgstr ""
4547
 
4548
+ #: includes/functions/wcj-functions-admin.php:184
4549
  msgid "Get Booster Plus to change value."
4550
  msgstr ""
4551
 
5529
  msgid "European Union"
5530
  msgstr ""
5531
 
5532
+ #: includes/functions/wcj-functions-crons.php:24
5533
+ msgid "Update"
5534
+ msgstr ""
5535
+
5536
+ #: includes/functions/wcj-functions-crons.php:27
5537
+ #, php-format
5538
+ msgid "%s every minute"
5539
+ msgstr ""
5540
+
5541
+ #: includes/functions/wcj-functions-crons.php:28
5542
+ #, php-format
5543
+ msgid "%s every 5 minutes"
5544
+ msgstr ""
5545
+
5546
+ #: includes/functions/wcj-functions-crons.php:29
5547
+ #, php-format
5548
+ msgid "%s every 15 minutes"
5549
+ msgstr ""
5550
+
5551
+ #: includes/functions/wcj-functions-crons.php:30
5552
+ #, php-format
5553
+ msgid "%s every 30 minutes"
5554
+ msgstr ""
5555
+
5556
+ #: includes/functions/wcj-functions-crons.php:31
5557
+ #, php-format
5558
+ msgid "%s hourly"
5559
+ msgstr ""
5560
+
5561
+ #: includes/functions/wcj-functions-crons.php:32
5562
+ #, php-format
5563
+ msgid "%s twice daily"
5564
+ msgstr ""
5565
+
5566
+ #: includes/functions/wcj-functions-crons.php:33
5567
+ #, php-format
5568
+ msgid "%s daily"
5569
+ msgstr ""
5570
+
5571
+ #: includes/functions/wcj-functions-crons.php:34
5572
+ #, php-format
5573
+ msgid "%s weekly"
5574
+ msgstr ""
5575
+
5576
+ #: includes/functions/wcj-functions-crons.php:80
5577
+ #, php-format
5578
+ msgid "%s till next run."
5579
+ msgstr ""
5580
+
5581
+ #: includes/functions/wcj-functions-crons.php:82
5582
+ #, php-format
5583
+ msgid "%s seconds till next run."
5584
+ msgstr ""
5585
+
5586
+ #: includes/functions/wcj-functions-crons.php:99
5587
+ msgid "Once weekly"
5588
+ msgstr ""
5589
+
5590
+ #: includes/functions/wcj-functions-crons.php:103
5591
+ msgid "Once every 30 minutes"
5592
+ msgstr ""
5593
+
5594
+ #: includes/functions/wcj-functions-crons.php:107
5595
+ msgid "Once every 15 minutes"
5596
+ msgstr ""
5597
+
5598
+ #: includes/functions/wcj-functions-crons.php:111
5599
+ msgid "Once every 5 minutes"
5600
+ msgstr ""
5601
+
5602
+ #: includes/functions/wcj-functions-crons.php:115
5603
+ msgid "Once a minute"
5604
+ msgstr ""
5605
+
5606
  #: includes/functions/wcj-functions-currencies.php:15
5607
  msgid "United Arab Emirates Dirham"
5608
  msgstr ""
6069
  msgstr ""
6070
 
6071
  #: includes/functions/wcj-functions-currencies.php:131
6072
+ msgid "Paraguayan Guaran"
6073
  msgstr ""
6074
 
6075
  #: includes/functions/wcj-functions-currencies.php:132
6252
  msgid "Zimbabwean dollar"
6253
  msgstr ""
6254
 
6255
+ #: includes/functions/wcj-functions-currencies.php:179
6256
+ msgid "Auroracoin"
6257
+ msgstr ""
6258
+
6259
+ #: includes/functions/wcj-functions-currencies.php:180
6260
+ msgid "BitConnect"
6261
+ msgstr ""
6262
+
6263
+ #: includes/functions/wcj-functions-currencies.php:181
6264
+ msgid "Bitcoin Cash"
6265
+ msgstr ""
6266
+
6267
+ #: includes/functions/wcj-functions-currencies.php:182
6268
  msgid "Bitcoin"
6269
  msgstr ""
6270
 
6271
+ #: includes/functions/wcj-functions-currencies.php:183
6272
+ msgid "Coinye"
6273
+ msgstr ""
6274
+
6275
+ #: includes/functions/wcj-functions-currencies.php:184
6276
+ msgid "DigitalNote"
6277
+ msgstr ""
6278
+
6279
+ #: includes/functions/wcj-functions-currencies.php:185
6280
+ msgid "Emercoin"
6281
+ msgstr ""
6282
+
6283
+ #: includes/functions/wcj-functions-currencies.php:186
6284
+ msgid "Ethereum Classic"
6285
+ msgstr ""
6286
+
6287
+ #: includes/functions/wcj-functions-currencies.php:187
6288
  msgid "Ethereum"
6289
  msgstr ""
6290
 
6291
+ #: includes/functions/wcj-functions-currencies.php:188
6292
+ msgid "Freemasoncoin"
6293
+ msgstr ""
6294
+
6295
+ #: includes/functions/wcj-functions-currencies.php:189
6296
+ msgid "Gridcoin"
6297
+ msgstr ""
6298
+
6299
+ #: includes/functions/wcj-functions-currencies.php:190
6300
+ msgid "IOTA"
6301
+ msgstr ""
6302
+
6303
+ #: includes/functions/wcj-functions-currencies.php:191
6304
+ msgid "Litecoin"
6305
+ msgstr ""
6306
+
6307
+ #: includes/functions/wcj-functions-currencies.php:192
6308
+ msgid "MazaCoin"
6309
+ msgstr ""
6310
+
6311
+ #: includes/functions/wcj-functions-currencies.php:193
6312
+ msgid "Monero"
6313
+ msgstr ""
6314
+
6315
+ #: includes/functions/wcj-functions-currencies.php:194
6316
+ msgid "Namecoin"
6317
+ msgstr ""
6318
+
6319
+ #: includes/functions/wcj-functions-currencies.php:195
6320
+ msgid "NEM"
6321
+ msgstr ""
6322
+
6323
+ #: includes/functions/wcj-functions-currencies.php:196
6324
+ msgid "Nxt"
6325
+ msgstr ""
6326
+
6327
+ #: includes/functions/wcj-functions-currencies.php:197
6328
+ msgid "Omni"
6329
+ msgstr ""
6330
+
6331
+ #: includes/functions/wcj-functions-currencies.php:198
6332
+ msgid "Peercoin"
6333
+ msgstr ""
6334
+
6335
+ #: includes/functions/wcj-functions-currencies.php:199
6336
+ msgid "PotCoin"
6337
+ msgstr ""
6338
+
6339
+ #: includes/functions/wcj-functions-currencies.php:200
6340
+ msgid "Primecoin"
6341
+ msgstr ""
6342
+
6343
+ #: includes/functions/wcj-functions-currencies.php:201
6344
+ msgid "Ripple"
6345
+ msgstr ""
6346
+
6347
+ #: includes/functions/wcj-functions-currencies.php:202
6348
+ msgid "SixEleven"
6349
+ msgstr ""
6350
+
6351
+ #: includes/functions/wcj-functions-currencies.php:203
6352
+ msgid "Synereo AMP"
6353
+ msgstr ""
6354
+
6355
+ #: includes/functions/wcj-functions-currencies.php:204
6356
+ msgid "Titcoin"
6357
+ msgstr ""
6358
+
6359
+ #: includes/functions/wcj-functions-currencies.php:205
6360
+ msgid "Ubiq"
6361
+ msgstr ""
6362
+
6363
+ #: includes/functions/wcj-functions-currencies.php:206
6364
+ msgid "Vertcoin"
6365
+ msgstr ""
6366
+
6367
+ #: includes/functions/wcj-functions-currencies.php:207
6368
+ msgid "Zcash"
6369
+ msgstr ""
6370
+
6371
+ #: includes/functions/wcj-functions-currencies.php:209
6372
  msgid "myCred"
6373
  msgstr ""
6374
 
6375
+ #: includes/functions/wcj-functions-exchange-rates.php:66
6376
  msgid "Yahoo"
6377
  msgstr ""
6378
 
6379
+ #: includes/functions/wcj-functions-exchange-rates.php:67
6380
  msgid "European Central Bank (ECB)"
6381
  msgstr ""
6382
 
6383
+ #: includes/functions/wcj-functions-exchange-rates.php:68
6384
  msgid "TCMB"
6385
  msgstr ""
6386
 
6387
+ #: includes/functions/wcj-functions-exchange-rates.php:69
6388
  msgid "Fixer.io"
6389
  msgstr ""
6390
 
6391
+ #: includes/functions/wcj-functions-exchange-rates.php:70
6392
+ msgid "Coinbase"
6393
+ msgstr ""
6394
+
6395
+ #: includes/functions/wcj-functions-exchange-rates.php:71
6396
+ msgid "CoinMarketCap"
6397
+ msgstr ""
6398
+
6399
+ #: includes/functions/wcj-functions-general.php:399
6400
  #: includes/settings/wcj-settings-left-to-free-shipping.php:147
6401
  msgid "You have Free delivery"
6402
  msgstr ""
6403
 
6404
+ #: includes/functions/wcj-functions-general.php:420
6405
  msgid "Before cart"
6406
  msgstr ""
6407
 
6408
+ #: includes/functions/wcj-functions-general.php:421
6409
  msgid "Before cart table"
6410
  msgstr ""
6411
 
6412
+ #: includes/functions/wcj-functions-general.php:422
6413
  msgid "Before cart contents"
6414
  msgstr ""
6415
 
6416
+ #: includes/functions/wcj-functions-general.php:423
6417
  msgid "Cart contents"
6418
  msgstr ""
6419
 
6420
+ #: includes/functions/wcj-functions-general.php:424
6421
  msgid "Cart coupon"
6422
  msgstr ""
6423
 
6424
+ #: includes/functions/wcj-functions-general.php:425
6425
  msgid "Cart actions"
6426
  msgstr ""
6427
 
6428
+ #: includes/functions/wcj-functions-general.php:426
6429
  msgid "After cart contents"
6430
  msgstr ""
6431
 
6432
+ #: includes/functions/wcj-functions-general.php:427
6433
  msgid "After cart table"
6434
  msgstr ""
6435
 
6436
+ #: includes/functions/wcj-functions-general.php:428
6437
  msgid "Cart collaterals"
6438
  msgstr ""
6439
 
6440
+ #: includes/functions/wcj-functions-general.php:429
6441
  msgid "After cart"
6442
  msgstr ""
6443
 
6444
+ #: includes/functions/wcj-functions-general.php:431
6445
  msgid "Before cart totals"
6446
  msgstr ""
6447
 
6448
+ #: includes/functions/wcj-functions-general.php:432
6449
  msgid "Cart totals: Before shipping"
6450
  msgstr ""
6451
 
6452
+ #: includes/functions/wcj-functions-general.php:433
6453
  msgid "Cart totals: After shipping"
6454
  msgstr ""
6455
 
6456
+ #: includes/functions/wcj-functions-general.php:434
6457
  msgid "Cart totals: Before order total"
6458
  msgstr ""
6459
 
6460
+ #: includes/functions/wcj-functions-general.php:435
6461
  msgid "Cart totals: After order total"
6462
  msgstr ""
6463
 
6464
+ #: includes/functions/wcj-functions-general.php:436
6465
  msgid "Proceed to checkout"
6466
  msgstr ""
6467
 
6468
+ #: includes/functions/wcj-functions-general.php:437
6469
  msgid "After cart totals"
6470
  msgstr ""
6471
 
6472
+ #: includes/functions/wcj-functions-general.php:439
6473
  msgid "Before shipping calculator"
6474
  msgstr ""
6475
 
6476
+ #: includes/functions/wcj-functions-general.php:440
6477
  msgid "After shipping calculator"
6478
  msgstr ""
6479
 
6480
+ #: includes/functions/wcj-functions-general.php:442
6481
  msgid "If cart is empty"
6482
  msgstr ""
6483
 
6533
  msgid "Last Sale Order Status"
6534
  msgstr ""
6535
 
6536
+ #: includes/functions/wcj-functions-reports.php:82
6537
  msgid "Last 14 days"
6538
  msgstr ""
6539
 
6540
+ #: includes/functions/wcj-functions-reports.php:87
6541
  msgid "Last 30 days"
6542
  msgstr ""
6543
 
6544
+ #: includes/functions/wcj-functions-reports.php:92
6545
  msgid "Last 3 months"
6546
  msgstr ""
6547
 
6548
+ #: includes/functions/wcj-functions-reports.php:97
6549
  msgid "Last 6 months"
6550
  msgstr ""
6551
 
6552
+ #: includes/functions/wcj-functions-reports.php:102
6553
  msgid "Last 12 months"
6554
  msgstr ""
6555
 
6556
+ #: includes/functions/wcj-functions-reports.php:107
6557
  msgid "Last 24 months"
6558
  msgstr ""
6559
 
6560
+ #: includes/functions/wcj-functions-reports.php:112
6561
  msgid "Last 36 months"
6562
  msgstr ""
6563
 
6564
+ #: includes/functions/wcj-functions-reports.php:117
6565
  msgid "Same days last month"
6566
  msgstr ""
6567
 
6568
+ #: includes/functions/wcj-functions-reports.php:122
6569
  msgid "Same days last year"
6570
  msgstr ""
6571
 
6572
+ #: includes/functions/wcj-functions-reports.php:127
6573
  msgid "Last year"
6574
  msgstr ""
6575
 
6576
+ #: includes/functions/wcj-functions-reports.php:132
6577
  msgid "Yesterday"
6578
  msgstr ""
6579
 
6580
+ #: includes/functions/wcj-functions-reports.php:137
6581
  msgid "Today"
6582
  msgstr ""
6583
 
6744
  msgid "File is too big!"
6745
  msgstr ""
6746
 
6747
+ #: includes/input-fields/class-wcj-product-input-fields-core.php:574
6748
  msgid "Select a country&hellip;"
6749
  msgstr ""
6750
 
6751
  #: includes/input-fields/wcj-product-input-fields-options.php:15
6752
+ #: includes/settings/wcj-settings-admin-orders-list.php:57
6753
+ #: includes/settings/wcj-settings-admin-products-list.php:43
6754
  #: includes/settings/wcj-settings-checkout-core-fields.php:60
6755
  #: includes/settings/wcj-settings-checkout-files-upload.php:39
6756
  #: includes/settings/wcj-settings-export.php:70
6757
  #: includes/settings/wcj-settings-export.php:138
6758
  #: includes/settings/wcj-settings-export.php:220
6759
  #: includes/settings/wcj-settings-global-discount.php:50
 
6760
  #: includes/settings/wcj-settings-product-by-user.php:149
6761
+ #: includes/settings/wcj-settings-products-xml.php:76
 
6762
  #: includes/settings/meta-box/wcj-settings-meta-box-price-by-user-role.php:37
6763
  #: includes/settings/meta-box/wcj-settings-meta-box-product-addons.php:21
6764
  #: includes/settings/meta-box/wcj-settings-meta-box-product-bookings.php:14
6880
  msgstr ""
6881
 
6882
  #: includes/input-fields/wcj-product-input-fields-options.php:104
6883
+ #: includes/settings/wcj-settings-checkout-custom-fields.php:232
6884
  msgid "Not Checked"
6885
  msgstr ""
6886
 
6887
  #: includes/input-fields/wcj-product-input-fields-options.php:105
6888
+ #: includes/settings/wcj-settings-checkout-custom-fields.php:233
6889
  #: includes/settings/wcj-settings-checkout-customization.php:26
6890
  msgid "Checked"
6891
  msgstr ""
6928
  msgstr ""
6929
 
6930
  #: includes/input-fields/wcj-product-input-fields-options.php:126
6931
+ #: includes/settings/wcj-settings-checkout-custom-fields.php:239
6932
  msgid "Leave blank to use your current WordPress format"
6933
  msgstr ""
6934
 
6980
  msgstr ""
6981
 
6982
  #: includes/input-fields/wcj-product-input-fields-options.php:167
6983
+ #: includes/settings/wcj-settings-checkout-custom-fields.php:277
6984
  msgid "Sunday"
6985
  msgstr ""
6986
 
6987
  #: includes/input-fields/wcj-product-input-fields-options.php:168
6988
+ #: includes/settings/wcj-settings-checkout-custom-fields.php:278
6989
  msgid "Monday"
6990
  msgstr ""
6991
 
6992
  #: includes/input-fields/wcj-product-input-fields-options.php:169
6993
+ #: includes/settings/wcj-settings-checkout-custom-fields.php:279
6994
  msgid "Tuesday"
6995
  msgstr ""
6996
 
6997
  #: includes/input-fields/wcj-product-input-fields-options.php:170
6998
+ #: includes/settings/wcj-settings-checkout-custom-fields.php:280
6999
  msgid "Wednesday"
7000
  msgstr ""
7001
 
7002
  #: includes/input-fields/wcj-product-input-fields-options.php:171
7003
+ #: includes/settings/wcj-settings-checkout-custom-fields.php:281
7004
  msgid "Thursday"
7005
  msgstr ""
7006
 
7007
  #: includes/input-fields/wcj-product-input-fields-options.php:172
7008
+ #: includes/settings/wcj-settings-checkout-custom-fields.php:282
7009
  msgid "Friday"
7010
  msgstr ""
7011
 
7012
  #: includes/input-fields/wcj-product-input-fields-options.php:173
7013
+ #: includes/settings/wcj-settings-checkout-custom-fields.php:283
7014
  msgid "Saturday"
7015
  msgstr ""
7016
 
7052
  msgstr ""
7053
 
7054
  #: includes/input-fields/wcj-product-input-fields-options.php:200
7055
+ #: includes/settings/wcj-settings-checkout-custom-fields.php:294
7056
  msgid "Timepicker: Interval"
7057
  msgstr ""
7058
 
7061
  msgstr ""
7062
 
7063
  #: includes/input-fields/wcj-product-input-fields-options.php:207
7064
+ #: includes/settings/wcj-settings-checkout-custom-fields.php:200
7065
  msgid "Select/Radio: Options"
7066
  msgstr ""
7067
 
7291
  msgstr ""
7292
 
7293
  #: includes/price-by-country/class-wcj-price-by-country-local.php:140
7294
+ #: includes/settings/wcj-settings-price-by-country.php:289
7295
  msgid "Make empty price"
7296
  msgstr ""
7297
 
7362
  msgstr ""
7363
 
7364
  #: includes/reports/wcj-class-reports-monthly-sales.php:87
7365
+ #: includes/reports/wcj-class-reports-sales.php:326
7366
  msgid "Total Sum"
7367
  msgstr ""
7368
 
7411
  msgid "Reset Currency Rates"
7412
  msgstr ""
7413
 
7414
+ #: includes/reports/wcj-class-reports-sales-daily.php:164
7415
+ #: includes/reports/wcj-class-reports-sales.php:332
7416
  msgid "Reports Settings"
7417
  msgstr ""
7418
 
7419
+ #: includes/reports/wcj-class-reports-sales-daily.php:181
7420
  msgid "From:"
7421
  msgstr ""
7422
 
7423
+ #: includes/reports/wcj-class-reports-sales-daily.php:184
7424
  msgid "To:"
7425
  msgstr ""
7426
 
7427
+ #: includes/reports/wcj-class-reports-sales-daily.php:187
7428
  msgid "Product:"
7429
  msgstr ""
7430
 
7431
+ #: includes/reports/wcj-class-reports-sales-daily.php:276
7432
  #, php-format
7433
  msgid "Total: %d"
7434
  msgstr ""
7435
 
7436
+ #: includes/reports/wcj-class-reports-sales-daily.php:280
7437
+ #: includes/reports/wcj-class-reports-sales-daily.php:284
7438
  #, php-format
7439
  msgid "Total: %s"
7440
  msgstr ""
7441
 
7442
+ #: includes/reports/wcj-class-reports-sales-daily.php:296
7443
  #, php-format
7444
  msgid "Total orders: %d"
7445
  msgstr ""
7446
 
7447
+ #: includes/reports/wcj-class-reports-sales-daily.php:297
7448
+ #: includes/reports/wcj-class-reports-sales.php:353
7449
  msgid "No sales data for current period."
7450
  msgstr ""
7451
 
7452
+ #: includes/reports/wcj-class-reports-sales.php:125
7453
  msgid "Variation"
7454
  msgstr ""
7455
 
7456
+ #: includes/reports/wcj-class-reports-sales.php:194
7457
  msgid "Last Sale"
7458
  msgstr ""
7459
 
7460
+ #: includes/reports/wcj-class-reports-sales.php:195
7461
  msgid "Total"
7462
  msgstr ""
7463
 
7464
+ #: includes/reports/wcj-class-reports-sales.php:323
7465
  msgid "Total Items"
7466
  msgstr ""
7467
 
7468
+ #: includes/reports/wcj-class-reports-sales.php:329
7469
  msgid "Total Profit"
7470
  msgstr ""
7471
 
7472
+ #: includes/reports/wcj-class-reports-sales.php:348
7473
  msgid "Filter products"
7474
  msgstr ""
7475
 
7593
  #: includes/settings/wcj-settings-add-to-cart.php:21
7594
  #: includes/settings/wcj-settings-add-to-cart.php:99
7595
  #: includes/settings/wcj-settings-add-to-cart.php:117
7596
+ #: includes/settings/wcj-settings-general.php:168
 
 
7597
  #: includes/settings/wcj-settings-shipping-calculator.php:69
7598
+ #: includes/settings/wcj-settings-shipping-options.php:103
7599
+ #: includes/settings/wcj-settings-shipping-options.php:149
7600
  #: includes/settings/wcj-settings-sorting.php:20
7601
  #: includes/settings/wcj-settings-sorting.php:99
7602
  #: includes/settings/wcj-settings-sorting.php:123
7624
  msgid "categories"
7625
  msgstr ""
7626
 
7627
+ #: includes/settings/wcj-settings-add-to-cart.php:60
7628
+ #: includes/settings/wcj-settings-shipping-calculator.php:47
7629
+ msgid ""
7630
+ msgstr ""
7631
+
7632
  #: includes/settings/wcj-settings-add-to-cart.php:70
7633
  msgid "Button text - single product view"
7634
  msgstr ""
7792
  #: includes/settings/wcj-settings-product-bookings.php:86
7793
  #: includes/settings/wcj-settings-product-by-user-role.php:14
7794
  #: includes/settings/wcj-settings-product-by-user.php:59
7795
+ #: includes/settings/wcj-settings-product-custom-visibility.php:43
7796
  #: includes/settings/wcj-settings-product-open-pricing.php:16
7797
  #: includes/settings/wcj-settings-products-per-page.php:14
7798
+ #: includes/settings/wcj-settings-products-xml.php:18
7799
  #: includes/settings/wcj-settings-track-users.php:14
7800
  #: includes/settings/wcj-settings-url-coupons.php:14
7801
  #: includes/settings/wcj-settings-wholesale-price.php:15
7814
  msgid "\"Booster: Active\" Admin Bar"
7815
  msgstr ""
7816
 
7817
+ #: includes/settings/wcj-settings-admin-orders-list.php:14
7818
+ #: includes/settings/wcj-settings-admin-orders-list.php:20
7819
+ #: includes/settings/wcj-settings-admin-products-list.php:14
7820
+ msgid "Custom Columns"
7821
  msgstr ""
7822
 
7823
+ #: includes/settings/wcj-settings-admin-orders-list.php:16
7824
+ msgid "This section lets you add custom columns to WooCommerce orders list."
7825
  msgstr ""
7826
 
7827
+ #: includes/settings/wcj-settings-admin-orders-list.php:21
7828
+ #: includes/settings/wcj-settings-admin-orders-list.php:107
7829
+ #: includes/settings/wcj-settings-admin-orders-list.php:148
7830
+ #: includes/settings/wcj-settings-admin-products-list.php:20
7831
+ #: includes/settings/wcj-settings-admin-products-list.php:76
7832
+ #: includes/settings/wcj-settings-order-quantities.php:21
7833
+ #: includes/settings/wcj-settings-order-quantities.php:79
7834
+ #: includes/settings/wcj-settings-orders.php:72
7835
+ #: includes/settings/wcj-settings-price-formats.php:37
7836
+ #: includes/settings/wcj-settings-product-listings.php:128
7837
+ #: includes/settings/wcj-settings-sale-flash.php:20
7838
+ #: includes/settings/wcj-settings-sale-flash.php:65
7839
+ #: includes/settings/wcj-settings-sale-flash.php:90
7840
+ #: includes/settings/wcj-settings-shipping-by-condition.php:25
7841
+ #: includes/settings/wcj-settings-shipping-options.php:21
7842
+ #: includes/settings/wcj-settings-stock.php:23
7843
+ #: includes/settings/wcj-settings-tax-display.php:27
7844
+ #: includes/settings/wcj-settings-tax-display.php:44
7845
+ #: includes/settings/wcj-settings-tax-display.php:101
7846
+ msgid "Enable section"
7847
  msgstr ""
7848
 
7849
+ #: includes/settings/wcj-settings-admin-orders-list.php:28
7850
+ #: includes/settings/wcj-settings-admin-orders-list.php:35
7851
+ msgid "Add column and filtering"
7852
  msgstr ""
7853
 
7854
+ #: includes/settings/wcj-settings-admin-orders-list.php:41
7855
+ #: includes/settings/wcj-settings-admin-products-list.php:26
7856
+ msgid "Custom Columns Total Number"
7857
  msgstr ""
7858
 
7859
+ #: includes/settings/wcj-settings-admin-orders-list.php:56
7860
+ #: includes/settings/wcj-settings-admin-products-list.php:42
7861
+ msgid "Custom Column"
 
 
 
 
7862
  msgstr ""
7863
 
7864
+ #: includes/settings/wcj-settings-admin-orders-list.php:58
7865
+ #: includes/settings/wcj-settings-admin-products-list.php:44
7866
+ msgid "Key:"
7867
  msgstr ""
7868
 
7869
+ #: includes/settings/wcj-settings-admin-orders-list.php:64
7870
+ #: includes/settings/wcj-settings-admin-products-list.php:50
7871
+ #: includes/settings/wcj-settings-checkout-custom-fields.php:143
7872
+ #: includes/settings/wcj-settings-checkout-files-upload.php:82
7873
+ #: includes/settings/wcj-settings-checkout-files-upload.php:256
7874
+ #: includes/settings/wcj-settings-offer-price.php:43
7875
+ #: includes/settings/wcj-settings-offer-price.php:115
7876
+ #: includes/settings/wcj-settings-offer-price.php:155
7877
+ #: includes/settings/wcj-settings-offer-price.php:163
7878
+ #: includes/settings/wcj-settings-offer-price.php:171
7879
+ #: includes/settings/wcj-settings-offer-price.php:179
7880
+ #: includes/tools/class-wcj-order-statuses-tool.php:139
7881
+ #: includes/tools/class-wcj-order-statuses-tool.php:211
7882
+ msgid "Label"
7883
  msgstr ""
7884
 
7885
+ #: includes/settings/wcj-settings-admin-orders-list.php:71
7886
+ #: includes/settings/wcj-settings-admin-products-list.php:57
7887
+ msgid "You can use shortcodes and/or HTML here."
7888
  msgstr ""
7889
 
7890
+ #: includes/settings/wcj-settings-admin-orders-list.php:77
7891
+ msgid "Sortable"
7892
  msgstr ""
7893
 
7894
+ #: includes/settings/wcj-settings-admin-orders-list.php:83
7895
+ msgid "By meta (as text)"
7896
  msgstr ""
7897
 
7898
+ #: includes/settings/wcj-settings-admin-orders-list.php:84
7899
+ msgid "By meta (as numbers)"
7900
  msgstr ""
7901
 
7902
+ #: includes/settings/wcj-settings-admin-orders-list.php:88
7903
+ msgid "Key (if sortable)"
7904
  msgstr ""
7905
 
7906
+ #: includes/settings/wcj-settings-admin-orders-list.php:101
7907
+ #: includes/settings/wcj-settings-admin-orders-list.php:106
7908
+ msgid "Multiple Status"
7909
+ msgstr ""
7910
+
7911
+ #: includes/settings/wcj-settings-admin-orders-list.php:113
7912
+ msgid "Multiple Status Filtering"
7913
+ msgstr ""
7914
+
7915
+ #: includes/settings/wcj-settings-admin-orders-list.php:118
7916
+ #: includes/settings/wcj-settings-empty-cart.php:40
7917
+ #: includes/settings/wcj-settings-empty-cart.php:55
7918
+ #: includes/settings/wcj-settings-offer-price.php:69
7919
+ #: includes/settings/wcj-settings-offer-price.php:90
7920
+ msgid "Do not add"
7921
+ msgstr ""
7922
+
7923
+ #: includes/settings/wcj-settings-admin-orders-list.php:119
7924
+ msgid "Add as multiple select"
7925
  msgstr ""
7926
 
7927
+ #: includes/settings/wcj-settings-admin-orders-list.php:120
7928
+ msgid "Add as checkboxes"
7929
+ msgstr ""
7930
+
7931
+ #: includes/settings/wcj-settings-admin-orders-list.php:124
7932
+ msgid "Hide Default Statuses Menu"
7933
+ msgstr ""
7934
+
7935
+ #: includes/settings/wcj-settings-admin-orders-list.php:125
7936
  #: includes/settings/wcj-settings-breadcrumbs.php:34
7937
  #: includes/settings/wcj-settings-cart-customization.php:20
7938
  #: includes/settings/wcj-settings-cart-customization.php:27
7939
  #: includes/settings/wcj-settings-checkout-customization.php:32
7940
  #: includes/settings/wcj-settings-currency.php:21
7941
  #: includes/settings/wcj-settings-order-custom-statuses.php:63
 
7942
  #: includes/settings/wcj-settings-pdf-invoicing.php:74
7943
  #: includes/settings/wcj-settings-product-bookings.php:92
7944
+ #: includes/settings/wcj-settings-product-images.php:20
7945
+ #: includes/settings/wcj-settings-product-images.php:27
7946
+ #: includes/settings/wcj-settings-product-images.php:34
7947
+ #: includes/settings/wcj-settings-product-images.php:41
7948
  #: includes/settings/wcj-settings-related-products.php:163
7949
  #: includes/settings/wcj-settings-related-products.php:169
7950
+ #: includes/settings/wcj-settings-sale-flash.php:35
7951
+ #: includes/settings/wcj-settings-sale-flash.php:42
7952
+ #: includes/settings/wcj-settings-sale-flash.php:49
7953
  #: includes/settings/wcj-settings-shipping-calculator.php:54
7954
  msgid "Hide"
7955
  msgstr ""
7956
 
7957
+ #: includes/settings/wcj-settings-admin-orders-list.php:131
7958
+ msgid "Add \"Not Completed\" Status Link to Default Statuses Menu"
 
 
 
 
 
7959
  msgstr ""
7960
 
7961
+ #: includes/settings/wcj-settings-admin-orders-list.php:142
7962
+ #: includes/settings/wcj-settings-admin-orders-list.php:147
7963
+ #: includes/settings/wcj-settings-admin-products-list.php:70
7964
+ msgid "Columns Order"
7965
  msgstr ""
7966
 
7967
+ #: includes/settings/wcj-settings-admin-orders-list.php:155
7968
+ #: includes/settings/wcj-settings-admin-products-list.php:83
7969
+ msgid "Default columns order"
7970
+ msgstr ""
7971
+
7972
+ #: includes/settings/wcj-settings-admin-products-list.php:27
7973
+ #: includes/settings/wcj-settings-price-by-user-role.php:130
7974
+ #: includes/settings/wcj-settings-shipping.php:51
7975
+ msgid ""
7976
+ "Save module's settings after changing this option to see new settings fields."
7977
+ msgstr ""
7978
+
7979
+ #: includes/settings/wcj-settings-admin-tools.php:14
7980
+ msgid "Admin Tools Options"
7981
+ msgstr ""
7982
+
7983
+ #: includes/settings/wcj-settings-admin-tools.php:26
7984
+ msgid "WooCommerce Log"
7985
+ msgstr ""
7986
+
7987
+ #: includes/settings/wcj-settings-admin-tools.php:33
7988
+ msgid "Debug"
7989
+ msgstr ""
7990
+
7991
+ #: includes/settings/wcj-settings-admin-tools.php:40
7992
+ msgid "PHP Memory Limit"
7993
+ msgstr ""
7994
+
7995
+ #: includes/settings/wcj-settings-admin-tools.php:41
7996
+ msgid "megabytes."
7997
+ msgstr ""
7998
+
7999
+ #: includes/settings/wcj-settings-admin-tools.php:42
8000
+ #: includes/settings/wcj-settings-admin-tools.php:51
8001
+ #: includes/settings/wcj-settings-offer-price.php:139
8002
+ #: includes/settings/wcj-settings-offer-price.php:147
8003
+ #: includes/settings/meta-box/wcj-settings-meta-box-offer-price.php:43
8004
+ #: includes/settings/meta-box/wcj-settings-meta-box-offer-price.php:52
8005
+ msgid "Set zero to disable."
8006
+ msgstr ""
8007
+
8008
+ #: includes/settings/wcj-settings-admin-tools.php:49
8009
+ msgid "PHP Time Limit"
8010
+ msgstr ""
8011
+
8012
+ #: includes/settings/wcj-settings-admin-tools.php:50
8013
+ msgid "seconds."
8014
+ msgstr ""
8015
+
8016
+ #: includes/settings/wcj-settings-admin-tools.php:66
8017
+ msgid "System Info"
8018
+ msgstr ""
8019
+
8020
+ #: includes/settings/wcj-settings-admin-tools.php:73
8021
+ msgid "Show Order Meta"
8022
+ msgstr ""
8023
+
8024
+ #: includes/settings/wcj-settings-admin-tools.php:80
8025
+ msgid "Show Product Meta"
8026
+ msgstr ""
8027
+
8028
+ #: includes/settings/wcj-settings-breadcrumbs.php:19
8029
+ msgid "Change Breadcrumbs Home URL"
8030
+ msgstr ""
8031
+
8032
+ #: includes/settings/wcj-settings-breadcrumbs.php:26
8033
+ msgid "Home URL"
8034
+ msgstr ""
8035
+
8036
+ #: includes/settings/wcj-settings-breadcrumbs.php:33
8037
+ msgid "Hide Breadcrumbs"
8038
+ msgstr ""
8039
+
8040
+ #: includes/settings/wcj-settings-call-for-price.php:14
8041
+ msgid "Call for Price Options"
8042
+ msgstr ""
8043
+
8044
+ #: includes/settings/wcj-settings-call-for-price.php:16
8045
+ msgid ""
8046
+ "Leave price empty when adding or editing products. Then set the options here."
8047
+ msgstr ""
8048
+
8049
+ #: includes/settings/wcj-settings-call-for-price.php:17
8050
+ msgid "You can use shortcodes in options."
8051
+ msgstr ""
8052
+
8053
+ #: includes/settings/wcj-settings-call-for-price.php:21
8054
+ msgid "Label to Show on Single"
8055
  msgstr ""
8056
 
8057
  #: includes/settings/wcj-settings-call-for-price.php:22
8058
  #: includes/settings/wcj-settings-call-for-price.php:32
8059
  #: includes/settings/wcj-settings-call-for-price.php:42
8060
  #: includes/settings/wcj-settings-call-for-price.php:52
8061
+ #: includes/settings/wcj-settings-call-for-price.php:62
8062
  msgid "This sets the html to output on empty price. Leave blank to disable."
8063
  msgstr ""
8064
 
8075
  msgstr ""
8076
 
8077
  #: includes/settings/wcj-settings-call-for-price.php:61
8078
+ msgid "Label to Show for Variations"
8079
+ msgstr ""
8080
+
8081
+ #: includes/settings/wcj-settings-call-for-price.php:71
8082
  msgid "Hide Sale! Tag"
8083
  msgstr ""
8084
 
8085
+ #: includes/settings/wcj-settings-call-for-price.php:72
8086
  msgid "Hide the tag"
8087
  msgstr ""
8088
 
8089
+ #: includes/settings/wcj-settings-call-for-price.php:78
8090
  msgid "Make All Products Call for Price"
8091
  msgstr ""
8092
 
8093
+ #: includes/settings/wcj-settings-call-for-price.php:80
8094
  msgid ""
8095
+ "Enable this to make all products prices empty. When checkbox disabled, all "
8096
+ "prices go back to normal."
8097
  msgstr ""
8098
 
8099
  #: includes/settings/wcj-settings-cart-customization.php:19
8226
  msgstr ""
8227
 
8228
  #: includes/settings/wcj-settings-checkout-core-fields.php:66
8229
+ #: includes/shortcodes/class-wcj-shortcodes-products-add-form.php:330
8230
  msgid "required"
8231
  msgstr ""
8232
 
8325
  msgid "State"
8326
  msgstr ""
8327
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8328
  #: includes/settings/wcj-settings-checkout-custom-fields.php:164
8329
  msgid "Section"
8330
  msgstr ""
8362
  msgid "Clear"
8363
  msgstr ""
8364
 
8365
+ #: includes/settings/wcj-settings-checkout-custom-fields.php:193
8366
+ msgid "Customer Meta Fields"
8367
  msgstr ""
8368
 
8369
  #: includes/settings/wcj-settings-checkout-custom-fields.php:201
8370
+ msgid "One option per line"
8371
+ msgstr ""
8372
+
8373
+ #: includes/settings/wcj-settings-checkout-custom-fields.php:208
8374
  msgid "Select: Use select2 Library"
8375
  msgstr ""
8376
 
8377
+ #: includes/settings/wcj-settings-checkout-custom-fields.php:216
8378
  msgid "Checkbox: Value for ON"
8379
  msgstr ""
8380
 
8381
+ #: includes/settings/wcj-settings-checkout-custom-fields.php:222
8382
  msgid "Checkbox: Value for OFF"
8383
  msgstr ""
8384
 
8385
+ #: includes/settings/wcj-settings-checkout-custom-fields.php:228
8386
  msgid "Checkbox: Default Value"
8387
  msgstr ""
8388
 
8389
+ #: includes/settings/wcj-settings-checkout-custom-fields.php:237
8390
  msgid "Datepicker/Weekpicker: Date Format"
8391
  msgstr ""
8392
 
8393
+ #: includes/settings/wcj-settings-checkout-custom-fields.php:238
8394
  msgid ""
8395
  "Visit <a href=\"https://codex.wordpress.org/Formatting_Date_and_Time\" "
8396
  "target=\"_blank\">documentation on date and time formatting</a> for valid "
8397
  "date formats"
8398
  msgstr ""
8399
 
8400
+ #: includes/settings/wcj-settings-checkout-custom-fields.php:245
8401
  msgid "Datepicker/Weekpicker: Min Date"
8402
  msgstr ""
8403
 
 
8404
  #: includes/settings/wcj-settings-checkout-custom-fields.php:246
8405
+ #: includes/settings/wcj-settings-checkout-custom-fields.php:253
8406
  msgid "days"
8407
  msgstr ""
8408
 
8409
+ #: includes/settings/wcj-settings-checkout-custom-fields.php:252
8410
  msgid "Datepicker/Weekpicker: Max Date"
8411
  msgstr ""
8412
 
8413
+ #: includes/settings/wcj-settings-checkout-custom-fields.php:259
8414
  msgid "Datepicker/Weekpicker: Add Year Selector"
8415
  msgstr ""
8416
 
8417
+ #: includes/settings/wcj-settings-checkout-custom-fields.php:265
8418
  msgid "Datepicker/Weekpicker: Year Selector: Year Range"
8419
  msgstr ""
8420
 
8421
+ #: includes/settings/wcj-settings-checkout-custom-fields.php:266
8422
  msgid ""
8423
  "The range of years displayed in the year drop-down: either relative to "
8424
  "today's year (\"-nn:+nn\"), relative to the currently selected year (\"c-nn:c"
8427
  "restrict which dates may be selected use the minDate and/or maxDate options."
8428
  msgstr ""
8429
 
8430
+ #: includes/settings/wcj-settings-checkout-custom-fields.php:272
8431
  msgid "Datepicker/Weekpicker: First Week Day"
8432
  msgstr ""
8433
 
8434
+ #: includes/settings/wcj-settings-checkout-custom-fields.php:287
8435
  msgid "Timepicker: Time Format"
8436
  msgstr ""
8437
 
8438
+ #: includes/settings/wcj-settings-checkout-custom-fields.php:288
8439
  msgid ""
8440
  "Visit <a href=\"http://timepicker.co/options/\" target=\"_blank\">timepicker "
8441
  "options page</a> for valid time formats"
8442
  msgstr ""
8443
 
8444
+ #: includes/settings/wcj-settings-checkout-custom-fields.php:295
8445
  msgid "minutes"
8446
  msgstr ""
8447
 
8448
+ #: includes/settings/wcj-settings-checkout-custom-fields.php:301
8449
+ #: includes/settings/wcj-settings-product-listings.php:47
8450
  msgid "Exclude Categories"
8451
  msgstr ""
8452
 
8453
+ #: includes/settings/wcj-settings-checkout-custom-fields.php:302
8454
  msgid "Hide this field if there is a product of selected category in cart."
8455
  msgstr ""
8456
 
8457
+ #: includes/settings/wcj-settings-checkout-custom-fields.php:310
8458
  msgid "Include Categories"
8459
  msgstr ""
8460
 
8461
+ #: includes/settings/wcj-settings-checkout-custom-fields.php:311
8462
  msgid ""
8463
  "Show this field only if there is a product of selected category in cart."
8464
  msgstr ""
8465
 
8466
+ #: includes/settings/wcj-settings-checkout-custom-fields.php:319
8467
  #: includes/settings/wcj-settings-global-discount.php:137
8468
  #: includes/settings/wcj-settings-product-addons.php:140
8469
  #: includes/settings/wcj-settings-related-products.php:223
8470
  msgid "Exclude Products"
8471
  msgstr ""
8472
 
8473
+ #: includes/settings/wcj-settings-checkout-custom-fields.php:320
8474
  msgid "Hide this field if there is a selected product in cart."
8475
  msgstr ""
8476
 
8477
+ #: includes/settings/wcj-settings-checkout-custom-fields.php:328
8478
  #: includes/settings/wcj-settings-global-discount.php:126
8479
  #: includes/settings/wcj-settings-related-products.php:212
8480
  msgid "Include Products"
8481
  msgstr ""
8482
 
8483
+ #: includes/settings/wcj-settings-checkout-custom-fields.php:329
8484
  msgid "Show this field only if there is a selected product in cart."
8485
  msgstr ""
8486
 
8487
+ #: includes/settings/wcj-settings-checkout-custom-fields.php:337
8488
+ msgid "Min Cart Amount"
8489
+ msgstr ""
8490
+
8491
+ #: includes/settings/wcj-settings-checkout-custom-fields.php:338
8492
+ msgid ""
8493
+ "Show this field only if cart total is at least this amount. Set zero to "
8494
+ "disable."
8495
+ msgstr ""
8496
+
8497
+ #: includes/settings/wcj-settings-checkout-custom-fields.php:345
8498
+ msgid "Max Cart Amount"
8499
+ msgstr ""
8500
+
8501
+ #: includes/settings/wcj-settings-checkout-custom-fields.php:346
8502
+ msgid ""
8503
+ "Show this field only if cart total is not more than this amount. Set zero to "
8504
+ "disable."
8505
+ msgstr ""
8506
+
8507
  #: includes/settings/wcj-settings-checkout-custom-info.php:14
8508
  msgid "Checkout Custom Info Blocks"
8509
  msgstr ""
8669
  msgstr ""
8670
 
8671
  #: includes/settings/wcj-settings-checkout-customization.php:84
8672
+ #: includes/settings/wcj-settings-sale-flash.php:27
8673
+ #: includes/settings/wcj-settings-sale-flash.php:102
8674
  msgid "You can use HTML and/or shortcodes here."
8675
  msgstr ""
8676
 
8677
  #: includes/settings/wcj-settings-checkout-files-upload.php:22
8678
+ #: includes/settings/wcj-settings-products-xml.php:23
8679
  msgid "Total Files"
8680
  msgstr ""
8681
 
8809
  msgstr ""
8810
 
8811
  #: includes/settings/wcj-settings-checkout-files-upload.php:219
8812
+ #: includes/settings/wcj-settings-product-input-fields.php:286
8813
  msgid "Emails Options"
8814
  msgstr ""
8815
 
8816
  #: includes/settings/wcj-settings-checkout-files-upload.php:224
8817
+ #: includes/settings/wcj-settings-product-input-fields.php:291
8818
  msgid "Attach Files to Admin's New Order Emails"
8819
  msgstr ""
8820
 
8821
  #: includes/settings/wcj-settings-checkout-files-upload.php:225
8822
  #: includes/settings/wcj-settings-checkout-files-upload.php:232
 
8823
  #: includes/settings/wcj-settings-product-input-fields.php:292
8824
+ #: includes/settings/wcj-settings-product-input-fields.php:299
8825
  msgid "Attach"
8826
  msgstr ""
8827
 
8828
  #: includes/settings/wcj-settings-checkout-files-upload.php:231
8829
+ #: includes/settings/wcj-settings-product-input-fields.php:298
8830
  msgid "Attach Files to Customer's Processing Order Emails"
8831
  msgstr ""
8832
 
8863
 
8864
  #: includes/settings/wcj-settings-checkout-files-upload.php:285
8865
  #: includes/settings/wcj-settings-eu-vat-number.php:203
8866
+ #: includes/settings/wcj-settings-general.php:77
8867
  #: includes/settings/wcj-settings-product-custom-info.php:188
8868
+ #: includes/settings/wcj-settings-shipping-by-condition.php:78
8869
  msgid "Advanced Options"
8870
  msgstr ""
8871
 
8941
  msgstr ""
8942
 
8943
  #: includes/settings/wcj-settings-currency-exchange-rates.php:20
8944
+ #: includes/settings/wcj-settings-products-xml.php:55
8945
  #, php-format
8946
  msgid "%s seconds till next update."
8947
  msgstr ""
8957
  #: includes/settings/wcj-settings-currency-per-product.php:102
8958
  #: includes/settings/wcj-settings-multicurrency-base-price.php:24
8959
  #: includes/settings/wcj-settings-multicurrency.php:22
8960
+ #: includes/settings/wcj-settings-payment-gateways-currency.php:59
8961
  #: includes/settings/wcj-settings-price-by-country.php:244
8962
  msgid "Exchange Rates Updates"
8963
  msgstr ""
8964
 
 
 
 
 
8965
  #: includes/settings/wcj-settings-currency-exchange-rates.php:53
8966
  msgid "Exchange Rates Rounding"
8967
  msgstr ""
9115
  #: includes/settings/wcj-settings-currency-per-product.php:107
9116
  #: includes/settings/wcj-settings-multicurrency-base-price.php:29
9117
  #: includes/settings/wcj-settings-multicurrency.php:28
9118
+ #: includes/settings/wcj-settings-payment-gateways-currency.php:64
9119
  #: includes/settings/wcj-settings-price-by-country.php:249
9120
  msgid "Enter Rates Manually"
9121
  msgstr ""
9123
  #: includes/settings/wcj-settings-currency-per-product.php:108
9124
  #: includes/settings/wcj-settings-multicurrency-base-price.php:30
9125
  #: includes/settings/wcj-settings-multicurrency.php:29
9126
+ #: includes/settings/wcj-settings-payment-gateways-currency.php:65
9127
  #: includes/settings/wcj-settings-price-by-country.php:250
9128
  msgid "Automatically via Currency Exchange Rates module"
9129
  msgstr ""
9131
  #: includes/settings/wcj-settings-currency-per-product.php:111
9132
  #: includes/settings/wcj-settings-multicurrency-base-price.php:33
9133
  #: includes/settings/wcj-settings-multicurrency.php:32
9134
+ #: includes/settings/wcj-settings-payment-gateways-currency.php:68
9135
  #: includes/settings/wcj-settings-price-by-country.php:253
9136
  msgid "Visit"
9137
  msgstr ""
9139
  #: includes/settings/wcj-settings-currency-per-product.php:111
9140
  #: includes/settings/wcj-settings-multicurrency-base-price.php:33
9141
  #: includes/settings/wcj-settings-multicurrency.php:32
9142
+ #: includes/settings/wcj-settings-payment-gateways-currency.php:68
9143
  #: includes/settings/wcj-settings-price-by-country.php:253
9144
  msgid "Currency Exchange Rates module"
9145
  msgstr ""
9163
  msgid "Total Currencies"
9164
  msgstr ""
9165
 
9166
+ #: includes/settings/wcj-settings-currency-per-product.php:182
9167
  msgid "Product Authors"
9168
  msgstr ""
9169
 
9170
+ #: includes/settings/wcj-settings-currency-per-product.php:194
9171
  msgid "Product Authors User Roles"
9172
  msgstr ""
9173
 
9217
  msgstr ""
9218
 
9219
  #: includes/settings/wcj-settings-custom-css.php:36
9220
+ #: includes/settings/wcj-settings-product-add-to-cart.php:179
9221
+ #: includes/settings/wcj-settings-product-add-to-cart.php:210
9222
+ #: includes/settings/wcj-settings-product-add-to-cart.php:227
9223
  msgid "This will add meta box to each product's edit page"
9224
  msgstr ""
9225
 
9361
  msgid "Button position on the Cart page"
9362
  msgstr ""
9363
 
 
 
 
 
 
 
 
 
9364
  #: includes/settings/wcj-settings-empty-cart.php:41
9365
  msgid "After Cart"
9366
  msgstr ""
9517
  msgstr ""
9518
 
9519
  #: includes/settings/wcj-settings-export.php:20
9520
+ #: includes/settings/wcj-settings-pdf-invoicing.php:125
9521
  msgid "CSV Separator"
9522
  msgstr ""
9523
 
9661
  msgstr ""
9662
 
9663
  #: includes/settings/wcj-settings-free-price.php:16
9664
+ #: includes/settings/wcj-settings-product-add-to-cart.php:237
9665
  msgid "External Products"
9666
  msgstr ""
9667
 
9689
  msgid "Variations"
9690
  msgstr ""
9691
 
9692
+ #: includes/settings/wcj-settings-general.php:36
9693
  msgid "Shortcodes Options"
9694
  msgstr ""
9695
 
9696
+ #: includes/settings/wcj-settings-general.php:41
9697
  msgid "Enable All Shortcodes in WordPress Text Widgets"
9698
  msgstr ""
9699
 
9700
+ #: includes/settings/wcj-settings-general.php:42
9701
  msgid ""
9702
  "This will enable all (including non Booster's) shortcodes in WordPress text "
9703
  "widgets."
9704
  msgstr ""
9705
 
9706
+ #: includes/settings/wcj-settings-general.php:49
9707
  msgid "Disable Booster's Shortcodes"
9708
  msgstr ""
9709
 
9710
+ #: includes/settings/wcj-settings-general.php:50
9711
  msgid "Disable all Booster's shortcodes (for memory saving)."
9712
  msgstr ""
9713
 
9714
+ #: includes/settings/wcj-settings-general.php:51
9715
+ #: includes/settings/wcj-settings-general.php:100
9716
+ #: includes/settings/wcj-settings-general.php:114
9717
+ #: includes/settings/wcj-settings-general.php:121
9718
+ #: includes/settings/wcj-settings-general.php:128
9719
+ #: includes/settings/wcj-settings-general.php:135
9720
  #: includes/settings/wcj-settings-pdf-invoicing-styling.php:126
9721
  #: includes/settings/wcj-settings-price-by-user-role.php:56
9722
  #: includes/settings/wcj-settings-price-by-user-role.php:88
9727
  msgid "Disable"
9728
  msgstr ""
9729
 
9730
+ #: includes/settings/wcj-settings-general.php:61
9731
+ #: includes/settings/wcj-settings-general.php:66
9732
  msgid "Product Revisions"
9733
  msgstr ""
9734
 
9735
+ #: includes/settings/wcj-settings-general.php:82
9736
  msgid "Recalculate Cart Totals on Every Page Load"
9737
  msgstr ""
9738
 
9739
+ #: includes/settings/wcj-settings-general.php:89
9740
  msgid "Session Type in Booster"
9741
  msgstr ""
9742
 
9743
+ #: includes/settings/wcj-settings-general.php:94
9744
  msgid "Standard PHP sessions"
9745
  msgstr ""
9746
 
9747
+ #: includes/settings/wcj-settings-general.php:95
9748
  msgid "WC sessions"
9749
  msgstr ""
9750
 
9751
+ #: includes/settings/wcj-settings-general.php:99
9752
  msgid "Disable Loading Datepicker/Weekpicker CSS"
9753
  msgstr ""
9754
 
9755
+ #: includes/settings/wcj-settings-general.php:106
9756
  msgid "Datepicker/Weekpicker CSS"
9757
  msgstr ""
9758
 
9759
+ #: includes/settings/wcj-settings-general.php:113
9760
  msgid "Disable Loading Datepicker/Weekpicker JavaScript"
9761
  msgstr ""
9762
 
9763
+ #: includes/settings/wcj-settings-general.php:120
9764
  msgid "Disable Loading Timepicker CSS"
9765
  msgstr ""
9766
 
9767
+ #: includes/settings/wcj-settings-general.php:127
9768
  msgid "Disable Loading Timepicker JavaScript"
9769
  msgstr ""
9770
 
9771
+ #: includes/settings/wcj-settings-general.php:134
9772
  msgid "Disable Saving PDFs in PHP directory for temporary files"
9773
  msgstr ""
9774
 
9775
+ #: includes/settings/wcj-settings-general.php:145
9776
  msgid "PayPal Email per Product Options"
9777
  msgstr ""
9778
 
9779
+ #: includes/settings/wcj-settings-general.php:150
9780
  msgid "PayPal Email per Product"
9781
  msgstr ""
9782
 
9783
+ #: includes/settings/wcj-settings-general.php:152
9784
  #: includes/settings/wcj-settings-product-by-date.php:54
9785
  #: includes/settings/wcj-settings-product-by-time.php:54
9786
  msgid "This will add new meta box to each product's edit page."
9787
  msgstr ""
9788
 
9789
+ #: includes/settings/wcj-settings-general.php:162
9790
  msgid "Session Expiration Options"
9791
  msgstr ""
9792
 
9793
+ #: includes/settings/wcj-settings-general.php:167
9794
+ #: includes/settings/wcj-settings-general.php:182
9795
  msgid "Session Expiration"
9796
  msgstr ""
9797
 
9798
+ #: includes/settings/wcj-settings-general.php:174
9799
  msgid "Session Expiring"
9800
  msgstr ""
9801
 
9802
+ #: includes/settings/wcj-settings-general.php:175
9803
  msgid "In seconds. Default: 47 hours (60 * 60 * 47)"
9804
  msgstr ""
9805
 
9806
+ #: includes/settings/wcj-settings-general.php:183
9807
  msgid "In seconds. Default: 48 hours (60 * 60 * 48)"
9808
  msgstr ""
9809
 
9810
+ #: includes/settings/wcj-settings-general.php:194
9811
  msgid "Booster User Roles Changer Options"
9812
  msgstr ""
9813
 
9814
+ #: includes/settings/wcj-settings-general.php:195
9815
  msgid "This will add user roles changer tool to admin bar."
9816
  msgstr ""
9817
 
9818
+ #: includes/settings/wcj-settings-general.php:201
9819
  msgid "Booster User Roles Changer"
9820
  msgstr ""
9821
 
9822
+ #: includes/settings/wcj-settings-general.php:210
9823
  msgid "Enabled for"
9824
  msgstr ""
9825
 
9829
 
9830
  #: includes/settings/wcj-settings-global-discount.php:28
9831
  #: includes/settings/wcj-settings-product-by-user.php:138
9832
+ #: includes/settings/wcj-settings-products-xml.php:27
9833
  #: includes/shipping/class-wc-shipping-wcj-custom.php:157
9834
  msgid "Press Save changes after you change this number."
9835
  msgstr ""
9879
 
9880
  #: includes/settings/wcj-settings-global-discount.php:83
9881
  #: includes/settings/wcj-settings-product-add-to-cart.php:65
9882
+ #: includes/settings/wcj-settings-products-xml.php:204
9883
  msgid "All products"
9884
  msgstr ""
9885
 
9888
  msgstr ""
9889
 
9890
  #: includes/settings/wcj-settings-global-discount.php:85
9891
+ #: includes/settings/wcj-settings-products-xml.php:206
9892
  msgid "Only products that are not on sale"
9893
  msgstr ""
9894
 
10157
  "added."
10158
  msgstr ""
10159
 
10160
+ #: includes/settings/wcj-settings-multicurrency.php:160
10161
  msgid "Role Defaults"
10162
  msgstr ""
10163
 
10164
+ #: includes/settings/wcj-settings-multicurrency.php:167
10165
  msgid "Roles"
10166
  msgstr ""
10167
 
10168
+ #: includes/settings/wcj-settings-multicurrency.php:168
10169
  #: includes/settings/wcj-settings-wholesale-price.php:137
10170
  msgid "Save settings after you change this option. Leave blank to disable."
10171
  msgstr ""
10172
 
10173
+ #: includes/settings/wcj-settings-multicurrency.php:191
10174
  msgid "No default currency"
10175
  msgstr ""
10176
 
10431
  msgstr ""
10432
 
10433
  #: includes/settings/wcj-settings-order-min-amount.php:29
10434
+ #: includes/settings/wcj-settings-order-min-amount.php:36
10435
  #: includes/settings/wcj-settings-payment-gateways-fees.php:99
10436
  msgid "Exclude"
10437
  msgstr ""
10438
 
10439
  #: includes/settings/wcj-settings-order-min-amount.php:35
10440
+ msgid "Exclude Discounts from Cart Total"
10441
+ msgstr ""
10442
+
10443
+ #: includes/settings/wcj-settings-order-min-amount.php:42
10444
  msgid "Error message"
10445
  msgstr ""
10446
 
10447
+ #: includes/settings/wcj-settings-order-min-amount.php:44
10448
+ #: includes/settings/wcj-settings-order-min-amount.php:61
10449
  #, php-format
10450
  msgid ""
10451
  "Message to customer if order is below minimum amount. Default: You must have "
10453
  "is %s."
10454
  msgstr ""
10455
 
10456
+ #: includes/settings/wcj-settings-order-min-amount.php:52
10457
  msgid "Add notice to cart page also"
10458
  msgstr ""
10459
 
10460
+ #: includes/settings/wcj-settings-order-min-amount.php:59
10461
  msgid "Message on cart page"
10462
  msgstr ""
10463
 
10464
+ #: includes/settings/wcj-settings-order-min-amount.php:69
10465
  #: includes/settings/wcj-settings-pdf-invoicing.php:87
10466
+ #: includes/settings/wcj-settings-pdf-invoicing.php:101
10467
  msgid "Advanced"
10468
  msgstr ""
10469
 
10470
+ #: includes/settings/wcj-settings-order-min-amount.php:70
10471
  msgid "Cart notice method"
10472
  msgstr ""
10473
 
10474
+ #: includes/settings/wcj-settings-order-min-amount.php:75
10475
  msgid "Print notice"
10476
  msgstr ""
10477
 
10478
+ #: includes/settings/wcj-settings-order-min-amount.php:76
10479
  msgid "Add notice"
10480
  msgstr ""
10481
 
10482
+ #: includes/settings/wcj-settings-order-min-amount.php:80
10483
  msgid "Cart notice type"
10484
  msgstr ""
10485
 
10486
+ #: includes/settings/wcj-settings-order-min-amount.php:85
10487
  #: includes/settings/wcj-settings-payment-gateways-min-max.php:55
10488
  msgid "Notice"
10489
  msgstr ""
10490
 
10491
+ #: includes/settings/wcj-settings-order-min-amount.php:86
10492
  #: includes/settings/wcj-settings-payment-gateways-min-max.php:56
10493
  msgid "Error"
10494
  msgstr ""
10495
 
10496
+ #: includes/settings/wcj-settings-order-min-amount.php:90
10497
  msgid ""
10498
  "Stop customer from seeing the Checkout page if minimum amount not reached"
10499
  msgstr ""
10500
 
10501
+ #: includes/settings/wcj-settings-order-min-amount.php:91
10502
  msgid "Redirect back to Cart page"
10503
  msgstr ""
10504
 
10505
+ #: includes/settings/wcj-settings-order-min-amount.php:101
10506
  msgid "Order Minimum Amount by User Role"
10507
  msgstr ""
10508
 
10660
  msgid "Minimum Quantity"
10661
  msgstr ""
10662
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
10663
  #: includes/settings/wcj-settings-order-quantities.php:27
10664
  #: includes/settings/wcj-settings-order-quantities.php:85
10665
  msgid "Cart Total Quantity"
10690
 
10691
  #: includes/settings/wcj-settings-order-quantities.php:54
10692
  #: includes/settings/wcj-settings-order-quantities.php:112
10693
+ #: includes/settings/wcj-settings-sale-flash.php:66
10694
  msgid "This will add meta box to each product's edit page."
10695
  msgstr ""
10696
 
10744
  msgid "Force quantity correction on add to cart button click"
10745
  msgstr ""
10746
 
 
10747
  #: includes/settings/wcj-settings-orders.php:19
10748
+ #: includes/settings/wcj-settings-orders.php:24
10749
  msgid "Admin Order Currency"
10750
  msgstr ""
10751
 
10752
+ #: includes/settings/wcj-settings-orders.php:26
10753
  msgid ""
10754
  "When enabled this will add \"Booster: Orders\" metabox to each order's edit "
10755
  "page."
10756
  msgstr ""
10757
 
10758
+ #: includes/settings/wcj-settings-orders.php:32
10759
  msgid "Admin Order Currency Method"
10760
  msgstr ""
10761
 
10762
+ #: includes/settings/wcj-settings-orders.php:33
10763
  msgid ""
10764
  "Choose if you want changed order currency to be saved directly to DB, or if "
10765
  "you want to use filter. When using <em>filter</em> method, changes will be "
10768
  "Booster plugin is removed."
10769
  msgstr ""
10770
 
10771
+ #: includes/settings/wcj-settings-orders.php:39
10772
  msgid "Directly to DB"
10773
  msgstr ""
10774
 
10775
+ #: includes/settings/wcj-settings-orders.php:47
10776
  msgid "Orders Auto-Complete"
10777
  msgstr ""
10778
 
10779
+ #: includes/settings/wcj-settings-orders.php:49
10780
  msgid "This section lets you enable orders auto-complete function."
10781
  msgstr ""
10782
 
10783
+ #: includes/settings/wcj-settings-orders.php:53
10784
  msgid "Auto-complete all WooCommerce orders"
10785
  msgstr ""
10786
 
10787
+ #: includes/settings/wcj-settings-orders.php:55
10788
  msgid ""
10789
  "E.g. if you sell digital products then you are not shipping anything and you "
10790
  "may want auto-complete all your orders."
10791
  msgstr ""
10792
 
10793
+ #: includes/settings/wcj-settings-orders.php:65
10794
+ msgid "Bulk Regenerate Download Permissions for Orders"
 
10795
  msgstr ""
10796
 
10797
+ #: includes/settings/wcj-settings-orders.php:70
10798
+ msgid "Bulk Regenerate Download Permissions"
10799
  msgstr ""
10800
 
10801
+ #: includes/settings/wcj-settings-orders.php:79
10802
+ msgid "Bulk Actions"
 
10803
  msgstr ""
10804
 
10805
  #: includes/settings/wcj-settings-orders.php:80
10806
+ msgid ""
10807
+ "When enabled this will add \"Regenerate download permissions\" action to "
10808
+ "\"Bulk Actions\" select box on admin orders page."
10809
  msgstr ""
10810
 
10811
+ #: includes/settings/wcj-settings-orders.php:88
10812
+ msgid "All Orders - Now"
 
10813
  msgstr ""
10814
 
10815
+ #: includes/settings/wcj-settings-orders.php:89
10816
+ msgid ""
10817
+ "Check this box and press \"Save changes\" button to start regeneration. "
10818
+ "Please note that both module and current section must be enabled before that."
10819
  msgstr ""
10820
 
10821
+ #: includes/settings/wcj-settings-orders.php:90
10822
+ msgid "Regenerate now"
 
10823
  msgstr ""
10824
 
10825
+ #: includes/settings/wcj-settings-orders.php:97
10826
+ msgid "All Orders - Periodically"
10827
  msgstr ""
10828
 
10829
+ #: includes/settings/wcj-settings-orders.php:103
10830
+ msgid "Regenerate"
10831
  msgstr ""
10832
 
10833
+ #: includes/settings/wcj-settings-payment-gateways-by-country.php:16
10834
+ #: includes/settings/wcj-settings-payment-gateways-by-currency.php:16
10835
+ #: includes/settings/wcj-settings-payment-gateways-by-user-role.php:16
10836
+ #: includes/settings/wcj-settings-shipping-by-condition.php:20
10837
+ msgid "Leave empty to disable."
10838
  msgstr ""
10839
 
10840
+ #: includes/settings/wcj-settings-payment-gateways-by-country.php:39
10841
+ msgid "Include Countries"
10842
  msgstr ""
10843
 
10844
+ #: includes/settings/wcj-settings-payment-gateways-by-country.php:51
10845
+ msgid "Exclude Countries"
10846
  msgstr ""
10847
 
10848
+ #: includes/settings/wcj-settings-payment-gateways-by-country.php:63
10849
+ msgid "Include States (Base Country)"
10850
  msgstr ""
10851
 
10852
+ #: includes/settings/wcj-settings-payment-gateways-by-country.php:75
10853
+ msgid "Exclude States (Base Country)"
10854
  msgstr ""
10855
 
10856
+ #: includes/settings/wcj-settings-payment-gateways-by-currency.php:27
10857
+ #, php-format
10858
+ msgid "PayPal allows only these currencies:<br>%s."
10859
  msgstr ""
10860
 
10861
+ #: includes/settings/wcj-settings-payment-gateways-by-currency.php:44
10862
+ msgid "Allowed Currencies"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
10863
  msgstr ""
10864
 
10865
  #: includes/settings/wcj-settings-payment-gateways-by-currency.php:55
10906
 
10907
  #: includes/settings/wcj-settings-payment-gateways-fees.php:25
10908
  #: includes/settings/wcj-settings-pdf-invoicing-header.php:36
10909
+ #: includes/settings/wcj-settings-pdf-invoicing-page.php:83
10910
  #: includes/settings/wcj-settings-purchase-data.php:67
10911
  msgid "Leave blank to disable"
10912
  msgstr ""
11326
  msgstr ""
11327
 
11328
  #: includes/settings/wcj-settings-pdf-invoicing-page.php:39
11329
+ msgid "Custom: width (millimeters)"
11330
+ msgstr ""
11331
+
11332
+ #: includes/settings/wcj-settings-pdf-invoicing-page.php:46
11333
+ msgid "Custom: height (millimeters)"
11334
+ msgstr ""
11335
+
11336
+ #: includes/settings/wcj-settings-pdf-invoicing-page.php:53
11337
  msgid "Margin Left"
11338
  msgstr ""
11339
 
11340
+ #: includes/settings/wcj-settings-pdf-invoicing-page.php:59
11341
  msgid "Margin Right"
11342
  msgstr ""
11343
 
11344
+ #: includes/settings/wcj-settings-pdf-invoicing-page.php:65
11345
  msgid "Margin Top"
11346
  msgstr ""
11347
 
11348
+ #: includes/settings/wcj-settings-pdf-invoicing-page.php:71
11349
  msgid "Margin Bottom"
11350
  msgstr ""
11351
 
11352
+ #: includes/settings/wcj-settings-pdf-invoicing-page.php:77
11353
  msgid "Background Image"
11354
  msgstr ""
11355
 
11356
+ #: includes/settings/wcj-settings-pdf-invoicing-page.php:81
11357
  #, php-format
11358
  msgid ""
11359
  "Enter a local URL to an image. Upload your image using the <a href=\"%s"
11508
  msgid "DOCUMENT_ROOT"
11509
  msgstr ""
11510
 
11511
+ #: includes/settings/wcj-settings-pdf-invoicing.php:101
11512
+ msgid "Temp Directory"
11513
+ msgstr ""
11514
+
11515
+ #: includes/settings/wcj-settings-pdf-invoicing.php:102
11516
+ msgid "Leave blank to use the default temp directory."
11517
+ msgstr ""
11518
+
11519
+ #: includes/settings/wcj-settings-pdf-invoicing.php:112
11520
  msgid "Report Tool Options"
11521
  msgstr ""
11522
 
11523
+ #: includes/settings/wcj-settings-pdf-invoicing.php:117
11524
  msgid "Reports Filename"
11525
  msgstr ""
11526
 
11527
+ #: includes/settings/wcj-settings-pdf-invoicing.php:131
11528
  msgid "CSV UTF-8 BOM"
11529
  msgstr ""
11530
 
11531
+ #: includes/settings/wcj-settings-pdf-invoicing.php:138
11532
  msgid "Replace Periods with Commas in CSV Data"
11533
  msgstr ""
11534
 
11535
+ #: includes/settings/wcj-settings-pdf-invoicing.php:139
11536
  msgid "Replace"
11537
  msgstr ""
11538
 
11783
  msgid "Price by User Role by Products Categories"
11784
  msgstr ""
11785
 
 
 
 
 
 
 
 
11786
  #: includes/settings/wcj-settings-price-formats.php:20
11787
  msgid "Trim Zeros in Prices"
11788
  msgstr ""
11805
  msgstr ""
11806
 
11807
  #: includes/settings/wcj-settings-price-formats.php:72
11808
+ #: includes/settings/wcj-settings-price-formats.php:86
11809
  msgid "Left"
11810
  msgstr ""
11811
 
11812
  #: includes/settings/wcj-settings-price-formats.php:73
11813
+ #: includes/settings/wcj-settings-price-formats.php:87
11814
  msgid "Right"
11815
  msgstr ""
11816
 
11817
  #: includes/settings/wcj-settings-price-formats.php:74
11818
+ #: includes/settings/wcj-settings-price-formats.php:88
11819
  msgid "Left with space"
11820
  msgstr ""
11821
 
11822
  #: includes/settings/wcj-settings-price-formats.php:75
11823
+ #: includes/settings/wcj-settings-price-formats.php:89
11824
  msgid "Right with space"
11825
  msgstr ""
11826
 
11827
  #: includes/settings/wcj-settings-price-formats.php:80
11828
+ msgid "Additional Currency Code Position"
11829
+ msgstr ""
11830
+
11831
+ #: includes/settings/wcj-settings-price-formats.php:85
11832
+ msgid "Do not add currency code"
11833
+ msgstr ""
11834
+
11835
+ #: includes/settings/wcj-settings-price-formats.php:93
11836
  msgid "Thousand Separator"
11837
  msgstr ""
11838
 
11839
+ #: includes/settings/wcj-settings-price-formats.php:101
11840
  msgid "Decimal Separator"
11841
  msgstr ""
11842
 
11843
+ #: includes/settings/wcj-settings-price-formats.php:109
11844
  msgid "Number of Decimals"
11845
  msgstr ""
11846
 
11847
+ #: includes/settings/wcj-settings-price-formats.php:117
11848
  msgid "WPML Language Code"
11849
  msgstr ""
11850
 
11851
+ #: includes/settings/wcj-settings-price-formats.php:118
11852
  msgid ""
11853
  "Option to set different price formats for different WPML languages. Can be "
11854
  "comma separated list. Leave empty to disable."
11995
  #: includes/settings/wcj-settings-product-add-to-cart.php:39
11996
  #: includes/settings/wcj-settings-product-by-date.php:52
11997
  #: includes/settings/wcj-settings-product-by-time.php:52
11998
+ #: includes/settings/wcj-settings-sale-flash.php:59
11999
+ #: includes/settings/wcj-settings-sale-flash.php:64
12000
  msgid "Per Product"
12001
  msgstr ""
12002
 
12077
  msgid "Disable on Cart Page"
12078
  msgstr ""
12079
 
12080
+ #: includes/settings/wcj-settings-product-add-to-cart.php:161
12081
+ msgid "Set All Products to \"Sold individually\""
12082
+ msgstr ""
12083
+
12084
+ #: includes/settings/wcj-settings-product-add-to-cart.php:172
12085
  msgid "Add to Cart Button Disabling"
12086
  msgstr ""
12087
 
12088
+ #: includes/settings/wcj-settings-product-add-to-cart.php:177
12089
  msgid "Disable Add to Cart Buttons on per Product Basis"
12090
  msgstr ""
12091
 
12092
+ #: includes/settings/wcj-settings-product-add-to-cart.php:185
12093
  msgid "Disable Add to Cart Buttons on All Category/Archives Pages"
12094
  msgstr ""
12095
 
 
12096
  #: includes/settings/wcj-settings-product-add-to-cart.php:186
12097
+ #: includes/settings/wcj-settings-product-add-to-cart.php:193
12098
  msgid "Disable Buttons"
12099
  msgstr ""
12100
 
12101
+ #: includes/settings/wcj-settings-product-add-to-cart.php:192
12102
  msgid "Disable Add to Cart Buttons on All Single Product Pages"
12103
  msgstr ""
12104
 
12105
+ #: includes/settings/wcj-settings-product-add-to-cart.php:203
12106
  msgid "Add to Cart Button Custom URL"
12107
  msgstr ""
12108
 
12109
+ #: includes/settings/wcj-settings-product-add-to-cart.php:208
12110
  msgid "Custom Add to Cart Buttons URL on Archives on per Product Basis"
12111
  msgstr ""
12112
 
12113
+ #: includes/settings/wcj-settings-product-add-to-cart.php:220
12114
  msgid "Add to Cart Button AJAX"
12115
  msgstr ""
12116
 
12117
+ #: includes/settings/wcj-settings-product-add-to-cart.php:225
12118
  msgid "Disable/Enable Add to Cart Button AJAX on per Product Basis"
12119
  msgstr ""
12120
 
12121
+ #: includes/settings/wcj-settings-product-add-to-cart.php:242
12122
  msgid "Open External Products on Add to Cart in New Window"
12123
  msgstr ""
12124
 
12125
+ #: includes/settings/wcj-settings-product-add-to-cart.php:243
12126
  msgid "Enable on Single Product Pages"
12127
  msgstr ""
12128
 
12129
+ #: includes/settings/wcj-settings-product-add-to-cart.php:250
12130
  msgid "Enable on Category/Archive Pages"
12131
  msgstr ""
12132
 
12133
+ #: includes/settings/wcj-settings-product-add-to-cart.php:261
12134
  msgid "Add to Cart Message Options"
12135
  msgstr ""
12136
 
12137
+ #: includes/settings/wcj-settings-product-add-to-cart.php:266
12138
  msgid "Change \"Continue shopping\" Text"
12139
  msgstr ""
12140
 
12141
+ #: includes/settings/wcj-settings-product-add-to-cart.php:280
12142
  msgid "Change \"View cart\" Text"
12143
  msgstr ""
12144
 
12268
  msgid "Hide all addons"
12269
  msgstr ""
12270
 
12271
+ #: includes/settings/wcj-settings-product-addons.php:222
12272
+ msgid "Position Priority on Frontend"
12273
+ msgstr ""
12274
+
12275
+ #: includes/settings/wcj-settings-product-addons.php:223
12276
+ #: includes/settings/wcj-settings-shipping-by-condition.php:84
12277
+ #: includes/settings/wcj-settings-shipping-options.php:41
12278
+ msgid "Set to zero to use the default priority."
12279
+ msgstr ""
12280
+
12281
  #: includes/settings/wcj-settings-product-bookings.php:28
12282
  msgid "Labels and Messages"
12283
  msgstr ""
12374
  msgstr ""
12375
 
12376
  #: includes/settings/wcj-settings-product-by-country.php:14
12377
+ #: includes/settings/wcj-settings-product-custom-visibility.php:14
12378
  msgid "Visibility Options"
12379
  msgstr ""
12380
 
12381
  #: includes/settings/wcj-settings-product-by-country.php:19
12382
  #: includes/settings/wcj-settings-product-by-user-role.php:19
12383
+ #: includes/settings/wcj-settings-product-custom-visibility.php:19
12384
  msgid "Hide Visibility"
12385
  msgstr ""
12386
 
12387
  #: includes/settings/wcj-settings-product-by-country.php:20
12388
  #: includes/settings/wcj-settings-product-by-user-role.php:20
12389
+ #: includes/settings/wcj-settings-product-custom-visibility.php:20
12390
  msgid ""
12391
  "This will hide selected products in shop and search results. However product "
12392
  "still will be accessible via direct link."
12394
 
12395
  #: includes/settings/wcj-settings-product-by-country.php:27
12396
  #: includes/settings/wcj-settings-product-by-user-role.php:27
12397
+ #: includes/settings/wcj-settings-product-custom-visibility.php:27
12398
  msgid "Make Non-purchasable"
12399
  msgstr ""
12400
 
12401
  #: includes/settings/wcj-settings-product-by-country.php:28
12402
  #: includes/settings/wcj-settings-product-by-user-role.php:28
12403
+ #: includes/settings/wcj-settings-product-custom-visibility.php:28
12404
  msgid ""
12405
  "This will make selected products non-purchasable (i.e. product can't be "
12406
  "added to the cart)."
12408
 
12409
  #: includes/settings/wcj-settings-product-by-country.php:35
12410
  #: includes/settings/wcj-settings-product-by-user-role.php:35
12411
+ #: includes/settings/wcj-settings-product-custom-visibility.php:35
12412
  msgid "Modify Query"
12413
  msgstr ""
12414
 
12415
  #: includes/settings/wcj-settings-product-by-country.php:36
12416
  #: includes/settings/wcj-settings-product-by-user-role.php:36
12417
+ #: includes/settings/wcj-settings-product-custom-visibility.php:36
12418
  msgid "This will hide selected products completely (including direct link)."
12419
  msgstr ""
12420
 
12437
  "to frontend with \"%s\" widget or %s shortcode."
12438
  msgstr ""
12439
 
 
 
 
 
 
12440
  #: includes/settings/wcj-settings-product-by-country.php:62
12441
  msgid "Automatically by IP"
12442
  msgstr ""
12571
  msgstr ""
12572
 
12573
  #: includes/settings/wcj-settings-product-by-user.php:15
12574
+ #: includes/shortcodes/class-wcj-shortcodes-products-add-form.php:181
12575
+ #: includes/shortcodes/class-wcj-shortcodes-products-add-form.php:373
12576
  msgid "Image"
12577
  msgstr ""
12578
 
12621
  msgstr ""
12622
 
12623
  #: includes/settings/wcj-settings-product-by-user.php:122
12624
+ #: includes/shortcodes/class-wcj-shortcodes-products-add-form.php:291
12625
  msgid "\"%product_title%\" successfully added!"
12626
  msgstr ""
12627
 
12630
  msgstr ""
12631
 
12632
  #: includes/settings/wcj-settings-product-by-user.php:129
12633
+ #: includes/shortcodes/class-wcj-shortcodes-products-add-form.php:298
12634
  msgid "\"%product_title%\" successfully edited!"
12635
  msgstr ""
12636
 
12655
  msgstr ""
12656
 
12657
  #: includes/settings/wcj-settings-product-custom-info.php:81
12658
+ #: includes/settings/wcj-settings-product-images.php:49
12659
+ #: includes/settings/wcj-settings-product-images.php:58
12660
+ #: includes/settings/wcj-settings-product-images.php:67
12661
+ #: includes/settings/wcj-settings-products-xml.php:111
12662
  #: includes/settings/meta-box/wcj-settings-meta-box-product-images.php:18
12663
  #: includes/settings/meta-box/wcj-settings-meta-box-product-images.php:25
12664
  msgid "You can use shortcodes here."
12712
  msgstr ""
12713
 
12714
  #: includes/settings/wcj-settings-product-custom-info.php:160
12715
+ #: includes/settings/wcj-settings-products-xml.php:144
12716
  msgid "Products to Include"
12717
  msgstr ""
12718
 
12719
  #: includes/settings/wcj-settings-product-custom-info.php:171
12720
+ #: includes/settings/wcj-settings-products-xml.php:154
12721
  msgid "Products to Exclude"
12722
  msgstr ""
12723
 
12731
  "g.: <code>rehub_woo_after_compact_grid_title|Rehub: After title</code>."
12732
  msgstr ""
12733
 
12734
+ #: includes/settings/wcj-settings-product-custom-visibility.php:44
12735
+ msgid "One per line."
12736
+ msgstr ""
12737
+
12738
  #: includes/settings/wcj-settings-product-images.php:14
12739
  msgid "Product Image and Thumbnails"
12740
  msgstr ""
12741
 
12742
+ #: includes/settings/wcj-settings-product-images.php:19
12743
  msgid "Image and Thumbnails on Single"
12744
  msgstr ""
12745
 
12746
+ #: includes/settings/wcj-settings-product-images.php:26
12747
  msgid "Image on Single"
12748
  msgstr ""
12749
 
12750
+ #: includes/settings/wcj-settings-product-images.php:33
12751
  msgid "Thumbnails on Single"
12752
  msgstr ""
12753
 
12754
+ #: includes/settings/wcj-settings-product-images.php:40
12755
  msgid "Image on Archives"
12756
  msgstr ""
12757
 
12758
+ #: includes/settings/wcj-settings-product-images.php:47
12759
  msgid "Replace Image on Single"
12760
  msgstr ""
12761
 
12762
+ #: includes/settings/wcj-settings-product-images.php:48
12763
  msgid ""
12764
  "Replace image on single product page with custom HTML. Leave blank to "
12765
  "disable."
12766
  msgstr ""
12767
 
12768
+ #: includes/settings/wcj-settings-product-images.php:56
12769
  msgid "Replace Thumbnails on Single"
12770
  msgstr ""
12771
 
12772
+ #: includes/settings/wcj-settings-product-images.php:57
12773
  msgid ""
12774
  "Replace thumbnails on single product page with custom HTML. Leave blank to "
12775
  "disable."
12776
  msgstr ""
12777
 
12778
+ #: includes/settings/wcj-settings-product-images.php:65
12779
  msgid "Replace Image on Archive"
12780
  msgstr ""
12781
 
12782
+ #: includes/settings/wcj-settings-product-images.php:66
12783
  msgid ""
12784
  "Replace image on archive pages with custom HTML. Leave blank to disable."
12785
  msgstr ""
12786
 
12787
+ #: includes/settings/wcj-settings-product-images.php:74
12788
  msgid "Single Product Thumbnails Columns"
12789
  msgstr ""
12790
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
12791
  #: includes/settings/wcj-settings-product-info.php:14
12792
  msgid "Products Info"
12793
  msgstr ""
12954
  msgstr ""
12955
 
12956
  #: includes/settings/wcj-settings-product-input-fields.php:226
12957
+ msgid "HTML Template - Radio Field"
12958
  msgstr ""
12959
 
12960
  #: includes/settings/wcj-settings-product-input-fields.php:233
12961
+ msgid "HTML to add after required field title"
12962
+ msgstr ""
12963
+
12964
+ #: includes/settings/wcj-settings-product-input-fields.php:240
12965
  msgid "Cart Display Options"
12966
  msgstr ""
12967
 
12968
+ #: includes/settings/wcj-settings-product-input-fields.php:241
12969
  msgid ""
12970
  "When \"Add to cart item data\" is selected, \"Cart HTML Template\" options "
12971
  "below will be ignored."
12972
  msgstr ""
12973
 
12974
+ #: includes/settings/wcj-settings-product-input-fields.php:246
12975
  msgid "Add to cart item name"
12976
  msgstr ""
12977
 
12978
+ #: includes/settings/wcj-settings-product-input-fields.php:247
12979
  msgid "Add to cart item data"
12980
  msgstr ""
12981
 
12982
+ #: includes/settings/wcj-settings-product-input-fields.php:251
12983
  msgid "Cart HTML Template - Start"
12984
  msgstr ""
12985
 
12986
+ #: includes/settings/wcj-settings-product-input-fields.php:258
12987
  msgid "Cart HTML Template - Each Field"
12988
  msgstr ""
12989
 
12990
+ #: includes/settings/wcj-settings-product-input-fields.php:265
12991
  msgid "Cart HTML Template - End"
12992
  msgstr ""
12993
 
12994
+ #: includes/settings/wcj-settings-product-input-fields.php:272
12995
  msgid "Order Table Template - Each Field"
12996
  msgstr ""
12997
 
12998
+ #: includes/settings/wcj-settings-product-input-fields.php:273
12999
  msgid "Affects Order received page, Emails and Admin Orders View"
13000
  msgstr ""
13001
 
13002
+ #: includes/settings/wcj-settings-product-input-fields.php:311
13003
  msgid "Admin Order View Options"
13004
  msgstr ""
13005
 
13006
+ #: includes/settings/wcj-settings-product-input-fields.php:316
13007
  msgid "Replace Field ID with Field Label"
13008
  msgstr ""
13009
 
13010
+ #: includes/settings/wcj-settings-product-listings.php:31
13011
  msgid "Shop Page Display Options"
13012
  msgstr ""
13013
 
13014
+ #: includes/settings/wcj-settings-product-listings.php:34
13015
  #, php-format
13016
  msgid ""
13017
  "You can control what is shown on the product archive in <a href=\"%s"
13018
  "\">WooCommerce > Settings > Products > Display > Shop page display</a>."
13019
  msgstr ""
13020
 
13021
+ #: includes/settings/wcj-settings-product-listings.php:40
13022
  msgid "Categories Count"
13023
  msgstr ""
13024
 
13025
+ #: includes/settings/wcj-settings-product-listings.php:41
13026
  msgid "Hide categories count on shop page"
13027
  msgstr ""
13028
 
13029
+ #: includes/settings/wcj-settings-product-listings.php:48
13030
  msgid ""
13031
  " Excludes one or more categories from the shop page. Leave blank to disable."
13032
  msgstr ""
13033
 
13034
+ #: includes/settings/wcj-settings-product-listings.php:57
13035
+ #: includes/settings/wcj-settings-product-listings.php:103
13036
  msgid "Hide Empty"
13037
  msgstr ""
13038
 
13039
+ #: includes/settings/wcj-settings-product-listings.php:58
13040
  msgid "Hide empty categories on shop page"
13041
  msgstr ""
13042
 
13043
+ #: includes/settings/wcj-settings-product-listings.php:64
13044
+ #: includes/settings/wcj-settings-product-listings.php:110
13045
  msgid "Show Products"
13046
  msgstr ""
13047
 
13048
+ #: includes/settings/wcj-settings-product-listings.php:65
13049
  msgid "Show products if no categories are displayed on shop page"
13050
  msgstr ""
13051
 
13052
+ #: includes/settings/wcj-settings-product-listings.php:75
13053
  msgid "Category Display Options"
13054
  msgstr ""
13055
 
13056
+ #: includes/settings/wcj-settings-product-listings.php:78
13057
  #, php-format
13058
  msgid ""
13059
  "You can control what is shown on category archives in <a href=\"%s"
13061
  "a>."
13062
  msgstr ""
13063
 
13064
+ #: includes/settings/wcj-settings-product-listings.php:84
13065
  msgid "Subcategories Count"
13066
  msgstr ""
13067
 
13068
+ #: includes/settings/wcj-settings-product-listings.php:85
13069
  msgid "Hide subcategories count on category pages"
13070
  msgstr ""
13071
 
13072
+ #: includes/settings/wcj-settings-product-listings.php:93
13073
  msgid "Exclude Subcategories"
13074
  msgstr ""
13075
 
13076
+ #: includes/settings/wcj-settings-product-listings.php:94
13077
  msgid ""
13078
  " Excludes one or more categories from the category (archive) pages. Leave "
13079
  "blank to disable."
13080
  msgstr ""
13081
 
13082
+ #: includes/settings/wcj-settings-product-listings.php:104
13083
  msgid "Hide empty subcategories on category pages"
13084
  msgstr ""
13085
 
13086
+ #: includes/settings/wcj-settings-product-listings.php:111
13087
  msgid "Show products if no categories are displayed on category page"
13088
  msgstr ""
13089
 
13090
+ #: includes/settings/wcj-settings-product-listings.php:121
13091
+ #: includes/settings/wcj-settings-product-listings.php:127
13092
  msgid "Product Shop Visibility by Price"
13093
  msgstr ""
13094
 
13095
+ #: includes/settings/wcj-settings-product-listings.php:123
13096
  msgid ""
13097
  "Here you can set to hide products from shop and search results depending on "
13098
  "product's price. Products will still be accessible via direct link."
13099
  msgstr ""
13100
 
13101
+ #: includes/settings/wcj-settings-product-listings.php:134
13102
  #: includes/settings/meta-box/wcj-settings-meta-box-product-open-pricing.php:31
13103
  msgid "Min Price"
13104
  msgstr ""
13105
 
13106
+ #: includes/settings/wcj-settings-product-listings.php:135
13107
  msgid ""
13108
  "Products with price below this value will be hidden. Ignored if set to zero."
13109
  msgstr ""
13110
 
13111
+ #: includes/settings/wcj-settings-product-listings.php:142
13112
  #: includes/settings/meta-box/wcj-settings-meta-box-product-open-pricing.php:38
13113
  msgid "Max Price"
13114
  msgstr ""
13115
 
13116
+ #: includes/settings/wcj-settings-product-listings.php:143
13117
  msgid ""
13118
  "Products with price above this value will be hidden. Ignored if set to zero."
13119
  msgstr ""
13120
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
13121
  #: includes/settings/wcj-settings-product-open-pricing.php:21
13122
  msgid "Frontend Label"
13123
  msgstr ""
13218
  msgstr ""
13219
 
13220
  #: includes/settings/wcj-settings-product-tabs.php:60
13221
+ #: includes/settings/wcj-settings-product-tabs.php:259
13222
  msgid "Make sure it's unique for each tab."
13223
  msgstr ""
13224
 
13225
  #: includes/settings/wcj-settings-product-tabs.php:73
13226
+ #: includes/settings/wcj-settings-product-tabs.php:272
13227
  msgid "You can use shortcodes here..."
13228
  msgstr ""
13229
 
13230
  #: includes/settings/wcj-settings-product-tabs.php:94
13231
+ #: includes/settings/wcj-settings-product-tabs.php:293
13232
  msgid "PRODUCTS to HIDE this tab"
13233
  msgstr ""
13234
 
13235
  #: includes/settings/wcj-settings-product-tabs.php:95
13236
+ #: includes/settings/wcj-settings-product-tabs.php:294
13237
  msgid "To hide this tab from some products, enter products here."
13238
  msgstr ""
13239
 
13240
  #: includes/settings/wcj-settings-product-tabs.php:103
13241
+ #: includes/settings/wcj-settings-product-tabs.php:302
13242
  msgid "PRODUCTS to SHOW this tab"
13243
  msgstr ""
13244
 
13245
  #: includes/settings/wcj-settings-product-tabs.php:104
13246
+ #: includes/settings/wcj-settings-product-tabs.php:303
13247
  msgid "To show this tab only for some products, enter products here."
13248
  msgstr ""
13249
 
13250
  #: includes/settings/wcj-settings-product-tabs.php:112
13251
+ #: includes/settings/wcj-settings-product-tabs.php:311
13252
  msgid "CATEGORIES to HIDE this tab"
13253
  msgstr ""
13254
 
13255
  #: includes/settings/wcj-settings-product-tabs.php:113
13256
+ #: includes/settings/wcj-settings-product-tabs.php:312
13257
  msgid "To hide this tab from some categories, enter categories here."
13258
  msgstr ""
13259
 
13260
  #: includes/settings/wcj-settings-product-tabs.php:121
13261
+ #: includes/settings/wcj-settings-product-tabs.php:320
13262
  msgid "CATEGORIES to SHOW this tab"
13263
  msgstr ""
13264
 
13265
  #: includes/settings/wcj-settings-product-tabs.php:122
13266
+ #: includes/settings/wcj-settings-product-tabs.php:321
13267
  msgid "To show this tab only for some categories, enter categories here."
13268
  msgstr ""
13269
 
13270
  #: includes/settings/wcj-settings-product-tabs.php:130
13271
+ #: includes/settings/wcj-settings-product-tabs.php:329
13272
  msgid "TAGS to HIDE this tab"
13273
  msgstr ""
13274
 
13275
  #: includes/settings/wcj-settings-product-tabs.php:131
13276
+ #: includes/settings/wcj-settings-product-tabs.php:330
13277
  msgid "To hide this tab from some tags, enter tags here."
13278
  msgstr ""
13279
 
13280
  #: includes/settings/wcj-settings-product-tabs.php:139
13281
+ #: includes/settings/wcj-settings-product-tabs.php:338
13282
  msgid "TAGS to SHOW this tab"
13283
  msgstr ""
13284
 
13285
  #: includes/settings/wcj-settings-product-tabs.php:140
13286
+ #: includes/settings/wcj-settings-product-tabs.php:339
13287
  msgid "To show this tab only for some tags, enter tags here."
13288
  msgstr ""
13289
 
13336
  msgstr ""
13337
 
13338
  #: includes/settings/wcj-settings-product-tabs.php:226
13339
+ msgid "Add Per Product Tabs Content to \"Yoast SEO\" plugin analysis"
13340
+ msgstr ""
13341
+
13342
+ #: includes/settings/wcj-settings-product-tabs.php:233
13343
  msgid "Default Per Product Custom Product Tabs Number"
13344
  msgstr ""
13345
 
13346
+ #: includes/settings/wcj-settings-product-tabs.php:251
13347
  msgid "Default Title"
13348
  msgstr ""
13349
 
13350
+ #: includes/settings/wcj-settings-product-tabs.php:258
13351
  msgid "Default Key"
13352
  msgstr ""
13353
 
13354
+ #: includes/settings/wcj-settings-product-tabs.php:265
13355
  msgid "Default Priority (i.e. Order)"
13356
  msgstr ""
13357
 
13358
+ #: includes/settings/wcj-settings-product-tabs.php:271
13359
  msgid "Default Content"
13360
  msgstr ""
13361
 
13362
+ #: includes/settings/wcj-settings-product-tabs.php:279
13363
  msgid "Default Link"
13364
  msgstr ""
13365
 
13366
+ #: includes/settings/wcj-settings-product-tabs.php:280
13367
  msgid "Leave blank for default behaviour."
13368
  msgstr ""
13369
 
13370
+ #: includes/settings/wcj-settings-product-tabs.php:287
13371
  msgid "Default \"Link - Open in New Window\""
13372
  msgstr ""
13373
 
13374
+ #: includes/settings/wcj-settings-product-tabs.php:355
13375
  msgid "WooCommerce Standard Product Tabs Options"
13376
  msgstr ""
13377
 
13378
+ #: includes/settings/wcj-settings-product-tabs.php:357
13379
  msgid "This section lets you customize single product tabs."
13380
  msgstr ""
13381
 
13382
+ #: includes/settings/wcj-settings-product-tabs.php:361
13383
  msgid "Description Tab"
13384
  msgstr ""
13385
 
 
 
 
 
 
 
13386
  #: includes/settings/wcj-settings-product-tabs.php:362
13387
  #: includes/settings/wcj-settings-product-tabs.php:383
13388
  #: includes/settings/wcj-settings-product-tabs.php:404
13389
+ msgid "Remove tab from product page"
13390
+ msgstr ""
13391
+
13392
+ #: includes/settings/wcj-settings-product-tabs.php:369
13393
+ #: includes/settings/wcj-settings-product-tabs.php:390
13394
+ #: includes/settings/wcj-settings-product-tabs.php:411
13395
  msgid "Leave blank for WooCommerce defaults"
13396
  msgstr ""
13397
 
13398
+ #: includes/settings/wcj-settings-product-tabs.php:382
13399
  msgid "Additional Information Tab"
13400
  msgstr ""
13401
 
13402
+ #: includes/settings/wcj-settings-product-tabs.php:403
13403
  msgid "Reviews Tab"
13404
  msgstr ""
13405
 
13435
  msgid "Template - After Form"
13436
  msgstr ""
13437
 
13438
+ #: includes/settings/wcj-settings-products-xml.php:33
13439
  msgid "Advanced: Block Size"
13440
  msgstr ""
13441
 
13442
+ #: includes/settings/wcj-settings-products-xml.php:34
13443
  msgid ""
13444
  "If you have large number of products you may want to modify block size for "
13445
  "WP_Query call. Leave default value if not sure."
13446
  msgstr ""
13447
 
13448
+ #: includes/settings/wcj-settings-products-xml.php:58
13449
  msgid "Create Now"
13450
  msgstr ""
13451
 
13452
+ #: includes/settings/wcj-settings-products-xml.php:63
13453
  #, php-format
13454
  msgid "Recent file was created on %s"
13455
  msgstr ""
13456
 
13457
+ #: includes/settings/wcj-settings-products-xml.php:70
13458
  msgid "XML File"
13459
  msgstr ""
13460
 
13461
+ #: includes/settings/wcj-settings-products-xml.php:83
13462
  msgid "XML Header"
13463
  msgstr ""
13464
 
13465
+ #: includes/settings/wcj-settings-products-xml.php:84
13466
  msgid "You can use shortcodes here. For example [wcj_current_datetime]."
13467
  msgstr ""
13468
 
13469
+ #: includes/settings/wcj-settings-products-xml.php:91
13470
  msgid "XML Item"
13471
  msgstr ""
13472
 
13473
+ #: includes/settings/wcj-settings-products-xml.php:93
13474
  #, php-format
13475
  msgid ""
13476
  "You can use shortcodes here. Please take a look at <a target=\"_blank\" href="
13477
  "\"%s\">Booster's products shortcodes</a>."
13478
  msgstr ""
13479
 
13480
+ #: includes/settings/wcj-settings-products-xml.php:110
13481
  msgid "XML Footer"
13482
  msgstr ""
13483
 
13484
+ #: includes/settings/wcj-settings-products-xml.php:118
13485
  msgid "XML File Path and Name"
13486
  msgstr ""
13487
 
13488
+ #: includes/settings/wcj-settings-products-xml.php:119
13489
  msgid "Path on server:"
13490
  msgstr ""
13491
 
13492
+ #: includes/settings/wcj-settings-products-xml.php:127
13493
  msgid "Update Period"
13494
  msgstr ""
13495
 
13496
+ #: includes/settings/wcj-settings-products-xml.php:139
13497
  msgid ""
13498
  "Possible update periods are: every minute, hourly, twice daily, daily and "
13499
  "weekly."
13500
  msgstr ""
13501
 
13502
+ #: includes/settings/wcj-settings-products-xml.php:145
13503
  msgid ""
13504
  "To include selected products only, enter products here. Leave blank to "
13505
  "include all products."
13506
  msgstr ""
13507
 
13508
+ #: includes/settings/wcj-settings-products-xml.php:155
13509
  msgid ""
13510
  "To exclude selected products, enter products here. Leave blank to include "
13511
  "all products."
13512
  msgstr ""
13513
 
13514
+ #: includes/settings/wcj-settings-products-xml.php:163
13515
  msgid "Categories to Include"
13516
  msgstr ""
13517
 
13518
+ #: includes/settings/wcj-settings-products-xml.php:164
13519
  msgid ""
13520
  "To include products from selected categories only, enter categories here. "
13521
  "Leave blank to include all products."
13522
  msgstr ""
13523
 
13524
+ #: includes/settings/wcj-settings-products-xml.php:172
13525
  msgid "Categories to Exclude"
13526
  msgstr ""
13527
 
13528
+ #: includes/settings/wcj-settings-products-xml.php:173
13529
  msgid ""
13530
  "To exclude products from selected categories, enter categories here. Leave "
13531
  "blank to include all products."
13532
  msgstr ""
13533
 
13534
+ #: includes/settings/wcj-settings-products-xml.php:181
13535
  msgid "Tags to Include"
13536
  msgstr ""
13537
 
13538
+ #: includes/settings/wcj-settings-products-xml.php:182
13539
  msgid ""
13540
  "To include products from selected tags only, enter tags here. Leave blank to "
13541
  "include all products."
13542
  msgstr ""
13543
 
13544
+ #: includes/settings/wcj-settings-products-xml.php:190
13545
  msgid "Tags to Exclude"
13546
  msgstr ""
13547
 
13548
+ #: includes/settings/wcj-settings-products-xml.php:191
13549
  msgid ""
13550
  "To exclude products from selected tags, enter tags here. Leave blank to "
13551
  "include all products."
13552
  msgstr ""
13553
 
13554
+ #: includes/settings/wcj-settings-products-xml.php:199
13555
  msgid "Products Scope"
13556
  msgstr ""
13557
 
13558
+ #: includes/settings/wcj-settings-products-xml.php:205
13559
  msgid "Only products that are on sale"
13560
  msgstr ""
13561
 
13562
+ #: includes/settings/wcj-settings-products-xml.php:207
13563
  msgid "Only products that are featured"
13564
  msgstr ""
13565
 
13566
+ #: includes/settings/wcj-settings-products-xml.php:208
13567
  msgid "Only products that are not featured"
13568
  msgstr ""
13569
 
13637
  "This section lets you add custom columns to WooCommerce admin products list."
13638
  msgstr ""
13639
 
13640
+ #: includes/settings/wcj-settings-purchase-data.php:155
13641
+ msgid "Admin Orders List Custom Columns"
13642
+ msgstr ""
13643
+
13644
  #: includes/settings/wcj-settings-purchase-data.php:157
13645
  msgid ""
13646
  "This section lets you add custom columns to WooCommerce admin orders list."
13880
  msgid "View report"
13881
  msgstr ""
13882
 
13883
+ #: includes/settings/wcj-settings-sale-flash.php:14
13884
+ #: includes/settings/wcj-settings-sale-flash.php:19
13885
+ msgid "Globally"
13886
+ msgstr ""
13887
+
13888
+ #: includes/settings/wcj-settings-sale-flash.php:34
13889
+ msgid "Hide Everywhere"
13890
+ msgstr ""
13891
+
13892
+ #: includes/settings/wcj-settings-sale-flash.php:41
13893
+ msgid "Hide on Archives (Categories) Only"
13894
+ msgstr ""
13895
+
13896
+ #: includes/settings/wcj-settings-sale-flash.php:48
13897
+ msgid "Hide on Single Page Only"
13898
+ msgstr ""
13899
+
13900
+ #: includes/settings/wcj-settings-sale-flash.php:81
13901
+ msgid "Per Category"
13902
+ msgstr ""
13903
+
13904
+ #: includes/settings/wcj-settings-sale-flash.php:81
13905
+ msgid "Per Tag"
13906
+ msgstr ""
13907
+
13908
  #: includes/settings/wcj-settings-shipping-by-condition.php:18
13909
  #: includes/settings/wcj-settings-shipping-by-condition.php:24
13910
  #, php-format
13921
  msgid "Exclude %s"
13922
  msgstr ""
13923
 
13924
+ #: includes/settings/wcj-settings-shipping-by-condition.php:83
13925
+ msgid "Filter Priority"
13926
+ msgstr ""
13927
+
13928
  #: includes/settings/wcj-settings-shipping-by-order-amount.php:44
13929
  msgid "Maximum order amount"
13930
  msgstr ""
14001
  msgid "Hide when free is available"
14002
  msgstr ""
14003
 
14004
+ #: includes/settings/wcj-settings-shipping-options.php:40
14005
+ msgid "Advanced: Filter Priority"
14006
+ msgstr ""
14007
+
14008
+ #: includes/settings/wcj-settings-shipping-options.php:53
14009
+ #: includes/settings/wcj-settings-shipping-options.php:62
14010
  msgid "Free Shipping by Product"
14011
  msgstr ""
14012
 
14013
+ #: includes/settings/wcj-settings-shipping-options.php:54
14014
  msgid ""
14015
  "In this section you can select products which grant free shipping when added "
14016
  "to cart."
14017
  msgstr ""
14018
 
14019
+ #: includes/settings/wcj-settings-shipping-options.php:55
14020
  #, php-format
14021
  msgid "Similar results can be achieved with %s module."
14022
  msgstr ""
14023
 
14024
+ #: includes/settings/wcj-settings-shipping-options.php:78
14025
  msgid ""
14026
  "Select either <strong>all products</strong> or <strong>at least one product</"
14027
  "strong> in cart must grant free shipping."
14028
  msgstr ""
14029
 
14030
+ #: includes/settings/wcj-settings-shipping-options.php:83
14031
  msgid "All products in cart must grant free shipping"
14032
  msgstr ""
14033
 
14034
+ #: includes/settings/wcj-settings-shipping-options.php:84
14035
  msgid "At least one product in cart must grant free shipping"
14036
  msgstr ""
14037
 
14038
+ #: includes/settings/wcj-settings-shipping-options.php:96
14039
+ #: includes/settings/wcj-settings-shipping-options.php:102
14040
  msgid "Shipping Descriptions"
14041
  msgstr ""
14042
 
14043
+ #: includes/settings/wcj-settings-shipping-options.php:98
14044
  #, php-format
14045
  msgid ""
14046
  "This section will allow you to add any text (e.g. description) for shipping "
14048
  "tags here, e.g. try \"%s\""
14049
  msgstr ""
14050
 
14051
+ #: includes/settings/wcj-settings-shipping-options.php:109
14052
  msgid "Description Visibility"
14053
  msgstr ""
14054
 
14055
+ #: includes/settings/wcj-settings-shipping-options.php:114
14056
+ #: includes/settings/wcj-settings-shipping-options.php:170
14057
  msgid "On both cart and checkout pages"
14058
  msgstr ""
14059
 
14060
+ #: includes/settings/wcj-settings-shipping-options.php:115
14061
+ #: includes/settings/wcj-settings-shipping-options.php:171
14062
  msgid "Only on cart page"
14063
  msgstr ""
14064
 
14065
+ #: includes/settings/wcj-settings-shipping-options.php:116
14066
+ #: includes/settings/wcj-settings-shipping-options.php:172
14067
  msgid "Only on checkout page"
14068
  msgstr ""
14069
 
14070
+ #: includes/settings/wcj-settings-shipping-options.php:118
14071
+ #: includes/settings/wcj-settings-shipping-options.php:174
14072
  msgid ""
14073
  "Possible values: on both cart and checkout pages; only on cart page; only on "
14074
  "checkout page"
14075
  msgstr ""
14076
 
14077
+ #: includes/settings/wcj-settings-shipping-options.php:142
14078
+ #: includes/settings/wcj-settings-shipping-options.php:148
14079
  msgid "Shipping Icons"
14080
  msgstr ""
14081
 
14082
+ #: includes/settings/wcj-settings-shipping-options.php:144
14083
  msgid ""
14084
  "This section will allow you to add icons for shipping method. Icons will be "
14085
  "visible on cart and checkout pages."
14086
  msgstr ""
14087
 
14088
+ #: includes/settings/wcj-settings-shipping-options.php:155
14089
  msgid "Icon Position"
14090
  msgstr ""
14091
 
14092
+ #: includes/settings/wcj-settings-shipping-options.php:160
14093
  msgid "Before label"
14094
  msgstr ""
14095
 
14096
+ #: includes/settings/wcj-settings-shipping-options.php:161
14097
  msgid "After label"
14098
  msgstr ""
14099
 
14100
+ #: includes/settings/wcj-settings-shipping-options.php:165
14101
  msgid "Icon Visibility"
14102
  msgstr ""
14103
 
14104
+ #: includes/settings/wcj-settings-shipping-options.php:179
14105
  msgid "Icon Style"
14106
  msgstr ""
14107
 
14108
+ #: includes/settings/wcj-settings-shipping-options.php:180
14109
  msgid ""
14110
  "You can also style icons with CSS class \"wcj_shipping_icon\", or id "
14111
  "\"wcj_shipping_icon_method_id\""
14413
  msgid "Custom Out of Stock Class"
14414
  msgstr ""
14415
 
14416
+ #: includes/settings/wcj-settings-tax-display.php:20
14417
+ msgid "TAX Display - Toggle Button"
14418
+ msgstr ""
14419
+
14420
+ #: includes/settings/wcj-settings-tax-display.php:22
14421
+ #, php-format
14422
+ msgid "Use %s shortcode to display the button on frontend."
14423
+ msgstr ""
14424
+
14425
+ #: includes/settings/wcj-settings-tax-display.php:26
14426
+ msgid "TAX Toggle Button"
14427
+ msgstr ""
14428
+
14429
+ #: includes/settings/wcj-settings-tax-display.php:37
14430
+ #: includes/settings/wcj-settings-tax-display.php:43
14431
+ msgid "TAX Display by Product"
14432
+ msgstr ""
14433
+
14434
+ #: includes/settings/wcj-settings-tax-display.php:39
14435
+ msgid ""
14436
+ "If you want to display part of your products including TAX and another part "
14437
+ "excluding TAX, you can set it here."
14438
+ msgstr ""
14439
+
14440
+ #: includes/settings/wcj-settings-tax-display.php:50
14441
+ msgid "Products - Including TAX"
14442
+ msgstr ""
14443
+
14444
+ #: includes/settings/wcj-settings-tax-display.php:52
14445
+ msgid "Select products to display including TAX."
14446
+ msgstr ""
14447
+
14448
+ #: includes/settings/wcj-settings-tax-display.php:60
14449
+ msgid "Products - Excluding TAX"
14450
+ msgstr ""
14451
+
14452
+ #: includes/settings/wcj-settings-tax-display.php:62
14453
+ msgid "Select products to display excluding TAX."
14454
+ msgstr ""
14455
+
14456
+ #: includes/settings/wcj-settings-tax-display.php:70
14457
+ msgid "Product Categories - Including TAX"
14458
+ msgstr ""
14459
+
14460
+ #: includes/settings/wcj-settings-tax-display.php:72
14461
+ msgid "Select product categories to display including TAX."
14462
+ msgstr ""
14463
+
14464
+ #: includes/settings/wcj-settings-tax-display.php:80
14465
+ msgid "Product Categories - Excluding TAX"
14466
+ msgstr ""
14467
+
14468
+ #: includes/settings/wcj-settings-tax-display.php:82
14469
+ msgid "Select product categories to display excluding TAX."
14470
+ msgstr ""
14471
+
14472
+ #: includes/settings/wcj-settings-tax-display.php:94
14473
+ #: includes/settings/wcj-settings-tax-display.php:100
14474
+ msgid "TAX Display by User Role"
14475
+ msgstr ""
14476
+
14477
+ #: includes/settings/wcj-settings-tax-display.php:96
14478
+ msgid ""
14479
+ "If you want to display prices including TAX or excluding TAX for different "
14480
+ "user roles, you can set it here."
14481
+ msgstr ""
14482
+
14483
+ #: includes/settings/wcj-settings-tax-display.php:108
14484
+ msgid ""
14485
+ "Save changes after you change this option and new settings fields will "
14486
+ "appear."
14487
+ msgstr ""
14488
+
14489
+ #: includes/settings/wcj-settings-tax-display.php:109
14490
+ #, php-format
14491
+ msgid ""
14492
+ "Select user roles that you want to change tax display for. For all remaining "
14493
+ "(i.e. not selected) user roles - default TAX display (set in %s) will be "
14494
+ "applied."
14495
+ msgstr ""
14496
+
14497
+ #: includes/settings/wcj-settings-tax-display.php:110
14498
+ msgid "WooCommerce > Settings > Tax"
14499
+ msgstr ""
14500
+
14501
+ #: includes/settings/wcj-settings-tax-display.php:122
14502
+ #, php-format
14503
+ msgid "Role: %s"
14504
+ msgstr ""
14505
+
14506
+ #: includes/settings/wcj-settings-tax-display.php:127
14507
+ msgid "Default TAX display (no changes)"
14508
+ msgstr ""
14509
+
14510
+ #: includes/settings/wcj-settings-tax-display.php:128
14511
+ msgid "Including tax"
14512
+ msgstr ""
14513
+
14514
+ #: includes/settings/wcj-settings-tax-display.php:129
14515
+ msgid "Excluding tax"
14516
+ msgstr ""
14517
+
14518
  #: includes/settings/wcj-settings-track-users.php:19
14519
  msgid "Countries by Visits"
14520
  msgstr ""
14816
  msgid "Hold Control (Ctrl) key to select multiple roles."
14817
  msgstr ""
14818
 
14819
+ #: includes/settings/meta-box/wcj-settings-meta-box-product-custom-visibility.php:15
14820
+ msgid "Visible"
14821
+ msgstr ""
14822
+
14823
  #: includes/settings/meta-box/wcj-settings-meta-box-product-images.php:17
14824
  msgid "Replace image with custom HTML on single product page"
14825
  msgstr ""
14872
  msgid "Hold Control (Ctrl) key to select multiple products."
14873
  msgstr ""
14874
 
14875
+ #: includes/settings/meta-box/wcj-settings-meta-box-sale-flash.php:24
14876
+ msgid "HTML"
14877
+ msgstr ""
14878
+
14879
  #: includes/settings/meta-box/wcj-settings-meta-box-wholesale-price.php:20
14880
  msgid "Price directly"
14881
  msgstr ""
14981
  msgid "Enable Custom Shipping"
14982
  msgstr ""
14983
 
14984
+ #: includes/shortcodes/class-wcj-shortcodes-general.php:86
14985
+ msgid "Tax toggle (incl.)"
14986
+ msgstr ""
14987
+
14988
+ #: includes/shortcodes/class-wcj-shortcodes-general.php:87
14989
+ msgid "Tax toggle (excl.)"
14990
  msgstr ""
14991
 
14992
+ #: includes/shortcodes/class-wcj-shortcodes-input-field.php:51
14993
  msgid "Attribute \"name\" is required!"
14994
  msgstr ""
14995
 
14996
+ #: includes/shortcodes/class-wcj-shortcodes-order-items.php:187
14997
  msgid "Standard"
14998
  msgstr ""
14999
 
15000
+ #: includes/shortcodes/class-wcj-shortcodes-orders.php:108
15001
  msgid "Dollars"
15002
  msgstr ""
15003
 
15004
+ #: includes/shortcodes/class-wcj-shortcodes-orders.php:109
15005
  msgid "Cents"
15006
  msgstr ""
15007
 
15008
+ #: includes/shortcodes/class-wcj-shortcodes-products-add-form.php:53
15009
  msgid "Product by User"
15010
  msgstr ""
15011
 
15012
+ #: includes/shortcodes/class-wcj-shortcodes-products-add-form.php:166
15013
  msgid "Title is required!"
15014
  msgstr ""
15015
 
15016
+ #: includes/shortcodes/class-wcj-shortcodes-products-add-form.php:174
15017
  msgid "Product exists!"
15018
  msgstr ""
15019
 
15020
+ #: includes/shortcodes/class-wcj-shortcodes-products-add-form.php:184
15021
+ #: includes/shortcodes/class-wcj-shortcodes-products-add-form.php:399
15022
  msgid "Product URL"
15023
  msgstr ""
15024
 
15025
+ #: includes/shortcodes/class-wcj-shortcodes-products-add-form.php:200
15026
  #, php-format
15027
  msgid "%s is required!"
15028
  msgstr ""
15029
 
15030
+ #: includes/shortcodes/class-wcj-shortcodes-products-add-form.php:206
15031
  msgid "Sale price must be less than the regular price!"
15032
  msgstr ""
15033
 
15034
+ #: includes/shortcodes/class-wcj-shortcodes-products-add-form.php:283
15035
  msgid "Error!"
15036
  msgstr ""
15037
 
15038
+ #: includes/shortcodes/class-wcj-shortcodes-products-add-form.php:325
15039
  msgid "Add New Product"
15040
  msgstr ""
15041
 
15042
+ #: includes/shortcodes/class-wcj-shortcodes-products-add-form.php:325
15043
  msgid "Edit Product"
15044
  msgstr ""
15045
 
15046
+ #: includes/shortcodes/class-wcj-shortcodes-products.php:273
15047
  #, php-format
15048
  msgid "%s ago"
15049
  msgstr ""
15050
 
15051
+ #: includes/shortcodes/class-wcj-shortcodes-products.php:289
15052
  msgid "No sales yet."
15053
  msgstr ""
15054
 
15236
  #: includes/widgets/class-wcj-widget-selector.php:59
15237
  msgid "Selector Type"
15238
  msgstr ""
15239
+
15240
+ #: includes/widgets/class-wcj-widget-selector.php:65
15241
+ msgid "Product custom visibility"
15242
+ msgstr ""
readme.txt CHANGED
@@ -3,7 +3,7 @@ Contributors: algoritmika, anbinder
3
  Tags: woocommerce, booster for woocommerce, woocommerce jetpack
4
  Requires at least: 4.4
5
  Tested up to: 4.9
6
- Stable tag: 3.2.3
7
  License: GNU General Public License v3.0
8
  License URI: http://www.gnu.org/licenses/gpl-3.0.html
9
 
@@ -18,7 +18,7 @@ Booster for WooCommerce is a WordPress plugin that supercharges your site with a
18
  **Prices & Currencies**
19
 
20
  * *Bulk Price Converter* - Multiply all WooCommerce products prices by set value.
21
- * *Currencies* - Add all world currencies to your WooCommerce store; change currency symbol.
22
  * *Currency Exchange Rates* - Automatic currency exchange rates for WooCommerce.
23
  * *Currency for External Products* - Set different currency for external WooCommerce products.
24
  * *Currency per Product* - Display prices for WooCommerce products in different currencies.
@@ -43,6 +43,7 @@ Booster for WooCommerce is a WordPress plugin that supercharges your site with a
43
 
44
  **Products**
45
 
 
46
  * *Bookings* - Add bookings products to WooCommerce.
47
  * *Cost of Goods* - Save WooCommerce product purchase costs data for admin reports.
48
  * *Crowdfunding* - Add crowdfunding products to WooCommerce.
@@ -51,19 +52,22 @@ Booster for WooCommerce is a WordPress plugin that supercharges your site with a
51
  * *Product Availability by Date* - WooCommerce product availability by date.
52
  * *Product Availability by Time* - WooCommerce product availability by time.
53
  * *Product Bulk Meta Editor* - Set WooCommerce products meta with bulk editor.
54
- * *Product Images* - Customize WooCommerce products images, thumbnails and sale flashes.
 
55
  * *Product Info* - Add additional info to WooCommerce category and single product pages.
56
  * *Product Input Fields* - WooCommerce product input fields.
57
  * *Product Listings* - Change WooCommerce display options for shop and category pages: show/hide categories count, exclude categories, show/hide empty categories.
58
  * *Product Tabs* - Add custom product tabs - globally or per product. Customize or completely remove WooCommerce default product tabs.
59
  * *Product Visibility by Country* - Display WooCommerce products by customer's country.
60
  * *Product Visibility by User Role* - Display WooCommerce products by customer's user role.
61
- * *Products XML* - WooCommerce products XML feed.
62
  * *Products per Page* - Add "products per page" selector to WooCommerce.
63
  * *Related Products* - Change displayed WooCommerce related products number, columns, order; relate by tag, category, product attribute or manually on per product basis. Hide related products completely.
64
  * *SKU* - Generate WooCommerce SKUs automatically. Search by SKU on frontend.
 
65
  * *Sorting* - Add more WooCommerce sorting options; rename or remove default sorting options; rearrange sorting options on frontend.
66
  * *Stock* - WooCommerce products stock management.
 
67
  * *User Products* - Let users add new WooCommerce products from frontend.
68
 
69
  **Cart & Checkout**
@@ -97,13 +101,14 @@ Booster for WooCommerce is a WordPress plugin that supercharges your site with a
97
  **Shipping & Orders**
98
 
99
  * *Address Formats* - Set address format in WooCommerce orders on per country basis. Force base country display.
 
100
  * *Custom Shipping* - Add multiple custom shipping methods to WooCommerce.
101
  * *Left to Free Shipping* - Display "left to free shipping" info in WooCommerce.
102
  * *Order Custom Statuses* - Custom statuses for WooCommerce orders.
103
  * *Order Min/Max Quantities* - Set min/max product quantities in WooCommerce order.
104
  * *Order Minimum Amount* - Minimum WooCommerce order amount (optionally by user role).
105
  * *Order Numbers* - WooCommerce sequential order numbering, custom order number prefix, suffix and number width.
106
- * *Orders* - Orders auto-complete. Custom admin order list columns. Admin order currency. Admin order list multiple status filtering.
107
  * *Shipping Calculator* - Customize WooCommerce shipping calculator on cart page.
108
  * *Shipping Methods by Min/Max Order Amount* - Set minimum and/or maximum order amount for WooCommerce shipping methods to show up.
109
  * *Shipping Methods by Products* - Set products, product categories or tags to include/exclude for WooCommerce shipping methods to show up.
@@ -171,6 +176,68 @@ You can see the differences between versions in this [table](https://booster.io/
171
 
172
  == Changelog ==
173
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
174
  = 3.2.3 - 03/12/2017 =
175
  * Fix - PRICES & CURRENCIES - Currency Exchange Rates - cURL option fixed for "Yahoo" and "Fixer.io" servers.
176
  * Dev - PRICES & CURRENCIES - Currency Exchange Rates - Server - Default value set to "European Central Bank (ECB)".
@@ -191,7 +258,7 @@ You can see the differences between versions in this [table](https://booster.io/
191
  * Dev - PDF INVOICING & PACKING SLIPS - "Default Images Directory" option moved from "Header" settings section to "General" section.
192
  * Dev - PDF INVOICING & PACKING SLIPS - Page Settings - "Background Image" option added.
193
  * Fix - Functions - General - `wcj_get_select_options()` - Prefix (`wcj-`) is added to the keys (to prevent issues with numeric keys).
194
- * Fix - Settings Manager - `manage_options()` fixed.
195
 
196
  = 3.2.2 - 12/11/2017 =
197
  * Dev - PRICES & CURRENCIES - Multicurrency (Currency Switcher) - "Advanced: Price Filters Priority" option added.
3
  Tags: woocommerce, booster for woocommerce, woocommerce jetpack
4
  Requires at least: 4.4
5
  Tested up to: 4.9
6
+ Stable tag: 3.2.4
7
  License: GNU General Public License v3.0
8
  License URI: http://www.gnu.org/licenses/gpl-3.0.html
9
 
18
  **Prices & Currencies**
19
 
20
  * *Bulk Price Converter* - Multiply all WooCommerce products prices by set value.
21
+ * *Currencies* - Add all world currencies and cryptocurrencies to your WooCommerce store; change currency symbol.
22
  * *Currency Exchange Rates* - Automatic currency exchange rates for WooCommerce.
23
  * *Currency for External Products* - Set different currency for external WooCommerce products.
24
  * *Currency per Product* - Display prices for WooCommerce products in different currencies.
43
 
44
  **Products**
45
 
46
+ * *Admin Products List* - Customize WooCommerce admin products list.
47
  * *Bookings* - Add bookings products to WooCommerce.
48
  * *Cost of Goods* - Save WooCommerce product purchase costs data for admin reports.
49
  * *Crowdfunding* - Add crowdfunding products to WooCommerce.
52
  * *Product Availability by Date* - WooCommerce product availability by date.
53
  * *Product Availability by Time* - WooCommerce product availability by time.
54
  * *Product Bulk Meta Editor* - Set WooCommerce products meta with bulk editor.
55
+ * *Product Custom Visibility* - Display WooCommerce products by custom param.
56
+ * *Product Images* - Customize WooCommerce products images and thumbnails.
57
  * *Product Info* - Add additional info to WooCommerce category and single product pages.
58
  * *Product Input Fields* - WooCommerce product input fields.
59
  * *Product Listings* - Change WooCommerce display options for shop and category pages: show/hide categories count, exclude categories, show/hide empty categories.
60
  * *Product Tabs* - Add custom product tabs - globally or per product. Customize or completely remove WooCommerce default product tabs.
61
  * *Product Visibility by Country* - Display WooCommerce products by customer's country.
62
  * *Product Visibility by User Role* - Display WooCommerce products by customer's user role.
63
+ * *Products XML Feeds* - WooCommerce products XML feeds.
64
  * *Products per Page* - Add "products per page" selector to WooCommerce.
65
  * *Related Products* - Change displayed WooCommerce related products number, columns, order; relate by tag, category, product attribute or manually on per product basis. Hide related products completely.
66
  * *SKU* - Generate WooCommerce SKUs automatically. Search by SKU on frontend.
67
+ * *Sale Flash* - Customize WooCommerce products sale flash.
68
  * *Sorting* - Add more WooCommerce sorting options; rename or remove default sorting options; rearrange sorting options on frontend.
69
  * *Stock* - WooCommerce products stock management.
70
+ * *Tax Display* - Customize WooCommerce tax display.
71
  * *User Products* - Let users add new WooCommerce products from frontend.
72
 
73
  **Cart & Checkout**
101
  **Shipping & Orders**
102
 
103
  * *Address Formats* - Set address format in WooCommerce orders on per country basis. Force base country display.
104
+ * *Admin Orders List* - Customize WooCommerce admin orders list: add custom columns; add multiple status filtering.
105
  * *Custom Shipping* - Add multiple custom shipping methods to WooCommerce.
106
  * *Left to Free Shipping* - Display "left to free shipping" info in WooCommerce.
107
  * *Order Custom Statuses* - Custom statuses for WooCommerce orders.
108
  * *Order Min/Max Quantities* - Set min/max product quantities in WooCommerce order.
109
  * *Order Minimum Amount* - Minimum WooCommerce order amount (optionally by user role).
110
  * *Order Numbers* - WooCommerce sequential order numbering, custom order number prefix, suffix and number width.
111
+ * *Orders* - WooCommerce orders auto-complete; admin order currency; bulk regenerate download permissions for orders.
112
  * *Shipping Calculator* - Customize WooCommerce shipping calculator on cart page.
113
  * *Shipping Methods by Min/Max Order Amount* - Set minimum and/or maximum order amount for WooCommerce shipping methods to show up.
114
  * *Shipping Methods by Products* - Set products, product categories or tags to include/exclude for WooCommerce shipping methods to show up.
176
 
177
  == Changelog ==
178
 
179
+ = 3.2.4 - 27/12/2017 =
180
+ * Dev - PRICES & CURRENCIES - Currencies - More cryptocurrencies added.
181
+ * Dev - PRICES & CURRENCIES - Currency Exchange Rates - Secondary "Exchange Rates Server" option added to each currency pair.
182
+ * Fix - PRICES & CURRENCIES - Currency per Product - `change_currency_symbol()` - Changing symbol for appropriate currency code only.
183
+ * Dev - PRICES & CURRENCIES - Price Formats - "Additional Currency Code Position" option added.
184
+ * Dev - BUTTON & PRICE LABELS - Call for Price - Variable and grouped products support added.
185
+ * Dev - PRODUCTS - Admin Products List - Initial module release (moved from "Product Listings" module).
186
+ * Fix - PRODUCTS - Bookings - `wp_die()` replaced with `die()` in `price_change_ajax()`.
187
+ * Dev - PRODUCTS - Product Add to Cart - "Set All Products to Sold individually" option added.
188
+ * Dev - PRODUCTS - Product Add to Cart - External Products - Open External Products on Add to Cart in New Window - on Category/Archive Pages - Additional themes compatibility added.
189
+ * Fix - PRODUCTS - Product Addons - `wp_die()` replaced with `die()` in `price_change_ajax()`.
190
+ * Dev - PRODUCTS - Product Addons - "Position Priority on Frontend" option added.
191
+ * Dev - PRODUCTS - Product Custom Visibility - Initial module release.
192
+ * Dev - PRODUCTS - Product Images - "Enable Section" option removed. Minor setting restyling.
193
+ * Dev - PRODUCTS - Product Input Fields - `array_merge()` replaced with `array_replace()` for `wcj_get_select_options()` results (with placeholder).
194
+ * Dev - PRODUCTS - Product Input Fields - Frontend View Options - "HTML Template - Radio Field" option added.
195
+ * Dev - PRODUCTS - Product Tabs - "Add Per Product Tabs Content to Yoast SEO plugin analysis" option added.
196
+ * Fix - PRODUCTS - Product Visibility by Country - Session bug fixed.
197
+ * Dev - PRODUCTS - Products XML - "Products to Include/Exclude" options can now be set as comma separated text (optionally) (instead of list).
198
+ * Dev - PRODUCTS - Products XML - Renamed to "Products XML Feeds". Description and documentation URL updated.
199
+ * Dev - PRODUCTS - Sale Flash - "Per Product", "Per Category", "Per Tag" options added.
200
+ * Dev - PRODUCTS - Sale Flash - Initial module release (copied from "Product Images" module).
201
+ * Fix - PRODUCTS - Tax Display - by Product & by User Role - `wcj_is_frontend()` check added.
202
+ * Dev - PRODUCTS - Tax Display - "TAX Display - Toggle Button" section added.
203
+ * Dev - PRODUCTS - Tax Display - Initial module release (moved from "Product Listings" module).
204
+ * Dev - CART & CHECKOUT - Checkout Custom Fields - "Customer Meta Fields" options added.
205
+ * Dev - CART & CHECKOUT - Checkout Custom Fields - "Min Cart Amount" and "Max Cart Amount" options added.
206
+ * Dev - CART & CHECKOUT - Checkout Custom Fields - `array_merge()` replaced with `array_replace()` for `wcj_get_select_options()` results (with placeholder).
207
+ * Fix - CART & CHECKOUT - EU VAT Number - Preserve VAT in Base Country - Issue with lowercase country code n VAT ID fixed.
208
+ * Dev - SHIPPING & ORDERS - Admin Orders List - Initial module release (moved from "Orders" module).
209
+ * Dev - SHIPPING & ORDERS - Order Minimum Amount - "Exclude Discounts from Cart Total" option added.
210
+ * Dev - SHIPPING & ORDERS - Orders - Bulk Regenerate Download Permissions for Orders - All Orders - "Periodically" option added.
211
+ * Dev - SHIPPING & ORDERS - Shipping Methods by Users / Shipping Methods by Products / Shipping Options (Hide if Free Shipping is Available) - "Filter Priority" options added.
212
+ * Dev - PDF INVOICING & PACKING SLIPS - General - "Advanced: Temp Directory" option added.
213
+ * Dev - PDF INVOICING & PACKING SLIPS - Page Settings - Page Format - "Custom" options added.
214
+ * Dev - EMAILS & MISC. - Custom Emails - `%customer%` can now be used in comma separated list for multiple recipients.
215
+ * Dev - EMAILS & MISC. - Reports - Custom Ranges / Product Sales (Daily) / Reports functions (also affects Export module) - `time()` replaced with `current_time()`.
216
+ * Dev - EMAILS & MISC. - Reports - Orders - Product Sales (Monthly) - `wcj_reports_products_sales_check_product` filter added.
217
+ * Fix - EMAILS & MISC. - Reports - Orders - Product Sales (Monthly) - WooCommerce v3.0.0 compatibility - "Product `parent` property accessed directly" issue fixed.
218
+ * Dev - Shortcodes - General - `[wcj_barcode]` shortcode added.
219
+ * Dev - Shortcodes - General - `[wcj_tcpdf_barcode]` shortcode added.
220
+ * Dev - Shortcodes - Orders - `[wcj_order_date]` - `days` attribute added.
221
+ * Fix - Shortcodes - Orders - `[wcj_order_items_table]` - `item_meta` column - `is_custom` meta excluded.
222
+ * Dev - Shortcodes - Products - `[wcj_product_category_count]` shortcode added.
223
+ * Dev - Shortcodes - Products - `[wcj_product_price]` - `currency` attribute added.
224
+ * Fix - Shortcodes - Products - `[wcj_product_purchase_price]` - Using `wcj_get_product_id()` instead of `wcj_get_product_id_or_variation_parent_id()`.
225
+ * Dev - Shortcodes - Products - `[wcj_product_purchase_price]` - `hide_currency` attribute added.
226
+ * Dev - Shortcodes files renamed.
227
+ * Dev - Functions - "Crons" added.
228
+ * Dev - Functions - Debug - `wcj_log()` - `esc_url()` added.
229
+ * Dev - Functions - Exchange Rates - `wcj_get_saved_exchange_rate()` function added.
230
+ * Dev - Functions - Exchange Rates - Code refactoring (`wcj_get_currency_exchange_rates_url_response()` function added).
231
+ * Dev - Functions - Exchange Rates - Exchange Rates Server - "CoinMarketCap" server added.
232
+ * Dev - Functions - Exchange Rates - Exchange Rates Server - "Coinbase" server added.
233
+ * Dev - Functions - General - `wcj_get_select_options()` - Prefix (`wcj-`) removed (was added in v3.2.3).
234
+ * Dev - Functions - General - `wcj_get_select_options()` - `trim()` added.
235
+ * Fix - Functions - Price and Currency - `wc_get_product_purchase_price()` - `int` replaced with `float` - this fixes the issue with purchase price calculating incorrectly (cutting decimal part).
236
+ * Dev - Settings Manager - Import - Checking for `wcj_` prefix, when importing plugin settings.
237
+ * Dev - Settings Manager - Reset - Now deletes all options (also includes meta).
238
+ * Dev - Admin Settings - Custom Fields - `exchange_rate` field updated (12 decimals in `step` and code refactoring).
239
+ * Dev - Code refactoring. `core` directory added.
240
+
241
  = 3.2.3 - 03/12/2017 =
242
  * Fix - PRICES & CURRENCIES - Currency Exchange Rates - cURL option fixed for "Yahoo" and "Fixer.io" servers.
243
  * Dev - PRICES & CURRENCIES - Currency Exchange Rates - Server - Default value set to "European Central Bank (ECB)".
258
  * Dev - PDF INVOICING & PACKING SLIPS - "Default Images Directory" option moved from "Header" settings section to "General" section.
259
  * Dev - PDF INVOICING & PACKING SLIPS - Page Settings - "Background Image" option added.
260
  * Fix - Functions - General - `wcj_get_select_options()` - Prefix (`wcj-`) is added to the keys (to prevent issues with numeric keys).
261
+ * Fix - Settings Manager - `manage_options()` - Security issue fixed.
262
 
263
  = 3.2.2 - 12/11/2017 =
264
  * Dev - PRICES & CURRENCIES - Multicurrency (Currency Switcher) - "Advanced: Price Filters Priority" option added.
woocommerce-jetpack.php CHANGED
@@ -3,7 +3,7 @@
3
  Plugin Name: Booster for WooCommerce
4
  Plugin URI: https://booster.io
5
  Description: Supercharge your WooCommerce site with these awesome powerful features.
6
- Version: 3.2.3
7
  Author: Algoritmika Ltd
8
  Author URI: https://booster.io
9
  Text Domain: woocommerce-jetpack
@@ -13,7 +13,9 @@ License: GNU General Public License v3.0
13
  License URI: http://www.gnu.org/licenses/gpl-3.0.html
14
  */
15
 
16
- if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
 
 
17
 
18
  if ( ! function_exists( 'wcj_is_plugin_active' ) ) {
19
  /**
@@ -37,34 +39,27 @@ if ( ! wcj_is_plugin_active( 'woocommerce/woocommerce.php' ) ) {
37
  }
38
 
39
  // Check if Plus is active
40
- if ( 'woocommerce-jetpack.php' === basename( __FILE__ ) ) {
41
- if ( wcj_is_plugin_active( 'booster-plus-for-woocommerce/booster-plus-for-woocommerce.php' ) ) {
42
- return;
43
- }
44
  }
45
 
46
- if ( ! class_exists( 'WC_Jetpack' ) ) :
47
-
48
- if ( ! function_exists( 'wcj_plugin_file' ) ) {
49
  /**
50
- * wcj_plugin_file.
51
  *
52
- * @version 3.0.0
53
- * @since 3.0.0
54
  */
55
- function wcj_plugin_file() {
56
- return __FILE__;
57
- }
58
  }
59
 
60
- // Constants
61
- require_once( 'includes/constants/wcj-constants.php' );
62
 
63
  /**
64
  * Main WC_Jetpack Class
65
  *
66
  * @class WC_Jetpack
67
- * @version 3.2.3
68
  */
69
  final class WC_Jetpack {
70
 
@@ -74,7 +69,7 @@ final class WC_Jetpack {
74
  * @var string
75
  * @since 2.4.7
76
  */
77
- public $version = '3.2.3';
78
 
79
  /**
80
  * @var WC_Jetpack The single instance of the class
@@ -100,426 +95,11 @@ final class WC_Jetpack {
100
  /**
101
  * WC_Jetpack Constructor.
102
  *
103
- * @version 3.0.0
104
  * @access public
105
  */
106
  function __construct() {
107
-
108
- // Set up localisation
109
- load_plugin_textdomain( 'woocommerce-jetpack', false, dirname( plugin_basename( __FILE__ ) ) . '/langs/' );
110
-
111
- // Include required files
112
- $this->includes();
113
-
114
- // Settings
115
- $this->init_settings();
116
-
117
- // Scripts
118
- require_once( 'includes/classes/class-wcj-scripts.php' );
119
-
120
- // Settings manager
121
- require_once( 'includes/admin/class-wcj-settings-manager.php' );
122
-
123
- // Loaded action
124
- do_action( 'wcj_loaded' );
125
- }
126
-
127
- /**
128
- * init_settings.
129
- *
130
- * @version 3.0.1
131
- * @since 2.9.0
132
- */
133
- function init_settings() {
134
- if ( is_admin() ) {
135
- add_filter( 'woocommerce_get_settings_pages', array( $this, 'add_wcj_settings_tab' ), 1 );
136
- add_filter( 'booster_get_message', 'wcj_get_plus_message', 100, 3 );
137
- add_filter( 'plugin_action_links_' . plugin_basename( __FILE__ ), array( $this, 'action_links' ) );
138
- add_action( 'admin_menu', array( $this, 'booster_menu' ), 100 );
139
- add_filter( 'admin_footer_text', array( $this, 'admin_footer_text' ), 2 );
140
- if ( 'woocommerce-jetpack.php' === basename( __FILE__ ) ) {
141
- add_action( 'admin_notices', array( $this, 'check_plus_version' ) );
142
- }
143
- }
144
- }
145
-
146
- /**
147
- * check_plus_version.
148
- *
149
- * @version 3.1.1
150
- * @since 2.5.9
151
- */
152
- function check_plus_version() {
153
- if ( ! is_admin() ) {
154
- return;
155
- }
156
- // Check if Plus is installed and activated
157
- $is_plus_active = false;
158
- $is_plus_v3_active = false;
159
- $active_plugins = apply_filters( 'active_plugins', get_option( 'active_plugins', array() ) );
160
- if ( is_multisite() ) {
161
- $active_plugins = array_merge( $active_plugins, array_keys( get_site_option( 'active_sitewide_plugins', array() ) ) );
162
- }
163
- foreach ( $active_plugins as $active_plugin ) {
164
- $active_plugin = explode( '/', $active_plugin );
165
- if ( isset( $active_plugin[1] ) ) {
166
- if ( 'booster-plus-for-woocommerce.php' === $active_plugin[1] ) {
167
- $is_plus_v3_active = true;
168
- break;
169
- } elseif ( 'woocommerce-jetpack-plus.php' === $active_plugin[1] || 'woocommerce-booster-plus.php' === $active_plugin[1] ) {
170
- $is_plus_active = true;
171
- }
172
- }
173
- }
174
- // Check Plus version
175
- if ( ! $is_plus_v3_active && $is_plus_active ) {
176
- $plus_version = get_option( 'booster_plus_version', false );
177
- $required_plus_version = '1.1.0';
178
- $notice_type = ( version_compare( $plus_version, $required_plus_version, '<' ) ? 'error' : 'warning' );
179
- global $pagenow;
180
- if ( 'error' === $notice_type || 'plugins.php' === $pagenow ) {
181
- $class = 'notice notice-' . $notice_type;
182
- $message = ( 'error' === $notice_type ?
183
- sprintf(
184
- __( 'Please upgrade <strong>Booster Plus for WooCommerce</strong> plugin. Visit <a target="_blank" href="%s">your account page</a> on booster.io to download the latest Booster Plus version.', 'woocommerce-jetpack' ),
185
- 'https://booster.io/my-account/?utm_source=plus_update'
186
- ) :
187
- sprintf(
188
- __( 'There is new version of <strong>Booster Plus for WooCommerce</strong> plugin available. We recommend upgrading. Please visit <a target="_blank" href="%s">your account page</a> on booster.io to download the latest Booster Plus version.', 'woocommerce-jetpack' ),
189
- 'https://booster.io/my-account/?utm_source=plus_update'
190
- )
191
- );
192
- echo '<div class="' . $class . '"><p>' . $message . '</p></div>';
193
- }
194
- }
195
- }
196
-
197
- /**
198
- * admin_footer_text
199
- *
200
- * @version 2.9.0
201
- */
202
- function admin_footer_text( $footer_text ) {
203
- if ( isset( $_GET['page'] ) ) {
204
- if ( 'wcj-tools' === $_GET['page'] || ( 'wc-settings' === $_GET['page'] && isset( $_GET['tab'] ) && 'jetpack' === $_GET['tab'] ) ) {
205
- $rocket_icons = wcj_get_5_rocket_image();
206
- $rating_link = '<a href="https://wordpress.org/support/plugin/woocommerce-jetpack/reviews/?rate=5#new-post" target="_blank">' . $rocket_icons . '</a>';
207
- return sprintf(
208
- __( 'If you like <strong>Booster for WooCommerce</strong> please leave us a %s rating. Thank you, we couldn\'t have done it without you!', 'woocommerce-jetpack' ),
209
- $rating_link
210
- );
211
- }
212
- }
213
- return $footer_text;
214
- }
215
-
216
- /**
217
- * Add menu item
218
- *
219
- * @version 2.9.0
220
- */
221
- function booster_menu() {
222
- add_submenu_page(
223
- 'woocommerce',
224
- __( 'Booster for WooCommerce', 'woocommerce-jetpack' ),
225
- __( 'Booster Settings', 'woocommerce-jetpack' ) ,
226
- 'manage_woocommerce',
227
- 'admin.php?page=wc-settings&tab=jetpack'
228
- );
229
- }
230
-
231
- /**
232
- * Show action links on the plugin screen
233
- *
234
- * @version 2.5.2
235
- * @param mixed $links
236
- * @return array
237
- */
238
- function action_links( $links ) {
239
- $custom_links = array(
240
- '<a href="' . admin_url( 'admin.php?page=wc-settings&tab=jetpack' ) . '">' . __( 'Settings', 'woocommerce' ) . '</a>',
241
- '<a href="' . esc_url( 'https://booster.io/' ) . '">' . __( 'Docs', 'woocommerce' ) . '</a>',
242
- );
243
- if ( 1 === apply_filters( 'booster_get_option', 1, '' ) ) {
244
- $custom_links[] = '<a href="' . esc_url( 'https://booster.io/plus/' ) . '">' . __( 'Unlock all', 'woocommerce' ) . '</a>';
245
- }
246
- return array_merge( $custom_links, $links );
247
- }
248
-
249
- /**
250
- * Include required core files used in admin and on the frontend.
251
- *
252
- * @version 3.2.2
253
- */
254
- function includes() {
255
-
256
- // Functions
257
- $this->include_functions();
258
-
259
- // Classes
260
- include_once( 'includes/classes/class-wcj-module.php' );
261
- include_once( 'includes/classes/class-wcj-module-shipping-by-condition.php' );
262
- include_once( 'includes/classes/class-wcj-invoice.php' );
263
- include_once( 'includes/classes/class-wcj-pdf-invoice.php' );
264
-
265
- // Plus
266
- if ( 'booster-plus-for-woocommerce.php' === basename( __FILE__ ) && apply_filters( 'wcj_full_pack', true ) ) {
267
- require_once( 'includes/plus/class-wcj-plus.php' );
268
- }
269
-
270
- // Tools
271
- include_once( 'includes/admin/class-wcj-tools.php' );
272
-
273
- // Shortcodes
274
- $this->include_shortcodes();
275
-
276
- // Widgets
277
- include_once( 'includes/widgets/class-wcj-widget.php' );
278
- include_once( 'includes/widgets/class-wcj-widget-multicurrency.php' );
279
- include_once( 'includes/widgets/class-wcj-widget-country-switcher.php' );
280
- include_once( 'includes/widgets/class-wcj-widget-left-to-free-shipping.php' );
281
- include_once( 'includes/widgets/class-wcj-widget-selector.php' );
282
-
283
- // Modules and Submodules
284
- $this->include_modules();
285
- }
286
-
287
- /**
288
- * include_functions.
289
- *
290
- * @version 3.2.1
291
- */
292
- function include_functions() {
293
- include_once( 'includes/functions/wcj-functions-core.php' );
294
- include_once( 'includes/functions/wcj-functions-debug.php' );
295
- include_once( 'includes/functions/wcj-functions-admin.php' );
296
- include_once( 'includes/functions/wcj-functions-general.php' );
297
- include_once( 'includes/functions/wcj-functions-date-time.php' );
298
- include_once( 'includes/functions/wcj-functions-products.php' );
299
- include_once( 'includes/functions/wcj-functions-orders.php' );
300
- include_once( 'includes/functions/wcj-functions-eu-vat.php' );
301
- include_once( 'includes/functions/wcj-functions-price-currency.php' );
302
- include_once( 'includes/functions/wcj-functions-users.php' );
303
- include_once( 'includes/functions/wcj-functions-exchange-rates.php' );
304
- include_once( 'includes/functions/wcj-functions-number-to-words.php' );
305
- include_once( 'includes/functions/wcj-functions-number-to-words-bg.php' );
306
- include_once( 'includes/functions/wcj-functions-number-to-words-lt.php' );
307
- include_once( 'includes/functions/wcj-functions-html.php' );
308
- include_once( 'includes/functions/wcj-functions-country.php' );
309
- include_once( 'includes/functions/wcj-functions-invoicing.php' );
310
- include_once( 'includes/functions/wcj-functions-reports.php' );
311
- include_once( 'includes/functions/wcj-functions-currencies.php' );
312
- }
313
-
314
- /**
315
- * include_shortcodes.
316
- *
317
- * @version 2.5.4
318
- */
319
- function include_shortcodes() {
320
- if ( ! wcj_is_module_enabled( 'general' ) || ( wcj_is_module_enabled( 'general' ) && 'no' === get_option( 'wcj_general_shortcodes_disable_booster_shortcodes', 'no' ) ) ) {
321
- include_once( 'includes/shortcodes/class-wcj-shortcodes.php' );
322
- include_once( 'includes/shortcodes/class-wcj-general-shortcodes.php' );
323
- include_once( 'includes/shortcodes/class-wcj-invoices-shortcodes.php' );
324
- include_once( 'includes/shortcodes/class-wcj-orders-shortcodes.php' );
325
- include_once( 'includes/shortcodes/class-wcj-order-items-shortcodes.php' );
326
- include_once( 'includes/shortcodes/class-wcj-products-shortcodes.php' );
327
- include_once( 'includes/shortcodes/class-wcj-products-crowdfunding-shortcodes.php' );
328
- include_once( 'includes/shortcodes/class-wcj-products-add-form-shortcodes.php' );
329
- include_once( 'includes/shortcodes/class-wcj-input-field-shortcodes.php' );
330
- }
331
- }
332
-
333
- /**
334
- * Include modules and submodules
335
- *
336
- * @version 3.2.3
337
- */
338
- function include_modules() {
339
- $modules_files = array(
340
- 'includes/class-wcj-admin-tools.php',
341
- 'includes/class-wcj-price-labels.php',
342
- 'includes/class-wcj-call-for-price.php',
343
- 'includes/class-wcj-free-price.php',
344
- 'includes/class-wcj-product-listings.php',
345
- 'includes/class-wcj-products-per-page.php',
346
- 'includes/class-wcj-sorting.php',
347
- 'includes/class-wcj-product-custom-info.php',
348
- 'includes/class-wcj-product-info.php',
349
- 'includes/class-wcj-product-add-to-cart.php',
350
- 'includes/class-wcj-related-products.php',
351
- 'includes/class-wcj-sku.php',
352
- 'includes/class-wcj-stock.php',
353
- 'includes/class-wcj-product-tabs.php',
354
- 'includes/class-wcj-product-input-fields.php',
355
- 'includes/class-wcj-product-bulk-price-converter.php',
356
- 'includes/class-wcj-product-bulk-meta-editor.php',
357
- 'includes/class-wcj-purchase-data.php',
358
- 'includes/class-wcj-product-bookings.php',
359
- 'includes/class-wcj-crowdfunding.php',
360
- 'includes/class-wcj-product-addons.php',
361
- 'includes/class-wcj-wholesale-price.php',
362
- 'includes/class-wcj-product-open-pricing.php',
363
- 'includes/class-wcj-offer-price.php',
364
- 'includes/class-wcj-price-by-user-role.php',
365
- 'includes/class-wcj-global-discount.php',
366
- 'includes/class-wcj-product-price-by-formula.php',
367
- 'includes/class-wcj-product-images.php',
368
- 'includes/class-wcj-product-by-country.php',
369
- 'includes/class-wcj-product-by-time.php',
370
- 'includes/class-wcj-product-by-date.php',
371
- 'includes/class-wcj-product-by-user-role.php',
372
- 'includes/class-wcj-product-by-user.php',
373
- 'includes/class-wcj-add-to-cart.php',
374
- 'includes/class-wcj-more-button-labels.php',
375
- 'includes/class-wcj-cart.php',
376
- 'includes/class-wcj-cart-customization.php',
377
- 'includes/class-wcj-empty-cart-button.php',
378
- 'includes/class-wcj-mini-cart.php',
379
- 'includes/class-wcj-checkout-core-fields.php',
380
- 'includes/class-wcj-checkout-custom-fields.php',
381
- 'includes/class-wcj-checkout-files-upload.php',
382
- 'includes/class-wcj-checkout-custom-info.php',
383
- 'includes/class-wcj-checkout-customization.php',
384
- 'includes/class-wcj-payment-gateways.php',
385
- 'includes/class-wcj-payment-gateways-icons.php',
386
- 'includes/class-wcj-payment-gateways-fees.php',
387
- 'includes/class-wcj-payment-gateways-per-category.php',
388
- 'includes/class-wcj-payment-gateways-currency.php',
389
- 'includes/class-wcj-payment-gateways-by-currency.php',
390
- 'includes/class-wcj-payment-gateways-min-max.php',
391
- 'includes/class-wcj-payment-gateways-by-country.php',
392
- 'includes/class-wcj-payment-gateways-by-user-role.php',
393
- 'includes/class-wcj-payment-gateways-by-shipping.php',
394
- 'includes/class-wcj-shipping.php',
395
- 'includes/class-wcj-shipping-options.php',
396
- 'includes/class-wcj-left-to-free-shipping.php',
397
- 'includes/class-wcj-shipping-calculator.php',
398
- 'includes/class-wcj-shipping-by-user-role.php',
399
- 'includes/class-wcj-shipping-by-products.php',
400
- 'includes/class-wcj-shipping-by-order-amount.php',
401
- 'includes/class-wcj-address-formats.php',
402
- 'includes/class-wcj-orders.php',
403
- 'includes/class-wcj-order-min-amount.php',
404
- 'includes/class-wcj-order-numbers.php',
405
- 'includes/class-wcj-order-custom-statuses.php',
406
- 'includes/class-wcj-order-quantities.php',
407
- 'includes/class-wcj-pdf-invoicing.php',
408
- 'includes/class-wcj-emails.php',
409
- 'includes/class-wcj-email-options.php',
410
- 'includes/class-wcj-emails-verification.php',
411
- 'includes/class-wcj-currencies.php',
412
- 'includes/class-wcj-multicurrency.php',
413
- 'includes/class-wcj-multicurrency-product-base-price.php',
414
- 'includes/class-wcj-currency-per-product.php',
415
- 'includes/class-wcj-currency-external-products.php',
416
- 'includes/class-wcj-price-by-country.php',
417
- 'includes/class-wcj-currency-exchange-rates.php',
418
- 'includes/class-wcj-price-formats.php',
419
- 'includes/class-wcj-general.php',
420
- 'includes/class-wcj-track-users.php',
421
- 'includes/class-wcj-breadcrumbs.php',
422
- 'includes/class-wcj-url-coupons.php',
423
- 'includes/class-wcj-coupon-code-generator.php',
424
- 'includes/class-wcj-admin-bar.php',
425
- 'includes/class-wcj-my-account.php',
426
- 'includes/class-wcj-custom-css.php',
427
- 'includes/class-wcj-custom-js.php',
428
- 'includes/class-wcj-products-xml.php',
429
- 'includes/class-wcj-export-import.php',
430
- 'includes/class-wcj-eu-vat-number.php',
431
- 'includes/class-wcj-old-slugs.php',
432
- 'includes/class-wcj-reports.php',
433
- 'includes/class-wcj-wpml.php',
434
- 'includes/pdf-invoices/submodules/class-wcj-pdf-invoicing-numbering.php',
435
- 'includes/pdf-invoices/submodules/class-wcj-pdf-invoicing-templates.php',
436
- 'includes/pdf-invoices/submodules/class-wcj-pdf-invoicing-styling.php',
437
- 'includes/pdf-invoices/submodules/class-wcj-pdf-invoicing-header.php',
438
- 'includes/pdf-invoices/submodules/class-wcj-pdf-invoicing-footer.php',
439
- 'includes/pdf-invoices/submodules/class-wcj-pdf-invoicing-page.php',
440
- 'includes/pdf-invoices/submodules/class-wcj-pdf-invoicing-emails.php',
441
- 'includes/pdf-invoices/submodules/class-wcj-pdf-invoicing-display.php',
442
- );
443
- $this->modules = array();
444
- foreach ( $modules_files as $module_file ) {
445
- $module = include_once( $module_file );
446
- $this->modules[ $module->id ] = $module;
447
- }
448
-
449
- // Add and Manage options
450
- if ( is_admin() ) {
451
- $this->add_options();
452
- }
453
- }
454
-
455
- /**
456
- * add_options.
457
- *
458
- * @version 2.8.0
459
- * @since 2.5.2
460
- * @todo (maybe) this only loads Enable, Tools and Reset settings for each module
461
- */
462
- function add_options() {
463
- // Modules statuses
464
- $submodules_classes = array(
465
- 'WCJ_PDF_Invoicing_Display',
466
- 'WCJ_PDF_Invoicing_Emails',
467
- 'WCJ_PDF_Invoicing_Footer',
468
- 'WCJ_PDF_Invoicing_Header',
469
- 'WCJ_PDF_Invoicing_Numbering',
470
- 'WCJ_PDF_Invoicing_Page',
471
- 'WCJ_PDF_Invoicing_Styling',
472
- 'WCJ_PDF_Invoicing_Templates',
473
- );
474
- foreach ( $this->modules as $module ) {
475
- if ( ! in_array( get_class( $module ), $submodules_classes ) ) {
476
- $status_settings = $module->add_enable_module_setting( array() );
477
- $this->module_statuses[] = $status_settings[1];
478
- }
479
- if ( get_option( 'booster_for_woocommerce_version' ) === $this->version ) {
480
- continue;
481
- }
482
- $values = $module->get_settings();
483
- // Adding options
484
- foreach ( $values as $value ) {
485
- if ( isset( $value['default'] ) && isset( $value['id'] ) ) {
486
- if ( 'yes' === get_option( 'wcj_autoload_options', 'yes' ) ) {
487
- $autoload = isset( $value['autoload'] ) ? (bool) $value['autoload'] : true;
488
- } else {
489
- $autoload = false;
490
- }
491
- add_option( $value['id'], $value['default'], '', $autoload );
492
- }
493
- }
494
- }
495
- if ( get_option( 'booster_for_woocommerce_version' ) !== $this->version ) {
496
- update_option( 'booster_for_woocommerce_version', $this->version );
497
- add_action( 'admin_notices', array( $this, 'admin_notices_version_updated' ) );
498
- }
499
- }
500
-
501
- /**
502
- * admin_notices_version_updated.
503
- *
504
- * @version 2.8.0
505
- * @since 2.8.0
506
- */
507
- function admin_notices_version_updated() {
508
- if ( get_option( 'booster_for_woocommerce_version' ) === $this->version ) {
509
- $class = 'notice notice-success is-dismissible';
510
- $message = sprintf( __( '<strong>Booster for WooCommerce</strong> plugin was successfully updated to version <strong>%s</strong>.', 'woocommerce-jetpack' ), $this->version );
511
- echo sprintf( '<div class="%1$s"><p>%2$s</p></div>', $class, $message );
512
- }
513
- }
514
-
515
- /**
516
- * Add Jetpack settings tab to WooCommerce settings.
517
- */
518
- function add_wcj_settings_tab( $settings ) {
519
- $_settings = include( 'includes/admin/class-wc-settings-jetpack.php' );
520
- $_settings->add_module_statuses( $this->module_statuses );
521
- $settings[] = $_settings;
522
- return $settings;
523
  }
524
 
525
  }
3
  Plugin Name: Booster for WooCommerce
4
  Plugin URI: https://booster.io
5
  Description: Supercharge your WooCommerce site with these awesome powerful features.
6
+ Version: 3.2.4
7
  Author: Algoritmika Ltd
8
  Author URI: https://booster.io
9
  Text Domain: woocommerce-jetpack
13
  License URI: http://www.gnu.org/licenses/gpl-3.0.html
14
  */
15
 
16
+ if ( ! defined( 'ABSPATH' ) ) {
17
+ exit; // Exit if accessed directly
18
+ }
19
 
20
  if ( ! function_exists( 'wcj_is_plugin_active' ) ) {
21
  /**
39
  }
40
 
41
  // Check if Plus is active
42
+ if ( 'woocommerce-jetpack.php' === basename( __FILE__ ) && wcj_is_plugin_active( 'booster-plus-for-woocommerce/booster-plus-for-woocommerce.php' ) ) {
43
+ return;
 
 
44
  }
45
 
46
+ if ( ! defined( 'WCJ_PLUGIN_FILE' ) ) {
 
 
47
  /**
48
+ * WCJ_PLUGIN_FILE.
49
  *
50
+ * @version 3.2.4
51
+ * @since 3.2.4
52
  */
53
+ define( 'WCJ_PLUGIN_FILE', __FILE__ );
 
 
54
  }
55
 
56
+ if ( ! class_exists( 'WC_Jetpack' ) ) :
 
57
 
58
  /**
59
  * Main WC_Jetpack Class
60
  *
61
  * @class WC_Jetpack
62
+ * @version 3.2.4
63
  */
64
  final class WC_Jetpack {
65
 
69
  * @var string
70
  * @since 2.4.7
71
  */
72
+ public $version = '3.2.4';
73
 
74
  /**
75
  * @var WC_Jetpack The single instance of the class
95
  /**
96
  * WC_Jetpack Constructor.
97
  *
98
+ * @version 3.2.4
99
  * @access public
100
  */
101
  function __construct() {
102
+ require_once( 'includes/core/wcj-loader.php' );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
103
  }
104
 
105
  }