Booster for WooCommerce - Version 5.6.1

Version Description

01/07/2022 =

  • FIXED - PRODUCTS - User Products - Fixed Fatal Error: Uncaught Error: Cannot access protected property XXX::$id.
  • FIXED - PRODUCTS - Tax Display - Fixed Price displayed without taxes as default
  • FIXED - PRODUCTS - Price based on User Role - Parse error: syntax error, unexpected ) in .../includes/class-wcj-price-by-user-role.php on line 417.
  • FIXED - PRICES & CURRENCIES - Product Open Pricing (Name Your Price) - Allowing cents to Min, Max & Default input box
  • FIXED - PRICES & CURRENCIES - Bulk Price Converter - PHP Notice: Undefined index: bulk_change_prices_preview...
  • FIXED - PRICES & CURRENCIES - Global Discount - Fixed Include/Exclude Product Categories, Tags, Products options
  • FIXED - PHP Notice: Undefined variable: old_option ...
  • FIXED - Added Security vulnerability fixes.
Download this release

Release Info

Developer ronyp
Plugin Icon 128x128 Booster for WooCommerce
Version 5.6.1
Comparing to
See all releases

Code changes from version 5.6.0 to 5.6.1

Files changed (66) hide show
  1. includes/admin/class-wc-settings-jetpack.php +14 -14
  2. includes/admin/class-wcj-settings-custom-fields.php +3 -3
  3. includes/admin/class-wcj-welcome.php +3 -3
  4. includes/class-wcj-admin-bar.php +3 -3
  5. includes/class-wcj-checkout-custom-fields.php +3 -3
  6. includes/class-wcj-checkout-files-upload.php +3 -3
  7. includes/class-wcj-custom-php.php +3 -3
  8. includes/class-wcj-global-discount.php +21 -21
  9. includes/class-wcj-multicurrency.php +33 -33
  10. includes/class-wcj-my-account.php +6 -6
  11. includes/class-wcj-offer-price.php +5 -5
  12. includes/class-wcj-pdf-invoicing.php +3 -3
  13. includes/class-wcj-price-by-country.php +3 -3
  14. includes/class-wcj-price-by-user-role.php +3 -3
  15. includes/class-wcj-product-add-to-cart.php +3 -3
  16. includes/class-wcj-product-bulk-price-converter.php +3 -3
  17. includes/class-wcj-product-by-country.php +3 -3
  18. includes/class-wcj-product-by-user.php +6 -9
  19. includes/class-wcj-product-custom-visibility.php +3 -3
  20. includes/class-wcj-product-input-fields.php +3 -3
  21. includes/class-wcj-product-msrp.php +3 -3
  22. includes/class-wcj-product-open-pricing.php +4 -4
  23. includes/class-wcj-product-price-by-formula.php +3 -3
  24. includes/class-wcj-products-per-page.php +3 -3
  25. includes/class-wcj-purchase-data.php +3 -3
  26. includes/class-wcj-shipping-by-time.php +4 -4
  27. includes/class-wcj-sku.php +3 -3
  28. includes/class-wcj-tax-display.php +1 -1
  29. includes/class-wcj-track-users.php +4 -4
  30. includes/class-wcj-wpml.php +3 -3
  31. includes/classes/class-wcj-module-product-by-condition.php +5 -5
  32. includes/classes/class-wcj-module-shipping-by-condition.php +3 -3
  33. includes/classes/class-wcj-module.php +11 -11
  34. includes/classes/class-wcj-pdf-invoice.php +3 -3
  35. includes/classes/class-wcj-tcpdf.php +3 -3
  36. includes/core/class-wcj-admin.php +8 -8
  37. includes/core/wcj-constants.php +3 -3
  38. includes/core/wcj-functions.php +2 -2
  39. includes/core/wcj-loader.php +24 -24
  40. includes/core/wcj-modules.php +2 -2
  41. includes/core/wcj-shortcodes.php +3 -3
  42. includes/css/wcj-admin.css +1 -4
  43. includes/emails/class-wc-email-wcj-custom.php +4 -4
  44. includes/functions/wcj-functions-admin.php +3 -3
  45. includes/functions/wcj-functions-booster-core.php +4 -4
  46. includes/functions/wcj-functions-country.php +3 -3
  47. includes/functions/wcj-functions-general.php +14 -5
  48. includes/functions/wcj-functions-products.php +8 -8
  49. includes/pdf-invoices/class-wcj-pdf-invoicing-report-tool.php +4 -4
  50. includes/pdf-invoices/submodules/class-wcj-pdf-invoicing-styling.php +3 -3
  51. includes/pdf-invoices/submodules/class-wcj-pdf-invoicing-templates.php +3 -3
  52. includes/settings/wcj-settings-admin-tools.php +4 -4
  53. includes/settings/wcj-settings-checkout-files-upload.php +4 -4
  54. includes/settings/wcj-settings-cross-sells.php +3 -3
  55. includes/settings/wcj-settings-left-to-free-shipping.php +4 -4
  56. includes/settings/wcj-settings-my-account.php +3 -3
  57. includes/settings/wcj-settings-offer-price.php +5 -5
  58. includes/settings/wcj-settings-order-min-amount.php +5 -5
  59. includes/settings/wcj-settings-product-input-fields.php +3 -3
  60. includes/settings/wcj-settings-product-price-by-formula.php +2 -2
  61. includes/shipping/class-wc-shipping-wcj-custom-with-shipping-zones.php +5 -5
  62. includes/widgets/class-wcj-widget-multicurrency.php +4 -3
  63. langs/woocommerce-jetpack.pot +96 -71
  64. readme.txt +12 -1
  65. version-details.txt +4 -5
  66. woocommerce-jetpack.php +12 -10
includes/admin/class-wc-settings-jetpack.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Settings
4
  *
5
- * @version 5.5.6
6
  * @since 1.0.0
7
  * @author Pluggabl LLC.
8
  * @package Booster_For_WooCommerce/admin
@@ -74,11 +74,11 @@ if ( ! class_exists( 'WC_Settings_Jetpack' ) ) :
74
  /**
75
  * Create_free_version_notice_about_plus.
76
  *
77
- * @version 5.5.6
78
  * @since 5.3.0
79
  */
80
  public function create_free_version_notice_about_plus() {
81
- if ( 'woocommerce-jetpack.php' !== basename( WCJ_PLUGIN_FILE ) ) {
82
  return;
83
  }
84
  $class = 'notice notice-info';
@@ -96,18 +96,18 @@ if ( ! class_exists( 'WC_Settings_Jetpack' ) ) :
96
  /**
97
  * Create_free_version_footer_review_notice.
98
  *
99
- * @version 5.5.6
100
  * @since 5.3.0
101
  */
102
  public function create_free_version_footer_review_notice() {
103
- if ( 'woocommerce-jetpack.php' !== basename( WCJ_PLUGIN_FILE ) ) {
104
  return;
105
  }
106
  $class = 'notice notice-info inline';
107
  $link = 'https://wordpress.org/support/plugin/woocommerce-jetpack/reviews/?filter=5#new-post';
108
  $star = '<span class="wcj-review-icon dashicons dashicons-star-filled"></span>';
109
  $stars_link = '<a href="' . $link . '" target="_blank">' . $star . $star . $star . $star . $star . '</a>';
110
- $message = sprintf( __( 'Please rate <strong>Booster for WooCommerce</strong> %1$s on <a href="%2$s" target="_blank">WordPress.org</a> to help us spread the word. Thank you from Booster team!', 'woocommerce-jetpack' ), $stars_link, $link );
111
  ?>
112
  <style>
113
  .wcj-review-icon { vertical-align: middle; margin: -6px 0 0 0; }
@@ -118,7 +118,7 @@ if ( ! class_exists( 'WC_Settings_Jetpack' ) ) :
118
  /**
119
  * Create_pro_version_footer_review_notice.
120
  *
121
- * @version 5.5.6
122
  * @since 5.3.1
123
  */
124
  public function create_pro_version_footer_review_notice() {
@@ -158,7 +158,7 @@ if ( ! class_exists( 'WC_Settings_Jetpack' ) ) :
158
  </div>
159
  </div>
160
  <?php
161
- if ( 'booster-plus-for-woocommerce.php' !== basename( WCJ_PLUGIN_FILE ) ) {
162
  return;
163
  }
164
  $class = 'notice notice-info inline';
@@ -166,7 +166,7 @@ if ( ! class_exists( 'WC_Settings_Jetpack' ) ) :
166
  $star = '<span class="wcj-review-icon dashicons dashicons-star-filled"></span>';
167
  $stars_link = '<a href="' . $link . '" target="_blank">' . $star . $star . $star . $star . $star . '</a>';
168
  /* translators: %s: search term */
169
- $message = sprintf( __( 'Please rate <strong>Booster for WooCommerce</strong> %1$s on <a href="%2$s" target="_blank">WordPress.org</a> to help us spread the word. Thank you from Booster team!', 'woocommerce-jetpack' ), $stars_link, $link );
170
  ?>
171
  <style>
172
  .wcj-review-icon { vertical-align: middle; margin: -6px 0 0 0; }
@@ -332,7 +332,7 @@ if ( ! class_exists( 'WC_Settings_Jetpack' ) ) :
332
  /**
333
  * Output the settings.
334
  *
335
- * @version 5.5.6
336
  * @todo (maybe) admin_notices
337
  */
338
  public function output() {
@@ -353,7 +353,7 @@ if ( ! class_exists( 'WC_Settings_Jetpack' ) ) :
353
  echo wp_kses_post(
354
  sprintf(
355
  /* translators: %s: search term */
356
- __( 'Please note that current <em>%1$s</em> module is deprecated and will be removed in future updates. Please use <em>%2$s</em> module instead.', 'woocommerce-jetpack' ),
357
  w_c_j()->modules[ $current_section ]->short_desc,
358
  '<a href="' . admin_url( 'admin.php?page=wc-settings&tab=jetpack&wcj-cat=' . $replacement_module['cat'] . '&section=' . $replacement_module['module'] ) . '">' .
359
  $replacement_module['title'] . '</a>'
@@ -419,7 +419,7 @@ if ( ! class_exists( 'WC_Settings_Jetpack' ) ) :
419
  /**
420
  * Output_dashboard.
421
  *
422
- * @version 5.5.6
423
  * @param array $current_section defines the current section.
424
  */
425
  public function output_dashboard( $current_section ) {
@@ -527,7 +527,7 @@ if ( ! class_exists( 'WC_Settings_Jetpack' ) ) :
527
  );
528
  }
529
 
530
- $plugin_data = get_plugin_data( WCJ_PLUGIN_FILE );
531
  $plugin_title = ( isset( $plugin_data['Name'] ) ? '[' . $plugin_data['Name'] . '] ' : '' );
532
  echo wp_kses_post(
533
  '<p style="text-align:right;color:gray;font-size:x-small;font-style:italic;">' . $plugin_title .
@@ -807,7 +807,7 @@ if ( ! class_exists( 'WC_Settings_Jetpack' ) ) :
807
 
808
  public function version_details() {
809
 
810
- $file = wcj_plugin_path() . '/version-details.txt';
811
  if ( file_exists( $file ) ) {
812
 
813
  $doc = file_get_contents( $file );
2
  /**
3
  * Booster for WooCommerce - Settings
4
  *
5
+ * @version 5.6.1
6
  * @since 1.0.0
7
  * @author Pluggabl LLC.
8
  * @package Booster_For_WooCommerce/admin
74
  /**
75
  * Create_free_version_notice_about_plus.
76
  *
77
+ * @version 5.6.1
78
  * @since 5.3.0
79
  */
80
  public function create_free_version_notice_about_plus() {
81
+ if ( 'woocommerce-jetpack.php' !== basename( WCJ_FREE_PLUGIN_FILE ) ) {
82
  return;
83
  }
84
  $class = 'notice notice-info';
96
  /**
97
  * Create_free_version_footer_review_notice.
98
  *
99
+ * @version 5.6.1
100
  * @since 5.3.0
101
  */
102
  public function create_free_version_footer_review_notice() {
103
+ if ( 'woocommerce-jetpack.php' !== basename( WCJ_FREE_PLUGIN_FILE ) ) {
104
  return;
105
  }
106
  $class = 'notice notice-info inline';
107
  $link = 'https://wordpress.org/support/plugin/woocommerce-jetpack/reviews/?filter=5#new-post';
108
  $star = '<span class="wcj-review-icon dashicons dashicons-star-filled"></span>';
109
  $stars_link = '<a href="' . $link . '" target="_blank">' . $star . $star . $star . $star . $star . '</a>';
110
+ $message = sprintf( __( 'Please rate <strong>Booster for WooCommerce</strong> %s on <a href="%s" target="_blank">WordPress.org</a> to help us spread the word. Thank you from Booster team!', 'woocommerce-jetpack' ), $stars_link, $link );
111
  ?>
112
  <style>
113
  .wcj-review-icon { vertical-align: middle; margin: -6px 0 0 0; }
118
  /**
119
  * Create_pro_version_footer_review_notice.
120
  *
121
+ * @version 5.6.1
122
  * @since 5.3.1
123
  */
124
  public function create_pro_version_footer_review_notice() {
158
  </div>
159
  </div>
160
  <?php
161
+ if ( 'booster-plus-for-woocommerce.php' !== basename( WCJ_FREE_PLUGIN_FILE ) ) {
162
  return;
163
  }
164
  $class = 'notice notice-info inline';
166
  $star = '<span class="wcj-review-icon dashicons dashicons-star-filled"></span>';
167
  $stars_link = '<a href="' . $link . '" target="_blank">' . $star . $star . $star . $star . $star . '</a>';
168
  /* translators: %s: search term */
169
+ $message = sprintf( __( 'Please rate <strong>Booster for WooCommerce</strong> %s on <a href="%s" target="_blank">WordPress.org</a> to help us spread the word. Thank you from Booster team!', 'woocommerce-jetpack' ), $stars_link, $link );
170
  ?>
171
  <style>
172
  .wcj-review-icon { vertical-align: middle; margin: -6px 0 0 0; }
332
  /**
333
  * Output the settings.
334
  *
335
+ * @version 5.6.1
336
  * @todo (maybe) admin_notices
337
  */
338
  public function output() {
353
  echo wp_kses_post(
354
  sprintf(
355
  /* translators: %s: search term */
356
+ __( 'Please note that current <em>%s</em> module is deprecated and will be removed in future updates. Please use <em>%s</em> module instead.', 'woocommerce-jetpack' ),
357
  w_c_j()->modules[ $current_section ]->short_desc,
358
  '<a href="' . admin_url( 'admin.php?page=wc-settings&tab=jetpack&wcj-cat=' . $replacement_module['cat'] . '&section=' . $replacement_module['module'] ) . '">' .
359
  $replacement_module['title'] . '</a>'
419
  /**
420
  * Output_dashboard.
421
  *
422
+ * @version 5.6.1
423
  * @param array $current_section defines the current section.
424
  */
425
  public function output_dashboard( $current_section ) {
527
  );
528
  }
529
 
530
+ $plugin_data = get_plugin_data( WCJ_FREE_PLUGIN_FILE );
531
  $plugin_title = ( isset( $plugin_data['Name'] ) ? '[' . $plugin_data['Name'] . '] ' : '' );
532
  echo wp_kses_post(
533
  '<p style="text-align:right;color:gray;font-size:x-small;font-style:italic;">' . $plugin_title .
807
 
808
  public function version_details() {
809
 
810
+ $file = wcj_free_plugin_path() . '/version-details.txt';
811
  if ( file_exists( $file ) ) {
812
 
813
  $doc = file_get_contents( $file );
includes/admin/class-wcj-settings-custom-fields.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Settings Custom Fields
4
  *
5
- * @version 5.5.6
6
  * @since 2.8.0
7
  * @author Pluggabl LLC.
8
  * @package Booster_For_WooCommerce/admin
@@ -41,7 +41,7 @@ if ( ! class_exists( 'WCJ_Settings_Custom_Fields' ) ) :
41
  /**
42
  * Output_exchange_rate_settings_button.
43
  *
44
- * @version 5.2.0
45
  * @param Array $value Get values.
46
  */
47
  public function output_exchange_rate_settings_button( $value ) {
@@ -76,7 +76,7 @@ if ( ! class_exists( 'WCJ_Settings_Custom_Fields' ) ) :
76
  $description = '';
77
  $exchange_rate_server = wcj_get_currency_exchange_rate_server_name( $value['custom_attributes_button']['currency_from'], $value['custom_attributes_button']['currency_to'] );
78
  /* translators: %s: translation added */
79
- $value_title = sprintf( __( 'Grab raw %1$s rate from %2$s.', 'woocommerce-jetpack' ), $value['value'], $exchange_rate_server ) .
80
  ' ' . __( 'Doesn\'t apply rounding, offset etc.', 'woocommerce-jetpack' );
81
  ?>
82
  <tr valign="top">
2
  /**
3
  * Booster for WooCommerce - Settings Custom Fields
4
  *
5
+ * @version 5.6.1
6
  * @since 2.8.0
7
  * @author Pluggabl LLC.
8
  * @package Booster_For_WooCommerce/admin
41
  /**
42
  * Output_exchange_rate_settings_button.
43
  *
44
+ * @version 5.6.1
45
  * @param Array $value Get values.
46
  */
47
  public function output_exchange_rate_settings_button( $value ) {
76
  $description = '';
77
  $exchange_rate_server = wcj_get_currency_exchange_rate_server_name( $value['custom_attributes_button']['currency_from'], $value['custom_attributes_button']['currency_to'] );
78
  /* translators: %s: translation added */
79
+ $value_title = sprintf( __( 'Grab raw %s rate from %s.', 'woocommerce-jetpack' ), $value['value'], $exchange_rate_server ) .
80
  ' ' . __( 'Doesn\'t apply rounding, offset etc.', 'woocommerce-jetpack' );
81
  ?>
82
  <tr valign="top">
includes/admin/class-wcj-welcome.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster getting started
4
  *
5
- * @version 5.4.3
6
  * @author Pluggabl LLC.
7
  * @package Booster_For_WooCommerce/admin
8
  */
@@ -87,10 +87,10 @@ if ( ! class_exists( 'WCJ_Welcome' ) ) :
87
  /**
88
  * Wcj_welcome_screen_content.
89
  *
90
- * @version 5.4.1
91
  */
92
  public function wcj_welcome_screen_content() {
93
- require_once WCJ_PLUGIN_PATH . '/includes/admin/wcj-welcome-screen-content.php';
94
  }
95
 
96
  /**
2
  /**
3
  * Booster getting started
4
  *
5
+ * @version 5.6.1
6
  * @author Pluggabl LLC.
7
  * @package Booster_For_WooCommerce/admin
8
  */
87
  /**
88
  * Wcj_welcome_screen_content.
89
  *
90
+ * @version 5.6.1
91
  */
92
  public function wcj_welcome_screen_content() {
93
+ require_once WCJ_FREE_PLUGIN_PATH . '/includes/admin/wcj-welcome-screen-content.php';
94
  }
95
 
96
  /**
includes/class-wcj-admin-bar.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Module - Admin Bar
4
  *
5
- * @version 4.1.0
6
  * @since 2.9.0
7
  * @author Pluggabl LLC.
8
  * @package Booster_For_WooCommerce/includes
@@ -131,7 +131,7 @@ if ( ! class_exists( 'WCJ_Admin_Bar' ) ) :
131
  /**
132
  * Get_nodes_booster_modules.
133
  *
134
- * @version 3.1.0
135
  * @since 2.9.0
136
  * @todo (maybe) dashes instead of underscores
137
  * @todo (maybe) dashboard > alphabetically - list all modules
@@ -139,7 +139,7 @@ if ( ! class_exists( 'WCJ_Admin_Bar' ) ) :
139
  */
140
  public function get_nodes_booster_modules() {
141
  $nodes = array();
142
- $cats = include wcj_plugin_path() . '/includes/admin/wcj-modules-cats.php';
143
  $this->active_modules = array();
144
  foreach ( $cats as $id => $label_info ) {
145
  $nodes[ $id ] = array(
2
  /**
3
  * Booster for WooCommerce - Module - Admin Bar
4
  *
5
+ * @version 5.6.1
6
  * @since 2.9.0
7
  * @author Pluggabl LLC.
8
  * @package Booster_For_WooCommerce/includes
131
  /**
132
  * Get_nodes_booster_modules.
133
  *
134
+ * @version 5.6.1
135
  * @since 2.9.0
136
  * @todo (maybe) dashes instead of underscores
137
  * @todo (maybe) dashboard > alphabetically - list all modules
139
  */
140
  public function get_nodes_booster_modules() {
141
  $nodes = array();
142
+ $cats = include wcj_free_plugin_path() . '/includes/admin/wcj-modules-cats.php';
143
  $this->active_modules = array();
144
  foreach ( $cats as $id => $label_info ) {
145
  $nodes[ $id ] = array(
includes/class-wcj-checkout-custom-fields.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Module - Checkout Custom Fields
4
  *
5
- * @version 5.5.6
6
  * @author Pluggabl LLC.
7
  * @package Booster_For_WooCommerce/includes
8
  */
@@ -23,7 +23,7 @@ if ( ! class_exists( 'WCJ_Checkout_Custom_Fields' ) ) :
23
  /**
24
  * Constructor.
25
  *
26
- * @version 5.4.0
27
  * @todo (maybe) check if `'wcj_checkout_custom_field_customer_meta_fields_' . $i` option should affect `add_default_checkout_custom_fields`
28
  */
29
  public function __construct() {
@@ -45,7 +45,7 @@ if ( ! class_exists( 'WCJ_Checkout_Custom_Fields' ) ) :
45
  '</li>' .
46
  '<li>' . sprintf(
47
  /* translators: %s: search term */
48
- __( '<strong>PHP code:</strong> by using %1$s function,<br> e.g.: %2$s', 'woocommerce-jetpack' ),
49
  '<code>do_shortcode()</code>',
50
  '<code>echo&nbsp;do_shortcode(&nbsp;\'[wcj_order_checkout_field meta_key = "billing_wcj_checkout_field_1]\'&nbsp;);</code>'
51
  ) .
2
  /**
3
  * Booster for WooCommerce - Module - Checkout Custom Fields
4
  *
5
+ * @version 5.6.1
6
  * @author Pluggabl LLC.
7
  * @package Booster_For_WooCommerce/includes
8
  */
23
  /**
24
  * Constructor.
25
  *
26
+ * @version 5.6.1
27
  * @todo (maybe) check if `'wcj_checkout_custom_field_customer_meta_fields_' . $i` option should affect `add_default_checkout_custom_fields`
28
  */
29
  public function __construct() {
45
  '</li>' .
46
  '<li>' . sprintf(
47
  /* translators: %s: search term */
48
+ __( '<strong>PHP code:</strong> by using %s function,<br> e.g.: %s', 'woocommerce-jetpack' ),
49
  '<code>do_shortcode()</code>',
50
  '<code>echo&nbsp;do_shortcode(&nbsp;\'[wcj_order_checkout_field meta_key = "billing_wcj_checkout_field_1]\'&nbsp;);</code>'
51
  ) .
includes/class-wcj-checkout-files-upload.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Module - Checkout Files Upload
4
  *
5
- * @version 5.5.9
6
  * @since 2.4.5
7
  * @author Pluggabl LLC.
8
  * @package Booster_For_WooCommerce/includes
@@ -411,7 +411,7 @@ if ( ! class_exists( 'WCJ_Checkout_Files_Upload' ) ) :
411
  /**
412
  * Process_checkout_files_upload.
413
  *
414
- * @version 3.9.0
415
  * @since 2.4.5
416
  * @todo add option for admin to delete files one by one (i.e. not all at once)
417
  * @todo `$this->additional_admin_emails_settings` - more customization options, e.g.: admin email, subject, content, from
@@ -421,7 +421,7 @@ if ( ! class_exists( 'WCJ_Checkout_Files_Upload' ) ) :
421
  $admin_email = wcj_get_option( 'admin_email' );
422
  $admin_email_subject = __( 'Booster for WooCommerce: Checkout Files Upload: %action%', 'woocommerce-jetpack' );
423
  /* translators: %s: search term */
424
- $admin_email_content = __( 'Order ID: %1$order_id%; File name: %2$file_name%', 'woocommerce-jetpack' );
425
  $total_number = apply_filters( 'booster_option', 1, wcj_get_option( 'wcj_checkout_files_upload_total_number', 1 ) );
426
  // Remove file.
427
  for ( $i = 1; $i <= $total_number; $i++ ) {
2
  /**
3
  * Booster for WooCommerce - Module - Checkout Files Upload
4
  *
5
+ * @version 5.6.1
6
  * @since 2.4.5
7
  * @author Pluggabl LLC.
8
  * @package Booster_For_WooCommerce/includes
411
  /**
412
  * Process_checkout_files_upload.
413
  *
414
+ * @version 5.6.1
415
  * @since 2.4.5
416
  * @todo add option for admin to delete files one by one (i.e. not all at once)
417
  * @todo `$this->additional_admin_emails_settings` - more customization options, e.g.: admin email, subject, content, from
421
  $admin_email = wcj_get_option( 'admin_email' );
422
  $admin_email_subject = __( 'Booster for WooCommerce: Checkout Files Upload: %action%', 'woocommerce-jetpack' );
423
  /* translators: %s: search term */
424
+ $admin_email_content = __( 'Order ID: %order_id%; File name: %file_name%', 'woocommerce-jetpack' );
425
  $total_number = apply_filters( 'booster_option', 1, wcj_get_option( 'wcj_checkout_files_upload_total_number', 1 ) );
426
  // Remove file.
427
  for ( $i = 1; $i <= $total_number; $i++ ) {
includes/class-wcj-custom-php.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Module - Custom PHP
4
  *
5
- * @version 4.0.1
6
  * @since 4.0.0
7
  * @author Pluggabl LLC.
8
  * @package Booster_For_WooCommerce/includes
@@ -21,7 +21,7 @@ if ( ! class_exists( 'WCJ_Custom_PHP' ) ) :
21
  /**
22
  * Constructor.
23
  *
24
- * @version 4.0.1
25
  * @since 4.0.0
26
  * @todo [dev] maybe remove `wcj_disable_custom_php` from URL on settings save
27
  * @todo [dev] allow tab in content (i.e. settings (textarea))
@@ -33,7 +33,7 @@ if ( ! class_exists( 'WCJ_Custom_PHP' ) ) :
33
  $this->desc = __( 'Custom PHP tool.', 'woocommerce-jetpack' );
34
  $this->extra_desc = sprintf(
35
  /* translators: %s: translation added */
36
- __( 'Please note that if you enable the module and enter non-valid PHP code here, your site will become unavailable. To fix this you will have to add %1$s attribute to the URL (you must be logged as shop manager or admin (for this reason custom PHP code is not executed on %2$s page)).', 'woocommerce-jetpack' ),
37
  '<code>wcj_disable_custom_php</code>',
38
  '<strong>wp-login.php</strong>'
39
  ) . ' ' .
2
  /**
3
  * Booster for WooCommerce - Module - Custom PHP
4
  *
5
+ * @version 5.6.1
6
  * @since 4.0.0
7
  * @author Pluggabl LLC.
8
  * @package Booster_For_WooCommerce/includes
21
  /**
22
  * Constructor.
23
  *
24
+ * @version 5.6.1
25
  * @since 4.0.0
26
  * @todo [dev] maybe remove `wcj_disable_custom_php` from URL on settings save
27
  * @todo [dev] allow tab in content (i.e. settings (textarea))
33
  $this->desc = __( 'Custom PHP tool.', 'woocommerce-jetpack' );
34
  $this->extra_desc = sprintf(
35
  /* translators: %s: translation added */
36
+ __( 'Please note that if you enable the module and enter non-valid PHP code here, your site will become unavailable. To fix this you will have to add %s attribute to the URL (you must be logged as shop manager or admin (for this reason custom PHP code is not executed on %s page)).', 'woocommerce-jetpack' ),
37
  '<code>wcj_disable_custom_php</code>',
38
  '<strong>wp-login.php</strong>'
39
  ) . ' ' .
includes/class-wcj-global-discount.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Module - Global Discount
4
  *
5
- * @version 5.5.4
6
  * @since 2.5.7
7
  * @author Pluggabl LLC.
8
  * @package Booster_For_WooCommerce/includes
@@ -56,7 +56,7 @@ if ( ! class_exists( 'WCJ_Global_Discount' ) ) :
56
  /**
57
  * Add_wcj_sale_ids_to_products_shortcode.
58
  *
59
- * @version 4.8.0
60
  * @since 4.8.0
61
  *
62
  * @param array $args defines the args.
@@ -67,8 +67,8 @@ if ( ! class_exists( 'WCJ_Global_Discount' ) ) :
67
  */
68
  public function add_wcj_sale_ids_to_products_shortcode( $args, $atts, $type ) {
69
  if (
70
- 'sale_products' !== $type ||
71
- 'yes' !== wcj_get_option( 'wcj_global_discount_products_shortcode_compatibility', 'no' )
72
  ) {
73
  return $args;
74
  }
@@ -81,12 +81,12 @@ if ( ! class_exists( 'WCJ_Global_Discount' ) ) :
81
  /**
82
  * Regenerate_wcj_sale_products_in_cache.
83
  *
84
- * @version 4.8.0
85
  * @since 4.8.0
86
  */
87
  public function regenerate_wcj_sale_products_in_cache() {
88
  if (
89
- 'yes' !== wcj_get_option( 'wcj_global_discount_products_shortcode_compatibility', 'no' ) ||
90
  ! isset( $_REQUEST['page'] ) || 'wc-settings' !== $_REQUEST['page'] ||
91
  ! isset( $_REQUEST['tab'] ) || 'jetpack' !== $_REQUEST['tab'] ||
92
  ! isset( $_REQUEST['wcj-cat'] ) || 'prices_and_currencies' !== $_REQUEST['wcj-cat'] ||
@@ -102,7 +102,7 @@ if ( ! class_exists( 'WCJ_Global_Discount' ) ) :
102
  /**
103
  * Get_wcj_sale_products.
104
  *
105
- * @version 4.8.0
106
  * @since 4.8.0
107
  *
108
  * @return array|mixed
@@ -202,14 +202,14 @@ if ( ! class_exists( 'WCJ_Global_Discount' ) ) :
202
 
203
  // Scope.
204
  $scope = wcj_get_option( 'wcj_global_discount_sale_product_scope_' . $i, 'all' );
205
- if ( 'all' !== $scope ) {
206
  $wc_sale_products = wc_get_product_ids_on_sale();
207
- if ( 'only_on_sale' === $scope ) {
208
  $args['post__in'] = $wc_sale_products;
209
  if ( empty( $wc_sale_products ) ) {
210
  $args['post_type'] = 'do_not_search';
211
  }
212
- } elseif ( 'only_not_on_sale' === $scope ) {
213
  $args['post__not_in'] = $wc_sale_products;
214
  }
215
  }
@@ -264,7 +264,7 @@ if ( ! class_exists( 'WCJ_Global_Discount' ) ) :
264
  /**
265
  * Change_price_grouped.
266
  *
267
- * @version 3.1.0
268
  * @since 2.5.7
269
  * @param int $price defines the price.
270
  * @param int $qty defines the qty.
@@ -276,7 +276,7 @@ if ( ! class_exists( 'WCJ_Global_Discount' ) ) :
276
  $the_price = get_post_meta( $child_id, '_price', true );
277
  $the_product = wc_get_product( $child_id );
278
  $the_price = wcj_get_product_display_price( $the_product, $the_price, 1 );
279
- if ( $the_price === $price ) {
280
  return $this->add_global_discount( $price, $the_product, 'price' );
281
  }
282
  }
@@ -287,7 +287,7 @@ if ( ! class_exists( 'WCJ_Global_Discount' ) ) :
287
  /**
288
  * Calculate_price.
289
  *
290
- * @version 3.8.0
291
  * @since 2.5.7
292
  * @param int $price defines the price.
293
  * @param int $coefficient defines the coefficient.
@@ -302,7 +302,7 @@ if ( ! class_exists( 'WCJ_Global_Discount' ) ) :
302
  ( $price + $coefficient );
303
  $return_price = ( $return_price >= 0 ? $return_price : 0 );
304
  $final_correction_function = wcj_get_option( 'wcj_global_discount_sale_final_correction_func_' . $group, 'none' );
305
- if ( 'none' !== ( $final_correction_function ) ) {
306
  $final_correction_coef = wcj_get_option( 'wcj_global_discount_sale_final_correction_coef_' . $group, 1 );
307
  $return_price = $final_correction_function( $return_price / $final_correction_coef ) * $final_correction_coef;
308
  }
@@ -348,7 +348,7 @@ if ( ! class_exists( 'WCJ_Global_Discount' ) ) :
348
  /**
349
  * Check_if_applicable_by_product_scope.
350
  *
351
- * @version 3.9.0
352
  * @since 3.1.0
353
  * @param string | array $_product defines the _product.
354
  * @param int $price defines the price.
@@ -358,7 +358,7 @@ if ( ! class_exists( 'WCJ_Global_Discount' ) ) :
358
  public function check_if_applicable_by_product_scope( $_product, $price, $price_type, $scope ) {
359
  $return = true;
360
  if ( 'sale_price' === $price_type ) {
361
- if ( 0 === $price ) {
362
  // The product is currently not on sale.
363
  if ( 'only_on_sale' === $scope ) {
364
  $return = false;
@@ -371,9 +371,9 @@ if ( ! class_exists( 'WCJ_Global_Discount' ) ) :
371
  }
372
  } else {
373
  wcj_remove_change_price_hooks( $this, $this->price_hooks_priority, false );
374
- if ( 'only_on_sale' === $scope && 0 === $_product->get_sale_price() ) {
375
  $return = false;
376
- } elseif ( 'only_not_on_sale' === $scope && 0 !== $_product->get_sale_price() ) {
377
  $return = false;
378
  }
379
  wcj_add_change_price_hooks( $this, $this->price_hooks_priority, false );
@@ -384,7 +384,7 @@ if ( ! class_exists( 'WCJ_Global_Discount' ) ) :
384
  /**
385
  * Add_global_discount.
386
  *
387
- * @version 3.1.0
388
  * @since 2.5.7
389
  * @param int $price defines the price.
390
  * @param string | array $_product defines the _product.
@@ -401,11 +401,11 @@ if ( ! class_exists( 'WCJ_Global_Discount' ) ) :
401
  continue; // no changes by current discount group.
402
  }
403
  $coefficient = wcj_get_option( 'wcj_global_discount_sale_coefficient_' . $i, 0 );
404
- if ( 0 !== $coefficient ) {
405
  if ( ! $this->check_if_applicable_by_product_scope( $_product, $price, $price_type, wcj_get_option( 'wcj_global_discount_sale_product_scope_' . $i, 'all' ) ) ) {
406
  continue; // no changes by current discount group.
407
  }
408
- if ( 'sale_price' === $price_type && 0 === (int) $price ) {
409
  $price = $_product->get_regular_price();
410
  }
411
  return $this->calculate_price( $price, $coefficient, $i ); // discount applied.
2
  /**
3
  * Booster for WooCommerce - Module - Global Discount
4
  *
5
+ * @version 5.6.1
6
  * @since 2.5.7
7
  * @author Pluggabl LLC.
8
  * @package Booster_For_WooCommerce/includes
56
  /**
57
  * Add_wcj_sale_ids_to_products_shortcode.
58
  *
59
+ * @version 5.6.1
60
  * @since 4.8.0
61
  *
62
  * @param array $args defines the args.
67
  */
68
  public function add_wcj_sale_ids_to_products_shortcode( $args, $atts, $type ) {
69
  if (
70
+ 'sale_products' != $type ||
71
+ 'yes' != wcj_get_option( 'wcj_global_discount_products_shortcode_compatibility', 'no' )
72
  ) {
73
  return $args;
74
  }
81
  /**
82
  * Regenerate_wcj_sale_products_in_cache.
83
  *
84
+ * @version 5.6.1
85
  * @since 4.8.0
86
  */
87
  public function regenerate_wcj_sale_products_in_cache() {
88
  if (
89
+ 'yes' != wcj_get_option( 'wcj_global_discount_products_shortcode_compatibility', 'no' ) ||
90
  ! isset( $_REQUEST['page'] ) || 'wc-settings' !== $_REQUEST['page'] ||
91
  ! isset( $_REQUEST['tab'] ) || 'jetpack' !== $_REQUEST['tab'] ||
92
  ! isset( $_REQUEST['wcj-cat'] ) || 'prices_and_currencies' !== $_REQUEST['wcj-cat'] ||
102
  /**
103
  * Get_wcj_sale_products.
104
  *
105
+ * @version 5.6.1
106
  * @since 4.8.0
107
  *
108
  * @return array|mixed
202
 
203
  // Scope.
204
  $scope = wcj_get_option( 'wcj_global_discount_sale_product_scope_' . $i, 'all' );
205
+ if ( 'all' != $scope ) {
206
  $wc_sale_products = wc_get_product_ids_on_sale();
207
+ if ( 'only_on_sale' == $scope ) {
208
  $args['post__in'] = $wc_sale_products;
209
  if ( empty( $wc_sale_products ) ) {
210
  $args['post_type'] = 'do_not_search';
211
  }
212
+ } elseif ( 'only_not_on_sale' == $scope ) {
213
  $args['post__not_in'] = $wc_sale_products;
214
  }
215
  }
264
  /**
265
  * Change_price_grouped.
266
  *
267
+ * @version 5.6.1
268
  * @since 2.5.7
269
  * @param int $price defines the price.
270
  * @param int $qty defines the qty.
276
  $the_price = get_post_meta( $child_id, '_price', true );
277
  $the_product = wc_get_product( $child_id );
278
  $the_price = wcj_get_product_display_price( $the_product, $the_price, 1 );
279
+ if ( $the_price == $price ) {
280
  return $this->add_global_discount( $price, $the_product, 'price' );
281
  }
282
  }
287
  /**
288
  * Calculate_price.
289
  *
290
+ * @version 5.6.1
291
  * @since 2.5.7
292
  * @param int $price defines the price.
293
  * @param int $coefficient defines the coefficient.
302
  ( $price + $coefficient );
303
  $return_price = ( $return_price >= 0 ? $return_price : 0 );
304
  $final_correction_function = wcj_get_option( 'wcj_global_discount_sale_final_correction_func_' . $group, 'none' );
305
+ if ( 'none' != ( $final_correction_function ) ) {
306
  $final_correction_coef = wcj_get_option( 'wcj_global_discount_sale_final_correction_coef_' . $group, 1 );
307
  $return_price = $final_correction_function( $return_price / $final_correction_coef ) * $final_correction_coef;
308
  }
348
  /**
349
  * Check_if_applicable_by_product_scope.
350
  *
351
+ * @version 5.6.1
352
  * @since 3.1.0
353
  * @param string | array $_product defines the _product.
354
  * @param int $price defines the price.
358
  public function check_if_applicable_by_product_scope( $_product, $price, $price_type, $scope ) {
359
  $return = true;
360
  if ( 'sale_price' === $price_type ) {
361
+ if ( 0 == $price ) {
362
  // The product is currently not on sale.
363
  if ( 'only_on_sale' === $scope ) {
364
  $return = false;
371
  }
372
  } else {
373
  wcj_remove_change_price_hooks( $this, $this->price_hooks_priority, false );
374
+ if ( 'only_on_sale' === $scope && 0 == $_product->get_sale_price() ) {
375
  $return = false;
376
+ } elseif ( 'only_not_on_sale' === $scope && 0 != $_product->get_sale_price() ) {
377
  $return = false;
378
  }
379
  wcj_add_change_price_hooks( $this, $this->price_hooks_priority, false );
384
  /**
385
  * Add_global_discount.
386
  *
387
+ * @version 5.6.1
388
  * @since 2.5.7
389
  * @param int $price defines the price.
390
  * @param string | array $_product defines the _product.
401
  continue; // no changes by current discount group.
402
  }
403
  $coefficient = wcj_get_option( 'wcj_global_discount_sale_coefficient_' . $i, 0 );
404
+ if ( 0 != $coefficient ) {
405
  if ( ! $this->check_if_applicable_by_product_scope( $_product, $price, $price_type, wcj_get_option( 'wcj_global_discount_sale_product_scope_' . $i, 'all' ) ) ) {
406
  continue; // no changes by current discount group.
407
  }
408
+ if ( 'sale_price' === $price_type && 0 == (int) $price ) {
409
  $price = $_product->get_regular_price();
410
  }
411
  return $this->calculate_price( $price, $coefficient, $i ); // discount applied.
includes/class-wcj-multicurrency.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Module - Multicurrency (Currency Switcher)
4
  *
5
- * @version 5.4.3
6
  * @since 2.4.3
7
  * @author Pluggabl LLC.
8
  * @package Booster_For_WooCommerce/includes
@@ -19,7 +19,7 @@ if ( ! class_exists( 'WCJ_Multicurrency' ) ) :
19
  class WCJ_Multicurrency extends WCJ_Module {
20
 
21
  /**
22
- Bkg_process_price_updater
23
  *
24
  * @var bkg_process_price_updater
25
  */
@@ -28,7 +28,7 @@ if ( ! class_exists( 'WCJ_Multicurrency' ) ) :
28
  /**
29
  * Constructor.
30
  *
31
- * @version 5.2.0
32
  * @todo check if we can just always execute `init()` on `init` hook
33
  */
34
  public function __construct() {
@@ -56,7 +56,7 @@ if ( ! class_exists( 'WCJ_Multicurrency' ) ) :
56
  '</li>' .
57
  '<li>' . sprintf(
58
  /* translators: %s: translation added */
59
- __( '<strong>PHP code:</strong> by using %1$s function, e.g.: %2$s', 'woocommerce-jetpack' ),
60
  '<code>do_shortcode()</code>',
61
  '<code>echo&nbsp;do_shortcode(&nbsp;\'[wcj_currency_select_drop_down_list]\'&nbsp;);</code>'
62
  ) .
@@ -98,12 +98,12 @@ if ( ! class_exists( 'WCJ_Multicurrency' ) ) :
98
  /**
99
  * Init_bkg_process_class.
100
  *
101
- * @version 4.5.0
102
  * @since 4.5.0
103
  */
104
  public function init_bkg_process_class() {
105
  if ( 'yes' === wcj_get_option( 'wcj_multicurrency_update_prices_on_exch_update', 'no' ) ) {
106
- require_once wcj_plugin_path() . '/includes/background-process/class-wcj-multicurrency-price-updater.php';
107
  $this->bkg_process_price_updater = new WCJ_Multicurrency_Price_Updater();
108
  }
109
  }
@@ -218,7 +218,7 @@ if ( ! class_exists( 'WCJ_Multicurrency' ) ) :
218
  /**
219
  * Product_addons_price_raw.
220
  *
221
- * @version 5.1.1
222
  * @since 5.1.1
223
  *
224
  * @param int $price defines the price.
@@ -229,7 +229,7 @@ if ( ! class_exists( 'WCJ_Multicurrency' ) ) :
229
  public function product_addons_price_raw( $price, $addon ) {
230
  if (
231
  'no' === wcj_get_option( 'wcj_multicurrency_compatibility_product_addons', 'no' )
232
- || ( 'quantity_based' !== $addon['price_type'] && 'flat_fee' !== $addon['price_type'] )
233
  ) {
234
  return $price;
235
  }
@@ -315,7 +315,7 @@ if ( ! class_exists( 'WCJ_Multicurrency' ) ) :
315
  /**
316
  * Get_wc_tree_table_rate_settings.
317
  *
318
- * @version 5.1.0
319
  * @since 4.9.0
320
  * @param array $option defines the option.
321
  *
@@ -336,7 +336,7 @@ if ( ! class_exists( 'WCJ_Multicurrency' ) ) :
336
  'exchange_rate' => $this->get_currency_exchange_rate( $this->get_current_currency_code() ),
337
  )
338
  );
339
- set_transient( $transition_name, wp_json_encode( $modified_rule ), 5 * MINUTE_IN_SECONDS );
340
  }
341
  $option['rule'] = $modified_rule_result;
342
  remove_filter( current_filter(), array( $this, 'convert_wc_tree_table_rate_settings' ) );
@@ -346,7 +346,7 @@ if ( ! class_exists( 'WCJ_Multicurrency' ) ) :
346
  /**
347
  * Recursively_convert_wc_tree_settings.
348
  *
349
- * @version 5.1.0
350
  * @since 4.9.0
351
  *
352
  * @param array $array defines the array.
@@ -369,7 +369,7 @@ if ( ! class_exists( 'WCJ_Multicurrency' ) ) :
369
  if (
370
  is_array( $array ) &&
371
  isset( $array['condition'] ) &&
372
- 'price' === $array['condition'] &&
373
  ! empty( $value ) &&
374
  is_numeric( $value )
375
  ) {
@@ -440,7 +440,7 @@ if ( ! class_exists( 'WCJ_Multicurrency' ) ) :
440
  'yes' !== wcj_get_option( 'wcj_multicurrency_compatibility_wc_coupons', 'no' ) ||
441
  is_admin() ||
442
  empty( $coupon_id ) ||
443
- 'fixed_cart' !== get_post_meta( $coupon_id, 'discount_type', true )
444
  ) {
445
  return $false;
446
  }
@@ -690,7 +690,7 @@ if ( ! class_exists( 'WCJ_Multicurrency' ) ) :
690
  *
691
  * @see price-slider.js, init_price_filter()
692
  *
693
- * @version 5.2.0
694
  * @since 4.3.0
695
  */
696
  public function add_compatibility_with_price_filter_widget() {
@@ -700,7 +700,7 @@ if ( ! class_exists( 'WCJ_Multicurrency' ) ) :
700
  ?>
701
  <?php
702
  $exchange_rate = $this->get_currency_exchange_rate( $this->get_current_currency_code() );
703
- if ( 1 === $exchange_rate ) {
704
  return;
705
  }
706
  ?>
@@ -1078,7 +1078,7 @@ if ( ! class_exists( 'WCJ_Multicurrency' ) ) :
1078
  /**
1079
  * Finds old add-ons fields on cart and replace by correct price.
1080
  *
1081
- * @version 5.1.1
1082
  * @since 4.3.0
1083
  *
1084
  * @param array $other_data defines the other_data.
@@ -1096,9 +1096,9 @@ if ( ! class_exists( 'WCJ_Multicurrency' ) ) :
1096
  $name_old = $addon['name'];
1097
 
1098
  // Get old field name (with wrong currency price).
1099
- if ( 0 === $addon['price'] ) {
1100
  $name_old .= '';
1101
- } elseif ( 'percentage_based' === $addon['price_type'] && 0 === $price ) {
1102
  $name_old .= '';
1103
  } elseif ( 'percentage_based' !== $addon['price_type'] && $addon['price'] && apply_filters( 'woocommerce_addons_add_price_to_name', '__return_true' ) ) {
1104
  $name_old .= ' (' . wc_price( \WC_Product_Addons_Helper::get_product_addon_price_for_display( $addon['price'], $cart_item['data'], true ) ) . ')';
@@ -1111,9 +1111,9 @@ if ( ! class_exists( 'WCJ_Multicurrency' ) ) :
1111
  // Get new field name (with correct currency price).
1112
  $name_new = $addon['name'];
1113
  $addon['price'] = $this->change_price( $addon['price'], null );
1114
- if ( 0 === $addon['price'] ) {
1115
  $name_new .= '';
1116
- } elseif ( 'percentage_based' === $addon['price_type'] && 0 === $price ) {
1117
  $name_new .= '';
1118
  } elseif ( 'percentage_based' !== $addon['price_type'] && $addon['price'] && apply_filters( 'woocommerce_addons_add_price_to_name', '__return_true' ) ) {
1119
  $name_new .= ' (' . wc_price( \WC_Product_Addons_Helper::get_product_addon_price_for_display( $addon['price'], $cart_item['data'], true ) ) . ')';
@@ -1125,7 +1125,7 @@ if ( ! class_exists( 'WCJ_Multicurrency' ) ) :
1125
 
1126
  // Find old field on cart and replace by correct price.
1127
  foreach ( $other_data as $key => $data ) {
1128
- if ( $data['name'] === $name_old ) {
1129
  $other_data[ $key ]['name'] = $name_new;
1130
  }
1131
  }
@@ -1246,7 +1246,7 @@ if ( ! class_exists( 'WCJ_Multicurrency' ) ) :
1246
  /**
1247
  * Saves price so it won't be necessary to calculate it multiple times.
1248
  *
1249
- * @version 4.6.0
1250
  * @since 4.6.0
1251
  *
1252
  * @param int $price defines the price.
@@ -1294,7 +1294,7 @@ if ( ! class_exists( 'WCJ_Multicurrency' ) ) :
1294
  $_product_id = wcj_get_product_id( $_product );
1295
  $do_save = $args['do_save'];
1296
  $_current_filter = current_filter();
1297
- if ( '' === $_current_filter ) {
1298
  $_current_filter = 'wcj_filter__none';
1299
  }
1300
  if ( $do_save && isset( w_c_j()->modules['multicurrency']->calculated_products_prices[ $_product_id ][ $_current_filter ] ) ) {
@@ -1311,27 +1311,27 @@ if ( ! class_exists( 'WCJ_Multicurrency' ) ) :
1311
  $price = '';
1312
  $this->save_price( $price, $_product_id, $_current_filter );
1313
  return $price;
1314
- } elseif ( '' !== ( $regular_price_per_product ) ) {
1315
- if ( 'woocommerce_get_price_including_tax' === $_current_filter || 'woocommerce_get_price_excluding_tax' === $_current_filter ) {
1316
  $price = wcj_get_product_display_price( $_product );
1317
  $this->save_price( $price, $_product_id, $_current_filter );
1318
  return $price;
1319
- } elseif ( WCJ_PRODUCT_GET_PRICE_FILTER === $_current_filter || 'woocommerce_variation_prices_price' === $_current_filter || 'woocommerce_product_variation_get_price' === $_current_filter || in_array( $_current_filter, $this->additional_price_filters, true ) ) {
1320
  if ( $_product->is_on_sale() ) {
1321
  $sale_price_per_product = get_post_meta( $_product_id, '_wcj_multicurrency_per_product_sale_price_' . $this->get_current_currency_code(), true );
1322
- $price = ( '' !== $sale_price_per_product && $sale_price_per_product < $regular_price_per_product ) ? $sale_price_per_product : $regular_price_per_product;
1323
  } else {
1324
  $price = $regular_price_per_product;
1325
  }
1326
  $this->save_price( $price, $_product_id, $_current_filter );
1327
  return $price;
1328
- } elseif ( WCJ_PRODUCT_GET_REGULAR_PRICE_FILTER === $_current_filter || 'woocommerce_variation_prices_regular_price' === $_current_filter || 'woocommerce_product_variation_get_regular_price' === $_current_filter ) {
1329
  $price = $regular_price_per_product;
1330
  $this->save_price( $price, $_product_id, $_current_filter );
1331
  return $price;
1332
- } elseif ( WCJ_PRODUCT_GET_SALE_PRICE_FILTER === $_current_filter || 'woocommerce_variation_prices_sale_price' === $_current_filter || 'woocommerce_product_variation_get_sale_price' === $_current_filter ) {
1333
  $sale_price_per_product = get_post_meta( $_product_id, '_wcj_multicurrency_per_product_sale_price_' . $this->get_current_currency_code(), true );
1334
- $price = ( '' !== $sale_price_per_product ) ? $sale_price_per_product : $price;
1335
  $this->save_price( $price, $_product_id, $_current_filter );
1336
  return $price;
1337
  }
@@ -1340,7 +1340,7 @@ if ( ! class_exists( 'WCJ_Multicurrency' ) ) :
1340
 
1341
  // Global.
1342
  $currency_exchange_rate = $this->get_currency_exchange_rate( $this->get_current_currency_code() );
1343
- if ( 1 !== ( $currency_exchange_rate ) ) {
1344
  $price = (float) $price * (float) $currency_exchange_rate;
1345
  switch ( wcj_get_option( 'wcj_multicurrency_rounding', 'no_round' ) ) {
1346
  case 'round':
@@ -1376,9 +1376,9 @@ if ( ! class_exists( 'WCJ_Multicurrency' ) ) :
1376
  $module_roles = wcj_get_option( 'wcj_multicurrency_role_defaults_roles', '' );
1377
  if ( ! empty( $module_roles ) ) {
1378
  $current_user_role = wcj_get_current_user_first_role();
1379
- if ( in_array( $current_user_role, $module_roles, true ) ) {
1380
  $roles_default_currency = wcj_get_option( 'wcj_multicurrency_role_defaults_' . $current_user_role, '' );
1381
- if ( '' !== $roles_default_currency ) {
1382
  return $roles_default_currency;
1383
  }
1384
  }
2
  /**
3
  * Booster for WooCommerce - Module - Multicurrency (Currency Switcher)
4
  *
5
+ * @version 5.6.1
6
  * @since 2.4.3
7
  * @author Pluggabl LLC.
8
  * @package Booster_For_WooCommerce/includes
19
  class WCJ_Multicurrency extends WCJ_Module {
20
 
21
  /**
22
+ * Bkg_process_price_updater
23
  *
24
  * @var bkg_process_price_updater
25
  */
28
  /**
29
  * Constructor.
30
  *
31
+ * @version 5.6.1
32
  * @todo check if we can just always execute `init()` on `init` hook
33
  */
34
  public function __construct() {
56
  '</li>' .
57
  '<li>' . sprintf(
58
  /* translators: %s: translation added */
59
+ __( '<strong>PHP code:</strong> by using %s function, e.g.: %s', 'woocommerce-jetpack' ),
60
  '<code>do_shortcode()</code>',
61
  '<code>echo&nbsp;do_shortcode(&nbsp;\'[wcj_currency_select_drop_down_list]\'&nbsp;);</code>'
62
  ) .
98
  /**
99
  * Init_bkg_process_class.
100
  *
101
+ * @version 5.6.1
102
  * @since 4.5.0
103
  */
104
  public function init_bkg_process_class() {
105
  if ( 'yes' === wcj_get_option( 'wcj_multicurrency_update_prices_on_exch_update', 'no' ) ) {
106
+ require_once wcj_free_plugin_path() . '/includes/background-process/class-wcj-multicurrency-price-updater.php';
107
  $this->bkg_process_price_updater = new WCJ_Multicurrency_Price_Updater();
108
  }
109
  }
218
  /**
219
  * Product_addons_price_raw.
220
  *
221
+ * @version 5.6.1
222
  * @since 5.1.1
223
  *
224
  * @param int $price defines the price.
229
  public function product_addons_price_raw( $price, $addon ) {
230
  if (
231
  'no' === wcj_get_option( 'wcj_multicurrency_compatibility_product_addons', 'no' )
232
+ || ( 'quantity_based' != $addon['price_type'] && 'flat_fee' != $addon['price_type'] )
233
  ) {
234
  return $price;
235
  }
315
  /**
316
  * Get_wc_tree_table_rate_settings.
317
  *
318
+ * @version 5.6.1
319
  * @since 4.9.0
320
  * @param array $option defines the option.
321
  *
336
  'exchange_rate' => $this->get_currency_exchange_rate( $this->get_current_currency_code() ),
337
  )
338
  );
339
+ set_transient( $transition_name, json_encode( $modified_rule ), 5 * MINUTE_IN_SECONDS );
340
  }
341
  $option['rule'] = $modified_rule_result;
342
  remove_filter( current_filter(), array( $this, 'convert_wc_tree_table_rate_settings' ) );
346
  /**
347
  * Recursively_convert_wc_tree_settings.
348
  *
349
+ * @version 5.6.1
350
  * @since 4.9.0
351
  *
352
  * @param array $array defines the array.
369
  if (
370
  is_array( $array ) &&
371
  isset( $array['condition'] ) &&
372
+ 'price' == $array['condition'] &&
373
  ! empty( $value ) &&
374
  is_numeric( $value )
375
  ) {
440
  'yes' !== wcj_get_option( 'wcj_multicurrency_compatibility_wc_coupons', 'no' ) ||
441
  is_admin() ||
442
  empty( $coupon_id ) ||
443
+ 'fixed_cart' != get_post_meta( $coupon_id, 'discount_type', true )
444
  ) {
445
  return $false;
446
  }
690
  *
691
  * @see price-slider.js, init_price_filter()
692
  *
693
+ * @version 5.6.1
694
  * @since 4.3.0
695
  */
696
  public function add_compatibility_with_price_filter_widget() {
700
  ?>
701
  <?php
702
  $exchange_rate = $this->get_currency_exchange_rate( $this->get_current_currency_code() );
703
+ if ( 1 == $exchange_rate ) {
704
  return;
705
  }
706
  ?>
1078
  /**
1079
  * Finds old add-ons fields on cart and replace by correct price.
1080
  *
1081
+ * @version 5.6.1
1082
  * @since 4.3.0
1083
  *
1084
  * @param array $other_data defines the other_data.
1096
  $name_old = $addon['name'];
1097
 
1098
  // Get old field name (with wrong currency price).
1099
+ if ( 0 == $addon['price'] ) {
1100
  $name_old .= '';
1101
+ } elseif ( 'percentage_based' === $addon['price_type'] && 0 == $price ) {
1102
  $name_old .= '';
1103
  } elseif ( 'percentage_based' !== $addon['price_type'] && $addon['price'] && apply_filters( 'woocommerce_addons_add_price_to_name', '__return_true' ) ) {
1104
  $name_old .= ' (' . wc_price( \WC_Product_Addons_Helper::get_product_addon_price_for_display( $addon['price'], $cart_item['data'], true ) ) . ')';
1111
  // Get new field name (with correct currency price).
1112
  $name_new = $addon['name'];
1113
  $addon['price'] = $this->change_price( $addon['price'], null );
1114
+ if ( 0 == $addon['price'] ) {
1115
  $name_new .= '';
1116
+ } elseif ( 'percentage_based' === $addon['price_type'] && 0 == $price ) {
1117
  $name_new .= '';
1118
  } elseif ( 'percentage_based' !== $addon['price_type'] && $addon['price'] && apply_filters( 'woocommerce_addons_add_price_to_name', '__return_true' ) ) {
1119
  $name_new .= ' (' . wc_price( \WC_Product_Addons_Helper::get_product_addon_price_for_display( $addon['price'], $cart_item['data'], true ) ) . ')';
1125
 
1126
  // Find old field on cart and replace by correct price.
1127
  foreach ( $other_data as $key => $data ) {
1128
+ if ( $data['name'] == $name_old ) {
1129
  $other_data[ $key ]['name'] = $name_new;
1130
  }
1131
  }
1246
  /**
1247
  * Saves price so it won't be necessary to calculate it multiple times.
1248
  *
1249
+ * @version 5.6.1
1250
  * @since 4.6.0
1251
  *
1252
  * @param int $price defines the price.
1294
  $_product_id = wcj_get_product_id( $_product );
1295
  $do_save = $args['do_save'];
1296
  $_current_filter = current_filter();
1297
+ if ( '' == $_current_filter ) {
1298
  $_current_filter = 'wcj_filter__none';
1299
  }
1300
  if ( $do_save && isset( w_c_j()->modules['multicurrency']->calculated_products_prices[ $_product_id ][ $_current_filter ] ) ) {
1311
  $price = '';
1312
  $this->save_price( $price, $_product_id, $_current_filter );
1313
  return $price;
1314
+ } elseif ( '' != ( $regular_price_per_product ) ) {
1315
+ if ( 'woocommerce_get_price_including_tax' == $_current_filter || 'woocommerce_get_price_excluding_tax' == $_current_filter ) {
1316
  $price = wcj_get_product_display_price( $_product );
1317
  $this->save_price( $price, $_product_id, $_current_filter );
1318
  return $price;
1319
+ } elseif ( WCJ_PRODUCT_GET_PRICE_FILTER == $_current_filter || 'woocommerce_variation_prices_price' == $_current_filter || 'woocommerce_product_variation_get_price' == $_current_filter || in_array( $_current_filter, $this->additional_price_filters ) ) {
1320
  if ( $_product->is_on_sale() ) {
1321
  $sale_price_per_product = get_post_meta( $_product_id, '_wcj_multicurrency_per_product_sale_price_' . $this->get_current_currency_code(), true );
1322
+ $price = ( '' != $sale_price_per_product && $sale_price_per_product < $regular_price_per_product ) ? $sale_price_per_product : $regular_price_per_product;
1323
  } else {
1324
  $price = $regular_price_per_product;
1325
  }
1326
  $this->save_price( $price, $_product_id, $_current_filter );
1327
  return $price;
1328
+ } elseif ( WCJ_PRODUCT_GET_REGULAR_PRICE_FILTER == $_current_filter || 'woocommerce_variation_prices_regular_price' == $_current_filter || 'woocommerce_product_variation_get_regular_price' == $_current_filter ) {
1329
  $price = $regular_price_per_product;
1330
  $this->save_price( $price, $_product_id, $_current_filter );
1331
  return $price;
1332
+ } elseif ( WCJ_PRODUCT_GET_SALE_PRICE_FILTER == $_current_filter || 'woocommerce_variation_prices_sale_price' == $_current_filter || 'woocommerce_product_variation_get_sale_price' == $_current_filter ) {
1333
  $sale_price_per_product = get_post_meta( $_product_id, '_wcj_multicurrency_per_product_sale_price_' . $this->get_current_currency_code(), true );
1334
+ $price = ( '' != $sale_price_per_product ) ? $sale_price_per_product : $price;
1335
  $this->save_price( $price, $_product_id, $_current_filter );
1336
  return $price;
1337
  }
1340
 
1341
  // Global.
1342
  $currency_exchange_rate = $this->get_currency_exchange_rate( $this->get_current_currency_code() );
1343
+ if ( 1 != ( $currency_exchange_rate ) ) {
1344
  $price = (float) $price * (float) $currency_exchange_rate;
1345
  switch ( wcj_get_option( 'wcj_multicurrency_rounding', 'no_round' ) ) {
1346
  case 'round':
1376
  $module_roles = wcj_get_option( 'wcj_multicurrency_role_defaults_roles', '' );
1377
  if ( ! empty( $module_roles ) ) {
1378
  $current_user_role = wcj_get_current_user_first_role();
1379
+ if ( in_array( $current_user_role, $module_roles ) ) {
1380
  $roles_default_currency = wcj_get_option( 'wcj_multicurrency_role_defaults_' . $current_user_role, '' );
1381
+ if ( '' != $roles_default_currency ) {
1382
  return $roles_default_currency;
1383
  }
1384
  }
includes/class-wcj-my-account.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Module - My Account
4
  *
5
- * @version 5.5.9
6
  * @since 2.9.0
7
  * @author Pluggabl LLC.
8
  * @package Booster_For_WooCommerce/includes
@@ -282,7 +282,7 @@ if ( ! class_exists( 'WCJ_My_Account' ) ) :
282
  /**
283
  * Customize_dashboard.
284
  *
285
- * @version 4.8.0
286
  * @since 3.8.0
287
  * @see woocommerce/templates/myaccount/dashboard.php
288
  * @param string | array $value defines the value.
@@ -326,7 +326,7 @@ if ( ! class_exists( 'WCJ_My_Account' ) ) :
326
  echo '<p>';
327
  /* translators: 1: user display name 2: logout url */
328
  printf(
329
- wp_kses_post( 'Hello %1$s (not %1$s? <a href="%2$s">Log out</a>)', 'woocommerce' ),
330
  '<strong>' . esc_html( $current_user->display_name ) . '</strong>',
331
  esc_url( wc_logout_url( wc_get_page_permalink( 'myaccount' ) ) )
332
  );
@@ -336,7 +336,7 @@ if ( ! class_exists( 'WCJ_My_Account' ) ) :
336
  if ( 'no' === wcj_get_option( 'wcj_my_account_custom_dashboard_hide_info', 'no' ) ) {
337
  echo '<p>';
338
  printf(
339
- wp_kses_post( 'From your account dashboard you can view your <a href="%1$s">recent orders</a>, manage your <a href="%2$s">shipping and billing addresses</a>, and <a href="%3$s">edit your password and account details</a>.', 'woocommerce' ),
340
  esc_url( wc_get_endpoint_url( 'orders' ) ),
341
  esc_url( wc_get_endpoint_url( 'edit-address' ) ),
342
  esc_url( wc_get_endpoint_url( 'edit-account' ) )
@@ -478,7 +478,7 @@ if ( ! class_exists( 'WCJ_My_Account' ) ) :
478
  /**
479
  * Add_my_account_custom_info.
480
  *
481
- * @version 3.4.0
482
  * @since 3.4.0
483
  */
484
  public function add_my_account_custom_info() {
@@ -489,7 +489,7 @@ if ( ! class_exists( 'WCJ_My_Account' ) ) :
489
  if (
490
  '' !== wcj_get_option( 'wcj_my_account_custom_info_content_' . $i ) &&
491
  wcj_get_option( 'wcj_my_account_custom_info_hook_' . $i, 'woocommerce_account_dashboard' ) === $current_filter &&
492
- wcj_get_option( 'wcj_my_account_custom_info_priority_' . $i, 10 ) === $current_filter_priority
493
  ) {
494
  echo do_shortcode( wcj_get_option( 'wcj_my_account_custom_info_content_' . $i ) );
495
  }
2
  /**
3
  * Booster for WooCommerce - Module - My Account
4
  *
5
+ * @version 5.6.1
6
  * @since 2.9.0
7
  * @author Pluggabl LLC.
8
  * @package Booster_For_WooCommerce/includes
282
  /**
283
  * Customize_dashboard.
284
  *
285
+ * @version 5.6.1
286
  * @since 3.8.0
287
  * @see woocommerce/templates/myaccount/dashboard.php
288
  * @param string | array $value defines the value.
326
  echo '<p>';
327
  /* translators: 1: user display name 2: logout url */
328
  printf(
329
+ __( 'Hello %1$s (not %1$s? <a href="%2$s">Log out</a>)', 'woocommerce' ),
330
  '<strong>' . esc_html( $current_user->display_name ) . '</strong>',
331
  esc_url( wc_logout_url( wc_get_page_permalink( 'myaccount' ) ) )
332
  );
336
  if ( 'no' === wcj_get_option( 'wcj_my_account_custom_dashboard_hide_info', 'no' ) ) {
337
  echo '<p>';
338
  printf(
339
+ __( 'From your account dashboard you can view your <a href="%1$s">recent orders</a>, manage your <a href="%2$s">shipping and billing addresses</a>, and <a href="%3$s">edit your password and account details</a>.', 'woocommerce' ),
340
  esc_url( wc_get_endpoint_url( 'orders' ) ),
341
  esc_url( wc_get_endpoint_url( 'edit-address' ) ),
342
  esc_url( wc_get_endpoint_url( 'edit-account' ) )
478
  /**
479
  * Add_my_account_custom_info.
480
  *
481
+ * @version 5.6.1
482
  * @since 3.4.0
483
  */
484
  public function add_my_account_custom_info() {
489
  if (
490
  '' !== wcj_get_option( 'wcj_my_account_custom_info_content_' . $i ) &&
491
  wcj_get_option( 'wcj_my_account_custom_info_hook_' . $i, 'woocommerce_account_dashboard' ) === $current_filter &&
492
+ wcj_get_option( 'wcj_my_account_custom_info_priority_' . $i, '10' ) === (string)$current_filter_priority
493
  ) {
494
  echo do_shortcode( wcj_get_option( 'wcj_my_account_custom_info_content_' . $i ) );
495
  }
includes/class-wcj-offer-price.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Module - Offer Price
4
  *
5
- * @version 5.2.0
6
  * @since 2.9.0
7
  * @author Pluggabl LLC.
8
  * @package Booster_For_WooCommerce/includes
@@ -186,7 +186,7 @@ if ( ! class_exists( 'WCJ_Offer_Price' ) ) :
186
  /**
187
  * Create_offer_price_history_meta_box.
188
  *
189
- * @version 4.4.0
190
  * @since 2.9.0
191
  */
192
  public function create_offer_price_history_meta_box() {
@@ -254,9 +254,9 @@ if ( ! class_exists( 'WCJ_Offer_Price' ) ) :
254
  echo wp_kses_post( wcj_get_table_html( $table_data, array( 'table_class' => 'widefat striped' ) ) );
255
  foreach ( $average_offers as $average_offer_currency_code => $average_offer_data ) {
256
  echo '<p>' . sprintf(
257
- wp_kses_post( 'Average offer: %1$s (from %2$s offer(s))', 'woocommerce-jetpack' ),
258
- wp_kses_post( wc_price( ( $average_offer_data['offers_sum'] / $average_offer_data['total_offers'] ), array( 'currency' => $average_offer_currency_code ) ) ),
259
- wp_kses_post( $average_offer_data['total_offers'] )
260
  ) . '</p>';
261
  }
262
  echo '<p>' .
2
  /**
3
  * Booster for WooCommerce - Module - Offer Price
4
  *
5
+ * @version 5.6.1
6
  * @since 2.9.0
7
  * @author Pluggabl LLC.
8
  * @package Booster_For_WooCommerce/includes
186
  /**
187
  * Create_offer_price_history_meta_box.
188
  *
189
+ * @version 5.6.1
190
  * @since 2.9.0
191
  */
192
  public function create_offer_price_history_meta_box() {
254
  echo wp_kses_post( wcj_get_table_html( $table_data, array( 'table_class' => 'widefat striped' ) ) );
255
  foreach ( $average_offers as $average_offer_currency_code => $average_offer_data ) {
256
  echo '<p>' . sprintf(
257
+ __( 'Average offer: %s (from %s offer(s))', 'woocommerce-jetpack' ),
258
+ wc_price( ( $average_offer_data['offers_sum'] / $average_offer_data['total_offers'] ), array( 'currency' => $average_offer_currency_code ) ),
259
+ $average_offer_data['total_offers']
260
  ) . '</p>';
261
  }
262
  echo '<p>' .
includes/class-wcj-pdf-invoicing.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Module - PDF Invoicing
4
  *
5
- * @version 5.5.9
6
  * @author Pluggabl LLC.
7
  * @package Booster_For_WooCommerce/includes
8
  */
@@ -304,8 +304,8 @@ if ( ! class_exists( 'WCJ_PDF_Invoicing' ) ) :
304
  if ( empty( $files ) ) {
305
  return 'merge_pdfs_no_files';
306
  }
307
- require_once wcj_plugin_path() . '/includes/lib/FPDI/src/autoload.php';
308
- $fpdi_pdf = require_once wcj_plugin_path() . '/includes/pdf-invoices/tcpdffpdi.php';
309
  $fpdi_pdf->SetTitle( 'docs.pdf' );
310
  $fpdi_pdf->setPrintHeader( false );
311
  $fpdi_pdf->setPrintFooter( false );
2
  /**
3
  * Booster for WooCommerce - Module - PDF Invoicing
4
  *
5
+ * @version 5.6.1
6
  * @author Pluggabl LLC.
7
  * @package Booster_For_WooCommerce/includes
8
  */
304
  if ( empty( $files ) ) {
305
  return 'merge_pdfs_no_files';
306
  }
307
+ require_once wcj_free_plugin_path() . '/includes/lib/FPDI/src/autoload.php';
308
+ $fpdi_pdf = require_once wcj_free_plugin_path() . '/includes/pdf-invoices/tcpdffpdi.php';
309
  $fpdi_pdf->SetTitle( 'docs.pdf' );
310
  $fpdi_pdf->setPrintHeader( false );
311
  $fpdi_pdf->setPrintFooter( false );
includes/class-wcj-price-by-country.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Module - Prices and Currencies by Country
4
  *
5
- * @version 5.2.0
6
  * @author Pluggabl LLC.
7
  * @package Booster_For_WooCommerce/includes
8
  */
@@ -112,11 +112,11 @@ if ( ! class_exists( 'WCJ_Price_By_Country' ) ) :
112
  /**
113
  * Init_bkg_process_class.
114
  *
115
- * @version 5.1.0
116
  * @since 5.1.0
117
  */
118
  public function init_bkg_process_class() {
119
- require_once wcj_plugin_path() . '/includes/background-process/class-wcj-price-by-country-updater.php';
120
  $this->bkg_process_price_updater = new WCJ_Price_By_Country_Updater();
121
  }
122
 
2
  /**
3
  * Booster for WooCommerce - Module - Prices and Currencies by Country
4
  *
5
+ * @version 5.6.1
6
  * @author Pluggabl LLC.
7
  * @package Booster_For_WooCommerce/includes
8
  */
112
  /**
113
  * Init_bkg_process_class.
114
  *
115
+ * @version 5.6.1
116
  * @since 5.1.0
117
  */
118
  public function init_bkg_process_class() {
119
+ require_once wcj_free_plugin_path() . '/includes/background-process/class-wcj-price-by-country-updater.php';
120
  $this->bkg_process_price_updater = new WCJ_Price_By_Country_Updater();
121
  }
122
 
includes/class-wcj-price-by-user-role.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Module - Price based on User Role
4
  *
5
- * @version 5.5.9
6
  * @since 2.5.0
7
  * @author Pluggabl LLC.
8
  * @todo Fix "Make Empty Price" option for variable products
@@ -305,7 +305,7 @@ if ( ! class_exists( 'WCJ_Price_By_User_Role' ) ) :
305
  /**
306
  * Change_price.
307
  *
308
- * @version 4.7.1
309
  * @since 2.5.0
310
  * @todo (maybe) add "enable compound multipliers" option
311
  * @todo (maybe) check for `( '' === $price )` only once, at the beginning of the function (instead of comparing before each `return`)
@@ -413,7 +413,7 @@ if ( ! class_exists( 'WCJ_Price_By_User_Role' ) ) :
413
  WCJ_PRODUCT_GET_REGULAR_PRICE_FILTER,
414
  'woocommerce_variation_prices_regular_price',
415
  'woocommerce_product_variation_get_regular_price',
416
- ),
417
  ) ) {
418
  return $price;
419
  }
2
  /**
3
  * Booster for WooCommerce - Module - Price based on User Role
4
  *
5
+ * @version 5.6.1
6
  * @since 2.5.0
7
  * @author Pluggabl LLC.
8
  * @todo Fix "Make Empty Price" option for variable products
305
  /**
306
  * Change_price.
307
  *
308
+ * @version 5.6.1
309
  * @since 2.5.0
310
  * @todo (maybe) add "enable compound multipliers" option
311
  * @todo (maybe) check for `( '' === $price )` only once, at the beginning of the function (instead of comparing before each `return`)
413
  WCJ_PRODUCT_GET_REGULAR_PRICE_FILTER,
414
  'woocommerce_variation_prices_regular_price',
415
  'woocommerce_product_variation_get_regular_price',
416
+ )
417
  ) ) {
418
  return $price;
419
  }
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 5.5.8
6
  * @since 2.2.0
7
  * @author Pluggabl LLC.
8
  * @package Booster_For_WooCommerce/includes
@@ -347,7 +347,7 @@ if ( ! class_exists( 'WCJ_Product_Add_To_Cart' ) ) :
347
  /**
348
  * Adds radio buttons template for variations
349
  *
350
- * @version 4.6.0
351
  * @since 4.3.0
352
  * @see woocommerce_variable_add_to_cart()
353
  */
@@ -362,7 +362,7 @@ if ( ! class_exists( 'WCJ_Product_Add_To_Cart' ) ) :
362
  'selected_attributes' => $product->get_default_attributes(),
363
  ),
364
  '',
365
- WCJ_PLUGIN_PATH . '/includes/templates/'
366
  );
367
  ?>
368
  <style>
2
  /**
3
  * Booster for WooCommerce - Module - Product Add To Cart
4
  *
5
+ * @version 5.6.1
6
  * @since 2.2.0
7
  * @author Pluggabl LLC.
8
  * @package Booster_For_WooCommerce/includes
347
  /**
348
  * Adds radio buttons template for variations
349
  *
350
+ * @version 5.6.1
351
  * @since 4.3.0
352
  * @see woocommerce_variable_add_to_cart()
353
  */
362
  'selected_attributes' => $product->get_default_attributes(),
363
  ),
364
  '',
365
+ WCJ_FREE_PLUGIN_PATH . '/includes/templates/'
366
  );
367
  ?>
368
  <style>
includes/class-wcj-product-bulk-price-converter.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Module - Bulk Price Converter
4
  *
5
- * @version 3.9.0
6
  * @author Pluggabl LLC.
7
  * @package Booster_For_WooCommerce/includes
8
  */
@@ -243,13 +243,13 @@ if ( ! class_exists( 'WCJ_Bulk_Price_Converter' ) ) :
243
  /**
244
  * Create_bulk_price_converter_tool.
245
  *
246
- * @version 3.9.0
247
  */
248
  public function create_bulk_price_converter_tool() {
249
  $result_message = '';
250
 
251
  $multiply_prices_by = isset( $_POST['multiply_prices_by'] ) ? $_POST['multiply_prices_by'] : 1;
252
- $is_preview = $_POST['bulk_change_prices_preview'];
253
 
254
  $result_changing_prices = '';
255
 
2
  /**
3
  * Booster for WooCommerce - Module - Bulk Price Converter
4
  *
5
+ * @version 5.6.1
6
  * @author Pluggabl LLC.
7
  * @package Booster_For_WooCommerce/includes
8
  */
243
  /**
244
  * Create_bulk_price_converter_tool.
245
  *
246
+ * @version 5.6.1
247
  */
248
  public function create_bulk_price_converter_tool() {
249
  $result_message = '';
250
 
251
  $multiply_prices_by = isset( $_POST['multiply_prices_by'] ) ? $_POST['multiply_prices_by'] : 1;
252
+ $is_preview = isset( $_POST['bulk_change_prices_preview'] );
253
 
254
  $result_changing_prices = '';
255
 
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 5.4.3
6
  * @since 2.5.0
7
  * @author Pluggabl LLC.
8
  * @package Booster_For_WooCommerce/includes
@@ -145,7 +145,7 @@ if ( ! class_exists( 'WCJ_Product_By_Country' ) ) :
145
  /**
146
  * Maybe_add_extra_settings.
147
  *
148
- * @version 5.4.3
149
  * @since 3.6.0
150
  * @todo (maybe) move "Country List" inside the "Admin Options" section
151
  */
@@ -161,7 +161,7 @@ if ( ! class_exists( 'WCJ_Product_By_Country' ) ) :
161
  'desc_tip' => __( 'Possible values: "Automatically by IP" or "Manually".', 'woocommerce-jetpack' ),
162
  'desc' => sprintf(
163
  /* translators: %s: translation added */
164
- '<p>' . __( 'If "Manually" option is selected, you can add country selection drop box to frontend with "%1$s" widget or %2$s shortcode.', 'woocommerce-jetpack' ),
165
  __( 'Booster - Selector', 'woocommerce-jetpack' ),
166
  '<code>[wcj_selector selector_type="country"]</code>'
167
  ) .
2
  /**
3
  * Booster for WooCommerce - Module - Product Visibility by Country
4
  *
5
+ * @version 5.6.1
6
  * @since 2.5.0
7
  * @author Pluggabl LLC.
8
  * @package Booster_For_WooCommerce/includes
145
  /**
146
  * Maybe_add_extra_settings.
147
  *
148
+ * @version 5.6.1
149
  * @since 3.6.0
150
  * @todo (maybe) move "Country List" inside the "Admin Options" section
151
  */
161
  'desc_tip' => __( 'Possible values: "Automatically by IP" or "Manually".', 'woocommerce-jetpack' ),
162
  'desc' => sprintf(
163
  /* translators: %s: translation added */
164
+ '<p>' . __( 'If "Manually" option is selected, you can add country selection drop box to frontend with "%s" widget or %s shortcode.', 'woocommerce-jetpack' ),
165
  __( 'Booster - Selector', 'woocommerce-jetpack' ),
166
  '<code>[wcj_selector selector_type="country"]</code>'
167
  ) .
includes/class-wcj-product-by-user.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Module - Product by User
4
  *
5
- * @version 5.6.0
6
  * @since 2.5.2
7
  * @author Pluggabl LLC.
8
  * @package Booster_For_WooCommerce/includes
@@ -69,9 +69,6 @@ if ( ! class_exists( 'WCJ_Product_By_User' ) ) :
69
  return;
70
  }
71
  $order = wc_get_order( $order_id );
72
- if ( ! $order ) {
73
- return -1;
74
- }
75
 
76
  foreach ( $order->get_items() as $item_id => $item ) {
77
  $productid = $item['product_id'];
@@ -85,15 +82,15 @@ if ( ! class_exists( 'WCJ_Product_By_User' ) ) :
85
  /**
86
  * Send Email To Product User at success page when email send setting enable
87
  *
88
- * @version 5.6.0
89
  * @since 1.0.0
90
  * @param string $headers defines the headers.
91
  * @param string $email_id defines the email_id.
92
- * @param array $order defines the order.
93
  */
94
- public function sendemail_to_productowner_order_place_successfully( $headers, $email_id, $order ) {
95
- $useremail = $this->getProductOwnerEmail( $order->id );
96
- if ( 'new_order' === $email_id ) {
97
  $headers .= 'Cc: Name <' . $useremail . '>' . "\r\n";
98
  }
99
  return $headers;
2
  /**
3
  * Booster for WooCommerce - Module - Product by User
4
  *
5
+ * @version 5.6.1
6
  * @since 2.5.2
7
  * @author Pluggabl LLC.
8
  * @package Booster_For_WooCommerce/includes
69
  return;
70
  }
71
  $order = wc_get_order( $order_id );
 
 
 
72
 
73
  foreach ( $order->get_items() as $item_id => $item ) {
74
  $productid = $item['product_id'];
82
  /**
83
  * Send Email To Product User at success page when email send setting enable
84
  *
85
+ * @version 5.6.1
86
  * @since 1.0.0
87
  * @param string $headers defines the headers.
88
  * @param string $email_id defines the email_id.
89
+ * @param array $object defines the object.
90
  */
91
+ public function sendemail_to_productowner_order_place_successfully( $headers, $email_id, $object ) {
92
+ if ( 'new_order' === $email_id && is_a( $object, 'WC_Order' ) ) {
93
+ $useremail = $this->getProductOwnerEmail( wcj_get_order_id( $object ) );
94
  $headers .= 'Cc: Name <' . $useremail . '>' . "\r\n";
95
  }
96
  return $headers;
includes/class-wcj-product-custom-visibility.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Module - Product Custom Visibility
4
  *
5
- * @version 5.2.0
6
  * @since 3.2.4
7
  * @author Pluggabl LLC.
8
  * @package Booster_For_WooCommerce/includes
@@ -21,7 +21,7 @@ if ( ! class_exists( 'WCJ_Product_Custom_Visibility' ) ) :
21
  /**
22
  * Constructor.
23
  *
24
- * @version 5.2.0
25
  * @since 3.2.4
26
  */
27
  public function __construct() {
@@ -34,7 +34,7 @@ if ( ! class_exists( 'WCJ_Product_Custom_Visibility' ) ) :
34
  $this->extra_desc = __( 'When enabled, module will add new "Booster: Product Custom Visibility" meta box to each product\'s edit page.', 'woocommerce-jetpack' ) . '<br>' .
35
  sprintf(
36
  /* translators: %s: translation added */
37
- __( 'You can add selection drop box to frontend with "%1$s" widget (set "Product custom visibility" as "Selector Type") or %2$s shortcode.', 'woocommerce-jetpack' ),
38
  __( 'Booster - Selector', 'woocommerce-jetpack' ),
39
  '<code>[wcj_selector selector_type="product_custom_visibility"]</code>'
40
  );
2
  /**
3
  * Booster for WooCommerce - Module - Product Custom Visibility
4
  *
5
+ * @version 5.6.1
6
  * @since 3.2.4
7
  * @author Pluggabl LLC.
8
  * @package Booster_For_WooCommerce/includes
21
  /**
22
  * Constructor.
23
  *
24
+ * @version 5.6.1
25
  * @since 3.2.4
26
  */
27
  public function __construct() {
34
  $this->extra_desc = __( 'When enabled, module will add new "Booster: Product Custom Visibility" meta box to each product\'s edit page.', 'woocommerce-jetpack' ) . '<br>' .
35
  sprintf(
36
  /* translators: %s: translation added */
37
+ __( 'You can add selection drop box to frontend with "%s" widget (set "Product custom visibility" as "Selector Type") or %s shortcode.', 'woocommerce-jetpack' ),
38
  __( 'Booster - Selector', 'woocommerce-jetpack' ),
39
  '<code>[wcj_selector selector_type="product_custom_visibility"]</code>'
40
  );
includes/class-wcj-product-input-fields.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Module - Product Input Fields
4
  *
5
- * @version 5.4.0
6
  * @author Pluggabl LLC.
7
  * @package Booster_For_WooCommerce/includes
8
  */
@@ -20,7 +20,7 @@ if ( ! class_exists( 'WCJ_Product_Input_Fields' ) ) :
20
  /**
21
  * Constructor.
22
  *
23
- * @version 5.4.0
24
  * @todo (maybe) option to change local and global fields order (i.e. output local fields before the global)
25
  */
26
  public function __construct() {
@@ -42,7 +42,7 @@ if ( ! class_exists( 'WCJ_Product_Input_Fields' ) ) :
42
  '</li>' .
43
  '<li>' . sprintf(
44
  /* translators: %s: translation added */
45
- __( '<strong>PHP code:</strong> by using %1$s function,<br> e.g.: %2$s', 'woocommerce-jetpack' ),
46
  '<code>do_shortcode()</code>',
47
  '<code>echo&nbsp;do_shortcode(&nbsp;\'[wcj_order_items_meta meta_key = "_wcj_product_input_fields_global_1]\'&nbsp;);</code>'
48
  ) .
2
  /**
3
  * Booster for WooCommerce - Module - Product Input Fields
4
  *
5
+ * @version 5.6.1
6
  * @author Pluggabl LLC.
7
  * @package Booster_For_WooCommerce/includes
8
  */
20
  /**
21
  * Constructor.
22
  *
23
+ * @version 5.6.1
24
  * @todo (maybe) option to change local and global fields order (i.e. output local fields before the global)
25
  */
26
  public function __construct() {
42
  '</li>' .
43
  '<li>' . sprintf(
44
  /* translators: %s: translation added */
45
+ __( '<strong>PHP code:</strong> by using %s function,<br> e.g.: %s', 'woocommerce-jetpack' ),
46
  '<code>do_shortcode()</code>',
47
  '<code>echo&nbsp;do_shortcode(&nbsp;\'[wcj_order_items_meta meta_key = "_wcj_product_input_fields_global_1]\'&nbsp;);</code>'
48
  ) .
includes/class-wcj-product-msrp.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Module - Product MSRP
4
  *
5
- * @version 5.2.0
6
  * @since 3.6.0
7
  * @author Pluggabl LLC.
8
  * @package Booster_For_WooCommerce/includes
@@ -211,7 +211,7 @@ if ( ! class_exists( 'WCJ_Product_MSRP' ) ) :
211
  /**
212
  * Display.
213
  *
214
- * @version 5.2.0
215
  * @since 3.6.0
216
  * @todo (maybe) multicurrency
217
  * @todo (feature) (maybe) variable product's msrp: add another option to enter MSRP directly for the whole variable product, instead of taking first variation's MSRP
@@ -268,7 +268,7 @@ if ( ! class_exists( 'WCJ_Product_MSRP' ) ) :
268
  }
269
 
270
  // WCJ Math.
271
- require_once wcj_plugin_path() . '/includes/lib/PHPMathParser/Math.php';
272
  $math = new WCJ_Math();
273
 
274
  // You Save Formula.
2
  /**
3
  * Booster for WooCommerce - Module - Product MSRP
4
  *
5
+ * @version 5.6.1
6
  * @since 3.6.0
7
  * @author Pluggabl LLC.
8
  * @package Booster_For_WooCommerce/includes
211
  /**
212
  * Display.
213
  *
214
+ * @version 5.6.1
215
  * @since 3.6.0
216
  * @todo (maybe) multicurrency
217
  * @todo (feature) (maybe) variable product's msrp: add another option to enter MSRP directly for the whole variable product, instead of taking first variation's MSRP
268
  }
269
 
270
  // WCJ Math.
271
+ require_once wcj_free_plugin_path() . '/includes/lib/PHPMathParser/Math.php';
272
  $math = new WCJ_Math();
273
 
274
  // You Save Formula.
includes/class-wcj-product-open-pricing.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Module - Product Open Pricing
4
  *
5
- * @version 5.5.9
6
  * @since 2.4.8
7
  * @author Pluggabl LLC.
8
  * @package Booster_For_WooCommerce/includes
@@ -494,7 +494,7 @@ if ( ! class_exists( 'WCJ_Product_Open_Pricing' ) ) :
494
  /**
495
  * Add_open_price_input_field_to_frontend.
496
  *
497
- * @version 4.2.0
498
  * @since 2.4.8
499
  */
500
  public function add_open_price_input_field_to_frontend() {
@@ -515,8 +515,8 @@ if ( ! class_exists( 'WCJ_Product_Open_Pricing' ) ) :
515
  $default_price_step = 1 / pow( 10, absint( wcj_get_option( 'woocommerce_price_num_decimals', 2 ) ) );
516
  $custom_attributes = '';
517
  $custom_attributes .= 'step="' . wcj_get_option( 'wcj_product_open_price_price_step', $default_price_step ) . '" ';
518
- $custom_attributes .= ( '' === $min_price || 'no' === wcj_get_option( 'wcj_product_open_price_enable_js_validation', 'no' ) ) ? 'min="0" ' : 'min="' . $min_price . '" ';
519
- $custom_attributes .= ( '' === $max_price || 'no' === wcj_get_option( 'wcj_product_open_price_enable_js_validation', 'no' ) ) ? '' : 'max="' . $max_price . '" ';
520
  $input_field = '<input '
521
  . 'type="number" '
522
  . 'class="text" '
2
  /**
3
  * Booster for WooCommerce - Module - Product Open Pricing
4
  *
5
+ * @version 5.6.1
6
  * @since 2.4.8
7
  * @author Pluggabl LLC.
8
  * @package Booster_For_WooCommerce/includes
494
  /**
495
  * Add_open_price_input_field_to_frontend.
496
  *
497
+ * @version 5.6.1
498
  * @since 2.4.8
499
  */
500
  public function add_open_price_input_field_to_frontend() {
515
  $default_price_step = 1 / pow( 10, absint( wcj_get_option( 'woocommerce_price_num_decimals', 2 ) ) );
516
  $custom_attributes = '';
517
  $custom_attributes .= 'step="' . wcj_get_option( 'wcj_product_open_price_price_step', $default_price_step ) . '" ';
518
+ $custom_attributes .= ( '' == $min_price || 'no' === wcj_get_option( 'wcj_product_open_price_enable_js_validation', 'no' ) ) ? 'min="0" ' : 'min="' . $min_price . '" ';
519
+ $custom_attributes .= ( '' == $max_price || 'no' === wcj_get_option( 'wcj_product_open_price_enable_js_validation', 'no' ) ) ? '' : 'max="' . $max_price . '" ';
520
  $input_field = '<input '
521
  . 'type="number" '
522
  . 'class="text" '
includes/class-wcj-product-price-by-formula.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Module - Product Price by Formula
4
  *
5
- * @version 5.5.9
6
  * @since 2.5.1
7
  * @author Pluggabl LLC.
8
  * @package Booster_For_WooCommerce/includes
@@ -21,7 +21,7 @@ if ( ! class_exists( 'WCJ_Product_Price_by_Formula' ) ) :
21
  /**
22
  * Constructor.
23
  *
24
- * @version 5.4.7
25
  * @since 2.5.1
26
  * @todo use WC math library instead of `PHPMathParser`
27
  */
@@ -35,7 +35,7 @@ if ( ! class_exists( 'WCJ_Product_Price_by_Formula' ) ) :
35
  parent::__construct();
36
 
37
  if ( $this->is_enabled() ) {
38
- require_once wcj_plugin_path() . '/includes/lib/PHPMathParser/Math.php';
39
 
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 );
2
  /**
3
  * Booster for WooCommerce - Module - Product Price by Formula
4
  *
5
+ * @version 5.6.1
6
  * @since 2.5.1
7
  * @author Pluggabl LLC.
8
  * @package Booster_For_WooCommerce/includes
21
  /**
22
  * Constructor.
23
  *
24
+ * @version 5.6.1
25
  * @since 2.5.1
26
  * @todo use WC math library instead of `PHPMathParser`
27
  */
35
  parent::__construct();
36
 
37
  if ( $this->is_enabled() ) {
38
+ require_once wcj_free_plugin_path() . '/includes/lib/PHPMathParser/Math.php';
39
 
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 );
includes/class-wcj-products-per-page.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Module - Products per Page
4
  *
5
- * @version 5.2.0
6
  * @since 2.6.0
7
  * @author Pluggabl LLC.
8
  * @package Booster_For_WooCommerce/includes
@@ -53,7 +53,7 @@ if ( ! class_exists( 'WCJ_Products_Per_Page' ) ) :
53
  /**
54
  * Add_products_per_page_form.
55
  *
56
- * @version 4.7.0
57
  * @since 2.5.3
58
  */
59
  public function add_products_per_page_form() {
@@ -93,7 +93,7 @@ if ( ! class_exists( 'WCJ_Products_Per_Page' ) ) :
93
  $html .= '<form action="' . esc_url( remove_query_arg( 'paged' ) ) . '" method="' . $form_method . '">';
94
  $_text = wcj_get_option(
95
  'wcj_products_per_page_text',
96
- __( 'Products <strong>%1$from% - %to%</strong>. Products on page %2$select_form%', 'woocommerce-jetpack' )
97
  );
98
  $html .= str_replace( array( '%from%', '%to%', '%total%', '%select_form%' ), array( $products_from, $products_to, $products_total, $select_form ), $_text );
99
  $html .= '</form>';
2
  /**
3
  * Booster for WooCommerce - Module - Products per Page
4
  *
5
+ * @version 5.6.1
6
  * @since 2.6.0
7
  * @author Pluggabl LLC.
8
  * @package Booster_For_WooCommerce/includes
53
  /**
54
  * Add_products_per_page_form.
55
  *
56
+ * @version 5.6.1
57
  * @since 2.5.3
58
  */
59
  public function add_products_per_page_form() {
93
  $html .= '<form action="' . esc_url( remove_query_arg( 'paged' ) ) . '" method="' . $form_method . '">';
94
  $_text = wcj_get_option(
95
  'wcj_products_per_page_text',
96
+ __( 'Products <strong>%from% - %to%</strong> from <strong>%total%</strong>. Products on page %select_form%', 'woocommerce-jetpack' )
97
  );
98
  $html .= str_replace( array( '%from%', '%to%', '%total%', '%select_form%' ), array( $products_from, $products_to, $products_total, $select_form ), $_text );
99
  $html .= '</form>';
includes/class-wcj-purchase-data.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Module - Cost of Goods (formerly Product Cost Price)
4
  *
5
- * @version 5.5.6
6
  * @since 2.2.0
7
  * @author Pluggabl LLC.
8
  * @package Booster_For_WooCommerce/includes
@@ -21,7 +21,7 @@ if ( ! class_exists( 'WCJ_Purchase_Data' ) ) :
21
  /**
22
  * Constructor.
23
  *
24
- * @version 5.4.0
25
  * @todo (maybe) pre-calculate profit for orders
26
  * @todo (maybe) "Apply costs to orders that do not have costs set"
27
  * @todo (maybe) "Apply costs to all orders, overriding previous costs"
@@ -46,7 +46,7 @@ if ( ! class_exists( 'WCJ_Purchase_Data' ) ) :
46
  '</li>' .
47
  '<li>' . sprintf(
48
  /* translators: %s: translation added */
49
- __( '<strong>PHP code:</strong> by using %1$s function, e.g.: %2$s', 'woocommerce-jetpack' ),
50
  '<code>do_shortcode()</code>',
51
  '<code>echo&nbsp;do_shortcode(&nbsp;\'[wcj_order_profit]\'&nbsp;);</code>'
52
  ) .
2
  /**
3
  * Booster for WooCommerce - Module - Cost of Goods (formerly Product Cost Price)
4
  *
5
+ * @version 5.6.1
6
  * @since 2.2.0
7
  * @author Pluggabl LLC.
8
  * @package Booster_For_WooCommerce/includes
21
  /**
22
  * Constructor.
23
  *
24
+ * @version 5.6.1
25
  * @todo (maybe) pre-calculate profit for orders
26
  * @todo (maybe) "Apply costs to orders that do not have costs set"
27
  * @todo (maybe) "Apply costs to all orders, overriding previous costs"
46
  '</li>' .
47
  '<li>' . sprintf(
48
  /* translators: %s: translation added */
49
+ __( '<strong>PHP code:</strong> by using %s function, e.g.: %s', 'woocommerce-jetpack' ),
50
  '<code>do_shortcode()</code>',
51
  '<code>echo&nbsp;do_shortcode(&nbsp;\'[wcj_order_profit]\'&nbsp;);</code>'
52
  ) .
includes/class-wcj-shipping-by-time.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Module - Shipping by Time
4
  *
5
- * @version 5.2.0
6
  * @since 4.0.0
7
  * @author Pluggabl LLC.
8
  * @package Booster_For_WooCommerce/includes
@@ -135,7 +135,7 @@ if ( ! class_exists( 'WCJ_Shipping_By_Time' ) ) :
135
  /**
136
  * Get_extra_option_desc.
137
  *
138
- * @version 4.0.0
139
  * @since 4.0.0
140
  * @param string $option_id defines the option_id.
141
  */
@@ -145,8 +145,8 @@ if ( ! class_exists( 'WCJ_Shipping_By_Time' ) ) :
145
  $parsed_time = $this->parse_time( $values );
146
  if ( $parsed_time ) {
147
  return '. ' . sprintf(
148
- /* translators: %1$s: translators Added */
149
- __( 'According to current time, your time input will be parsed as: from %1$s to %2$s.', 'woocommerce-jetpack' ),
150
  '<code>' . gmdate( 'Y-m-d H:i:s', $parsed_time['time_from'] ) . '</code>',
151
  '<code>' . gmdate( 'Y-m-d H:i:s', $parsed_time['time_to'] ) . '</code>'
152
  );
2
  /**
3
  * Booster for WooCommerce - Module - Shipping by Time
4
  *
5
+ * @version 5.6.1
6
  * @since 4.0.0
7
  * @author Pluggabl LLC.
8
  * @package Booster_For_WooCommerce/includes
135
  /**
136
  * Get_extra_option_desc.
137
  *
138
+ * @version 5.6.1
139
  * @since 4.0.0
140
  * @param string $option_id defines the option_id.
141
  */
145
  $parsed_time = $this->parse_time( $values );
146
  if ( $parsed_time ) {
147
  return '. ' . sprintf(
148
+ /* translators: %s: translators Added */
149
+ __( 'According to current time, your time input will be parsed as: from %s to %s.', 'woocommerce-jetpack' ),
150
  '<code>' . gmdate( 'Y-m-d H:i:s', $parsed_time['time_from'] ) . '</code>',
151
  '<code>' . gmdate( 'Y-m-d H:i:s', $parsed_time['time_to'] ) . '</code>'
152
  );
includes/class-wcj-sku.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Module - SKU
4
  *
5
- * @version 5.5.6
6
  * @author Pluggabl LLC.
7
  * @package Booster_For_WooCommerce/includes
8
  */
@@ -104,7 +104,7 @@ if ( ! class_exists( 'WCJ_SKU' ) ) :
104
  /**
105
  * Load_hashids_lib.
106
  *
107
- * @version 4.7.0
108
  * @since 4.7.0
109
  *
110
  * @return Hashids\Hashids
@@ -117,7 +117,7 @@ if ( ! class_exists( 'WCJ_SKU' ) ) :
117
  return;
118
  }
119
  if ( empty( $this->hashids ) ) {
120
- require_once wcj_plugin_path() . '/includes/lib/hashids/src/Hashids.php';
121
  $sku_format = wcj_get_option( 'wcj_sku_hashids_sku_format', 'letters_and_numbers' );
122
  $characters_case = wcj_get_option( 'wcj_sku_characters_case', 'original' );
123
  $letters = 'original' === $characters_case ? 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ' : ( 'lower' === $characters_case ? 'abcdefghijklmnopqrstuvwxyz' : 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' );
2
  /**
3
  * Booster for WooCommerce - Module - SKU
4
  *
5
+ * @version 5.6.1
6
  * @author Pluggabl LLC.
7
  * @package Booster_For_WooCommerce/includes
8
  */
104
  /**
105
  * Load_hashids_lib.
106
  *
107
+ * @version 5.6.1
108
  * @since 4.7.0
109
  *
110
  * @return Hashids\Hashids
117
  return;
118
  }
119
  if ( empty( $this->hashids ) ) {
120
+ require_once wcj_free_plugin_path() . '/includes/lib/hashids/src/Hashids.php';
121
  $sku_format = wcj_get_option( 'wcj_sku_hashids_sku_format', 'letters_and_numbers' );
122
  $characters_case = wcj_get_option( 'wcj_sku_characters_case', 'original' );
123
  $letters = 'original' === $characters_case ? 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ' : ( 'lower' === $characters_case ? 'abcdefghijklmnopqrstuvwxyz' : 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' );
includes/class-wcj-tax-display.php CHANGED
@@ -86,7 +86,7 @@ if ( ! class_exists( 'WCJ_Tax_Display' ) ) :
86
  return $value;
87
  }
88
  $session_value = wcj_session_get( 'wcj_toggle_tax_display' );
89
- if ( '' !== ( $session_value ) ) {
90
  return $session_value;
91
  }
92
  return $value;
86
  return $value;
87
  }
88
  $session_value = wcj_session_get( 'wcj_toggle_tax_display' );
89
+ if ( '' !== ( $session_value ) && NULL !== ( $session_value ) ) {
90
  return $session_value;
91
  }
92
  return $value;
includes/class-wcj-track-users.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Module - User Tracking
4
  *
5
- * @version 5.5.9
6
  * @since 3.1.3
7
  * @author Pluggabl LLC.
8
  * @package Booster_For_WooCommerce/includes
@@ -321,7 +321,7 @@ if ( ! class_exists( 'WCJ_User_Tracking' ) ) :
321
  /**
322
  * Track_users_by_country_dashboard_widget.
323
  *
324
- * @version 5.5.9
325
  * @since 2.9.1
326
  * @todo (maybe) display all info (IP, referer etc.) on country click
327
  * @todo (maybe) display stats by day and/or month
@@ -370,8 +370,8 @@ if ( ! class_exists( 'WCJ_User_Tracking' ) ) :
370
  $_time = wcj_get_option( 'wcj_track_users_cron_time_schedule', '' );
371
  $cron_next_schedule = ( '' !== ( $_time ) ? gmdate( 'Y-m-d H:i:s', $_time ) : '-' );
372
  echo '<p>' .
373
- sprintf( wp_kses_post( 'Stats generated at %1$s. Next update is scheduled at %2$s.', 'woocommerce-jetpack' ), wp_kses_post( $cron_last_run ), wp_kses_post( $cron_next_schedule ) ) . ' ' .
374
- '<a href="' . esc_url( add_query_arg( 'wcj_track_users_update_county_stats', '1' ) ) . '">' . wp_kses_post( 'Update now', 'woocommerce-jetpack' ) . '</a>.' .
375
  '</p>';
376
  }
377
 
2
  /**
3
  * Booster for WooCommerce - Module - User Tracking
4
  *
5
+ * @version 5.6.1
6
  * @since 3.1.3
7
  * @author Pluggabl LLC.
8
  * @package Booster_For_WooCommerce/includes
321
  /**
322
  * Track_users_by_country_dashboard_widget.
323
  *
324
+ * @version 5.6.1
325
  * @since 2.9.1
326
  * @todo (maybe) display all info (IP, referer etc.) on country click
327
  * @todo (maybe) display stats by day and/or month
370
  $_time = wcj_get_option( 'wcj_track_users_cron_time_schedule', '' );
371
  $cron_next_schedule = ( '' !== ( $_time ) ? gmdate( 'Y-m-d H:i:s', $_time ) : '-' );
372
  echo '<p>' .
373
+ sprintf( __( 'Stats generated at %s. Next update is scheduled at %s.', 'woocommerce-jetpack' ), $cron_last_run, $cron_next_schedule ) . ' ' .
374
+ '<a href="' . esc_url( add_query_arg( 'wcj_track_users_update_county_stats', '1' ) ) . '">' . __( 'Update now', 'woocommerce-jetpack' ) . '</a>.' .
375
  '</p>';
376
  }
377
 
includes/class-wcj-wpml.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Module - WPML
4
  *
5
- * @version 5.1.0
6
  * @since 2.2.0
7
  * @author Pluggabl LLC.
8
  * @package Booster_For_WooCommerce/includes
@@ -208,11 +208,11 @@ if ( ! class_exists( 'WCJ_WPML' ) ) :
208
  /**
209
  * Create_wpml_xml_file.
210
  *
211
- * @version 3.8.0
212
  * @see https://wpml.org/documentation/support/language-configuration-files/#admin-texts
213
  */
214
  public function create_wpml_xml_file() {
215
- $file_path = wcj_plugin_path() . '/wpml-config.xml';
216
  $handle = fopen( $file_path, 'w' );
217
  if ( false !== ( $handle ) ) {
218
  fwrite( $handle, '<wpml-config>' . PHP_EOL );
2
  /**
3
  * Booster for WooCommerce - Module - WPML
4
  *
5
+ * @version 5.6.1
6
  * @since 2.2.0
7
  * @author Pluggabl LLC.
8
  * @package Booster_For_WooCommerce/includes
208
  /**
209
  * Create_wpml_xml_file.
210
  *
211
+ * @version 5.6.1
212
  * @see https://wpml.org/documentation/support/language-configuration-files/#admin-texts
213
  */
214
  public function create_wpml_xml_file() {
215
+ $file_path = wcj_free_plugin_path() . '/wpml-config.xml';
216
  $handle = fopen( $file_path, 'w' );
217
  if ( false !== ( $handle ) ) {
218
  fwrite( $handle, '<wpml-config>' . PHP_EOL );
includes/classes/class-wcj-module-product-by-condition.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Module - Product by Condition
4
  *
5
- * @version 5.1.1
6
  * @since 3.6.0
7
  * @author Pluggabl LLC.
8
  * @package Booster_For_WooCommerce/classes
@@ -475,22 +475,22 @@ if ( ! class_exists( 'WCJ_Module_Product_By_Condition' ) ) :
475
  /**
476
  * Add_settings_from_file.
477
  *
478
- * @version 3.6.0
479
  * @since 3.6.0
480
  * @param mixed $settings get settings.
481
  */
482
  public function add_settings_from_file( $settings ) {
483
- return $this->maybe_fix_settings( require wcj_plugin_path() . '/includes/settings/wcj-settings-product-by-condition.php' );
484
  }
485
 
486
  /**
487
  * Met_meta_box_options.
488
  *
489
- * @version 3.6.0
490
  * @since 3.6.0
491
  */
492
  public function get_meta_box_options() {
493
- $filename = wcj_plugin_path() . '/includes/settings/meta-box/wcj-settings-meta-box-product-by-condition.php';
494
  return ( file_exists( $filename ) ? require $filename : array() );
495
  }
496
 
2
  /**
3
  * Booster for WooCommerce - Module - Product by Condition
4
  *
5
+ * @version 5.6.1
6
  * @since 3.6.0
7
  * @author Pluggabl LLC.
8
  * @package Booster_For_WooCommerce/classes
475
  /**
476
  * Add_settings_from_file.
477
  *
478
+ * @version 5.6.1
479
  * @since 3.6.0
480
  * @param mixed $settings get settings.
481
  */
482
  public function add_settings_from_file( $settings ) {
483
+ return $this->maybe_fix_settings( require wcj_free_plugin_path() . '/includes/settings/wcj-settings-product-by-condition.php' );
484
  }
485
 
486
  /**
487
  * Met_meta_box_options.
488
  *
489
+ * @version 5.6.1
490
  * @since 3.6.0
491
  */
492
  public function get_meta_box_options() {
493
+ $filename = wcj_free_plugin_path() . '/includes/settings/meta-box/wcj-settings-meta-box-product-by-condition.php';
494
  return ( file_exists( $filename ) ? require $filename : array() );
495
  }
496
 
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 5.3.5
6
  * @since 3.2.0
7
  * @author Pluggabl LLC.
8
  * @package Booster_For_WooCommerce/classes
@@ -97,12 +97,12 @@ if ( ! class_exists( 'WCJ_Module_Shipping_By_Condition' ) ) :
97
  /**
98
  * Add_settings_from_file.
99
  *
100
- * @version 3.2.1
101
  * @since 3.2.1
102
  * @param mixed $settings get settings.
103
  */
104
  public function add_settings_from_file( $settings ) {
105
- return $this->maybe_fix_settings( require wcj_plugin_path() . '/includes/settings/wcj-settings-shipping-by-condition.php' );
106
  }
107
 
108
  /**
2
  /**
3
  * Booster for WooCommerce - Module - Shipping by Condition
4
  *
5
+ * @version 5.6.1
6
  * @since 3.2.0
7
  * @author Pluggabl LLC.
8
  * @package Booster_For_WooCommerce/classes
97
  /**
98
  * Add_settings_from_file.
99
  *
100
+ * @version 5.6.1
101
  * @since 3.2.1
102
  * @param mixed $settings get settings.
103
  */
104
  public function add_settings_from_file( $settings ) {
105
+ return $this->maybe_fix_settings( require wcj_free_plugin_path() . '/includes/settings/wcj-settings-shipping-by-condition.php' );
106
  }
107
 
108
  /**
includes/classes/class-wcj-module.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce Module
4
  *
5
- * @version 5.5.9
6
  * @since 2.2.0
7
  * @author Pluggabl LLC.
8
  * @todo [dev] maybe should be `abstract` ?
@@ -300,16 +300,16 @@ if ( ! class_exists( 'WCJ_Module' ) ) :
300
  /**
301
  * Handle_deprecated_options.
302
  *
303
- * @version 3.8.0
304
  * @since 3.8.0
305
  */
306
  public function handle_deprecated_options() {
307
  $deprecated_options = $this->get_deprecated_options();
308
- $old_value = wcj_get_option( $old_option, null );
309
  if ( $deprecated_options ) {
310
  foreach ( $deprecated_options as $new_option => $old_options ) {
311
  $new_value = wcj_get_option( $new_option, array() );
312
  foreach ( $old_options as $new_key => $old_option ) {
 
313
  if ( null !== ( $old_value ) ) {
314
  $new_value[ $new_key ] = $old_value;
315
  delete_option( $old_option );
@@ -390,11 +390,11 @@ if ( ! class_exists( 'WCJ_Module' ) ) :
390
  /**
391
  * Get_meta_box_options.
392
  *
393
- * @version 2.8.0
394
  * @since 2.8.0
395
  */
396
  public function get_meta_box_options() {
397
- $filename = wcj_plugin_path() . '/includes/settings/meta-box/wcj-settings-meta-box-' . str_replace( '_', '-', $this->id ) . '.php';
398
  return ( file_exists( $filename ) ? require $filename : array() );
399
  }
400
 
@@ -435,12 +435,12 @@ if ( ! class_exists( 'WCJ_Module' ) ) :
435
  /**
436
  * Add_settings_from_file.
437
  *
438
- * @version 3.2.1
439
  * @since 2.8.0
440
  * @param Array $settings get settings.
441
  */
442
  public function add_settings_from_file( $settings ) {
443
- $filename = wcj_plugin_path() . '/includes/settings/wcj-settings-' . str_replace( '_', '-', $this->id ) . '.php';
444
  $settings = ( file_exists( $filename ) ? require $filename : $settings );
445
  return $this->maybe_fix_settings( $settings );
446
  }
@@ -595,7 +595,7 @@ if ( ! class_exists( 'WCJ_Module' ) ) :
595
  /**
596
  * Handle_hide_on_free_parameter.
597
  *
598
- * @version 5.3.6
599
  * @since 5.3.6
600
  *
601
  * @param Array $settings Get settings.
@@ -603,7 +603,7 @@ if ( ! class_exists( 'WCJ_Module' ) ) :
603
  * @return array
604
  */
605
  public function handle_hide_on_free_parameter( $settings ) {
606
- if ( 'woocommerce-jetpack.php' !== basename( WCJ_PLUGIN_FILE ) ) {
607
  return $settings;
608
  }
609
  $settings = wp_list_filter( $settings, array( 'hide_on_free' => true ), 'NOT' );
@@ -803,12 +803,12 @@ if ( ! class_exists( 'WCJ_Module' ) ) :
803
  /**
804
  * Get_cat_by_section.
805
  *
806
- * @version 2.2.3
807
  * @since 2.2.3
808
  * @param Array $section Get sections.
809
  */
810
  public function get_cat_by_section( $section ) {
811
- $cats = include wcj_plugin_path() . '/includes/admin/wcj-modules-cats.php';
812
  foreach ( $cats as $id => $label_info ) {
813
  if ( ( ! empty( $label_info['all_cat_ids'] ) ) &&
814
  ( is_array( $label_info['all_cat_ids'] ) ) &&
2
  /**
3
  * Booster for WooCommerce Module
4
  *
5
+ * @version 5.6.1
6
  * @since 2.2.0
7
  * @author Pluggabl LLC.
8
  * @todo [dev] maybe should be `abstract` ?
300
  /**
301
  * Handle_deprecated_options.
302
  *
303
+ * @version 5.6.1
304
  * @since 3.8.0
305
  */
306
  public function handle_deprecated_options() {
307
  $deprecated_options = $this->get_deprecated_options();
 
308
  if ( $deprecated_options ) {
309
  foreach ( $deprecated_options as $new_option => $old_options ) {
310
  $new_value = wcj_get_option( $new_option, array() );
311
  foreach ( $old_options as $new_key => $old_option ) {
312
+ $old_value = wcj_get_option( $old_option, null );
313
  if ( null !== ( $old_value ) ) {
314
  $new_value[ $new_key ] = $old_value;
315
  delete_option( $old_option );
390
  /**
391
  * Get_meta_box_options.
392
  *
393
+ * @version 5.6.1
394
  * @since 2.8.0
395
  */
396
  public function get_meta_box_options() {
397
+ $filename = wcj_free_plugin_path() . '/includes/settings/meta-box/wcj-settings-meta-box-' . str_replace( '_', '-', $this->id ) . '.php';
398
  return ( file_exists( $filename ) ? require $filename : array() );
399
  }
400
 
435
  /**
436
  * Add_settings_from_file.
437
  *
438
+ * @version 5.6.1
439
  * @since 2.8.0
440
  * @param Array $settings get settings.
441
  */
442
  public function add_settings_from_file( $settings ) {
443
+ $filename = wcj_free_plugin_path() . '/includes/settings/wcj-settings-' . str_replace( '_', '-', $this->id ) . '.php';
444
  $settings = ( file_exists( $filename ) ? require $filename : $settings );
445
  return $this->maybe_fix_settings( $settings );
446
  }
595
  /**
596
  * Handle_hide_on_free_parameter.
597
  *
598
+ * @version 5.6.1
599
  * @since 5.3.6
600
  *
601
  * @param Array $settings Get settings.
603
  * @return array
604
  */
605
  public function handle_hide_on_free_parameter( $settings ) {
606
+ if ( 'woocommerce-jetpack.php' !== basename( WCJ_FREE_PLUGIN_FILE ) ) {
607
  return $settings;
608
  }
609
  $settings = wp_list_filter( $settings, array( 'hide_on_free' => true ), 'NOT' );
803
  /**
804
  * Get_cat_by_section.
805
  *
806
+ * @version 5.6.1
807
  * @since 2.2.3
808
  * @param Array $section Get sections.
809
  */
810
  public function get_cat_by_section( $section ) {
811
+ $cats = include wcj_free_plugin_path() . '/includes/admin/wcj-modules-cats.php';
812
  foreach ( $cats as $id => $label_info ) {
813
  if ( ( ! empty( $label_info['all_cat_ids'] ) ) &&
814
  ( is_array( $label_info['all_cat_ids'] ) ) &&
includes/classes/class-wcj-pdf-invoice.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce PDF Invoice
4
  *
5
- * @version 5.4.5
6
  * @author Pluggabl LLC.
7
  * @package Booster_For_WooCommerce/classes
8
  */
@@ -36,7 +36,7 @@ if ( ! class_exists( 'WCJ_PDF_Invoice' ) ) :
36
  /**
37
  * Prepare_pdf.
38
  *
39
- * @version 5.4.5
40
  * @todo [dev] check `addTTFfont()`
41
  * @todo [dev] maybe `$pdf->SetAuthor( 'Booster for WooCommerce' )`
42
  * @todo [dev] maybe `$pdf->setLanguageArray( $l )`
@@ -57,7 +57,7 @@ if ( ! class_exists( 'WCJ_PDF_Invoice' ) ) :
57
  }
58
 
59
  // Create new PDF document.
60
- require_once wcj_plugin_path() . '/includes/classes/class-wcj-tcpdf.php';
61
  $pdf = new WCJ_TCPDF(
62
  get_option( 'wcj_invoicing_' . $invoice_type . '_page_orientation', 'P' ),
63
  PDF_UNIT,
2
  /**
3
  * Booster for WooCommerce PDF Invoice
4
  *
5
+ * @version 5.6.1
6
  * @author Pluggabl LLC.
7
  * @package Booster_For_WooCommerce/classes
8
  */
36
  /**
37
  * Prepare_pdf.
38
  *
39
+ * @version 5.6.1
40
  * @todo [dev] check `addTTFfont()`
41
  * @todo [dev] maybe `$pdf->SetAuthor( 'Booster for WooCommerce' )`
42
  * @todo [dev] maybe `$pdf->setLanguageArray( $l )`
57
  }
58
 
59
  // Create new PDF document.
60
+ require_once wcj_free_plugin_path() . '/includes/classes/class-wcj-tcpdf.php';
61
  $pdf = new WCJ_TCPDF(
62
  get_option( 'wcj_invoicing_' . $invoice_type . '_page_orientation', 'P' ),
63
  PDF_UNIT,
includes/classes/class-wcj-tcpdf.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - TCPDF
4
  *
5
- * @version 4.3.0
6
  * @author Pluggabl LLC.
7
  * @todo (maybe) `Header()`
8
  * @package Booster_For_WooCommerce/classes
@@ -16,11 +16,11 @@ if ( ! class_exists( 'WCJ_TCPDF' ) ) :
16
 
17
  // Enable custom TCPDF config.
18
  define( 'K_TCPDF_EXTERNAL_CONFIG', true );
19
- require_once wcj_plugin_path() . '/includes/lib/tcpdf_config.php';
20
 
21
  // Include TCPDF library.
22
  if ( ! class_exists( 'TCPDF' ) ) {
23
- require_once wcj_plugin_path() . '/includes/lib/tcpdf/tcpdf.php';
24
  }
25
  /**
26
  * WCJ_TCPDF.
2
  /**
3
  * Booster for WooCommerce - TCPDF
4
  *
5
+ * @version 5.6.1
6
  * @author Pluggabl LLC.
7
  * @todo (maybe) `Header()`
8
  * @package Booster_For_WooCommerce/classes
16
 
17
  // Enable custom TCPDF config.
18
  define( 'K_TCPDF_EXTERNAL_CONFIG', true );
19
+ require_once wcj_free_plugin_path() . '/includes/lib/tcpdf_config.php';
20
 
21
  // Include TCPDF library.
22
  if ( ! class_exists( 'TCPDF' ) ) {
23
+ require_once wcj_free_plugin_path() . '/includes/lib/tcpdf/tcpdf.php';
24
  }
25
  /**
26
  * WCJ_TCPDF.
includes/core/class-wcj-admin.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Core - Admin
4
  *
5
- * @version 5.3.0
6
  * @since 3.2.4
7
  * @author Pluggabl LLC.
8
  * @package Booster_For_WooCommerce/core
@@ -25,7 +25,7 @@ if ( ! class_exists( 'WCJ_Admin' ) ) :
25
  /**
26
  * Constructor.
27
  *
28
- * @version 5.3.0
29
  * @since 3.2.4
30
  */
31
  public function __construct() {
@@ -34,10 +34,10 @@ if ( ! class_exists( 'WCJ_Admin' ) ) :
34
 
35
  if ( apply_filters( 'wcj_can_create_admin_interface', true ) ) {
36
  add_filter( 'woocommerce_get_settings_pages', array( $this, 'add_wcj_settings_tab' ), 1 );
37
- add_filter( 'plugin_action_links_' . plugin_basename( WCJ_PLUGIN_FILE ), array( $this, 'action_links' ) );
38
  add_action( 'admin_menu', array( $this, 'booster_menu' ), 100 );
39
  add_filter( 'admin_footer_text', array( $this, 'admin_footer_text' ), 2 );
40
- if ( 'woocommerce-jetpack.php' === basename( WCJ_PLUGIN_FILE ) ) {
41
  add_action( 'admin_notices', array( $this, 'check_plus_version' ) );
42
  }
43
  }
@@ -130,7 +130,7 @@ if ( ! class_exists( 'WCJ_Admin' ) ) :
130
  /**
131
  * Show action links on the plugin screen
132
  *
133
- * @version 5.2.0
134
  * @param mixed $links get links.
135
  * @return array
136
  */
@@ -139,7 +139,7 @@ if ( ! class_exists( 'WCJ_Admin' ) ) :
139
  '<a href="' . admin_url( 'admin.php?page=wc-settings&tab=jetpack' ) . '">' . __( 'Settings', 'woocommerce' ) . '</a>',
140
  '<a href="' . esc_url( 'https://booster.io/' ) . '">' . __( 'Docs', 'woocommerce-jetpack' ) . '</a>',
141
  );
142
- if ( 'woocommerce-jetpack.php' === basename( WCJ_PLUGIN_FILE ) ) {
143
  $custom_links[] = '<a target="_blank" href="' . esc_url( 'https://booster.io/plus/' ) . '">' . __( 'Unlock all', 'woocommerce-jetpack' ) . '</a>';
144
  } else {
145
  $custom_links[] = '<a target="_blank" href="' . esc_url( 'https://booster.io/my-account/booster-contact/' ) . '">' . __( 'Support', 'woocommerce-jetpack' ) . '</a>';
@@ -150,11 +150,11 @@ if ( ! class_exists( 'WCJ_Admin' ) ) :
150
  /**
151
  * Add Jetpack settings tab to WooCommerce settings.
152
  *
153
- * @version 3.2.4
154
  * @param array $settings get module settings.
155
  */
156
  public function add_wcj_settings_tab( $settings ) {
157
- $_settings = include WCJ_PLUGIN_PATH . '/includes/admin/class-wc-settings-jetpack.php';
158
  $_settings->add_module_statuses( w_c_j()->module_statuses );
159
  $settings[] = $_settings;
160
  return $settings;
2
  /**
3
  * Booster for WooCommerce - Core - Admin
4
  *
5
+ * @version 5.6.1
6
  * @since 3.2.4
7
  * @author Pluggabl LLC.
8
  * @package Booster_For_WooCommerce/core
25
  /**
26
  * Constructor.
27
  *
28
+ * @version 5.6.1
29
  * @since 3.2.4
30
  */
31
  public function __construct() {
34
 
35
  if ( apply_filters( 'wcj_can_create_admin_interface', true ) ) {
36
  add_filter( 'woocommerce_get_settings_pages', array( $this, 'add_wcj_settings_tab' ), 1 );
37
+ add_filter( 'plugin_action_links_' . plugin_basename( WCJ_FREE_PLUGIN_FILE ), array( $this, 'action_links' ) );
38
  add_action( 'admin_menu', array( $this, 'booster_menu' ), 100 );
39
  add_filter( 'admin_footer_text', array( $this, 'admin_footer_text' ), 2 );
40
+ if ( 'woocommerce-jetpack.php' === basename( WCJ_FREE_PLUGIN_FILE ) ) {
41
  add_action( 'admin_notices', array( $this, 'check_plus_version' ) );
42
  }
43
  }
130
  /**
131
  * Show action links on the plugin screen
132
  *
133
+ * @version 5.6.1
134
  * @param mixed $links get links.
135
  * @return array
136
  */
139
  '<a href="' . admin_url( 'admin.php?page=wc-settings&tab=jetpack' ) . '">' . __( 'Settings', 'woocommerce' ) . '</a>',
140
  '<a href="' . esc_url( 'https://booster.io/' ) . '">' . __( 'Docs', 'woocommerce-jetpack' ) . '</a>',
141
  );
142
+ if ( 'woocommerce-jetpack.php' === basename( WCJ_FREE_PLUGIN_FILE ) ) {
143
  $custom_links[] = '<a target="_blank" href="' . esc_url( 'https://booster.io/plus/' ) . '">' . __( 'Unlock all', 'woocommerce-jetpack' ) . '</a>';
144
  } else {
145
  $custom_links[] = '<a target="_blank" href="' . esc_url( 'https://booster.io/my-account/booster-contact/' ) . '">' . __( 'Support', 'woocommerce-jetpack' ) . '</a>';
150
  /**
151
  * Add Jetpack settings tab to WooCommerce settings.
152
  *
153
+ * @version 5.6.1
154
  * @param array $settings get module settings.
155
  */
156
  public function add_wcj_settings_tab( $settings ) {
157
+ $_settings = include WCJ_FREE_PLUGIN_PATH . '/includes/admin/class-wc-settings-jetpack.php';
158
  $_settings->add_module_statuses( w_c_j()->module_statuses );
159
  $settings[] = $_settings;
160
  return $settings;
includes/core/wcj-constants.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce Constants
4
  *
5
- * @version 3.8.0
6
  * @since 2.7.0
7
  * @author Pluggabl LLC.
8
  * @package Booster_For_WooCommerce/core
@@ -107,9 +107,9 @@ if ( ! defined( 'WCJ_VERSION_OPTION' ) ) {
107
  /**
108
  * Booster version option name.
109
  *
110
- * @version 3.3.0
111
  * @since 3.3.0
112
  * @todo (maybe) option should have `wcj_` prefix (however it will be deleted during "Reset", and "Booster was updated to v..." message will show up)
113
  */
114
- define( 'WCJ_VERSION_OPTION', ( 'woocommerce-jetpack.php' === basename( WCJ_PLUGIN_FILE ) ? 'booster_for_woocommerce_version' : 'booster_plus_for_woocommerce_version' ) );
115
  }
2
  /**
3
  * Booster for WooCommerce Constants
4
  *
5
+ * @version 5.6.1
6
  * @since 2.7.0
7
  * @author Pluggabl LLC.
8
  * @package Booster_For_WooCommerce/core
107
  /**
108
  * Booster version option name.
109
  *
110
+ * @version 5.6.1
111
  * @since 3.3.0
112
  * @todo (maybe) option should have `wcj_` prefix (however it will be deleted during "Reset", and "Booster was updated to v..." message will show up)
113
  */
114
+ define( 'WCJ_VERSION_OPTION', ( 'woocommerce-jetpack.php' === basename( WCJ_FREE_PLUGIN_FILE ) ? 'booster_for_woocommerce_version' : 'booster_plus_for_woocommerce_version' ) );
115
  }
includes/core/wcj-functions.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Functions
4
  *
5
- * @version 3.9.0
6
  * @since 3.2.4
7
  * @author Pluggabl LLC.
8
  * @package Booster_For_WooCommerce/core
@@ -36,7 +36,7 @@ $wcj_function_files = array(
36
  'wcj-functions-reports.php',
37
  );
38
 
39
- $wcj_functions_dir = WCJ_PLUGIN_PATH . '/includes/functions/';
40
  foreach ( $wcj_function_files as $wcj_function_file ) {
41
  include_once $wcj_functions_dir . $wcj_function_file;
42
  }
2
  /**
3
  * Booster for WooCommerce - Functions
4
  *
5
+ * @version 5.6.1
6
  * @since 3.2.4
7
  * @author Pluggabl LLC.
8
  * @package Booster_For_WooCommerce/core
36
  'wcj-functions-reports.php',
37
  );
38
 
39
+ $wcj_functions_dir = WCJ_FREE_PLUGIN_PATH . '/includes/functions/';
40
  foreach ( $wcj_function_files as $wcj_function_file ) {
41
  include_once $wcj_functions_dir . $wcj_function_file;
42
  }
includes/core/wcj-loader.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Core - Loader
4
  *
5
- * @version 5.3.1
6
  * @since 3.2.4
7
  * @author Pluggabl LLC.
8
  * @package Booster_For_WooCommerce/core
@@ -17,24 +17,24 @@ if ( 'yes' === wcj_get_option( 'wcj_debug_tools_enabled', 'no' ) && 'yes' === wc
17
  error_reporting( E_ALL );
18
  }
19
 
20
- if ( ! defined( 'WCJ_PLUGIN_PATH' ) ) {
21
  /**
22
- * WCJ_PLUGIN_PATH.
23
  *
24
- * @version 3.2.4
25
  * @since 3.2.4
26
  */
27
- define( 'WCJ_PLUGIN_PATH', untrailingslashit( realpath( plugin_dir_path( WCJ_PLUGIN_FILE ) ) ) );
28
  }
29
 
30
  // Set up localisation.
31
  if ( 'no' === wcj_get_option( 'wcj_load_modules_on_init', 'no' ) ) {
32
- load_plugin_textdomain( 'woocommerce-jetpack', false, dirname( plugin_basename( WCJ_PLUGIN_FILE ) ) . '/langs/' );
33
  } else {
34
  add_action(
35
  'init',
36
  function () {
37
- load_plugin_textdomain( 'woocommerce-jetpack', false, dirname( plugin_basename( WCJ_PLUGIN_FILE ) ) . '/langs/' );
38
  },
39
  9
40
  );
@@ -49,33 +49,33 @@ require_once 'wcj-constants.php';
49
  require_once 'wcj-functions.php';
50
 
51
  // Classes.
52
- require_once WCJ_PLUGIN_PATH . '/includes/classes/class-wcj-module.php';
53
- require_once WCJ_PLUGIN_PATH . '/includes/classes/class-wcj-module-product-by-condition.php';
54
- require_once WCJ_PLUGIN_PATH . '/includes/classes/class-wcj-module-shipping-by-condition.php';
55
- require_once WCJ_PLUGIN_PATH . '/includes/classes/class-wcj-invoice.php';
56
- require_once WCJ_PLUGIN_PATH . '/includes/classes/class-wcj-pdf-invoice.php';
57
- require_once WCJ_PLUGIN_PATH . '/includes/admin/class-wcj-welcome.php';
58
 
59
  // Mini Plugin.
60
- require_once WCJ_PLUGIN_PATH . '/includes/mini-plugin/wcj-mini-plugin.php';
61
 
62
  // Plus.
63
- if ( 'booster-plus-for-woocommerce.php' === basename( WCJ_PLUGIN_FILE ) && apply_filters( 'wcj_full_pack', true ) ) {
64
- require_once WCJ_PLUGIN_PATH . '/includes/plus/class-wcj-plus.php';
65
  }
66
 
67
  // Tools.
68
- require_once WCJ_PLUGIN_PATH . '/includes/admin/class-wcj-tools.php';
69
 
70
  // Shortcodes.
71
  require_once 'wcj-shortcodes.php';
72
 
73
  // Widgets.
74
- require_once WCJ_PLUGIN_PATH . '/includes/classes/class-wcj-widget.php';
75
- require_once WCJ_PLUGIN_PATH . '/includes/widgets/class-wcj-widget-multicurrency.php';
76
- require_once WCJ_PLUGIN_PATH . '/includes/widgets/class-wcj-widget-country-switcher.php';
77
- require_once WCJ_PLUGIN_PATH . '/includes/widgets/class-wcj-widget-left-to-free-shipping.php';
78
- require_once WCJ_PLUGIN_PATH . '/includes/widgets/class-wcj-widget-selector.php';
79
 
80
  // Scripts.
81
  require_once 'class-wcj-scripts.php';
@@ -91,7 +91,7 @@ if ( 'no' === wcj_get_option( 'wcj_load_modules_on_init', 'no' ) ) {
91
  require_once 'class-wcj-admin.php';
92
 
93
  // Settings manager.
94
- require_once WCJ_PLUGIN_PATH . '/includes/admin/class-wcj-settings-manager.php';
95
 
96
  // Loaded action.
97
  do_action( 'wcj_loaded' );
@@ -108,7 +108,7 @@ if ( 'no' === wcj_get_option( 'wcj_load_modules_on_init', 'no' ) ) {
108
  require_once 'class-wcj-admin.php';
109
 
110
  // Settings manager.
111
- require_once WCJ_PLUGIN_PATH . '/includes/admin/class-wcj-settings-manager.php';
112
 
113
  // Loaded action.
114
  do_action( 'wcj_loaded' );
2
  /**
3
  * Booster for WooCommerce - Core - Loader
4
  *
5
+ * @version 5.6.1
6
  * @since 3.2.4
7
  * @author Pluggabl LLC.
8
  * @package Booster_For_WooCommerce/core
17
  error_reporting( E_ALL );
18
  }
19
 
20
+ if ( ! defined( 'WCJ_FREE_PLUGIN_PATH' ) ) {
21
  /**
22
+ * WCJ_FREE_PLUGIN_PATH.
23
  *
24
+ * @version 5.6.1
25
  * @since 3.2.4
26
  */
27
+ define( 'WCJ_FREE_PLUGIN_PATH', untrailingslashit( realpath( plugin_dir_path( WCJ_FREE_PLUGIN_FILE ) ) ) );
28
  }
29
 
30
  // Set up localisation.
31
  if ( 'no' === wcj_get_option( 'wcj_load_modules_on_init', 'no' ) ) {
32
+ load_plugin_textdomain( 'woocommerce-jetpack', false, dirname( plugin_basename( WCJ_FREE_PLUGIN_FILE ) ) . '/langs/' );
33
  } else {
34
  add_action(
35
  'init',
36
  function () {
37
+ load_plugin_textdomain( 'woocommerce-jetpack', false, dirname( plugin_basename( WCJ_FREE_PLUGIN_FILE ) ) . '/langs/' );
38
  },
39
  9
40
  );
49
  require_once 'wcj-functions.php';
50
 
51
  // Classes.
52
+ require_once WCJ_FREE_PLUGIN_PATH . '/includes/classes/class-wcj-module.php';
53
+ require_once WCJ_FREE_PLUGIN_PATH . '/includes/classes/class-wcj-module-product-by-condition.php';
54
+ require_once WCJ_FREE_PLUGIN_PATH . '/includes/classes/class-wcj-module-shipping-by-condition.php';
55
+ require_once WCJ_FREE_PLUGIN_PATH . '/includes/classes/class-wcj-invoice.php';
56
+ require_once WCJ_FREE_PLUGIN_PATH . '/includes/classes/class-wcj-pdf-invoice.php';
57
+ require_once WCJ_FREE_PLUGIN_PATH . '/includes/admin/class-wcj-welcome.php';
58
 
59
  // Mini Plugin.
60
+ require_once WCJ_FREE_PLUGIN_PATH . '/includes/mini-plugin/wcj-mini-plugin.php';
61
 
62
  // Plus.
63
+ if ( 'booster-plus-for-woocommerce.php' === basename( WCJ_FREE_PLUGIN_FILE ) && apply_filters( 'wcj_full_pack', true ) ) {
64
+ require_once WCJ_FREE_PLUGIN_PATH . '/includes/plus/class-wcj-plus.php';
65
  }
66
 
67
  // Tools.
68
+ require_once WCJ_FREE_PLUGIN_PATH . '/includes/admin/class-wcj-tools.php';
69
 
70
  // Shortcodes.
71
  require_once 'wcj-shortcodes.php';
72
 
73
  // Widgets.
74
+ require_once WCJ_FREE_PLUGIN_PATH . '/includes/classes/class-wcj-widget.php';
75
+ require_once WCJ_FREE_PLUGIN_PATH . '/includes/widgets/class-wcj-widget-multicurrency.php';
76
+ require_once WCJ_FREE_PLUGIN_PATH . '/includes/widgets/class-wcj-widget-country-switcher.php';
77
+ require_once WCJ_FREE_PLUGIN_PATH . '/includes/widgets/class-wcj-widget-left-to-free-shipping.php';
78
+ require_once WCJ_FREE_PLUGIN_PATH . '/includes/widgets/class-wcj-widget-selector.php';
79
 
80
  // Scripts.
81
  require_once 'class-wcj-scripts.php';
91
  require_once 'class-wcj-admin.php';
92
 
93
  // Settings manager.
94
+ require_once WCJ_FREE_PLUGIN_PATH . '/includes/admin/class-wcj-settings-manager.php';
95
 
96
  // Loaded action.
97
  do_action( 'wcj_loaded' );
108
  require_once 'class-wcj-admin.php';
109
 
110
  // Settings manager.
111
+ require_once WCJ_FREE_PLUGIN_PATH . '/includes/admin/class-wcj-settings-manager.php';
112
 
113
  // Loaded action.
114
  do_action( 'wcj_loaded' );
includes/core/wcj-modules.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Modules
4
  *
5
- * @version 5.4.0
6
  * @since 3.2.4
7
  * @author Pluggabl LLC.
8
  * @package Booster_For_WooCommerce/core
@@ -141,7 +141,7 @@ $wcj_module_files = array(
141
  );
142
 
143
  $this->modules = array();
144
- $wcj_modules_dir = WCJ_PLUGIN_PATH . '/includes/';
145
  foreach ( $wcj_module_files as $wcj_module_file ) {
146
  $module = include_once $wcj_modules_dir . $wcj_module_file;
147
  $this->modules[ $module->id ] = $module;
2
  /**
3
  * Booster for WooCommerce - Modules
4
  *
5
+ * @version 5.6.1
6
  * @since 3.2.4
7
  * @author Pluggabl LLC.
8
  * @package Booster_For_WooCommerce/core
141
  );
142
 
143
  $this->modules = array();
144
+ $wcj_modules_dir = WCJ_FREE_PLUGIN_PATH . '/includes/';
145
  foreach ( $wcj_module_files as $wcj_module_file ) {
146
  $module = include_once $wcj_modules_dir . $wcj_module_file;
147
  $this->modules[ $module->id ] = $module;
includes/core/wcj-shortcodes.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Shortcodes
4
  *
5
- * @version 3.5.1
6
  * @since 3.2.4
7
  * @author Pluggabl LLC.
8
  * @package Booster_For_WooCommerce/core
@@ -14,7 +14,7 @@ if ( ! defined( 'ABSPATH' ) ) {
14
 
15
  if ( ! wcj_is_module_enabled( 'general' ) || ( wcj_is_module_enabled( 'general' ) && 'no' === wcj_get_option( 'wcj_general_shortcodes_disable_booster_shortcodes', 'no' ) ) ) {
16
 
17
- include_once WCJ_PLUGIN_PATH . '/includes/classes/class-wcj-shortcodes.php';
18
 
19
  $wcj_shortcodes_files = array(
20
  'general' => 'class-wcj-general-shortcodes.php',
@@ -28,7 +28,7 @@ if ( ! wcj_is_module_enabled( 'general' ) || ( wcj_is_module_enabled( 'general'
28
  'input_field' => 'class-wcj-input-field-shortcodes.php',
29
  );
30
 
31
- $wcj_shortcodes_dir = WCJ_PLUGIN_PATH . '/includes/shortcodes/';
32
  foreach ( $wcj_shortcodes_files as $wcj_shortcodes_file_id => $wcj_shortcodes_file ) {
33
  $this->shortcodes[ $wcj_shortcodes_file_id ] = include_once $wcj_shortcodes_dir . $wcj_shortcodes_file;
34
  }
2
  /**
3
  * Booster for WooCommerce - Shortcodes
4
  *
5
+ * @version 5.6.1
6
  * @since 3.2.4
7
  * @author Pluggabl LLC.
8
  * @package Booster_For_WooCommerce/core
14
 
15
  if ( ! wcj_is_module_enabled( 'general' ) || ( wcj_is_module_enabled( 'general' ) && 'no' === wcj_get_option( 'wcj_general_shortcodes_disable_booster_shortcodes', 'no' ) ) ) {
16
 
17
+ include_once WCJ_FREE_PLUGIN_PATH . '/includes/classes/class-wcj-shortcodes.php';
18
 
19
  $wcj_shortcodes_files = array(
20
  'general' => 'class-wcj-general-shortcodes.php',
28
  'input_field' => 'class-wcj-input-field-shortcodes.php',
29
  );
30
 
31
+ $wcj_shortcodes_dir = WCJ_FREE_PLUGIN_PATH . '/includes/shortcodes/';
32
  foreach ( $wcj_shortcodes_files as $wcj_shortcodes_file_id => $wcj_shortcodes_file ) {
33
  $this->shortcodes[ $wcj_shortcodes_file_id ] = include_once $wcj_shortcodes_dir . $wcj_shortcodes_file;
34
  }
includes/css/wcj-admin.css CHANGED
@@ -1,7 +1,7 @@
1
  /**
2
  * wcj-admin.
3
  *
4
- * @version 5.4.2
5
  * @since 2.5.3
6
  */
7
 
@@ -309,9 +309,6 @@ img.wcj-rocket-icon:hover {
309
  .wclj_tl_foot .wcj-review-footer {
310
  margin-bottom: 0px;
311
  }
312
- #wpfooter {
313
- position: relative;
314
- }
315
  .wclj_tl_foot .wcj-review-footer label,
316
  .wclj_tl_foot .wcj-review-footer p {
317
  font-size: 12px;
1
  /**
2
  * wcj-admin.
3
  *
4
+ * @version 5.6.1
5
  * @since 2.5.3
6
  */
7
 
309
  .wclj_tl_foot .wcj-review-footer {
310
  margin-bottom: 0px;
311
  }
 
 
 
312
  .wclj_tl_foot .wcj-review-footer label,
313
  .wclj_tl_foot .wcj-review-footer p {
314
  font-size: 12px;
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 5.4.0
8
  * @since 2.3.9
9
  * @author Pluggabl LLC.
10
  * @extends WC_Email
@@ -213,7 +213,7 @@ if ( ! class_exists( 'WC_Email_WCJ_Custom' ) ) :
213
  /**
214
  * Initialise settings form fields.
215
  *
216
- * @version 5.4.0
217
  * @todo (maybe) `chosen_select` class in `trigger`.
218
  */
219
  public function init_form_fields() {
@@ -236,8 +236,8 @@ if ( ! class_exists( 'WC_Email_WCJ_Custom' ) ) :
236
  $status_triggers[ 'woocommerce_order_status_' . $slug . '_notification' ] = sprintf( __( 'Order status updated to %s', 'woocommerce-jetpack' ), $name );
237
  foreach ( $order_statuses as $slug2 => $name2 ) {
238
  if ( $slug !== $slug2 ) {
239
- /* translators: %2$s: search term */
240
- $status_change_triggers[ 'woocommerce_order_status_' . $slug . '_to_' . $slug2 . '_notification' ] = sprintf( __( 'Order status %1$s to %2$s', 'woocommerce-jetpack' ), $name, $name2 );
241
  }
242
  }
243
  }
4
  *
5
  * An email sent to recipient list when selected triggers are called.
6
  *
7
+ * @version 5.6.1
8
  * @since 2.3.9
9
  * @author Pluggabl LLC.
10
  * @extends WC_Email
213
  /**
214
  * Initialise settings form fields.
215
  *
216
+ * @version 5.6.1
217
  * @todo (maybe) `chosen_select` class in `trigger`.
218
  */
219
  public function init_form_fields() {
236
  $status_triggers[ 'woocommerce_order_status_' . $slug . '_notification' ] = sprintf( __( 'Order status updated to %s', 'woocommerce-jetpack' ), $name );
237
  foreach ( $order_statuses as $slug2 => $name2 ) {
238
  if ( $slug !== $slug2 ) {
239
+ /* translators: %s: search term */
240
+ $status_change_triggers[ 'woocommerce_order_status_' . $slug . '_to_' . $slug2 . '_notification' ] = sprintf( __( 'Order status %s to %s', 'woocommerce-jetpack' ), $name, $name2 );
241
  }
242
  }
243
  }
includes/functions/wcj-functions-admin.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Functions - Admin
4
  *
5
- * @version 5.4.8
6
  * @since 2.9.0
7
  * @author Pluggabl LLC.
8
  * @package Booster_For_WooCommerce/functions
@@ -30,7 +30,7 @@ if ( ! function_exists( 'wcj_get_module_category' ) ) {
30
  /**
31
  * Wcj_get_module_category.
32
  *
33
- * @version 3.3.0
34
  * @since 3.3.0
35
  * @todo better solution for `global $wcj_modules_cats`
36
  * @todo use this function where needed (e.g. in `class-wc-settings-jetpack.php`)
@@ -39,7 +39,7 @@ if ( ! function_exists( 'wcj_get_module_category' ) ) {
39
  function wcj_get_module_category( $module_id ) {
40
  global $wcj_modules_cats;
41
  if ( ! isset( $wcj_modules_cats ) ) {
42
- $wcj_modules_cats = include WCJ_PLUGIN_PATH . '/includes/admin/wcj-modules-cats.php';
43
  }
44
  foreach ( $wcj_modules_cats as $cat_id => $cat_data ) {
45
  if ( ! empty( $cat_data['all_cat_ids'] ) && in_array( $module_id, $cat_data['all_cat_ids'], true ) ) {
2
  /**
3
  * Booster for WooCommerce - Functions - Admin
4
  *
5
+ * @version 5.6.1
6
  * @since 2.9.0
7
  * @author Pluggabl LLC.
8
  * @package Booster_For_WooCommerce/functions
30
  /**
31
  * Wcj_get_module_category.
32
  *
33
+ * @version 5.6.1
34
  * @since 3.3.0
35
  * @todo better solution for `global $wcj_modules_cats`
36
  * @todo use this function where needed (e.g. in `class-wc-settings-jetpack.php`)
39
  function wcj_get_module_category( $module_id ) {
40
  global $wcj_modules_cats;
41
  if ( ! isset( $wcj_modules_cats ) ) {
42
+ $wcj_modules_cats = include WCJ_FREE_PLUGIN_PATH . '/includes/admin/wcj-modules-cats.php';
43
  }
44
  foreach ( $wcj_modules_cats as $cat_id => $cat_data ) {
45
  if ( ! empty( $cat_data['all_cat_ids'] ) && in_array( $module_id, $cat_data['all_cat_ids'], true ) ) {
includes/functions/wcj-functions-booster-core.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Functions - Booster Core
4
  *
5
- * @version 5.5.9
6
  * @since 2.9.0
7
  * @author Pluggabl LLC.
8
  * @package Booster_For_WooCommerce/functions
@@ -38,14 +38,14 @@ if ( ! function_exists( 'wcj_plugin_url' ) ) {
38
  }
39
  }
40
 
41
- if ( ! function_exists( 'wcj_plugin_path' ) ) {
42
  /**
43
  * Get the plugin path.
44
  *
45
  * @return string
46
- * @todo use `WCJ_PLUGIN_PATH` constant instead
47
  */
48
- function wcj_plugin_path() {
49
  return untrailingslashit( realpath( plugin_dir_path( __FILE__ ) . '/../..' ) );
50
  }
51
  }
2
  /**
3
  * Booster for WooCommerce - Functions - Booster Core
4
  *
5
+ * @version 5.6.1
6
  * @since 2.9.0
7
  * @author Pluggabl LLC.
8
  * @package Booster_For_WooCommerce/functions
38
  }
39
  }
40
 
41
+ if ( ! function_exists( 'wcj_free_plugin_path' ) ) {
42
  /**
43
  * Get the plugin path.
44
  *
45
  * @return string
46
+ * @todo use `wcj_free_plugin_path` constant instead
47
  */
48
+ function wcj_free_plugin_path() {
49
  return untrailingslashit( realpath( plugin_dir_path( __FILE__ ) . '/../..' ) );
50
  }
51
  }
includes/functions/wcj-functions-country.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Functions - Country
4
  *
5
- * @version 3.9.0
6
  * @author Pluggabl LLC.
7
  * @package Booster_For_WooCommerce/functions
8
  */
@@ -49,12 +49,12 @@ if ( ! function_exists( 'wcj_get_country_flag_by_code' ) ) {
49
  /**
50
  * Wcj_get_country_flag_by_code.
51
  *
52
- * @version 2.9.1
53
  * @param string $country_code defines the country_code.
54
  */
55
  function wcj_get_country_flag_by_code( $country_code ) {
56
  $img = '/assets/images/flag-icons/' . strtolower( $country_code ) . '.png';
57
- $img_path = wcj_plugin_path() . $img;
58
  $img_src = wcj_plugin_url() . ( file_exists( $img_path ) ? $img : '/assets/images/flag-icons/no-flag.png' );
59
  return '<img src="' . $img_src . '" title="' . wcj_get_country_name_by_code( $country_code ) . '">';
60
  }
2
  /**
3
  * Booster for WooCommerce - Functions - Country
4
  *
5
+ * @version 5.6.1
6
  * @author Pluggabl LLC.
7
  * @package Booster_For_WooCommerce/functions
8
  */
49
  /**
50
  * Wcj_get_country_flag_by_code.
51
  *
52
+ * @version 5.6.1
53
  * @param string $country_code defines the country_code.
54
  */
55
  function wcj_get_country_flag_by_code( $country_code ) {
56
  $img = '/assets/images/flag-icons/' . strtolower( $country_code ) . '.png';
57
+ $img_path = wcj_free_plugin_path() . $img;
58
  $img_src = wcj_plugin_url() . ( file_exists( $img_path ) ? $img : '/assets/images/flag-icons/no-flag.png' );
59
  return '<img src="' . $img_src . '" title="' . wcj_get_country_name_by_code( $country_code ) . '">';
60
  }
includes/functions/wcj-functions-general.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Functions - General
4
  *
5
- * @version 5.3.3
6
  * @author Pluggabl LLC.
7
  * @todo add `wcj_add_actions()` and `wcj_add_filters()`
8
  * @package Booster_For_WooCommerce/functions
@@ -296,7 +296,7 @@ if ( ! function_exists( 'wcj_barcode' ) ) {
296
  /**
297
  * Wcj_barcode.
298
  *
299
- * @version 3.4.0
300
  * @since 3.3.0
301
  * @todo (maybe) "Barcodes" module
302
  * @todo (maybe) `getBarcodePNG()`
@@ -316,10 +316,10 @@ if ( ! function_exists( 'wcj_barcode' ) ) {
316
  $atts['height'] = ( '1D' === $atts['dimension'] ? 30 : 10 );
317
  }
318
  if ( '1D' === $atts['dimension'] ) {
319
- require_once WCJ_PLUGIN_PATH . '/includes/lib/tcpdf/tcpdf_barcodes_1d.php';
320
  $barcode = new TCPDFBarcode( $atts['code'], $atts['type'] );
321
  } else {
322
- require_once WCJ_PLUGIN_PATH . '/includes/lib/tcpdf/tcpdf_barcodes_2d.php';
323
  $barcode = new TCPDF2DBarcode( $atts['code'], $atts['type'] );
324
  }
325
  $barcode_array = $barcode->getBarcodeArray();
@@ -1031,7 +1031,7 @@ if ( ! function_exists( 'wcj_add_allowed_html' ) ) {
1031
  /**
1032
  * Wcj_add_allowed_html.
1033
  *
1034
- * @version 1.0.0
1035
  * @since 5.6.0
1036
  * @param array $allowed_html to get default allowed html.
1037
  * @param string $context to get default context.
@@ -1057,6 +1057,15 @@ if ( ! function_exists( 'wcj_add_allowed_html' ) ) {
1057
  'max' => true,
1058
  'disabled' => true,
1059
  'onchange' => true,
 
 
 
 
 
 
 
 
 
1060
  ),
1061
  'textarea' => array(
1062
  'name' => true,
2
  /**
3
  * Booster for WooCommerce - Functions - General
4
  *
5
+ * @version 5.6.1
6
  * @author Pluggabl LLC.
7
  * @todo add `wcj_add_actions()` and `wcj_add_filters()`
8
  * @package Booster_For_WooCommerce/functions
296
  /**
297
  * Wcj_barcode.
298
  *
299
+ * @version 5.6.1
300
  * @since 3.3.0
301
  * @todo (maybe) "Barcodes" module
302
  * @todo (maybe) `getBarcodePNG()`
316
  $atts['height'] = ( '1D' === $atts['dimension'] ? 30 : 10 );
317
  }
318
  if ( '1D' === $atts['dimension'] ) {
319
+ require_once WCJ_FREE_PLUGIN_PATH . '/includes/lib/tcpdf/tcpdf_barcodes_1d.php';
320
  $barcode = new TCPDFBarcode( $atts['code'], $atts['type'] );
321
  } else {
322
+ require_once WCJ_FREE_PLUGIN_PATH . '/includes/lib/tcpdf/tcpdf_barcodes_2d.php';
323
  $barcode = new TCPDF2DBarcode( $atts['code'], $atts['type'] );
324
  }
325
  $barcode_array = $barcode->getBarcodeArray();
1031
  /**
1032
  * Wcj_add_allowed_html.
1033
  *
1034
+ * @version 5.6.1
1035
  * @since 5.6.0
1036
  * @param array $allowed_html to get default allowed html.
1037
  * @param string $context to get default context.
1057
  'max' => true,
1058
  'disabled' => true,
1059
  'onchange' => true,
1060
+ 'step' => true,
1061
+ 'changeyear' => true,
1062
+ 'yearrange' => true,
1063
+ 'timeformat' => true,
1064
+ 'interval' => true,
1065
+ 'readonly' => true,
1066
+ 'data-blocked_dates' => true,
1067
+ 'currentday_time_limit' => true,
1068
+ 'data-blocked_dates_format' => true,
1069
  ),
1070
  'textarea' => array(
1071
  'name' => true,
includes/functions/wcj-functions-products.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Functions - Products
4
  *
5
- * @version 5.6.0
6
  * @since 2.9.0
7
  * @author Pluggabl LLC.
8
  * @package Booster_For_WooCommerce/functions
@@ -32,7 +32,7 @@ if ( ! function_exists( 'wcj_is_enabled_for_product' ) ) {
32
  /**
33
  * Wcj_is_enabled_for_product.
34
  *
35
- * @version 3.1.0
36
  * @since 3.1.0
37
  * @param int $product_id Get product id.
38
  * @param Array $args Get product args.
@@ -42,7 +42,7 @@ if ( ! function_exists( 'wcj_is_enabled_for_product' ) ) {
42
  if ( ! is_array( $args['include_products'] ) ) {
43
  $args['include_products'] = array_map( 'trim', explode( ',', $args['include_products'] ) );
44
  }
45
- if ( ! in_array( $product_id, $args['include_products'], true ) ) {
46
  return false;
47
  }
48
  }
@@ -50,7 +50,7 @@ if ( ! function_exists( 'wcj_is_enabled_for_product' ) ) {
50
  if ( ! is_array( $args['exclude_products'] ) ) {
51
  $args['exclude_products'] = array_map( 'trim', explode( ',', $args['exclude_products'] ) );
52
  }
53
- if ( in_array( $product_id, $args['exclude_products'], true ) ) {
54
  return false;
55
  }
56
  }
@@ -522,7 +522,7 @@ if ( ! function_exists( 'wcj_is_product_wholesale_enabled' ) ) {
522
  if ( 'no' === wcj_get_option( 'wcj_wholesale_price_per_product_enable', 'yes' ) ) {
523
  $product_cats_to_exclude = wcj_get_option( 'wcj_wholesale_price_product_cats_to_exclude', array() );
524
  if ( ! empty( $product_cats_to_exclude ) && wcj_is_product_term( $product_id, $product_cats_to_exclude, 'product_cat' ) ) {
525
- if ( ! empty( $product_cats_to_exclude ) && in_array( $product_id, $product_cats_to_exclude, true ) ) {
526
  $is_product_eligible_new = false;
527
  }
528
  return $is_product_eligible_new ?? false;
@@ -530,7 +530,7 @@ if ( ! function_exists( 'wcj_is_product_wholesale_enabled' ) ) {
530
  }
531
 
532
  $products_to_include = wcj_get_option( 'wcj_wholesale_price_products_to_include', array() );
533
- if ( ! empty( $products_to_include ) && in_array( $product_id, $products_to_include, true ) ) {
534
  $is_product_eligible = true;
535
  } elseif ( empty( $products_to_include ) && empty( $product_cats_to_include ) ) {
536
  $is_product_eligible = true;
@@ -538,7 +538,7 @@ if ( ! function_exists( 'wcj_is_product_wholesale_enabled' ) ) {
538
 
539
  if ( 'no' === wcj_get_option( 'wcj_wholesale_price_per_product_enable', 'yes' ) ) {
540
  $products_to_exclude = wcj_get_option( 'wcj_wholesale_price_products_to_exclude', array() );
541
- if ( ! empty( $products_to_exclude ) && in_array( $product_id, $products_to_exclude, true ) ) {
542
  $is_product_eligible = false;
543
  }
544
  }
@@ -590,7 +590,7 @@ if ( ! function_exists( 'wcj_is_product_term' ) ) {
590
  return false;
591
  }
592
  foreach ( $product_terms as $product_term ) {
593
- if ( in_array( $product_term->term_id, $term_ids, true ) ) {
594
  return true;
595
  }
596
  }
2
  /**
3
  * Booster for WooCommerce - Functions - Products
4
  *
5
+ * @version 5.6.1
6
  * @since 2.9.0
7
  * @author Pluggabl LLC.
8
  * @package Booster_For_WooCommerce/functions
32
  /**
33
  * Wcj_is_enabled_for_product.
34
  *
35
+ * @version 5.6.1
36
  * @since 3.1.0
37
  * @param int $product_id Get product id.
38
  * @param Array $args Get product args.
42
  if ( ! is_array( $args['include_products'] ) ) {
43
  $args['include_products'] = array_map( 'trim', explode( ',', $args['include_products'] ) );
44
  }
45
+ if ( ! in_array( $product_id, $args['include_products'] ) ) {
46
  return false;
47
  }
48
  }
50
  if ( ! is_array( $args['exclude_products'] ) ) {
51
  $args['exclude_products'] = array_map( 'trim', explode( ',', $args['exclude_products'] ) );
52
  }
53
+ if ( in_array( $product_id, $args['exclude_products'] ) ) {
54
  return false;
55
  }
56
  }
522
  if ( 'no' === wcj_get_option( 'wcj_wholesale_price_per_product_enable', 'yes' ) ) {
523
  $product_cats_to_exclude = wcj_get_option( 'wcj_wholesale_price_product_cats_to_exclude', array() );
524
  if ( ! empty( $product_cats_to_exclude ) && wcj_is_product_term( $product_id, $product_cats_to_exclude, 'product_cat' ) ) {
525
+ if ( ! empty( $product_cats_to_exclude ) && in_array( $product_id, $product_cats_to_exclude ) ) {
526
  $is_product_eligible_new = false;
527
  }
528
  return $is_product_eligible_new ?? false;
530
  }
531
 
532
  $products_to_include = wcj_get_option( 'wcj_wholesale_price_products_to_include', array() );
533
+ if ( ! empty( $products_to_include ) && in_array( $product_id, $products_to_include ) ) {
534
  $is_product_eligible = true;
535
  } elseif ( empty( $products_to_include ) && empty( $product_cats_to_include ) ) {
536
  $is_product_eligible = true;
538
 
539
  if ( 'no' === wcj_get_option( 'wcj_wholesale_price_per_product_enable', 'yes' ) ) {
540
  $products_to_exclude = wcj_get_option( 'wcj_wholesale_price_products_to_exclude', array() );
541
+ if ( ! empty( $products_to_exclude ) && in_array( $product_id, $products_to_exclude ) ) {
542
  $is_product_eligible = false;
543
  }
544
  }
590
  return false;
591
  }
592
  foreach ( $product_terms as $product_term ) {
593
+ if ( in_array( $product_term->term_id, $term_ids ) ) {
594
  return true;
595
  }
596
  }
includes/pdf-invoices/class-wcj-pdf-invoicing-report-tool.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - PDF Invoicing - Report Tool
4
  *
5
- * @version 5.5.6
6
  * @since 2.2.1
7
  * @author Pluggabl LLC.
8
  * @package Booster_For_WooCommerce/includes
@@ -283,15 +283,15 @@ if ( ! class_exists( 'WCJ_PDF_Invoicing_Report_Tool' ) ) :
283
  /**
284
  * Get_no_documents_found_message.
285
  *
286
- * @version 3.1.0
287
  * @since 3.1.0
288
  * @param int | string $year Get year.
289
  * @param int | string $month Get month.
290
  * @param int $invoice_type_id Get invoice type id.
291
  */
292
  public function get_no_documents_found_message( $year, $month, $invoice_type_id ) {
293
- /* translators: %%1$s: search term */
294
- return sprintf( __( 'No documents (%1$s) found for %2$d-%3$02d.', 'woocommerce-jetpack' ), $invoice_type_id, $year, $month );
295
  }
296
 
297
  /**
2
  /**
3
  * Booster for WooCommerce - PDF Invoicing - Report Tool
4
  *
5
+ * @version 5.6.1
6
  * @since 2.2.1
7
  * @author Pluggabl LLC.
8
  * @package Booster_For_WooCommerce/includes
283
  /**
284
  * Get_no_documents_found_message.
285
  *
286
+ * @version 5.6.1
287
  * @since 3.1.0
288
  * @param int | string $year Get year.
289
  * @param int | string $month Get month.
290
  * @param int $invoice_type_id Get invoice type id.
291
  */
292
  public function get_no_documents_found_message( $year, $month, $invoice_type_id ) {
293
+ /* translators: %s: search term */
294
+ return sprintf( __( 'No documents (%s) found for %d-%02d.', 'woocommerce-jetpack' ), $invoice_type_id, $year, $month );
295
  }
296
 
297
  /**
includes/pdf-invoices/submodules/class-wcj-pdf-invoicing-styling.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - PDF Invoicing - Styling
4
  *
5
- * @version 5.5.6
6
  * @author Pluggabl LLC.
7
  * @package Booster_For_WooCommerce/includes
8
  */
@@ -39,14 +39,14 @@ if ( ! class_exists( 'WCJ_PDF_Invoicing_Styling' ) ) :
39
  /**
40
  * Get_default_css_template.
41
  *
42
- * @version 3.1.0
43
  * @version 3.1.0
44
  * @param int $invoice_type_id Get invoice ID.
45
  */
46
  public function get_default_css_template( $invoice_type_id ) {
47
  if ( ! isset( $this->default_css_template[ $invoice_type_id ] ) ) {
48
  $default_template_filename = ( false === strpos( $invoice_type_id, 'custom_doc_' ) ? $invoice_type_id : 'custom_doc' );
49
- $default_template_filename = wcj_plugin_path() . '/includes/settings/pdf-invoicing/wcj-' . $default_template_filename . '.css';
50
  if ( file_exists( $default_template_filename ) ) {
51
  ob_start();
52
  include $default_template_filename;
2
  /**
3
  * Booster for WooCommerce - PDF Invoicing - Styling
4
  *
5
+ * @version 5.6.1
6
  * @author Pluggabl LLC.
7
  * @package Booster_For_WooCommerce/includes
8
  */
39
  /**
40
  * Get_default_css_template.
41
  *
42
+ * @version 5.6.1
43
  * @version 3.1.0
44
  * @param int $invoice_type_id Get invoice ID.
45
  */
46
  public function get_default_css_template( $invoice_type_id ) {
47
  if ( ! isset( $this->default_css_template[ $invoice_type_id ] ) ) {
48
  $default_template_filename = ( false === strpos( $invoice_type_id, 'custom_doc_' ) ? $invoice_type_id : 'custom_doc' );
49
+ $default_template_filename = wcj_free_plugin_path() . '/includes/settings/pdf-invoicing/wcj-' . $default_template_filename . '.css';
50
  if ( file_exists( $default_template_filename ) ) {
51
  ob_start();
52
  include $default_template_filename;
includes/pdf-invoices/submodules/class-wcj-pdf-invoicing-templates.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - PDF Invoicing - Templates
4
  *
5
- * @version 3.1.0
6
  * @author Pluggabl LLC.
7
  * @package Booster_For_WooCommerce/includes
8
  */
@@ -35,14 +35,14 @@ if ( ! class_exists( 'WCJ_PDF_Invoicing_Templates' ) ) :
35
  /**
36
  * Get_default_template.
37
  *
38
- * @version 3.1.0
39
  * @since 3.1.0
40
  * @param int $invoice_type_id Get invoice ID.
41
  */
42
  public function get_default_template( $invoice_type_id ) {
43
  if ( ! isset( $this->default_template[ $invoice_type_id ] ) ) {
44
  $default_template_filename = ( false === strpos( $invoice_type_id, 'custom_doc_' ) ? $invoice_type_id : 'custom_doc' );
45
- $default_template_filename = wcj_plugin_path() . '/includes/settings/pdf-invoicing/wcj-content-template-' . $default_template_filename . '.php';
46
  if ( file_exists( $default_template_filename ) ) {
47
  ob_start();
48
  include $default_template_filename;
2
  /**
3
  * Booster for WooCommerce - PDF Invoicing - Templates
4
  *
5
+ * @version 5.6.1
6
  * @author Pluggabl LLC.
7
  * @package Booster_For_WooCommerce/includes
8
  */
35
  /**
36
  * Get_default_template.
37
  *
38
+ * @version 5.6.1
39
  * @since 3.1.0
40
  * @param int $invoice_type_id Get invoice ID.
41
  */
42
  public function get_default_template( $invoice_type_id ) {
43
  if ( ! isset( $this->default_template[ $invoice_type_id ] ) ) {
44
  $default_template_filename = ( false === strpos( $invoice_type_id, 'custom_doc_' ) ? $invoice_type_id : 'custom_doc' );
45
+ $default_template_filename = wcj_free_plugin_path() . '/includes/settings/pdf-invoicing/wcj-content-template-' . $default_template_filename . '.php';
46
  if ( file_exists( $default_template_filename ) ) {
47
  ob_start();
48
  include $default_template_filename;
includes/settings/wcj-settings-admin-tools.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Settings - Admin Tools
4
  *
5
- * @version 5.6.0
6
  * @since 2.7.2
7
  * @author Pluggabl LLC.
8
  * @package Booster_For_WooCommerce/settings
@@ -21,8 +21,8 @@ return array(
21
  array(
22
  'title' => __( 'Show Booster Menus Only to Admin', 'woocommerce-jetpack' ),
23
  'desc_tip' => sprintf(
24
- /* translators: %%1$s: translators Added */
25
- __( 'Will require %1$s capability to see Booster menus (instead of %2$s capability).', 'woocommerce-jetpack' ),
26
  '<code>manage_options</code>',
27
  '<code>manage_woocommerce</code>'
28
  ),
@@ -35,7 +35,7 @@ return array(
35
  'title' => __( 'Suppress Admin Connect Notice', 'woocommerce-jetpack' ),
36
  'desc' => __( 'Enable', 'woocommerce-jetpack' ),
37
  'desc_tip' => sprintf(
38
- /* translators: %%1$s: translators Added */
39
  __( 'Will remove "%s" admin notice.', 'woocommerce-jetpack' ),
40
  __( 'Connect your store to WooCommerce.com to receive extensions updates and support.', 'woocommerce-jetpack' )
41
  ),
2
  /**
3
  * Booster for WooCommerce - Settings - Admin Tools
4
  *
5
+ * @version 5.6.1
6
  * @since 2.7.2
7
  * @author Pluggabl LLC.
8
  * @package Booster_For_WooCommerce/settings
21
  array(
22
  'title' => __( 'Show Booster Menus Only to Admin', 'woocommerce-jetpack' ),
23
  'desc_tip' => sprintf(
24
+ /* translators: %s: translators Added */
25
+ __( 'Will require %s capability to see Booster menus (instead of %s capability).', 'woocommerce-jetpack' ),
26
  '<code>manage_options</code>',
27
  '<code>manage_woocommerce</code>'
28
  ),
35
  'title' => __( 'Suppress Admin Connect Notice', 'woocommerce-jetpack' ),
36
  'desc' => __( 'Enable', 'woocommerce-jetpack' ),
37
  'desc_tip' => sprintf(
38
+ /* translators: %s: translators Added */
39
  __( 'Will remove "%s" admin notice.', 'woocommerce-jetpack' ),
40
  __( 'Connect your store to WooCommerce.com to receive extensions updates and support.', 'woocommerce-jetpack' )
41
  ),
includes/settings/wcj-settings-checkout-files-upload.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Settings - Checkout Files Upload
4
  *
5
- * @version 5.6.0
6
  * @since 2.8.0
7
  * @author Pluggabl LLC.
8
  * @package Booster_For_WooCommerce/settings
@@ -331,7 +331,7 @@ $settings = array_merge(
331
  array(
332
  'title' => __( 'Label', 'woocommerce-jetpack' ),
333
  /* translators: %s: translators Added */
334
- 'desc_tip' => __( 'Replaced values: %1$field_id%, %2$field_label%, %required_html%.', 'woocommerce-jetpack' ),
335
  'id' => 'wcj_checkout_files_upload_form_template_label',
336
  /* translators: %s: translators Added */
337
  'default' => '<tr><td colspan="2"><label for="%field_id%">%field_label%</label>%required_html%</td></tr>',
@@ -341,7 +341,7 @@ $settings = array_merge(
341
  array(
342
  'title' => __( 'Field', 'woocommerce-jetpack' ),
343
  /* translators: %s: translators Added */
344
- 'desc_tip' => __( 'Replaced values: %1$field_html%, %2$button_html%.', 'woocommerce-jetpack' ),
345
  'id' => 'wcj_checkout_files_upload_form_template_field',
346
  /* translators: %s: translators Added */
347
  'default' => '<tr><td style="width:50%;max-width:50vw;">%field_html%</td><td style="width:50%;">%button_html%</td></tr>',
@@ -409,7 +409,7 @@ $settings = array_merge(
409
  'desc' => __( 'Image style', 'woocommerce-jetpack' ),
410
  'desc_tip' => sprintf(
411
  /* translators: %s: translators Added */
412
- __( 'Ignored, if %1$s is not included in %2$s option above.', 'woocommerce-jetpack' ),
413
  '<em>%image%</em>',
414
  '<em>' . __( 'Item', 'woocommerce-jetpack' ) . '</em>'
415
  ),
2
  /**
3
  * Booster for WooCommerce - Settings - Checkout Files Upload
4
  *
5
+ * @version 5.6.1
6
  * @since 2.8.0
7
  * @author Pluggabl LLC.
8
  * @package Booster_For_WooCommerce/settings
331
  array(
332
  'title' => __( 'Label', 'woocommerce-jetpack' ),
333
  /* translators: %s: translators Added */
334
+ 'desc_tip' => __( 'Replaced values: %field_id%, %field_label%, %required_html%.', 'woocommerce-jetpack' ),
335
  'id' => 'wcj_checkout_files_upload_form_template_label',
336
  /* translators: %s: translators Added */
337
  'default' => '<tr><td colspan="2"><label for="%field_id%">%field_label%</label>%required_html%</td></tr>',
341
  array(
342
  'title' => __( 'Field', 'woocommerce-jetpack' ),
343
  /* translators: %s: translators Added */
344
+ 'desc_tip' => __( 'Replaced values: %field_html%, %button_html%.', 'woocommerce-jetpack' ),
345
  'id' => 'wcj_checkout_files_upload_form_template_field',
346
  /* translators: %s: translators Added */
347
  'default' => '<tr><td style="width:50%;max-width:50vw;">%field_html%</td><td style="width:50%;">%button_html%</td></tr>',
409
  'desc' => __( 'Image style', 'woocommerce-jetpack' ),
410
  'desc_tip' => sprintf(
411
  /* translators: %s: translators Added */
412
+ __( 'Ignored, if %s is not included in %s option above.', 'woocommerce-jetpack' ),
413
  '<em>%image%</em>',
414
  '<em>' . __( 'Item', 'woocommerce-jetpack' ) . '</em>'
415
  ),
includes/settings/wcj-settings-cross-sells.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Settings - Cross-sells
4
  *
5
- * @version 5.6.0
6
  * @since 3.5.3
7
  * @author Pluggabl LLC.
8
  * @package Booster_For_WooCommerce/settings
@@ -133,8 +133,8 @@ if ( ! WCJ_IS_WC_VERSION_BELOW_3 ) {
133
  'desc' => __( 'Enable', 'woocommerce-jetpack' ),
134
  'desc_tip' => __( 'Enable this, if you want original products to be removed from cart and replaced with cross-sells, if customer adds cross-sells on cart page.', 'woocommerce-jetpack' ) . '<br>' .
135
  sprintf(
136
- /* translators: %1$s: translators Added */
137
- __( 'Please note that this option will work only if "%1$s" option is disabled in %2$s.', 'woocommerce-jetpack' ),
138
  __( 'Enable AJAX add to cart buttons on archives', 'woocommerce' ),
139
  '<a href="' . admin_url( 'admin.php?page=wc-settings&tab=products' ) . '">' .
140
  __( 'WooCommerce > Settings > Products > General > Shop pages > Add to cart behaviour', 'woocommerce-jetpack' ) . '</a>'
2
  /**
3
  * Booster for WooCommerce - Settings - Cross-sells
4
  *
5
+ * @version 5.6.1
6
  * @since 3.5.3
7
  * @author Pluggabl LLC.
8
  * @package Booster_For_WooCommerce/settings
133
  'desc' => __( 'Enable', 'woocommerce-jetpack' ),
134
  'desc_tip' => __( 'Enable this, if you want original products to be removed from cart and replaced with cross-sells, if customer adds cross-sells on cart page.', 'woocommerce-jetpack' ) . '<br>' .
135
  sprintf(
136
+ /* translators: %s: translators Added */
137
+ __( 'Please note that this option will work only if "%s" option is disabled in %s.', 'woocommerce-jetpack' ),
138
  __( 'Enable AJAX add to cart buttons on archives', 'woocommerce' ),
139
  '<a href="' . admin_url( 'admin.php?page=wc-settings&tab=products' ) . '">' .
140
  __( 'WooCommerce > Settings > Products > General > Shop pages > Add to cart behaviour', 'woocommerce-jetpack' ) . '</a>'
includes/settings/wcj-settings-left-to-free-shipping.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Settings - Left to Free Shipping
4
  *
5
- * @version 5.6.0
6
  * @since 2.8.0
7
  * @author Pluggabl LLC.
8
  * @package Booster_For_WooCommerce/settings
@@ -19,13 +19,13 @@ return array(
19
  'desc' => __( 'This section lets you enable info on cart, mini cart and checkout pages.', 'woocommerce-jetpack' ) . '<br><br>' .
20
  sprintf(
21
  /* translators: %s: translators Added */
22
- __( 'You can also use <em>Booster - Left to Free Shipping</em> widget, %1$s shortcode or %2$s function.', 'woocommerce-jetpack' ),
23
  '<code>[wcj_get_left_to_free_shipping content=""]</code>',
24
  '<code>wcj_get_left_to_free_shipping( $content );</code>'
25
  ) . '<br><br>' .
26
  sprintf(
27
- /* translators: %1$s,%2$s,%3$s: translators Added */
28
- __( 'In content replaced values are: %1$s, %2$s and %3$s.', 'woocommerce-jetpack' ),
29
  '<code>%left_to_free%</code>',
30
  '<code>%free_shipping_min_amount%</code>',
31
  '<code>%cart_total%</code>'
2
  /**
3
  * Booster for WooCommerce - Settings - Left to Free Shipping
4
  *
5
+ * @version 5.6.1
6
  * @since 2.8.0
7
  * @author Pluggabl LLC.
8
  * @package Booster_For_WooCommerce/settings
19
  'desc' => __( 'This section lets you enable info on cart, mini cart and checkout pages.', 'woocommerce-jetpack' ) . '<br><br>' .
20
  sprintf(
21
  /* translators: %s: translators Added */
22
+ __( 'You can also use <em>Booster - Left to Free Shipping</em> widget, %s shortcode or %s function.', 'woocommerce-jetpack' ),
23
  '<code>[wcj_get_left_to_free_shipping content=""]</code>',
24
  '<code>wcj_get_left_to_free_shipping( $content );</code>'
25
  ) . '<br><br>' .
26
  sprintf(
27
+ /* translators: %s: translators Added */
28
+ __( 'In content replaced values are: %s, %s and %s.', 'woocommerce-jetpack' ),
29
  '<code>%left_to_free%</code>',
30
  '<code>%free_shipping_min_amount%</code>',
31
  '<code>%cart_total%</code>'
includes/settings/wcj-settings-my-account.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Settings - My Account
4
  *
5
- * @version 5.6.0
6
  * @since 2.9.0
7
  * @author Pluggabl LLC.
8
  * @package Booster_For_WooCommerce/settings
@@ -126,8 +126,8 @@ $settings = array_merge(
126
  array(
127
  'desc' => __( 'Custom menu items.', 'woocommerce-jetpack' ) . ' ' .
128
  sprintf(
129
- /* translators: %1$s: translators Added */
130
- __( 'Add in %1$s format. One per line. E.g.: %2$s.', 'woocommerce-jetpack' ),
131
  '<code>endpoint|label|link</code>',
132
  '<code>shop|Shop|/shop/</code>'
133
  ),
2
  /**
3
  * Booster for WooCommerce - Settings - My Account
4
  *
5
+ * @version 5.6.1
6
  * @since 2.9.0
7
  * @author Pluggabl LLC.
8
  * @package Booster_For_WooCommerce/settings
126
  array(
127
  'desc' => __( 'Custom menu items.', 'woocommerce-jetpack' ) . ' ' .
128
  sprintf(
129
+ /* translators: %s: translators Added */
130
+ __( 'Add in %s format. One per line. E.g.: %s.', 'woocommerce-jetpack' ),
131
  '<code>endpoint|label|link</code>',
132
  '<code>shop|Shop|/shop/</code>'
133
  ),
includes/settings/wcj-settings-offer-price.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Settings - Offer Price
4
  *
5
- * @version 5.6.0
6
  * @since 2.9.0
7
  * @author Pluggabl LLC.
8
  * @package Booster_For_WooCommerce/settings
@@ -321,9 +321,9 @@ return array(
321
  'title' => __( 'Email Recipient', 'woocommerce-jetpack' ),
322
  'desc' => __( 'Can be comma separated list.', 'woocommerce-jetpack' ) . ' ' .
323
  sprintf(
324
- /* translators: %1$s: translators Added */
325
  __(
326
- 'Use %1$s to send to administrator email: %2$s.',
327
  'woocommerce-jetpack'
328
  ),
329
  '<code>%admin_email%</code>',
@@ -352,8 +352,8 @@ return array(
352
  sprintf( __( 'Product: %s', 'woocommerce-jetpack' ), '<a href="%product_edit_link%">%product_title%</a>' ) . '<br>' . PHP_EOL .
353
  /* translators: %s: translators Added */
354
  sprintf( __( 'Offered price: %s', 'woocommerce-jetpack' ), '%offered_price%' ) . '<br>' . PHP_EOL .
355
- /* translators: %1$s %2$s: translators Added */
356
- sprintf( __( 'From: %1$s %2$s', 'woocommerce-jetpack' ), '%customer_name%', '%customer_email%' ) . '<br>' . PHP_EOL .
357
  /* translators: %s: translators Added */
358
  sprintf( __( 'Message: %s', 'woocommerce-jetpack' ), '%customer_message%' ),
359
  'css' => 'width:100%;height:200px;',
2
  /**
3
  * Booster for WooCommerce - Settings - Offer Price
4
  *
5
+ * @version 5.6.1
6
  * @since 2.9.0
7
  * @author Pluggabl LLC.
8
  * @package Booster_For_WooCommerce/settings
321
  'title' => __( 'Email Recipient', 'woocommerce-jetpack' ),
322
  'desc' => __( 'Can be comma separated list.', 'woocommerce-jetpack' ) . ' ' .
323
  sprintf(
324
+ /* translators: %s: translators Added */
325
  __(
326
+ 'Use %s to send to administrator email: %s.',
327
  'woocommerce-jetpack'
328
  ),
329
  '<code>%admin_email%</code>',
352
  sprintf( __( 'Product: %s', 'woocommerce-jetpack' ), '<a href="%product_edit_link%">%product_title%</a>' ) . '<br>' . PHP_EOL .
353
  /* translators: %s: translators Added */
354
  sprintf( __( 'Offered price: %s', 'woocommerce-jetpack' ), '%offered_price%' ) . '<br>' . PHP_EOL .
355
+ /* translators: %s %s: translators Added */
356
+ sprintf( __( 'From: %s %s', 'woocommerce-jetpack' ), '%customer_name%', '%customer_email%' ) . '<br>' . PHP_EOL .
357
  /* translators: %s: translators Added */
358
  sprintf( __( 'Message: %s', 'woocommerce-jetpack' ), '%customer_message%' ),
359
  'css' => 'width:100%;height:200px;',
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 5.6.0
6
  * @since 2.8.0
7
  * @author Pluggabl LLC.
8
  * @package Booster_For_WooCommerce/settings
@@ -55,8 +55,8 @@ $settings = array(
55
  array(
56
  'title' => __( 'Error message', 'woocommerce-jetpack' ),
57
  'desc' => apply_filters( 'booster_message', '', 'desc' ),
58
- /* translators: %1$s: translators Added */
59
- 'desc_tip' => __( 'Message to customer if order is below minimum amount. Default: You must have an order with a minimum of %1$s to place your order, your current order total is %2$s.', 'woocommerce-jetpack' ),
60
  'id' => 'wcj_order_minimum_amount_error_message',
61
  /* translators: %s: translators Added */
62
  'default' => 'You must have an order with a minimum of %s to place your order, your current order total is %s.',
@@ -74,8 +74,8 @@ $settings = array(
74
  array(
75
  'title' => __( 'Message on cart page', 'woocommerce-jetpack' ),
76
  'desc' => apply_filters( 'booster_message', '', 'desc' ),
77
- /* translators: %2$s: translators Added */
78
- 'desc_tip' => __( 'Message to customer if order is below minimum amount. Default: You must have an order with a minimum of %1$s to place your order, your current order total is %2$s.', 'woocommerce-jetpack' ),
79
  'id' => 'wcj_order_minimum_amount_cart_notice_message',
80
  /* translators: %s: translators Added */
81
  'default' => 'You must have an order with a minimum of %s to place your order, your current order total is %s.',
2
  /**
3
  * Booster for WooCommerce - Settings - Order Minimum Amount
4
  *
5
+ * @version 5.6.1
6
  * @since 2.8.0
7
  * @author Pluggabl LLC.
8
  * @package Booster_For_WooCommerce/settings
55
  array(
56
  'title' => __( 'Error message', 'woocommerce-jetpack' ),
57
  'desc' => apply_filters( 'booster_message', '', 'desc' ),
58
+ /* translators: %s: translators Added */
59
+ 'desc_tip' => __( 'Message to customer if order is below minimum amount. Default: You must have an order with a minimum of %s to place your order, your current order total is %s.', 'woocommerce-jetpack' ),
60
  'id' => 'wcj_order_minimum_amount_error_message',
61
  /* translators: %s: translators Added */
62
  'default' => 'You must have an order with a minimum of %s to place your order, your current order total is %s.',
74
  array(
75
  'title' => __( 'Message on cart page', 'woocommerce-jetpack' ),
76
  'desc' => apply_filters( 'booster_message', '', 'desc' ),
77
+ /* translators: %s: translators Added */
78
+ 'desc_tip' => __( 'Message to customer if order is below minimum amount. Default: You must have an order with a minimum of %s to place your order, your current order total is %s.', 'woocommerce-jetpack' ),
79
  'id' => 'wcj_order_minimum_amount_cart_notice_message',
80
  /* translators: %s: translators Added */
81
  'default' => 'You must have an order with a minimum of %s to place your order, your current order total is %s.',
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 5.6.0
6
  * @since 2.8.0
7
  * @author Pluggabl LLC.
8
  * @todo [dev] maybe set "Strip slashes" option to `yes` by default (or even remove the option completely and always strip slashes)
@@ -406,8 +406,8 @@ $settings = array_merge(
406
  array(
407
  'title' => __( 'Strip Slashes', 'woocommerce-jetpack' ),
408
  'desc' => __( 'Enable', 'woocommerce-jetpack' ),
409
- /* translators: %1$s: translators Added */
410
- 'desc_tip' => sprintf( __( 'Enable this if you have single quotes %1$s converted to %2$s.', 'woocommerce-jetpack' ), '<code>\'</code>', '<code>\\\'</code>' ),
411
  'id' => 'wcj_product_input_fields_stripslashes',
412
  'default' => 'no',
413
  'type' => 'checkbox',
2
  /**
3
  * Booster for WooCommerce - Settings - Product Input Fields
4
  *
5
+ * @version 5.6.1
6
  * @since 2.8.0
7
  * @author Pluggabl LLC.
8
  * @todo [dev] maybe set "Strip slashes" option to `yes` by default (or even remove the option completely and always strip slashes)
406
  array(
407
  'title' => __( 'Strip Slashes', 'woocommerce-jetpack' ),
408
  'desc' => __( 'Enable', 'woocommerce-jetpack' ),
409
+ /* translators: %s: translators Added */
410
+ 'desc_tip' => sprintf( __( 'Enable this if you have single quotes %s converted to %s.', 'woocommerce-jetpack' ), '<code>\'</code>', '<code>\\\'</code>' ),
411
  'id' => 'wcj_product_input_fields_stripslashes',
412
  'default' => 'no',
413
  'type' => 'checkbox',
includes/settings/wcj-settings-product-price-by-formula.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Settings - Product Price by Formula
4
  *
5
- * @version 5.6.0
6
  * @since 2.8.1
7
  * @author Pluggabl LLC.
8
  * @package Booster_For_WooCommerce/settings
@@ -23,7 +23,7 @@ $settings = array(
23
  'title' => __( 'Formula', 'woocommerce-jetpack' ),
24
  'desc' => sprintf(
25
  /* translators: %s: translators Added */
26
- __( 'Use %1$s variable for product\'s base price. For example: %2$s.', 'woocommerce-jetpack' ),
27
  '<code> x </code>',
28
  '<code> x+p1*p2 </code>'
29
  ),
2
  /**
3
  * Booster for WooCommerce - Settings - Product Price by Formula
4
  *
5
+ * @version 5.6.1
6
  * @since 2.8.1
7
  * @author Pluggabl LLC.
8
  * @package Booster_For_WooCommerce/settings
23
  'title' => __( 'Formula', 'woocommerce-jetpack' ),
24
  'desc' => sprintf(
25
  /* translators: %s: translators Added */
26
+ __( 'Use %s variable for product\'s base price. For example: %s.', 'woocommerce-jetpack' ),
27
  '<code> x </code>',
28
  '<code> x+p1*p2 </code>'
29
  ),
includes/shipping/class-wc-shipping-wcj-custom-with-shipping-zones.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Shipping - Custom Shipping with Shipping Zones
4
  *
5
- * @version 5.5.0
6
  * @since 2.5.6
7
  * @author Pluggabl LLC.
8
  * @package Booster_For_WooCommerce/includes
@@ -285,8 +285,8 @@ if ( ! class_exists( 'WC_Shipping_WCJ_Custom_W_Zones' ) ) :
285
  'apply_formula' => array(
286
  'title' => __( 'Apply Formula and Shortcodes to Costs', 'woocommerce' ),
287
  'description' => sprintf(
288
- /* translators: %2$s: search term */
289
- __( 'You can use %1$s and %2$s params in formula, e.g.: %3$s. Also you can use shortcodes, e.g.: %4$s.', 'woocommerce-jetpack' ),
290
  '<em>weight</em>',
291
  '<em>quantity</em>',
292
  '<em>2.5+weight</em>',
@@ -336,7 +336,7 @@ if ( ! class_exists( 'WC_Shipping_WCJ_Custom_W_Zones' ) ) :
336
  /**
337
  * Maybe_apply_formula.
338
  *
339
- * @version 3.9.0
340
  * @since 3.4.0
341
  * @todo use WC math library instead of `PHPMathParser`
342
  * @param int | string $formula Get formula.
@@ -346,7 +346,7 @@ if ( ! class_exists( 'WC_Shipping_WCJ_Custom_W_Zones' ) ) :
346
  return $formula;
347
  }
348
  $formula = do_shortcode( $formula );
349
- require_once wcj_plugin_path() . '/includes/lib/PHPMathParser/Math.php';
350
  $math = new WCJ_Math();
351
  $variables = array(
352
  'quantity' => $this->get_total_cart_quantity(),
2
  /**
3
  * Booster for WooCommerce - Shipping - Custom Shipping with Shipping Zones
4
  *
5
+ * @version 5.6.1
6
  * @since 2.5.6
7
  * @author Pluggabl LLC.
8
  * @package Booster_For_WooCommerce/includes
285
  'apply_formula' => array(
286
  'title' => __( 'Apply Formula and Shortcodes to Costs', 'woocommerce' ),
287
  'description' => sprintf(
288
+ /* translators: %s: search term */
289
+ __( 'You can use %s and %s params in formula, e.g.: %s. Also you can use shortcodes, e.g.: %s.', 'woocommerce-jetpack' ),
290
  '<em>weight</em>',
291
  '<em>quantity</em>',
292
  '<em>2.5+weight</em>',
336
  /**
337
  * Maybe_apply_formula.
338
  *
339
+ * @version 5.6.1
340
  * @since 3.4.0
341
  * @todo use WC math library instead of `PHPMathParser`
342
  * @param int | string $formula Get formula.
346
  return $formula;
347
  }
348
  $formula = do_shortcode( $formula );
349
+ require_once wcj_free_plugin_path() . '/includes/lib/PHPMathParser/Math.php';
350
  $math = new WCJ_Math();
351
  $variables = array(
352
  'quantity' => $this->get_total_cart_quantity(),
includes/widgets/class-wcj-widget-multicurrency.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Widget - Multicurrency
4
  *
5
- * @version 4.0.0
6
  * @since 2.4.3
7
  * @author Pluggabl LLC.
8
  * @package Booster_For_WooCommerce/Widget
@@ -43,7 +43,7 @@ if ( ! class_exists( 'WCJ_Widget_Multicurrency' ) ) :
43
  /**
44
  * Get_content.
45
  *
46
- * @version 4.0.0
47
  * @since 3.1.0
48
  * @param array $instance Saved values from database.
49
  */
@@ -51,7 +51,8 @@ if ( ! class_exists( 'WCJ_Widget_Multicurrency' ) ) :
51
  if ( ! wcj_is_module_enabled( 'multicurrency' ) ) {
52
  return __( 'Multicurrency module not enabled!', 'woocommerce-jetpack' );
53
  } else {
54
- switch ( $instance['switcher_type'] ) {
 
55
  case 'link_list':
56
  return do_shortcode( '[wcj_currency_select_link_list]' );
57
  case 'radio_list':
2
  /**
3
  * Booster for WooCommerce - Widget - Multicurrency
4
  *
5
+ * @version 5.6.1
6
  * @since 2.4.3
7
  * @author Pluggabl LLC.
8
  * @package Booster_For_WooCommerce/Widget
43
  /**
44
  * Get_content.
45
  *
46
+ * @version 5.6.1
47
  * @since 3.1.0
48
  * @param array $instance Saved values from database.
49
  */
51
  if ( ! wcj_is_module_enabled( 'multicurrency' ) ) {
52
  return __( 'Multicurrency module not enabled!', 'woocommerce-jetpack' );
53
  } else {
54
+ $switcher_type = isset( $instance['switcher_type'] ) ? $instance['switcher_type'] : '';
55
+ switch ( $switcher_type ) {
56
  case 'link_list':
57
  return do_shortcode( '[wcj_currency_select_link_list]' );
58
  case 'radio_list':
langs/woocommerce-jetpack.pot CHANGED
@@ -58,7 +58,7 @@ msgstr ""
58
  #: includes/admin/class-wc-settings-jetpack.php:110
59
  #, php-format
60
  msgid ""
61
- "Please rate <strong>Booster for WooCommerce</strong> %1$s on <a href=\"%2$s\" "
62
  "target=\"_blank\">WordPress.org</a> to help us spread the word. Thank you "
63
  "from Booster team!"
64
  msgstr ""
@@ -66,8 +66,8 @@ msgstr ""
66
  #: includes/admin/class-wc-settings-jetpack.php:169
67
  #, php-format
68
  msgid ""
69
- "Please rate <strong>Booster for WooCommerce</strong> %1$s on <a href=\"%2$s"
70
- "\" target=\"_blank\">WordPress.org</a> to help us spread the word. Thank you "
71
  "from Booster team!"
72
  msgstr ""
73
 
@@ -95,8 +95,8 @@ msgstr ""
95
  #: includes/admin/class-wc-settings-jetpack.php:356
96
  #, php-format
97
  msgid ""
98
- "Please note that current <em>%1$s</em> module is deprecated and will be "
99
- "removed in future updates. Please use <em>%2$s</em> module instead."
100
  msgstr ""
101
 
102
  #: includes/admin/class-wc-settings-jetpack.php:362
@@ -441,7 +441,7 @@ msgid "BOOSTER WEBSITE"
441
  msgstr ""
442
 
443
  #: includes/admin/class-wc-settings-jetpack.php:992
444
- #: includes/class-wcj-general.php:236 includes/class-wcj-product-by-user.php:278
445
  #: includes/settings/wcj-settings-pdf-invoicing-advanced.php:166
446
  #: includes/tools/class-wcj-order-statuses-tool.php:191
447
  #: includes/tools/class-wcj-order-statuses-tool.php:271
@@ -578,7 +578,7 @@ msgstr ""
578
 
579
  #: includes/admin/class-wcj-settings-custom-fields.php:79
580
  #, php-format
581
- msgid "Grab raw %1$s rate from %2$s."
582
  msgstr ""
583
 
584
  #: includes/admin/class-wcj-settings-custom-fields.php:80
@@ -671,8 +671,8 @@ msgstr ""
671
  #: includes/admin/wcj-modules-cats.php:61 includes/class-wcj-admin-bar.php:493
672
  #: includes/class-wcj-admin-bar.php:497 includes/class-wcj-admin-bar.php:543
673
  #: includes/class-wcj-product-bulk-meta-editor.php:285
674
- #: includes/class-wcj-product-by-user.php:180
675
- #: includes/class-wcj-product-by-user.php:217
676
  #: includes/class-wcj-shipping-by-products.php:40
677
  #: includes/settings/wcj-settings-reports.php:181
678
  #: includes/settings/wcj-settings-shipping-options.php:77
@@ -1485,7 +1485,7 @@ msgstr ""
1485
  #: includes/class-wcj-checkout-custom-fields.php:48
1486
  #: includes/class-wcj-product-input-fields.php:45
1487
  #, php-format
1488
- msgid "<strong>PHP code:</strong> by using %1$s function,<br> e.g.: %2$s"
1489
  msgstr ""
1490
 
1491
  #: includes/class-wcj-checkout-custom-info.php:30
@@ -1611,7 +1611,7 @@ msgid "Booster for WooCommerce: Checkout Files Upload: %action%"
1611
  msgstr ""
1612
 
1613
  #: includes/class-wcj-checkout-files-upload.php:424
1614
- msgid "Order ID: %1$order_id%; File name: %2$file_name%"
1615
  msgstr ""
1616
 
1617
  #: includes/class-wcj-checkout-files-upload.php:441
@@ -2027,9 +2027,9 @@ msgstr ""
2027
  #, php-format
2028
  msgid ""
2029
  "Please note that if you enable the module and enter non-valid PHP code here, "
2030
- "your site will become unavailable. To fix this you will have to add %1$s "
2031
  "attribute to the URL (you must be logged as shop manager or admin (for this "
2032
- "reason custom PHP code is not executed on %2$s page))."
2033
  msgstr ""
2034
 
2035
  #: includes/class-wcj-custom-php.php:42
@@ -2494,7 +2494,7 @@ msgstr ""
2494
  #: includes/class-wcj-general.php:243
2495
  #: includes/class-wcj-payment-gateways.php:133
2496
  #: includes/class-wcj-product-bulk-meta-editor.php:402
2497
- #: includes/class-wcj-product-by-user.php:287
2498
  #: includes/pdf-invoices/submodules/class-wcj-pdf-invoicing-display.php:162
2499
  #: includes/pdf-invoices/submodules/class-wcj-pdf-invoicing-display.php:384
2500
  #: includes/shortcodes/class-wcj-products-add-form-shortcodes.php:391
@@ -2667,7 +2667,7 @@ msgstr ""
2667
  #: includes/class-wcj-multicurrency.php:59
2668
  #: includes/class-wcj-purchase-data.php:49
2669
  #, php-format
2670
- msgid "<strong>PHP code:</strong> by using %1$s function, e.g.: %2$s"
2671
  msgstr ""
2672
 
2673
  #: includes/class-wcj-my-account.php:33
@@ -2715,6 +2715,19 @@ msgstr ""
2715
  msgid "Lost password"
2716
  msgstr ""
2717
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2718
  #: includes/class-wcj-my-account.php:448
2719
  msgid "User role"
2720
  msgstr ""
@@ -2796,6 +2809,11 @@ msgstr ""
2796
  msgid "No price offers yet."
2797
  msgstr ""
2798
 
 
 
 
 
 
2799
  #: includes/class-wcj-offer-price.php:265
2800
  msgid "Update product after checking the box."
2801
  msgstr ""
@@ -2855,7 +2873,6 @@ msgid "Offered price: %s"
2855
  msgstr ""
2856
 
2857
  #: includes/class-wcj-offer-price.php:560
2858
- #: includes/settings/wcj-settings-offer-price.php:356
2859
  #, php-format
2860
  msgid "From: %1$s %2$s"
2861
  msgstr ""
@@ -3032,23 +3049,23 @@ msgstr ""
3032
  msgid "Tool renumerates all orders."
3033
  msgstr ""
3034
 
3035
- #: includes/class-wcj-order-numbers.php:349
3036
  msgid "Orders successfully renumerated!"
3037
  msgstr ""
3038
 
3039
- #: includes/class-wcj-order-numbers.php:354
3040
  #, php-format
3041
  msgid "Sequential number generation is enabled. Next order number will be %s."
3042
  msgstr ""
3043
 
3044
- #: includes/class-wcj-order-numbers.php:367
3045
  #, php-format
3046
  msgid ""
3047
  "Press the button below to renumerate all existing orders starting from order "
3048
  "counter settings in <a href=\"%s\">Order Numbers</a> module."
3049
  msgstr ""
3050
 
3051
- #: includes/class-wcj-order-numbers.php:375
3052
  msgid "Renumerate orders"
3053
  msgstr ""
3054
 
@@ -3950,7 +3967,7 @@ msgid ""
3950
  msgstr ""
3951
 
3952
  #: includes/class-wcj-product-bulk-meta-editor.php:306
3953
- #: includes/class-wcj-product-by-user.php:287
3954
  #: includes/class-wcj-purchase-data.php:121
3955
  #: includes/classes/class-wcj-module.php:989
3956
  #: includes/functions/wcj-functions-general.php:208
@@ -4142,7 +4159,7 @@ msgstr ""
4142
  #, php-format
4143
  msgid ""
4144
  "If \"Manually\" option is selected, you can add country selection drop box to "
4145
- "frontend with \"%1$s\" widget or %2$s shortcode."
4146
  msgstr ""
4147
 
4148
  #: includes/class-wcj-product-by-country.php:165
@@ -4327,17 +4344,17 @@ msgid ""
4327
  "form to frontend."
4328
  msgstr ""
4329
 
4330
- #: includes/class-wcj-product-by-user.php:236
4331
- #: includes/class-wcj-product-by-user.php:245
4332
  msgid "Wrong user ID!"
4333
  msgstr ""
4334
 
4335
- #: includes/class-wcj-product-by-user.php:278
4336
  #: includes/export/class-wcj-export-fields-helper.php:298
4337
  msgid "Status"
4338
  msgstr ""
4339
 
4340
- #: includes/class-wcj-product-by-user.php:278
4341
  #: includes/class-wcj-product-tabs.php:651
4342
  #: includes/gateways/class-wc-gateway-wcj-custom.php:59
4343
  #: includes/input-fields/wcj-product-input-fields-options.php:53
@@ -4365,12 +4382,12 @@ msgstr ""
4365
  #: includes/shortcodes/class-wcj-products-add-form-shortcodes.php:361
4366
  #: includes/widgets/class-wcj-widget-country-switcher.php:77
4367
  #: includes/widgets/class-wcj-widget-left-to-free-shipping.php:63
4368
- #: includes/widgets/class-wcj-widget-multicurrency.php:84
4369
  #: includes/widgets/class-wcj-widget-selector.php:63
4370
  msgid "Title"
4371
  msgstr ""
4372
 
4373
- #: includes/class-wcj-product-by-user.php:286
4374
  #: includes/shortcodes/class-wcj-products-add-form-shortcodes.php:470
4375
  #: includes/tools/class-wcj-order-statuses-tool.php:210
4376
  #: includes/tools/class-wcj-order-statuses-tool.php:286
@@ -4409,8 +4426,8 @@ msgstr ""
4409
  #: includes/class-wcj-product-custom-visibility.php:37
4410
  #, php-format
4411
  msgid ""
4412
- "You can add selection drop box to frontend with \"%1$s\" widget (set "
4413
- "\"Product custom visibility\" as \"Selector Type\") or %2$s shortcode."
4414
  msgstr ""
4415
 
4416
  #: includes/class-wcj-product-custom-visibility.php:42
@@ -4892,8 +4909,10 @@ msgid "Add \"products per page\" selector to WooCommerce."
4892
  msgstr ""
4893
 
4894
  #: includes/class-wcj-products-per-page.php:96
 
4895
  msgid ""
4896
- "Products <strong>%1$from% - %to%</strong>. Products on page %2$select_form%"
 
4897
  msgstr ""
4898
 
4899
  #: includes/class-wcj-products-xml.php:31
@@ -5343,8 +5362,7 @@ msgstr ""
5343
  #: includes/class-wcj-shipping-by-time.php:149
5344
  #, php-format
5345
  msgid ""
5346
- "According to current time, your time input will be parsed as: from %1$s to "
5347
- "%2$s."
5348
  msgstr ""
5349
 
5350
  #: includes/class-wcj-shipping-by-time.php:155
@@ -5697,6 +5715,15 @@ msgstr ""
5697
  msgid "Visits"
5698
  msgstr ""
5699
 
 
 
 
 
 
 
 
 
 
5700
  #: includes/class-wcj-upsells.php:37
5701
  msgid "Upsells"
5702
  msgstr ""
@@ -5925,7 +5952,7 @@ msgstr ""
5925
 
5926
  #: includes/emails/class-wc-email-wcj-custom.php:240
5927
  #, php-format
5928
- msgid "Order status %1$s to %2$s"
5929
  msgstr ""
5930
 
5931
  #: includes/emails/class-wc-email-wcj-custom.php:247
@@ -6421,7 +6448,7 @@ msgstr ""
6421
  #: includes/settings/wcj-settings-shipping-options.php:85
6422
  #: includes/shipping/class-wc-shipping-wcj-custom-with-shipping-zones.php:231
6423
  #: includes/shipping/class-wc-shipping-wcj-custom.php:129
6424
- #: includes/widgets/class-wcj-widget-multicurrency.php:91
6425
  msgid "Type"
6426
  msgstr ""
6427
 
@@ -8525,7 +8552,7 @@ msgstr ""
8525
 
8526
  #: includes/pdf-invoices/class-wcj-pdf-invoicing-report-tool.php:294
8527
  #, php-format
8528
- msgid "No documents (%1$s) found for %2$d-%3$02d."
8529
  msgstr ""
8530
 
8531
  #: includes/pdf-invoices/submodules/class-wcj-pdf-invoicing-advanced.php:33
@@ -10119,8 +10146,7 @@ msgstr ""
10119
  #: includes/settings/wcj-settings-admin-tools.php:25
10120
  #, php-format
10121
  msgid ""
10122
- "Will require %1$s capability to see Booster menus (instead of %2$s "
10123
- "capability)."
10124
  msgstr ""
10125
 
10126
  #: includes/settings/wcj-settings-admin-tools.php:35
@@ -10633,7 +10659,7 @@ msgstr ""
10633
 
10634
  #: includes/settings/wcj-settings-checkout-custom-fields.php:208
10635
  #: includes/settings/wcj-settings-eu-vat-number.php:58
10636
- #: includes/widgets/class-wcj-widget-multicurrency.php:115
10637
  msgid "Class"
10638
  msgstr ""
10639
 
@@ -11471,7 +11497,7 @@ msgid "Before"
11471
  msgstr ""
11472
 
11473
  #: includes/settings/wcj-settings-checkout-files-upload.php:334
11474
- msgid "Replaced values: %1$field_id%, %2$field_label%, %required_html%."
11475
  msgstr ""
11476
 
11477
  #: includes/settings/wcj-settings-checkout-files-upload.php:342
@@ -11482,7 +11508,7 @@ msgid "Field"
11482
  msgstr ""
11483
 
11484
  #: includes/settings/wcj-settings-checkout-files-upload.php:344
11485
- msgid "Replaced values: %1$field_html%, %2$button_html%."
11486
  msgstr ""
11487
 
11488
  #: includes/settings/wcj-settings-checkout-files-upload.php:352
@@ -11514,7 +11540,7 @@ msgstr ""
11514
 
11515
  #: includes/settings/wcj-settings-checkout-files-upload.php:412
11516
  #, php-format
11517
- msgid "Ignored, if %1$s is not included in %2$s option above."
11518
  msgstr ""
11519
 
11520
  #: includes/settings/wcj-settings-checkout-files-upload.php:430
@@ -11793,8 +11819,8 @@ msgstr ""
11793
  #: includes/settings/wcj-settings-cross-sells.php:137
11794
  #, php-format
11795
  msgid ""
11796
- "Please note that this option will work only if \"%1$s\" option is disabled in "
11797
- "%2$s."
11798
  msgstr ""
11799
 
11800
  #: includes/settings/wcj-settings-cross-sells.php:138
@@ -13195,13 +13221,13 @@ msgstr ""
13195
  #: includes/settings/wcj-settings-left-to-free-shipping.php:22
13196
  #, php-format
13197
  msgid ""
13198
- "You can also use <em>Booster - Left to Free Shipping</em> widget, %1$s "
13199
- "shortcode or %2$s function."
13200
  msgstr ""
13201
 
13202
  #: includes/settings/wcj-settings-left-to-free-shipping.php:28
13203
  #, php-format
13204
- msgid "In content replaced values are: %1$s, %2$s and %3$s."
13205
  msgstr ""
13206
 
13207
  #: includes/settings/wcj-settings-left-to-free-shipping.php:36
@@ -13844,7 +13870,7 @@ msgstr ""
13844
 
13845
  #: includes/settings/wcj-settings-my-account.php:130
13846
  #, php-format
13847
- msgid "Add in %1$s format. One per line. E.g.: %2$s."
13848
  msgstr ""
13849
 
13850
  #: includes/settings/wcj-settings-my-account.php:149
@@ -14247,7 +14273,12 @@ msgstr ""
14247
 
14248
  #: includes/settings/wcj-settings-offer-price.php:326
14249
  #, php-format
14250
- msgid "Use %1$s to send to administrator email: %2$s."
 
 
 
 
 
14251
  msgstr ""
14252
 
14253
  #: includes/settings/wcj-settings-offer-price.php:366
@@ -14420,8 +14451,8 @@ msgstr ""
14420
  #, php-format
14421
  msgid ""
14422
  "Message to customer if order is below minimum amount. Default: You must have "
14423
- "an order with a minimum of %1$s to place your order, your current order total "
14424
- "is %2$s."
14425
  msgstr ""
14426
 
14427
  #: includes/settings/wcj-settings-order-min-amount.php:68
@@ -17817,7 +17848,7 @@ msgstr ""
17817
 
17818
  #: includes/settings/wcj-settings-product-input-fields.php:410
17819
  #, php-format
17820
- msgid "Enable this if you have single quotes %1$s converted to %2$s."
17821
  msgstr ""
17822
 
17823
  #: includes/settings/wcj-settings-product-listings.php:34
@@ -18180,7 +18211,7 @@ msgstr ""
18180
 
18181
  #: includes/settings/wcj-settings-product-price-by-formula.php:26
18182
  #, php-format
18183
- msgid "Use %1$s variable for product's base price. For example: %2$s."
18184
  msgstr ""
18185
 
18186
  #: includes/settings/wcj-settings-product-price-by-formula.php:36
@@ -18497,19 +18528,13 @@ msgstr ""
18497
  msgid "Template - Form"
18498
  msgstr ""
18499
 
18500
- #: includes/settings/wcj-settings-products-per-page.php:67
18501
- msgid ""
18502
- "Products <strong>%from% - %to%</strong> from <strong>%total%</strong>. "
18503
- "Products on page %select_form%"
18504
- msgstr ""
18505
-
18506
  #: includes/settings/wcj-settings-products-per-page.php:72
18507
  msgid "Template - After Form"
18508
  msgstr ""
18509
 
18510
  #: includes/settings/wcj-settings-products-per-page.php:79
18511
  #: includes/widgets/class-wcj-widget-country-switcher.php:102
18512
- #: includes/widgets/class-wcj-widget-multicurrency.php:103
18513
  msgid "Form Method"
18514
  msgstr ""
18515
 
@@ -20527,8 +20552,8 @@ msgstr ""
20527
  #: includes/shipping/class-wc-shipping-wcj-custom-with-shipping-zones.php:289
20528
  #, php-format
20529
  msgid ""
20530
- "You can use %1$s and %2$s params in formula, e.g.: %3$s. Also you can use "
20531
- "shortcodes, e.g.: %4$s."
20532
  msgstr ""
20533
 
20534
  #: includes/shipping/class-wc-shipping-wcj-custom-with-shipping-zones.php:302
@@ -20770,17 +20795,17 @@ msgid "Replace with currency"
20770
  msgstr ""
20771
 
20772
  #: includes/widgets/class-wcj-widget-country-switcher.php:103
20773
- #: includes/widgets/class-wcj-widget-multicurrency.php:104
20774
  msgid "HTML form method for \"Drop down\" and \"Radio list\" types."
20775
  msgstr ""
20776
 
20777
  #: includes/widgets/class-wcj-widget-country-switcher.php:108
20778
- #: includes/widgets/class-wcj-widget-multicurrency.php:109
20779
  msgid "Post"
20780
  msgstr ""
20781
 
20782
  #: includes/widgets/class-wcj-widget-country-switcher.php:109
20783
- #: includes/widgets/class-wcj-widget-multicurrency.php:110
20784
  msgid "Get"
20785
  msgstr ""
20786
 
@@ -20800,27 +20825,27 @@ msgstr ""
20800
  msgid "Multicurrency module not enabled!"
20801
  msgstr ""
20802
 
20803
- #: includes/widgets/class-wcj-widget-multicurrency.php:96
20804
  msgid "Drop down"
20805
  msgstr ""
20806
 
20807
- #: includes/widgets/class-wcj-widget-multicurrency.php:97
20808
  msgid "Radio list"
20809
  msgstr ""
20810
 
20811
- #: includes/widgets/class-wcj-widget-multicurrency.php:98
20812
  msgid "Link list"
20813
  msgstr ""
20814
 
20815
- #: includes/widgets/class-wcj-widget-multicurrency.php:116
20816
  msgid "HTML class for \"Drop down\" type."
20817
  msgstr ""
20818
 
20819
- #: includes/widgets/class-wcj-widget-multicurrency.php:123
20820
  msgid "Style"
20821
  msgstr ""
20822
 
20823
- #: includes/widgets/class-wcj-widget-multicurrency.php:124
20824
  msgid "HTML style for \"Drop down\" type."
20825
  msgstr ""
20826
 
58
  #: includes/admin/class-wc-settings-jetpack.php:110
59
  #, php-format
60
  msgid ""
61
+ "Please rate <strong>Booster for WooCommerce</strong> %s on <a href=\"%s\" "
62
  "target=\"_blank\">WordPress.org</a> to help us spread the word. Thank you "
63
  "from Booster team!"
64
  msgstr ""
66
  #: includes/admin/class-wc-settings-jetpack.php:169
67
  #, php-format
68
  msgid ""
69
+ "Please rate <strong>Booster for WooCommerce</strong> %s on <a href=\"%s\" "
70
+ "target=\"_blank\">WordPress.org</a> to help us spread the word. Thank you "
71
  "from Booster team!"
72
  msgstr ""
73
 
95
  #: includes/admin/class-wc-settings-jetpack.php:356
96
  #, php-format
97
  msgid ""
98
+ "Please note that current <em>%s</em> module is deprecated and will be removed "
99
+ "in future updates. Please use <em>%s</em> module instead."
100
  msgstr ""
101
 
102
  #: includes/admin/class-wc-settings-jetpack.php:362
441
  msgstr ""
442
 
443
  #: includes/admin/class-wc-settings-jetpack.php:992
444
+ #: includes/class-wcj-general.php:236 includes/class-wcj-product-by-user.php:275
445
  #: includes/settings/wcj-settings-pdf-invoicing-advanced.php:166
446
  #: includes/tools/class-wcj-order-statuses-tool.php:191
447
  #: includes/tools/class-wcj-order-statuses-tool.php:271
578
 
579
  #: includes/admin/class-wcj-settings-custom-fields.php:79
580
  #, php-format
581
+ msgid "Grab raw %s rate from %s."
582
  msgstr ""
583
 
584
  #: includes/admin/class-wcj-settings-custom-fields.php:80
671
  #: includes/admin/wcj-modules-cats.php:61 includes/class-wcj-admin-bar.php:493
672
  #: includes/class-wcj-admin-bar.php:497 includes/class-wcj-admin-bar.php:543
673
  #: includes/class-wcj-product-bulk-meta-editor.php:285
674
+ #: includes/class-wcj-product-by-user.php:177
675
+ #: includes/class-wcj-product-by-user.php:214
676
  #: includes/class-wcj-shipping-by-products.php:40
677
  #: includes/settings/wcj-settings-reports.php:181
678
  #: includes/settings/wcj-settings-shipping-options.php:77
1485
  #: includes/class-wcj-checkout-custom-fields.php:48
1486
  #: includes/class-wcj-product-input-fields.php:45
1487
  #, php-format
1488
+ msgid "<strong>PHP code:</strong> by using %s function,<br> e.g.: %s"
1489
  msgstr ""
1490
 
1491
  #: includes/class-wcj-checkout-custom-info.php:30
1611
  msgstr ""
1612
 
1613
  #: includes/class-wcj-checkout-files-upload.php:424
1614
+ msgid "Order ID: %order_id%; File name: %file_name%"
1615
  msgstr ""
1616
 
1617
  #: includes/class-wcj-checkout-files-upload.php:441
2027
  #, php-format
2028
  msgid ""
2029
  "Please note that if you enable the module and enter non-valid PHP code here, "
2030
+ "your site will become unavailable. To fix this you will have to add %s "
2031
  "attribute to the URL (you must be logged as shop manager or admin (for this "
2032
+ "reason custom PHP code is not executed on %s page))."
2033
  msgstr ""
2034
 
2035
  #: includes/class-wcj-custom-php.php:42
2494
  #: includes/class-wcj-general.php:243
2495
  #: includes/class-wcj-payment-gateways.php:133
2496
  #: includes/class-wcj-product-bulk-meta-editor.php:402
2497
+ #: includes/class-wcj-product-by-user.php:284
2498
  #: includes/pdf-invoices/submodules/class-wcj-pdf-invoicing-display.php:162
2499
  #: includes/pdf-invoices/submodules/class-wcj-pdf-invoicing-display.php:384
2500
  #: includes/shortcodes/class-wcj-products-add-form-shortcodes.php:391
2667
  #: includes/class-wcj-multicurrency.php:59
2668
  #: includes/class-wcj-purchase-data.php:49
2669
  #, php-format
2670
+ msgid "<strong>PHP code:</strong> by using %s function, e.g.: %s"
2671
  msgstr ""
2672
 
2673
  #: includes/class-wcj-my-account.php:33
2715
  msgid "Lost password"
2716
  msgstr ""
2717
 
2718
+ #: includes/class-wcj-my-account.php:329
2719
+ #, php-format
2720
+ msgid "Hello %1$s (not %1$s? <a href=\"%2$s\">Log out</a>)"
2721
+ msgstr ""
2722
+
2723
+ #: includes/class-wcj-my-account.php:339
2724
+ #, php-format
2725
+ msgid ""
2726
+ "From your account dashboard you can view your <a href=\"%1$s\">recent orders</"
2727
+ "a>, manage your <a href=\"%2$s\">shipping and billing addresses</a>, and <a "
2728
+ "href=\"%3$s\">edit your password and account details</a>."
2729
+ msgstr ""
2730
+
2731
  #: includes/class-wcj-my-account.php:448
2732
  msgid "User role"
2733
  msgstr ""
2809
  msgid "No price offers yet."
2810
  msgstr ""
2811
 
2812
+ #: includes/class-wcj-offer-price.php:257
2813
+ #, php-format
2814
+ msgid "Average offer: %s (from %s offer(s))"
2815
+ msgstr ""
2816
+
2817
  #: includes/class-wcj-offer-price.php:265
2818
  msgid "Update product after checking the box."
2819
  msgstr ""
2873
  msgstr ""
2874
 
2875
  #: includes/class-wcj-offer-price.php:560
 
2876
  #, php-format
2877
  msgid "From: %1$s %2$s"
2878
  msgstr ""
3049
  msgid "Tool renumerates all orders."
3050
  msgstr ""
3051
 
3052
+ #: includes/class-wcj-order-numbers.php:348
3053
  msgid "Orders successfully renumerated!"
3054
  msgstr ""
3055
 
3056
+ #: includes/class-wcj-order-numbers.php:353
3057
  #, php-format
3058
  msgid "Sequential number generation is enabled. Next order number will be %s."
3059
  msgstr ""
3060
 
3061
+ #: includes/class-wcj-order-numbers.php:366
3062
  #, php-format
3063
  msgid ""
3064
  "Press the button below to renumerate all existing orders starting from order "
3065
  "counter settings in <a href=\"%s\">Order Numbers</a> module."
3066
  msgstr ""
3067
 
3068
+ #: includes/class-wcj-order-numbers.php:374
3069
  msgid "Renumerate orders"
3070
  msgstr ""
3071
 
3967
  msgstr ""
3968
 
3969
  #: includes/class-wcj-product-bulk-meta-editor.php:306
3970
+ #: includes/class-wcj-product-by-user.php:284
3971
  #: includes/class-wcj-purchase-data.php:121
3972
  #: includes/classes/class-wcj-module.php:989
3973
  #: includes/functions/wcj-functions-general.php:208
4159
  #, php-format
4160
  msgid ""
4161
  "If \"Manually\" option is selected, you can add country selection drop box to "
4162
+ "frontend with \"%s\" widget or %s shortcode."
4163
  msgstr ""
4164
 
4165
  #: includes/class-wcj-product-by-country.php:165
4344
  "form to frontend."
4345
  msgstr ""
4346
 
4347
+ #: includes/class-wcj-product-by-user.php:233
4348
+ #: includes/class-wcj-product-by-user.php:242
4349
  msgid "Wrong user ID!"
4350
  msgstr ""
4351
 
4352
+ #: includes/class-wcj-product-by-user.php:275
4353
  #: includes/export/class-wcj-export-fields-helper.php:298
4354
  msgid "Status"
4355
  msgstr ""
4356
 
4357
+ #: includes/class-wcj-product-by-user.php:275
4358
  #: includes/class-wcj-product-tabs.php:651
4359
  #: includes/gateways/class-wc-gateway-wcj-custom.php:59
4360
  #: includes/input-fields/wcj-product-input-fields-options.php:53
4382
  #: includes/shortcodes/class-wcj-products-add-form-shortcodes.php:361
4383
  #: includes/widgets/class-wcj-widget-country-switcher.php:77
4384
  #: includes/widgets/class-wcj-widget-left-to-free-shipping.php:63
4385
+ #: includes/widgets/class-wcj-widget-multicurrency.php:85
4386
  #: includes/widgets/class-wcj-widget-selector.php:63
4387
  msgid "Title"
4388
  msgstr ""
4389
 
4390
+ #: includes/class-wcj-product-by-user.php:283
4391
  #: includes/shortcodes/class-wcj-products-add-form-shortcodes.php:470
4392
  #: includes/tools/class-wcj-order-statuses-tool.php:210
4393
  #: includes/tools/class-wcj-order-statuses-tool.php:286
4426
  #: includes/class-wcj-product-custom-visibility.php:37
4427
  #, php-format
4428
  msgid ""
4429
+ "You can add selection drop box to frontend with \"%s\" widget (set \"Product "
4430
+ "custom visibility\" as \"Selector Type\") or %s shortcode."
4431
  msgstr ""
4432
 
4433
  #: includes/class-wcj-product-custom-visibility.php:42
4909
  msgstr ""
4910
 
4911
  #: includes/class-wcj-products-per-page.php:96
4912
+ #: includes/settings/wcj-settings-products-per-page.php:67
4913
  msgid ""
4914
+ "Products <strong>%from% - %to%</strong> from <strong>%total%</strong>. "
4915
+ "Products on page %select_form%"
4916
  msgstr ""
4917
 
4918
  #: includes/class-wcj-products-xml.php:31
5362
  #: includes/class-wcj-shipping-by-time.php:149
5363
  #, php-format
5364
  msgid ""
5365
+ "According to current time, your time input will be parsed as: from %s to %s."
 
5366
  msgstr ""
5367
 
5368
  #: includes/class-wcj-shipping-by-time.php:155
5715
  msgid "Visits"
5716
  msgstr ""
5717
 
5718
+ #: includes/class-wcj-track-users.php:373
5719
+ #, php-format
5720
+ msgid "Stats generated at %s. Next update is scheduled at %s."
5721
+ msgstr ""
5722
+
5723
+ #: includes/class-wcj-track-users.php:374
5724
+ msgid "Update now"
5725
+ msgstr ""
5726
+
5727
  #: includes/class-wcj-upsells.php:37
5728
  msgid "Upsells"
5729
  msgstr ""
5952
 
5953
  #: includes/emails/class-wc-email-wcj-custom.php:240
5954
  #, php-format
5955
+ msgid "Order status %s to %s"
5956
  msgstr ""
5957
 
5958
  #: includes/emails/class-wc-email-wcj-custom.php:247
6448
  #: includes/settings/wcj-settings-shipping-options.php:85
6449
  #: includes/shipping/class-wc-shipping-wcj-custom-with-shipping-zones.php:231
6450
  #: includes/shipping/class-wc-shipping-wcj-custom.php:129
6451
+ #: includes/widgets/class-wcj-widget-multicurrency.php:92
6452
  msgid "Type"
6453
  msgstr ""
6454
 
8552
 
8553
  #: includes/pdf-invoices/class-wcj-pdf-invoicing-report-tool.php:294
8554
  #, php-format
8555
+ msgid "No documents (%s) found for %d-%02d."
8556
  msgstr ""
8557
 
8558
  #: includes/pdf-invoices/submodules/class-wcj-pdf-invoicing-advanced.php:33
10146
  #: includes/settings/wcj-settings-admin-tools.php:25
10147
  #, php-format
10148
  msgid ""
10149
+ "Will require %s capability to see Booster menus (instead of %s capability)."
 
10150
  msgstr ""
10151
 
10152
  #: includes/settings/wcj-settings-admin-tools.php:35
10659
 
10660
  #: includes/settings/wcj-settings-checkout-custom-fields.php:208
10661
  #: includes/settings/wcj-settings-eu-vat-number.php:58
10662
+ #: includes/widgets/class-wcj-widget-multicurrency.php:116
10663
  msgid "Class"
10664
  msgstr ""
10665
 
11497
  msgstr ""
11498
 
11499
  #: includes/settings/wcj-settings-checkout-files-upload.php:334
11500
+ msgid "Replaced values: %field_id%, %field_label%, %required_html%."
11501
  msgstr ""
11502
 
11503
  #: includes/settings/wcj-settings-checkout-files-upload.php:342
11508
  msgstr ""
11509
 
11510
  #: includes/settings/wcj-settings-checkout-files-upload.php:344
11511
+ msgid "Replaced values: %field_html%, %button_html%."
11512
  msgstr ""
11513
 
11514
  #: includes/settings/wcj-settings-checkout-files-upload.php:352
11540
 
11541
  #: includes/settings/wcj-settings-checkout-files-upload.php:412
11542
  #, php-format
11543
+ msgid "Ignored, if %s is not included in %s option above."
11544
  msgstr ""
11545
 
11546
  #: includes/settings/wcj-settings-checkout-files-upload.php:430
11819
  #: includes/settings/wcj-settings-cross-sells.php:137
11820
  #, php-format
11821
  msgid ""
11822
+ "Please note that this option will work only if \"%s\" option is disabled in "
11823
+ "%s."
11824
  msgstr ""
11825
 
11826
  #: includes/settings/wcj-settings-cross-sells.php:138
13221
  #: includes/settings/wcj-settings-left-to-free-shipping.php:22
13222
  #, php-format
13223
  msgid ""
13224
+ "You can also use <em>Booster - Left to Free Shipping</em> widget, %s "
13225
+ "shortcode or %s function."
13226
  msgstr ""
13227
 
13228
  #: includes/settings/wcj-settings-left-to-free-shipping.php:28
13229
  #, php-format
13230
+ msgid "In content replaced values are: %s, %s and %s."
13231
  msgstr ""
13232
 
13233
  #: includes/settings/wcj-settings-left-to-free-shipping.php:36
13870
 
13871
  #: includes/settings/wcj-settings-my-account.php:130
13872
  #, php-format
13873
+ msgid "Add in %s format. One per line. E.g.: %s."
13874
  msgstr ""
13875
 
13876
  #: includes/settings/wcj-settings-my-account.php:149
14273
 
14274
  #: includes/settings/wcj-settings-offer-price.php:326
14275
  #, php-format
14276
+ msgid "Use %s to send to administrator email: %s."
14277
+ msgstr ""
14278
+
14279
+ #: includes/settings/wcj-settings-offer-price.php:356
14280
+ #, php-format
14281
+ msgid "From: %s %s"
14282
  msgstr ""
14283
 
14284
  #: includes/settings/wcj-settings-offer-price.php:366
14451
  #, php-format
14452
  msgid ""
14453
  "Message to customer if order is below minimum amount. Default: You must have "
14454
+ "an order with a minimum of %s to place your order, your current order total "
14455
+ "is %s."
14456
  msgstr ""
14457
 
14458
  #: includes/settings/wcj-settings-order-min-amount.php:68
17848
 
17849
  #: includes/settings/wcj-settings-product-input-fields.php:410
17850
  #, php-format
17851
+ msgid "Enable this if you have single quotes %s converted to %s."
17852
  msgstr ""
17853
 
17854
  #: includes/settings/wcj-settings-product-listings.php:34
18211
 
18212
  #: includes/settings/wcj-settings-product-price-by-formula.php:26
18213
  #, php-format
18214
+ msgid "Use %s variable for product's base price. For example: %s."
18215
  msgstr ""
18216
 
18217
  #: includes/settings/wcj-settings-product-price-by-formula.php:36
18528
  msgid "Template - Form"
18529
  msgstr ""
18530
 
 
 
 
 
 
 
18531
  #: includes/settings/wcj-settings-products-per-page.php:72
18532
  msgid "Template - After Form"
18533
  msgstr ""
18534
 
18535
  #: includes/settings/wcj-settings-products-per-page.php:79
18536
  #: includes/widgets/class-wcj-widget-country-switcher.php:102
18537
+ #: includes/widgets/class-wcj-widget-multicurrency.php:104
18538
  msgid "Form Method"
18539
  msgstr ""
18540
 
20552
  #: includes/shipping/class-wc-shipping-wcj-custom-with-shipping-zones.php:289
20553
  #, php-format
20554
  msgid ""
20555
+ "You can use %s and %s params in formula, e.g.: %s. Also you can use "
20556
+ "shortcodes, e.g.: %s."
20557
  msgstr ""
20558
 
20559
  #: includes/shipping/class-wc-shipping-wcj-custom-with-shipping-zones.php:302
20795
  msgstr ""
20796
 
20797
  #: includes/widgets/class-wcj-widget-country-switcher.php:103
20798
+ #: includes/widgets/class-wcj-widget-multicurrency.php:105
20799
  msgid "HTML form method for \"Drop down\" and \"Radio list\" types."
20800
  msgstr ""
20801
 
20802
  #: includes/widgets/class-wcj-widget-country-switcher.php:108
20803
+ #: includes/widgets/class-wcj-widget-multicurrency.php:110
20804
  msgid "Post"
20805
  msgstr ""
20806
 
20807
  #: includes/widgets/class-wcj-widget-country-switcher.php:109
20808
+ #: includes/widgets/class-wcj-widget-multicurrency.php:111
20809
  msgid "Get"
20810
  msgstr ""
20811
 
20825
  msgid "Multicurrency module not enabled!"
20826
  msgstr ""
20827
 
20828
+ #: includes/widgets/class-wcj-widget-multicurrency.php:97
20829
  msgid "Drop down"
20830
  msgstr ""
20831
 
20832
+ #: includes/widgets/class-wcj-widget-multicurrency.php:98
20833
  msgid "Radio list"
20834
  msgstr ""
20835
 
20836
+ #: includes/widgets/class-wcj-widget-multicurrency.php:99
20837
  msgid "Link list"
20838
  msgstr ""
20839
 
20840
+ #: includes/widgets/class-wcj-widget-multicurrency.php:117
20841
  msgid "HTML class for \"Drop down\" type."
20842
  msgstr ""
20843
 
20844
+ #: includes/widgets/class-wcj-widget-multicurrency.php:124
20845
  msgid "Style"
20846
  msgstr ""
20847
 
20848
+ #: includes/widgets/class-wcj-widget-multicurrency.php:125
20849
  msgid "HTML style for \"Drop down\" type."
20850
  msgstr ""
20851
 
readme.txt CHANGED
@@ -4,7 +4,7 @@ Tags: woocommerce customization, woocommerce bundle, woocommerce product addon,
4
  Requires at least: 4.4
5
  Tested up to: 6.0
6
  Requires PHP: 5.6
7
- Stable tag: 5.6.0
8
  License: GNU General Public License v3.0
9
  License URI: http://www.gnu.org/licenses/gpl-3.0.html
10
 
@@ -275,6 +275,17 @@ To unlock all Booster for WooCommerce features, please install additional paid B
275
 
276
  == Changelog ==
277
 
 
 
 
 
 
 
 
 
 
 
 
278
  = 5.6.0 29/06/2022 =
279
 
280
  * FIXED - PRICES & CURRENCIES - Wholesale Price - Fixed debug.log warning.
4
  Requires at least: 4.4
5
  Tested up to: 6.0
6
  Requires PHP: 5.6
7
+ Stable tag: 5.6.1
8
  License: GNU General Public License v3.0
9
  License URI: http://www.gnu.org/licenses/gpl-3.0.html
10
 
275
 
276
  == Changelog ==
277
 
278
+ = 5.6.1 01/07/2022 =
279
+
280
+ * FIXED - PRODUCTS - User Products - Fixed Fatal Error: Uncaught Error: Cannot access protected property XXX::$id.
281
+ * FIXED - PRODUCTS - Tax Display - Fixed Price displayed without taxes as default
282
+ * FIXED - PRODUCTS - Price based on User Role - Parse error: syntax error, unexpected ‘)’ in .../includes/class-wcj-price-by-user-role.php on line 417.
283
+ * FIXED - PRICES & CURRENCIES - Product Open Pricing (Name Your Price) - Allowing cents to Min, Max & Default input box
284
+ * FIXED - PRICES & CURRENCIES - Bulk Price Converter - PHP Notice: Undefined index: bulk_change_prices_preview...
285
+ * FIXED - PRICES & CURRENCIES - Global Discount - Fixed Include/Exclude Product Categories, Tags, Products options
286
+ * FIXED - PHP Notice: Undefined variable: old_option ...
287
+ * FIXED - Added Security vulnerability fixes.
288
+
289
  = 5.6.0 29/06/2022 =
290
 
291
  * FIXED - PRICES & CURRENCIES - Wholesale Price - Fixed debug.log warning.
version-details.txt CHANGED
@@ -1,6 +1,5 @@
1
- = 5.6.0 29/06/2022 =
2
 
3
- * FIXED - PRICES & CURRENCIES - Wholesale Price - Fixed debug.log warning.
4
- * FIXED - PAYMENT GATEWAYS - Gateways Fees and Discounts - Updated the payment fee calculation.
5
- * WooCommerce 6.6.1 tested
6
- * WordPress 6.0 tested
1
+ = 5.6.1 01/07/2022 =
2
 
3
+ * FIXED - PRODUCTS - User Products - Fixed Fatal Error: Uncaught Error: Cannot access protected property XXX::$id.
4
+ * FIXED - PRODUCTS - Tax Display - Fixed Price displayed without taxes as default
5
+ * FIXED - PRODUCTS - Price based on User Role - Parse error: syntax error, unexpected ‘)’ in .../includes/class-wcj-price-by-user-role.php on line 417.
 
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. More than 100 modules.All in one WooCommerce plugin.
6
- * Version: 5.6.0
7
  * Author: Pluggabl LLC
8
  * Author URI: https://booster.io
9
  * Text Domain: woocommerce-jetpack
@@ -30,17 +30,22 @@ if ( ! wcj_is_plugin_activated( 'woocommerce', 'woocommerce.php' ) ) {
30
  }
31
 
32
  // Check if Plus is active.
33
- if ( 'woocommerce-jetpack.php' === basename( __FILE__ ) && wcj_is_plugin_activated( 'booster-plus-for-woocommerce', 'booster-plus-for-woocommerce.php' ) ) {
 
 
 
 
 
34
  return;
35
  }
36
 
37
- if ( ! defined( 'WCJ_PLUGIN_FILE' ) ) {
38
  /**
39
- * WCJ_PLUGIN_FILE.
40
  *
41
- * @since 3.2.4
42
  */
43
- define( 'WCJ_PLUGIN_FILE', __FILE__ );
44
  }
45
 
46
  if ( ! class_exists( 'WC_Jetpack' ) ) :
@@ -54,16 +59,13 @@ if ( ! class_exists( 'WC_Jetpack' ) ) :
54
  */
55
  final class WC_Jetpack {
56
 
57
-
58
-
59
-
60
  /**
61
  * Booster for WooCommerce version.
62
  *
63
  * @var string
64
  * @since 2.4.7
65
  */
66
- public $version = '5.6.0';
67
 
68
  /**
69
  * The single instance of the class
3
  * Plugin Name: Booster for WooCommerce
4
  * Plugin URI: https://booster.io
5
  * Description: Supercharge your WooCommerce site with these awesome powerful features. More than 100 modules.All in one WooCommerce plugin.
6
+ * Version: 5.6.1
7
  * Author: Pluggabl LLC
8
  * Author URI: https://booster.io
9
  * Text Domain: woocommerce-jetpack
30
  }
31
 
32
  // Check if Plus is active.
33
+ if ( 'woocommerce-jetpack.php' === basename( __FILE__ ) &&
34
+ ( wcj_is_plugin_activated( 'booster-plus-for-woocommerce', 'booster-plus-for-woocommerce.php' ) ||
35
+ wcj_is_plugin_activated( 'booster-elite-for-woocommerce', 'booster-elite-for-woocommerce.php' ) ||
36
+ wcj_is_plugin_activated( 'booster-basic-for-woocommerce', 'booster-basic-for-woocommerce.php' ) ||
37
+ wcj_is_plugin_activated( 'booster-pro-for-woocommerce', 'booster-pro-for-woocommerce.php' ) )
38
+ ) {
39
  return;
40
  }
41
 
42
+ if ( ! defined( 'WCJ_FREE_PLUGIN_FILE' ) ) {
43
  /**
44
+ * WCJ_FREE_PLUGIN_FILE.
45
  *
46
+ * @since 5.6.1
47
  */
48
+ define( 'WCJ_FREE_PLUGIN_FILE', __FILE__ );
49
  }
50
 
51
  if ( ! class_exists( 'WC_Jetpack' ) ) :
59
  */
60
  final class WC_Jetpack {
61
 
 
 
 
62
  /**
63
  * Booster for WooCommerce version.
64
  *
65
  * @var string
66
  * @since 2.4.7
67
  */
68
+ public $version = '5.6.1';
69
 
70
  /**
71
  * The single instance of the class