Booster for WooCommerce - Version 5.6.7

Version Description

27/10/2022 =

  • FIXED - PAYMENT GATEWAYS - Gateways Currency Converter - Fixed the issue of currency on the cart page.
  • FIXED - CART & CHECKOUT - Checkout Files Upload - Fixed Security vulnerability for ShopManager + Arbitrary File Download.
  • FIXED - CART & CHECKOUT - Checkout Files Upload - Fixed Security vulnerability for Checkout Files Deletion.
  • FIXED - PRODUCTS - Product Input Fields - Fixed Security vulnerability for ShopManager + Arbitrary File Download.
  • FIXED - PRODUCTS - Products per Page - Fixed "Template - Form" default text translators issue.
  • FIXED - EMAILS & MISC. - Old Slugs - Fixed SQL error - syntax near 'WHERE meta_key
Download this release

Release Info

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

Code changes from version 5.6.6 to 5.6.7

Files changed (59) hide show
  1. includes/admin/class-wc-settings-jetpack.php +9 -15
  2. includes/admin/class-wcj-tools.php +5 -4
  3. includes/admin/wcj-welcome-screen-content.php +3 -5
  4. includes/class-wcj-admin-orders-list.php +27 -22
  5. includes/class-wcj-admin-tools.php +8 -7
  6. includes/class-wcj-checkout-custom-fields.php +3 -6
  7. includes/class-wcj-checkout-fees.php +17 -11
  8. includes/class-wcj-checkout-files-upload.php +45 -8
  9. includes/class-wcj-custom-php.php +4 -7
  10. includes/class-wcj-debug-tools.php +12 -8
  11. includes/class-wcj-empty-cart-button.php +3 -6
  12. includes/class-wcj-eu-vat-number.php +7 -10
  13. includes/class-wcj-export-import.php +6 -6
  14. includes/class-wcj-general.php +29 -15
  15. includes/class-wcj-global-discount.php +4 -8
  16. includes/class-wcj-my-account.php +9 -13
  17. includes/class-wcj-offer-price.php +5 -5
  18. includes/class-wcj-old-slugs.php +9 -10
  19. includes/class-wcj-order-numbers.php +6 -8
  20. includes/class-wcj-order-quantities.php +8 -11
  21. includes/class-wcj-orders.php +6 -9
  22. includes/class-wcj-payment-gateways-currency.php +15 -13
  23. includes/class-wcj-payment-gateways-min-max.php +3 -3
  24. includes/class-wcj-payment-gateways.php +5 -5
  25. includes/class-wcj-pdf-invoicing.php +11 -12
  26. includes/class-wcj-price-by-country.php +3 -6
  27. includes/class-wcj-price-by-user-role.php +10 -9
  28. includes/class-wcj-price-labels.php +4 -4
  29. includes/class-wcj-product-addons.php +1 -1
  30. includes/class-wcj-product-bookings.php +1 -1
  31. includes/class-wcj-product-input-fields.php +21 -11
  32. includes/class-wcj-product-open-pricing.php +1 -1
  33. includes/class-wcj-product-price-by-formula.php +1 -1
  34. includes/class-wcj-products-per-page.php +5 -7
  35. includes/class-wcj-sorting.php +8 -8
  36. includes/class-wcj-tax-display.php +3 -6
  37. includes/class-wcj-url-coupons.php +8 -7
  38. includes/classes/class-wcj-module.php +14 -9
  39. includes/core/class-wcj-admin.php +4 -7
  40. includes/functions/wcj-functions-admin.php +6 -6
  41. includes/functions/wcj-functions-html.php +3 -2
  42. includes/functions/wcj-functions-price-currency.php +3 -3
  43. includes/input-fields/class-wcj-product-input-fields-core.php +10 -3
  44. includes/js/wcj-admin.js +3 -2
  45. includes/mini-plugin/wcj-mini-plugin.php +23 -23
  46. includes/pdf-invoices/submodules/class-wcj-pdf-invoicing-display.php +18 -14
  47. includes/price-by-country/class-wcj-price-by-country-core.php +1 -1
  48. includes/reports/class-wcj-reports-customers.php +21 -8
  49. includes/reports/class-wcj-reports-monthly-sales.php +11 -11
  50. includes/reports/class-wcj-reports-product-sales-daily.php +7 -12
  51. includes/settings/wcj-settings-price-by-country.php +10 -2
  52. includes/settings/wcj-settings-products-per-page.php +2 -2
  53. includes/shortcodes/class-wcj-general-shortcodes.php +3 -3
  54. includes/shortcodes/class-wcj-order-items-shortcodes.php +3 -7
  55. includes/tools/class-wcj-order-statuses-tool.php +45 -22
  56. langs/woocommerce-jetpack.pot +351 -345
  57. readme.txt +20 -3
  58. version-details.json +4 -4
  59. woocommerce-jetpack.php +3 -3
includes/admin/class-wc-settings-jetpack.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Settings
4
  *
5
- * @version 5.6.5
6
  * @since 1.0.0
7
  * @author Pluggabl LLC.
8
  * @package Booster_For_WooCommerce/admin
@@ -192,14 +192,11 @@ if ( ! class_exists( 'WC_Settings_Jetpack' ) ) :
192
  /**
193
  * Output cats
194
  *
195
- * @version 5.6.5
196
  */
197
  public function output_cats_submenu() {
198
  global $current_section;
199
- $wpnonce = false;
200
- if ( function_exists( 'wp_verify_nonce' ) ) {
201
- $wpnonce = isset( $_REQUEST['_wpnonce'] ) ? wp_verify_nonce( sanitize_key( isset( $_REQUEST['_wpnonce'] ) ? $_REQUEST['_wpnonce'] : '' ), 'woocommerce-settings' ) : false;
202
- }
203
  $current_cat = $wpnonce && isset( $_REQUEST['wcj-cat'] ) && ! empty( $_REQUEST['wcj-cat'] ) ? sanitize_title( wp_unslash( $_REQUEST['wcj-cat'] ) ) : 'dashboard';
204
  if ( empty( $this->cats ) ) {
205
  return;}
@@ -212,7 +209,7 @@ if ( ! class_exists( 'WC_Settings_Jetpack' ) ) :
212
  }
213
  echo wp_kses_post(
214
  '<li class="wcj-header-item ' . ( $current_cat === $id ? 'active' : '' ) . '"><a
215
- href="' . admin_url( 'admin.php?page=wc-settings&tab=' . $this->id . '&wcj-cat=' . sanitize_title( $id ) . '' . $dashboard_section ) . '"
216
  class="' . ( $current_cat === $id ? 'current' : '' ) . '">' . $label_info['label'] . '</a> ' .
217
  ( end( $array_keys ) === $id ? '' : '' ) . ' </li>'
218
  );
@@ -223,17 +220,14 @@ if ( ! class_exists( 'WC_Settings_Jetpack' ) ) :
223
  /**
224
  * Output sections (modules) sub menu.
225
  *
226
- * @version 5.6.2
227
  * @todo (maybe) for case insensitive sorting: `array_multisort( array_map( 'strtolower', $menu ), $menu );` instead of `asort( $menu );` (see http://php.net/manual/en/function.asort.php)
228
  */
229
  public function output_sections_submenu() {
230
  global $current_section;
231
- $sections = $this->get_sections();
232
- $wpnonce = true;
233
- if ( function_exists( 'wp_verify_nonce' ) ) {
234
- $wpnonce = isset( $_REQUEST['_wpnonce'] ) ? wp_verify_nonce( sanitize_key( isset( $_REQUEST['_wpnonce'] ) ? $_REQUEST['_wpnonce'] : '' ), 'woocommerce-settings' ) : true;
235
- }
236
- $current_cat = $wpnonce && empty( $_REQUEST['wcj-cat'] ) ? 'dashboard' : sanitize_title( wp_unslash( $_REQUEST['wcj-cat'] ) );
237
  if ( 'dashboard' === $current_cat ) {
238
 
239
  // Counting modules.
@@ -289,7 +283,7 @@ if ( ! class_exists( 'WC_Settings_Jetpack' ) ) :
289
  $menu_links = array();
290
 
291
  foreach ( $menu as $id => $label ) {
292
- $url = admin_url( 'admin.php?page=wc-settings&tab=' . $this->id . '&wcj-cat=' . $current_cat . '&section=' . sanitize_title( $id ) );
293
  $menu_links[] = '<li class="wcj-sidebar-item ' . ( $current_section === $id ? 'active' : '' ) . '"><a href="' . $url . '" class="' . ( $current_section === $id ? 'current' : '' ) . '">' . $label . '</a></li>';
294
  }
295
  echo wp_kses_post( implode( ' ', $menu_links ) . '<br class="clear" />' );
2
  /**
3
  * Booster for WooCommerce - Settings
4
  *
5
+ * @version 5.6.7
6
  * @since 1.0.0
7
  * @author Pluggabl LLC.
8
  * @package Booster_For_WooCommerce/admin
192
  /**
193
  * Output cats
194
  *
195
+ * @version 5.6.7
196
  */
197
  public function output_cats_submenu() {
198
  global $current_section;
199
+ $wpnonce = isset( $_REQUEST['wcj-cat-nonce'] ) ? wp_verify_nonce( sanitize_key( $_REQUEST['wcj-cat-nonce'] ), 'wcj-cat-nonce' ) : false;
 
 
 
200
  $current_cat = $wpnonce && isset( $_REQUEST['wcj-cat'] ) && ! empty( $_REQUEST['wcj-cat'] ) ? sanitize_title( wp_unslash( $_REQUEST['wcj-cat'] ) ) : 'dashboard';
201
  if ( empty( $this->cats ) ) {
202
  return;}
209
  }
210
  echo wp_kses_post(
211
  '<li class="wcj-header-item ' . ( $current_cat === $id ? 'active' : '' ) . '"><a
212
+ href="' . admin_url( 'admin.php?page=wc-settings&tab=' . $this->id . '&wcj-cat=' . sanitize_title( $id ) . '' . $dashboard_section ) . '&wcj-cat-nonce=' . wp_create_nonce( 'wcj-cat-nonce' ) . '"
213
  class="' . ( $current_cat === $id ? 'current' : '' ) . '">' . $label_info['label'] . '</a> ' .
214
  ( end( $array_keys ) === $id ? '' : '' ) . ' </li>'
215
  );
220
  /**
221
  * Output sections (modules) sub menu.
222
  *
223
+ * @version 5.6.7
224
  * @todo (maybe) for case insensitive sorting: `array_multisort( array_map( 'strtolower', $menu ), $menu );` instead of `asort( $menu );` (see http://php.net/manual/en/function.asort.php)
225
  */
226
  public function output_sections_submenu() {
227
  global $current_section;
228
+ $sections = $this->get_sections();
229
+ $wpnonce = isset( $_REQUEST['wcj-cat-nonce'] ) ? wp_verify_nonce( sanitize_key( $_REQUEST['wcj-cat-nonce'] ), 'wcj-cat-nonce' ) : false;
230
+ $current_cat = ! $wpnonce || empty( $_REQUEST['wcj-cat'] ) ? 'dashboard' : sanitize_title( wp_unslash( $_REQUEST['wcj-cat'] ) );
 
 
 
231
  if ( 'dashboard' === $current_cat ) {
232
 
233
  // Counting modules.
283
  $menu_links = array();
284
 
285
  foreach ( $menu as $id => $label ) {
286
+ $url = admin_url( 'admin.php?page=wc-settings&tab=' . $this->id . '&wcj-cat=' . $current_cat . '&section=' . sanitize_title( $id ) . '&wcj-cat-nonce=' . wp_create_nonce( 'wcj-cat-nonce' ) );
287
  $menu_links[] = '<li class="wcj-sidebar-item ' . ( $current_section === $id ? 'active' : '' ) . '"><a href="' . $url . '" class="' . ( $current_section === $id ? 'current' : '' ) . '">' . $label . '</a></li>';
288
  }
289
  echo wp_kses_post( implode( ' ', $menu_links ) . '<br class="clear" />' );
includes/admin/class-wcj-tools.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce Tools
4
  *
5
- * @version 5.6.2
6
  * @author Pluggabl LLC.
7
  * @package Booster_For_WooCommerce/admin
8
  */
@@ -68,7 +68,7 @@ if ( ! class_exists( 'WCJ_Tools' ) ) :
68
  /**
69
  * Create_tools_page.
70
  *
71
- * @version 5.6.2
72
  */
73
  public function create_tools_page() {
74
 
@@ -93,8 +93,9 @@ if ( ! class_exists( 'WCJ_Tools' ) ) :
93
  $html .= '<a href="' . esc_url(
94
  add_query_arg(
95
  array(
96
- 'page' => 'wcj-tools',
97
- 'tab' => $tab['id'],
 
98
  ),
99
  get_admin_url() . 'admin.php'
100
  )
2
  /**
3
  * Booster for WooCommerce Tools
4
  *
5
+ * @version 5.6.7
6
  * @author Pluggabl LLC.
7
  * @package Booster_For_WooCommerce/admin
8
  */
68
  /**
69
  * Create_tools_page.
70
  *
71
+ * @version 5.6.7
72
  */
73
  public function create_tools_page() {
74
 
93
  $html .= '<a href="' . esc_url(
94
  add_query_arg(
95
  array(
96
+ 'page' => 'wcj-tools',
97
+ 'tab' => $tab['id'],
98
+ 'wcj_tools_nonce' => wp_create_nonce( 'wcj_tools' ),
99
  ),
100
  get_admin_url() . 'admin.php'
101
  )
includes/admin/wcj-welcome-screen-content.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Welcome Screen Content
4
  *
5
- * @version 5.6.2
6
  * @author Pluggabl LLC.
7
  * @package Booster_For_WooCommerce/admin
8
  */
@@ -137,12 +137,10 @@
137
  <form method="post" name="subscribe-email-form">
138
  <input class="form-control user_email" type="email" required="true" name="user_email" placeholder="Enter your email">
139
  <input class="subscribe-email-btn" type="button" name="submit_email_to_klaviyo" value="Submit">
 
140
  </form>
141
  <?php
142
- $wpnonce = true;
143
- if ( function_exists( 'wp_verify_nonce' ) ) {
144
- $wpnonce = isset( $_REQUEST['_wpnonce'] ) ? wp_verify_nonce( sanitize_key( isset( $_REQUEST['_wpnonce'] ) ? $_REQUEST['_wpnonce'] : '' ) ) : true;
145
- }
146
  if ( $wpnonce && isset( $_REQUEST['msg'] ) ) {
147
  $subscribe_message = '';
148
  $subscribe_message_id = sanitize_text_field( wp_unslash( $_REQUEST['msg'] ) );
2
  /**
3
  * Booster for WooCommerce - Welcome Screen Content
4
  *
5
+ * @version 5.6.7
6
  * @author Pluggabl LLC.
7
  * @package Booster_For_WooCommerce/admin
8
  */
137
  <form method="post" name="subscribe-email-form">
138
  <input class="form-control user_email" type="email" required="true" name="user_email" placeholder="Enter your email">
139
  <input class="subscribe-email-btn" type="button" name="submit_email_to_klaviyo" value="Submit">
140
+ <?php wp_nonce_field( 'subscribe-email-nonce', 'subscribe-email-nonce' ); ?>
141
  </form>
142
  <?php
143
+ $wpnonce = isset( $_REQUEST['subscribe-email-nonce'] ) ? wp_verify_nonce( sanitize_key( $_REQUEST['subscribe-email-nonce'] ), 'subscribe-email-nonce' ) : false;
 
 
 
144
  if ( $wpnonce && isset( $_REQUEST['msg'] ) ) {
145
  $subscribe_message = '';
146
  $subscribe_message_id = sanitize_text_field( wp_unslash( $_REQUEST['msg'] ) );
includes/class-wcj-admin-orders-list.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Module - Admin Orders List
4
  *
5
- * @version 5.6.2
6
  * @since 3.2.4
7
  * @author Pluggabl LLC.
8
  * @package Booster_For_WooCommerce/includes
@@ -200,7 +200,7 @@ if ( ! class_exists( 'WCJ_Admin_Orders_List' ) ) :
200
  /**
201
  * Add_shop_order_multiple_statuses_not_completed_link.
202
  *
203
- * @version 5.5.9
204
  * @since 2.5.7
205
  * @param string $views defines the views.
206
  */
@@ -214,25 +214,33 @@ if ( ! class_exists( 'WCJ_Admin_Orders_List' ) ) :
214
  $all_not_completed_statuses = array_keys( $all_not_completed_statuses );
215
  $all_not_completed_statuses_param = rawurlencode( implode( ',', $all_not_completed_statuses ) );
216
  $class = ( isset( $wp_query->query['post_status'] ) && is_array( $wp_query->query['post_status'] ) && $all_not_completed_statuses === $wp_query->query['post_status'] ) ? 'current' : '';
217
- $query_string = esc_url( remove_query_arg( array( 'post_status', 'wcj_admin_filter_statuses' ) ) );
218
- $query_string = esc_url( add_query_arg( 'post_status', $all_not_completed_statuses_param, $query_string ) );
219
- $views['wcj_statuses_not_completed'] = '<a href="' . esc_url( $query_string ) . '" class="' . esc_attr( $class ) . '">' . __( 'Not Completed', 'woocommerce-jetpack' ) . '</a>';
 
 
 
 
 
 
 
 
220
  return $views;
221
  }
222
 
223
  /**
224
  * Filter_shop_order_multiple_statuses_not_completed_link.
225
  *
226
- * @version 5.6.2
227
  * @since 2.5.7
228
  * @param string $query defines the query.
229
  */
230
  public function filter_shop_order_multiple_statuses_not_completed_link( $query ) {
231
  if ( isset( $_SERVER['REQUEST_URI'] ) && false !== strpos( sanitize_text_field( wp_unslash( $_SERVER['REQUEST_URI'] ) ), '/wp-admin/edit.php' ) && isset( $_GET['post_type'] ) && 'shop_order' === $_GET['post_type'] ) {
232
  if ( wcj_current_user_can( 'edit_others_pages' ) ) {
233
- $wpnonce = true;
234
  if ( function_exists( 'wp_verify_nonce' ) ) {
235
- $wpnonce = isset( $_REQUEST['_wpnonce'] ) ? wp_verify_nonce( sanitize_key( isset( $_REQUEST['_wpnonce'] ) ? $_REQUEST['_wpnonce'] : '' ), 'woocommerce-settings' ) : true;
236
  }
237
  if ( $wpnonce && isset( $_GET['post_status'] ) && false !== strpos( sanitize_text_field( wp_unslash( $_GET['post_status'] ) ), ',' ) ) {
238
  $post_statuses = explode( ',', sanitize_text_field( wp_unslash( $_GET['post_status'] ) ) );
@@ -246,15 +254,12 @@ if ( ! class_exists( 'WCJ_Admin_Orders_List' ) ) :
246
  /**
247
  * Multiple_shop_order_statuses.
248
  *
249
- * @version 5.6.2
250
  * @since 2.5.7
251
  * @param string $type defines the type.
252
  */
253
  public function multiple_shop_order_statuses( $type ) {
254
- $wpnonce = true;
255
- if ( function_exists( 'wp_verify_nonce' ) ) {
256
- $wpnonce = isset( $_REQUEST['_wpnonce'] ) ? wp_verify_nonce( sanitize_key( isset( $_REQUEST['_wpnonce'] ) ? $_REQUEST['_wpnonce'] : '' ), 'woocommerce-settings' ) : true;
257
- }
258
  $checked_post_statuses = $wpnonce && isset( $_GET['wcj_admin_filter_statuses'] ) ? array_map( 'sanitize_text_field', wp_unslash( $_GET['wcj_admin_filter_statuses'] ) ) : array();
259
  $html = '';
260
  $html .= ( 'checkboxes' === $type ) ?
@@ -274,6 +279,7 @@ if ( ! class_exists( 'WCJ_Admin_Orders_List' ) ) :
274
  $html .= ( 'checkboxes' === $type ) ?
275
  '</span>' :
276
  '</select>';
 
277
  return $html;
278
  }
279
 
@@ -294,21 +300,20 @@ if ( ! class_exists( 'WCJ_Admin_Orders_List' ) ) :
294
  /**
295
  * Filter_shop_order_multiple_statuses.
296
  *
297
- * @version 5.6.2
298
  * @since 2.5.7
299
  * @param string $query defines the query.
300
  */
301
  public function filter_shop_order_multiple_statuses( $query ) {
302
  if ( isset( $_SERVER['REQUEST_URI'] ) && ( false !== strpos( sanitize_text_field( wp_unslash( $_SERVER['REQUEST_URI'] ) ), '/wp-admin/edit.php' ) && isset( $_GET['post_type'] ) && 'shop_order' === $_GET['post_type'] ) ) {
303
  if ( wcj_current_user_can( 'edit_others_pages' ) ) {
304
- $wpnonce = true;
305
- if ( function_exists( 'wp_verify_nonce' ) ) {
306
- $wpnonce = isset( $_REQUEST['_wpnonce'] ) ? wp_verify_nonce( sanitize_key( isset( $_REQUEST['_wpnonce'] ) ? $_REQUEST['_wpnonce'] : '' ), 'woocommerce-settings' ) : true;
307
- }
308
- if ( $wpnonce && isset( $_GET['wcj_admin_filter_statuses'] ) ) {
309
- $post_statuses = array_map( 'sanitize_text_field', wp_unslash( $_GET['wcj_admin_filter_statuses'] ) );
310
- $query->query['post_status'] = $post_statuses;
311
- $query->query_vars['post_status'] = $post_statuses;
312
  }
313
  }
314
  }
2
  /**
3
  * Booster for WooCommerce - Module - Admin Orders List
4
  *
5
+ * @version 5.6.7
6
  * @since 3.2.4
7
  * @author Pluggabl LLC.
8
  * @package Booster_For_WooCommerce/includes
200
  /**
201
  * Add_shop_order_multiple_statuses_not_completed_link.
202
  *
203
+ * @version 5.6.7
204
  * @since 2.5.7
205
  * @param string $views defines the views.
206
  */
214
  $all_not_completed_statuses = array_keys( $all_not_completed_statuses );
215
  $all_not_completed_statuses_param = rawurlencode( implode( ',', $all_not_completed_statuses ) );
216
  $class = ( isset( $wp_query->query['post_status'] ) && is_array( $wp_query->query['post_status'] ) && $all_not_completed_statuses === $wp_query->query['post_status'] ) ? 'current' : '';
217
+ $query_string = esc_url_raw( remove_query_arg( array( 'post_status', 'wcj_admin_filter_statuses', 'multiple_statuses_not_completed_link_nonce' ) ) );
218
+ $query_string = esc_url_raw(
219
+ add_query_arg(
220
+ array(
221
+ 'post_status' => $all_not_completed_statuses_param,
222
+ 'multiple_statuses_not_completed_link_nonce' => wp_create_nonce( 'multiple_statuses_not_completed_link_nonce' ),
223
+ ),
224
+ $query_string
225
+ )
226
+ );
227
+ $views['wcj_statuses_not_completed'] = '<a href="' . esc_url_raw( $query_string ) . '" class="' . esc_attr( $class ) . '">' . __( 'Not Completed', 'woocommerce-jetpack' ) . '</a>';
228
  return $views;
229
  }
230
 
231
  /**
232
  * Filter_shop_order_multiple_statuses_not_completed_link.
233
  *
234
+ * @version 5.6.7
235
  * @since 2.5.7
236
  * @param string $query defines the query.
237
  */
238
  public function filter_shop_order_multiple_statuses_not_completed_link( $query ) {
239
  if ( isset( $_SERVER['REQUEST_URI'] ) && false !== strpos( sanitize_text_field( wp_unslash( $_SERVER['REQUEST_URI'] ) ), '/wp-admin/edit.php' ) && isset( $_GET['post_type'] ) && 'shop_order' === $_GET['post_type'] ) {
240
  if ( wcj_current_user_can( 'edit_others_pages' ) ) {
241
+ $wpnonce = false;
242
  if ( function_exists( 'wp_verify_nonce' ) ) {
243
+ $wpnonce = isset( $_REQUEST['multiple_statuses_not_completed_link_nonce'] ) ? wp_verify_nonce( sanitize_key( isset( $_REQUEST['multiple_statuses_not_completed_link_nonce'] ) ? $_REQUEST['multiple_statuses_not_completed_link_nonce'] : '' ), 'multiple_statuses_not_completed_link_nonce' ) : false;
244
  }
245
  if ( $wpnonce && isset( $_GET['post_status'] ) && false !== strpos( sanitize_text_field( wp_unslash( $_GET['post_status'] ) ), ',' ) ) {
246
  $post_statuses = explode( ',', sanitize_text_field( wp_unslash( $_GET['post_status'] ) ) );
254
  /**
255
  * Multiple_shop_order_statuses.
256
  *
257
+ * @version 5.6.7
258
  * @since 2.5.7
259
  * @param string $type defines the type.
260
  */
261
  public function multiple_shop_order_statuses( $type ) {
262
+ $wpnonce = isset( $_REQUEST['wcj_admin_filter_statuses_nonce'] ) ? wp_verify_nonce( sanitize_key( isset( $_REQUEST['wcj_admin_filter_statuses_nonce'] ) ? $_REQUEST['wcj_admin_filter_statuses_nonce'] : '' ), 'wcj_admin_filter_statuses_nonce' ) : false;
 
 
 
263
  $checked_post_statuses = $wpnonce && isset( $_GET['wcj_admin_filter_statuses'] ) ? array_map( 'sanitize_text_field', wp_unslash( $_GET['wcj_admin_filter_statuses'] ) ) : array();
264
  $html = '';
265
  $html .= ( 'checkboxes' === $type ) ?
279
  $html .= ( 'checkboxes' === $type ) ?
280
  '</span>' :
281
  '</select>';
282
+ $html .= wp_kses_post( wp_nonce_field( 'wcj_admin_filter_statuses_nonce', 'wcj_admin_filter_statuses_nonce' ) );
283
  return $html;
284
  }
285
 
300
  /**
301
  * Filter_shop_order_multiple_statuses.
302
  *
303
+ * @version 5.6.7
304
  * @since 2.5.7
305
  * @param string $query defines the query.
306
  */
307
  public function filter_shop_order_multiple_statuses( $query ) {
308
  if ( isset( $_SERVER['REQUEST_URI'] ) && ( false !== strpos( sanitize_text_field( wp_unslash( $_SERVER['REQUEST_URI'] ) ), '/wp-admin/edit.php' ) && isset( $_GET['post_type'] ) && 'shop_order' === $_GET['post_type'] ) ) {
309
  if ( wcj_current_user_can( 'edit_others_pages' ) ) {
310
+ if ( isset( $_GET['wcj_admin_filter_statuses'] ) ) {
311
+ $wpnonce = isset( $_REQUEST['wcj_admin_filter_statuses_nonce'] ) ? wp_verify_nonce( sanitize_key( isset( $_REQUEST['wcj_admin_filter_statuses_nonce'] ) ? $_REQUEST['wcj_admin_filter_statuses_nonce'] : '' ), 'wcj_admin_filter_statuses_nonce' ) : false;
312
+ if ( $wpnonce ) {
313
+ $post_statuses = array_map( 'sanitize_text_field', wp_unslash( $_GET['wcj_admin_filter_statuses'] ) );
314
+ $query->query['post_status'] = $post_statuses;
315
+ $query->query_vars['post_status'] = $post_statuses;
316
+ }
 
317
  }
318
  }
319
  }
includes/class-wcj-admin-tools.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Module - Admin Tools
4
  *
5
- * @version 5.6.2
6
  * @author Pluggabl LLC.
7
  * @package Booster_For_WooCommerce/includes
8
  */
@@ -277,11 +277,16 @@ if ( ! class_exists( 'WCJ_Admin_Tools' ) ) :
277
  /**
278
  * Get_products_atts.
279
  *
280
- * @version 4.0.0
281
  * @since 2.3.9
282
  * @todo [dev] rewrite; add module link;
283
  */
284
  public function get_products_atts() {
 
 
 
 
 
285
 
286
  $total_products = 0;
287
 
@@ -330,11 +335,7 @@ if ( ! class_exists( 'WCJ_Admin_Tools' ) ) :
330
  }
331
 
332
  $table_data = array();
333
- $wpnonce = true;
334
- if ( function_exists( 'wp_verify_nonce' ) ) {
335
- $wpnonce = isset( $_REQUEST['_wpnonce'] ) ? wp_verify_nonce( sanitize_key( isset( $_REQUEST['_wpnonce'] ) ? $_REQUEST['_wpnonce'] : '' ) ) : true;
336
- }
337
- if ( isset( $_GET['wcj_attribute'] ) && '' !== $_GET['wcj_attribute'] && $wpnonce ) {
338
  $table_data[] = array(
339
  __( 'Product', 'woocommerce-jetpack' ),
340
  __( 'Category', 'woocommerce-jetpack' ),
2
  /**
3
  * Booster for WooCommerce - Module - Admin Tools
4
  *
5
+ * @version 5.6.7
6
  * @author Pluggabl LLC.
7
  * @package Booster_For_WooCommerce/includes
8
  */
277
  /**
278
  * Get_products_atts.
279
  *
280
+ * @version 5.6.7
281
  * @since 2.3.9
282
  * @todo [dev] rewrite; add module link;
283
  */
284
  public function get_products_atts() {
285
+ $wcj_tools_nonce = isset( $_GET['wcj_tools_nonce'] ) ? sanitize_key( wp_unslash( $_GET['wcj_tools_nonce'] ) ) : '';
286
+ if ( ! wp_verify_nonce( $wcj_tools_nonce, 'wcj_tools' ) ) {
287
+ wp_safe_redirect( admin_url( 'admin.php?page=wcj-tools' ) );
288
+ exit;
289
+ }
290
 
291
  $total_products = 0;
292
 
335
  }
336
 
337
  $table_data = array();
338
+ if ( isset( $_GET['wcj_attribute'] ) && '' !== $_GET['wcj_attribute'] ) {
 
 
 
 
339
  $table_data[] = array(
340
  __( 'Product', 'woocommerce-jetpack' ),
341
  __( 'Category', 'woocommerce-jetpack' ),
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.6.2
6
  * @author Pluggabl LLC.
7
  * @package Booster_For_WooCommerce/includes
8
  */
@@ -405,17 +405,14 @@ if ( ! class_exists( 'WCJ_Checkout_Custom_Fields' ) ) :
405
  /**
406
  * Add_woocommerce_admin_fields.
407
  *
408
- * @version 5.6.2
409
  * @todo converting from before version 2.3.0: section?
410
  * @todo add alternative way of displaying fields (e.g. new meta box), so we have more control over displaying fields' values (e.g. line breaks)
411
  * @param string $fields defines the fields.
412
  * @param string $section defines the section.
413
  */
414
  public function add_woocommerce_admin_fields( $fields, $section ) {
415
- $wpnonce = true;
416
- if ( function_exists( 'wp_verify_nonce' ) ) {
417
- $wpnonce = isset( $_REQUEST['_wpnonce'] ) ? wp_verify_nonce( sanitize_key( isset( $_REQUEST['_wpnonce'] ) ? $_REQUEST['_wpnonce'] : '' ), '' ) : true;
418
- }
419
  for ( $i = 1; $i <= $this->wcj_checkout_custom_fields_total_number; $i++ ) {
420
  if ( 'yes' === wcj_get_option( 'wcj_checkout_custom_field_enabled_' . $i ) ) {
421
  $the_section = wcj_get_option( 'wcj_checkout_custom_field_section_' . $i );
2
  /**
3
  * Booster for WooCommerce - Module - Checkout Custom Fields
4
  *
5
+ * @version 5.6.7
6
  * @author Pluggabl LLC.
7
  * @package Booster_For_WooCommerce/includes
8
  */
405
  /**
406
  * Add_woocommerce_admin_fields.
407
  *
408
+ * @version 5.6.7
409
  * @todo converting from before version 2.3.0: section?
410
  * @todo add alternative way of displaying fields (e.g. new meta box), so we have more control over displaying fields' values (e.g. line breaks)
411
  * @param string $fields defines the fields.
412
  * @param string $section defines the section.
413
  */
414
  public function add_woocommerce_admin_fields( $fields, $section ) {
415
+ $wpnonce = isset( $_REQUEST['_wpnonce'] ) ? wp_verify_nonce( sanitize_key( $_REQUEST['_wpnonce'] ), '' ) : false;
 
 
 
416
  for ( $i = 1; $i <= $this->wcj_checkout_custom_fields_total_number; $i++ ) {
417
  if ( 'yes' === wcj_get_option( 'wcj_checkout_custom_field_enabled_' . $i ) ) {
418
  $the_section = wcj_get_option( 'wcj_checkout_custom_field_section_' . $i );
includes/class-wcj-checkout-fees.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Module - Checkout Fees
4
  *
5
- * @version 5.6.4
6
  * @since 3.7.0
7
  * @author Pluggabl LLC.
8
  * @package Booster_For_WooCommerce/includes
@@ -23,7 +23,7 @@ if ( ! class_exists( 'WCJ_Checkout_Fees' ) ) :
23
  /**
24
  * Constructor.
25
  *
26
- * @version 5.2.0
27
  * @since 3.7.0
28
  * @todo (maybe) rename module to "Cart & Checkout Fees"
29
  */
@@ -38,6 +38,7 @@ if ( ! class_exists( 'WCJ_Checkout_Fees' ) ) :
38
 
39
  if ( $this->is_enabled() ) {
40
  // Core function.
 
41
  add_action( 'woocommerce_cart_calculate_fees', array( $this, 'add_fees' ), PHP_INT_MAX );
42
  // Checkout fields.
43
  $this->checkout_fields = wcj_get_option( 'wcj_checkout_fees_data_checkout_fields', array() );
@@ -70,7 +71,7 @@ if ( ! class_exists( 'WCJ_Checkout_Fees' ) ) :
70
  /**
71
  * Validate fee without considering overlapping.
72
  *
73
- * @version 5.6.4
74
  * @since 4.5.0
75
  *
76
  * @param int $fee_id defines the fee_id.
@@ -109,19 +110,14 @@ if ( ! class_exists( 'WCJ_Checkout_Fees' ) ) :
109
  }
110
 
111
  // Check checkout fields.
112
- $wpnonce = true;
113
- if ( function_exists( 'wp_verify_nonce' ) ) {
114
- $wpnonce = isset( $_REQUEST['_wpnonce'] ) ? wp_verify_nonce( sanitize_key( isset( $_REQUEST['_wpnonce'] ) ? $_REQUEST['_wpnonce'] : '' ) ) : true;
115
- }
116
-
117
- if ( ! empty( $this->checkout_fields[ $fee_id ] ) && $wpnonce ) {
118
  if ( isset( $post_data ) || isset( $_REQUEST['post_data'] ) ) {
119
  if ( ! isset( $post_data ) ) {
120
  $post_data = array();
121
  parse_str( sanitize_text_field( wp_unslash( $_REQUEST['post_data'] ) ), $post_data );
122
-
123
  }
124
- if ( empty( $post_data[ $this->checkout_fields[ $fee_id ] ] ) ) {
125
  return false;
126
  }
127
  } elseif ( empty( $_REQUEST[ $this->checkout_fields[ $fee_id ] ] ) ) {
@@ -297,6 +293,16 @@ if ( ! class_exists( 'WCJ_Checkout_Fees' ) ) :
297
  }
298
  }
299
 
 
 
 
 
 
 
 
 
 
 
300
  }
301
 
302
  endif;
2
  /**
3
  * Booster for WooCommerce - Module - Checkout Fees
4
  *
5
+ * @version 5.6.7
6
  * @since 3.7.0
7
  * @author Pluggabl LLC.
8
  * @package Booster_For_WooCommerce/includes
23
  /**
24
  * Constructor.
25
  *
26
+ * @version 5.6.7
27
  * @since 3.7.0
28
  * @todo (maybe) rename module to "Cart & Checkout Fees"
29
  */
38
 
39
  if ( $this->is_enabled() ) {
40
  // Core function.
41
+ add_action( 'woocommerce_review_order_after_submit', array( $this, 'wcj_add_nonce_checkout_fees' ), PHP_INT_MAX );
42
  add_action( 'woocommerce_cart_calculate_fees', array( $this, 'add_fees' ), PHP_INT_MAX );
43
  // Checkout fields.
44
  $this->checkout_fields = wcj_get_option( 'wcj_checkout_fees_data_checkout_fields', array() );
71
  /**
72
  * Validate fee without considering overlapping.
73
  *
74
+ * @version 5.6.7
75
  * @since 4.5.0
76
  *
77
  * @param int $fee_id defines the fee_id.
110
  }
111
 
112
  // Check checkout fields.
113
+ if ( ! empty( $this->checkout_fields[ $fee_id ] ) ) {
 
 
 
 
 
114
  if ( isset( $post_data ) || isset( $_REQUEST['post_data'] ) ) {
115
  if ( ! isset( $post_data ) ) {
116
  $post_data = array();
117
  parse_str( sanitize_text_field( wp_unslash( $_REQUEST['post_data'] ) ), $post_data );
118
+ $wpnonce = isset( $post_data['wcj-process-checkout-nonce'] ) ? wp_verify_nonce( sanitize_key( $post_data['wcj-process-checkout-nonce'] ), 'wcj-process_checkout' ) : false;
119
  }
120
+ if ( ! $wpnonce || empty( $post_data[ $this->checkout_fields[ $fee_id ] ] ) ) {
121
  return false;
122
  }
123
  } elseif ( empty( $_REQUEST[ $this->checkout_fields[ $fee_id ] ] ) ) {
293
  }
294
  }
295
 
296
+ /**
297
+ * Wcj_add_nonce_checkout_fees.
298
+ *
299
+ * @version 5.6.7
300
+ * @since 5.6.7
301
+ */
302
+ public function wcj_add_nonce_checkout_fees() {
303
+ return wp_nonce_field( 'wcj-process_checkout', 'wcj-process-checkout-nonce' );
304
+ }
305
+
306
  }
307
 
308
  endif;
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.6.4
6
  * @since 2.4.5
7
  * @author Pluggabl LLC.
8
  * @package Booster_For_WooCommerce/includes
@@ -281,7 +281,7 @@ if ( ! class_exists( 'WCJ_Checkout_Files_Upload' ) ) :
281
  /**
282
  * Create_file_admin_order_meta_box.
283
  *
284
- * @version 5.6.2
285
  * @since 2.4.5
286
  */
287
  public function create_file_admin_order_meta_box() {
@@ -298,6 +298,7 @@ if ( ! class_exists( 'WCJ_Checkout_Files_Upload' ) ) :
298
  array(
299
  'wcj_download_checkout_file_admin' => $order_file_name,
300
  'wcj_checkout_file_number' => $i,
 
301
  )
302
  ) . '">' . $real_file_name . '</a></p>';
303
  }
@@ -305,7 +306,12 @@ if ( ! class_exists( 'WCJ_Checkout_Files_Upload' ) ) :
305
  if ( ! $files_exists ) {
306
  $html .= '<p><em>' . __( 'No files uploaded.', 'woocommerce-jetpack' ) . '</em></p>';
307
  } else {
308
- $html .= '<p><a style="color:#a00;" href="' . add_query_arg( 'wcj_download_checkout_file_admin_delete_all', $order_id ) . '"' . wcj_get_js_confirmation() . '>' .
 
 
 
 
 
309
  __( 'Delete all files', 'woocommerce-jetpack' ) . '</a></p>';
310
  }
311
  echo wp_kses_post( $html );
@@ -418,7 +424,7 @@ if ( ! class_exists( 'WCJ_Checkout_Files_Upload' ) ) :
418
  /**
419
  * Process_checkout_files_upload.
420
  *
421
- * @version 5.6.4
422
  * @since 2.4.5
423
  * @todo add option for admin to delete files one by one (i.e. not all at once)
424
  * @todo `$this->additional_admin_emails_settings` - more customization options, e.g.: admin email, subject, content, from
@@ -604,7 +610,22 @@ if ( ! class_exists( 'WCJ_Checkout_Files_Upload' ) ) :
604
  }
605
  // Admin file download.
606
  if ( isset( $_GET['wcj_download_checkout_file_admin'] ) ) {
607
- $tmp_file_name = wcj_get_wcj_uploads_dir( 'checkout_files_upload' ) . '/' . sanitize_text_field( wp_unslash( $_GET['wcj_download_checkout_file_admin'] ) );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
608
  if ( isset( $_GET['post'] ) && isset( $_GET['wcj_checkout_file_number'] ) ) {
609
  $file_name = get_post_meta( sanitize_text_field( wp_unslash( $_GET['post'] ) ), '_wcj_checkout_files_upload_real_name_' . sanitize_text_field( wp_unslash( $_GET['wcj_checkout_file_number'] ) ), true );
610
  if ( wcj_is_user_role( 'administrator' ) || is_shop_manager() ) {
@@ -614,12 +635,28 @@ if ( ! class_exists( 'WCJ_Checkout_Files_Upload' ) ) :
614
  }
615
  // Admin all files delete.
616
  if ( isset( $_GET['wcj_download_checkout_file_admin_delete_all'] ) && ( wcj_is_user_role( 'administrator' ) || is_shop_manager() ) ) {
 
 
 
 
 
 
 
617
  $order_id = sanitize_text_field( wp_unslash( $_GET['wcj_download_checkout_file_admin_delete_all'] ) );
618
  $total_files = get_post_meta( $order_id, '_wcj_checkout_files_total_files', true );
619
  for ( $i = 1; $i <= $total_files; $i++ ) {
620
  $order_file_name = get_post_meta( $order_id, '_wcj_checkout_files_upload_' . $i, true );
621
  if ( '' !== $order_file_name ) {
622
- unlink( wcj_get_wcj_uploads_dir( 'checkout_files_upload' ) . '/' . $order_file_name );
 
 
 
 
 
 
 
 
 
623
  }
624
  delete_post_meta( $order_id, '_wcj_checkout_files_upload_' . $i );
625
  delete_post_meta( $order_id, '_wcj_checkout_files_upload_real_name_' . $i );
@@ -834,14 +871,14 @@ if ( ! class_exists( 'WCJ_Checkout_Files_Upload' ) ) :
834
  /**
835
  * Maybe_get_image.
836
  *
837
- * @version 5.6.3
838
  * @since 3.7.0
839
  * @param string $link defines the link.
840
  * @param int $i defines the value of i.
841
  * @param int $order_id defines the order_id.
842
  */
843
  public function maybe_get_image( $link, $i, $order_id = 0 ) {
844
- $wpnonce = isset( $_REQUEST['wcj-checkout-files-upload-nonce'] ) ? wp_verify_nonce( sanitize_key( isset( $_REQUEST['wcj-checkout-files-upload-nonce'] ) ? $_REQUEST['wcj-checkout-files-upload-nonce'] : '' ), 'wcj-checkout-files-upload-nonce' ) : false;
845
  if ( 'yes' === wcj_get_option( 'wcj_checkout_files_upload_form_template_field_show_images', 'no' ) ) {
846
  $order = wc_get_order( $order_id );
847
  if ( $wpnonce && 0 !== $order_id && isset( $_GET['key'] ) && ( $order ) && $order->key_is_valid( sanitize_text_field( wp_unslash( $_GET['key'] ) ) ) ) {
2
  /**
3
  * Booster for WooCommerce - Module - Checkout Files Upload
4
  *
5
+ * @version 5.6.7
6
  * @since 2.4.5
7
  * @author Pluggabl LLC.
8
  * @package Booster_For_WooCommerce/includes
281
  /**
282
  * Create_file_admin_order_meta_box.
283
  *
284
+ * @version 5.6.7
285
  * @since 2.4.5
286
  */
287
  public function create_file_admin_order_meta_box() {
298
  array(
299
  'wcj_download_checkout_file_admin' => $order_file_name,
300
  'wcj_checkout_file_number' => $i,
301
+ 'wcj_download_checkout_file_admin_nonce' => wp_create_nonce( 'wcj_download_checkout_file_admin_nonce' ),
302
  )
303
  ) . '">' . $real_file_name . '</a></p>';
304
  }
306
  if ( ! $files_exists ) {
307
  $html .= '<p><em>' . __( 'No files uploaded.', 'woocommerce-jetpack' ) . '</em></p>';
308
  } else {
309
+ $html .= '<p><a style="color:#a00;" href="' . add_query_arg(
310
+ array(
311
+ 'wcj_download_checkout_file_admin_delete_all' => $order_id,
312
+ 'wcj_download_checkout_file_admin_delete_all_nonce' => wp_create_nonce( 'wcj_download_checkout_file_admin_delete_all_nonce' ),
313
+ )
314
+ ) . '"' . wcj_get_js_confirmation() . '>' .
315
  __( 'Delete all files', 'woocommerce-jetpack' ) . '</a></p>';
316
  }
317
  echo wp_kses_post( $html );
424
  /**
425
  * Process_checkout_files_upload.
426
  *
427
+ * @version 5.6.7
428
  * @since 2.4.5
429
  * @todo add option for admin to delete files one by one (i.e. not all at once)
430
  * @todo `$this->additional_admin_emails_settings` - more customization options, e.g.: admin email, subject, content, from
610
  }
611
  // Admin file download.
612
  if ( isset( $_GET['wcj_download_checkout_file_admin'] ) ) {
613
+ $wcj_download_checkout_file_admin_nonce = isset( $_GET['wcj_download_checkout_file_admin_nonce'] ) ? sanitize_key( wp_unslash( $_GET['wcj_download_checkout_file_admin_nonce'] ) ) : '';
614
+ $wpnonce = wp_verify_nonce( $wcj_download_checkout_file_admin_nonce, 'wcj_download_checkout_file_admin_nonce' );
615
+ if ( ! $wpnonce ) {
616
+ wp_safe_redirect( admin_url() );
617
+ return;
618
+ }
619
+
620
+ $tmp_file_name = wcj_get_wcj_uploads_dir( 'checkout_files_upload' ) . '/' . sanitize_file_name( wp_unslash( $_GET['wcj_download_checkout_file_admin'] ) );
621
+
622
+ $real_file_path = realpath( $tmp_file_name );
623
+ $real_base_path = realpath( wcj_get_wcj_uploads_dir( 'checkout_files_upload' ) ) . DIRECTORY_SEPARATOR;
624
+
625
+ if ( false === $real_file_path || 0 !== strpos( $real_file_path, $real_base_path ) ) {
626
+ wp_safe_redirect( admin_url() );
627
+ return; // Traversal attempt.
628
+ }
629
  if ( isset( $_GET['post'] ) && isset( $_GET['wcj_checkout_file_number'] ) ) {
630
  $file_name = get_post_meta( sanitize_text_field( wp_unslash( $_GET['post'] ) ), '_wcj_checkout_files_upload_real_name_' . sanitize_text_field( wp_unslash( $_GET['wcj_checkout_file_number'] ) ), true );
631
  if ( wcj_is_user_role( 'administrator' ) || is_shop_manager() ) {
635
  }
636
  // Admin all files delete.
637
  if ( isset( $_GET['wcj_download_checkout_file_admin_delete_all'] ) && ( wcj_is_user_role( 'administrator' ) || is_shop_manager() ) ) {
638
+ $wcj_download_checkout_file_admin_delete_all_nonce = isset( $_GET['wcj_download_checkout_file_admin_delete_all_nonce'] ) ? sanitize_key( wp_unslash( $_GET['wcj_download_checkout_file_admin_delete_all_nonce'] ) ) : '';
639
+ $wpnonce = wp_verify_nonce( $wcj_download_checkout_file_admin_delete_all_nonce, 'wcj_download_checkout_file_admin_delete_all_nonce' );
640
+ if ( ! $wpnonce ) {
641
+ wp_safe_redirect( admin_url() );
642
+ return;
643
+ }
644
+
645
  $order_id = sanitize_text_field( wp_unslash( $_GET['wcj_download_checkout_file_admin_delete_all'] ) );
646
  $total_files = get_post_meta( $order_id, '_wcj_checkout_files_total_files', true );
647
  for ( $i = 1; $i <= $total_files; $i++ ) {
648
  $order_file_name = get_post_meta( $order_id, '_wcj_checkout_files_upload_' . $i, true );
649
  if ( '' !== $order_file_name ) {
650
+ $tmp_file_name = wcj_get_wcj_uploads_dir( 'checkout_files_upload' ) . '/' . sanitize_file_name( wp_unslash( $order_file_name ) );
651
+
652
+ $real_file_path = realpath( $tmp_file_name );
653
+ $real_base_path = realpath( wcj_get_wcj_uploads_dir( 'checkout_files_upload' ) ) . DIRECTORY_SEPARATOR;
654
+
655
+ if ( false === $real_file_path || 0 !== strpos( $real_file_path, $real_base_path ) ) {
656
+ continue;
657
+ } else {
658
+ unlink( $tmp_file_name );
659
+ }
660
  }
661
  delete_post_meta( $order_id, '_wcj_checkout_files_upload_' . $i );
662
  delete_post_meta( $order_id, '_wcj_checkout_files_upload_real_name_' . $i );
871
  /**
872
  * Maybe_get_image.
873
  *
874
+ * @version 5.6.7
875
  * @since 3.7.0
876
  * @param string $link defines the link.
877
  * @param int $i defines the value of i.
878
  * @param int $order_id defines the order_id.
879
  */
880
  public function maybe_get_image( $link, $i, $order_id = 0 ) {
881
+ $wpnonce = isset( $_REQUEST['wcj-checkout-files-upload-nonce'] ) ? wp_verify_nonce( sanitize_key( $_REQUEST['wcj-checkout-files-upload-nonce'] ), 'wcj-checkout-files-upload-nonce' ) : false;
882
  if ( 'yes' === wcj_get_option( 'wcj_checkout_files_upload_form_template_field_show_images', 'no' ) ) {
883
  $order = wc_get_order( $order_id );
884
  if ( $wpnonce && 0 !== $order_id && isset( $_GET['key'] ) && ( $order ) && $order->key_is_valid( sanitize_text_field( wp_unslash( $_GET['key'] ) ) ) ) {
includes/class-wcj-custom-php.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Module - Custom PHP
4
  *
5
- * @version 5.6.2
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 5.6.2
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))
@@ -40,7 +40,7 @@ if ( ! class_exists( 'WCJ_Custom_PHP' ) ) :
40
  sprintf(
41
  /* translators: %s: translation added */
42
  __( 'E.g.: %s', 'woocommerce-jetpack' ),
43
- '<a href="' . admin_url( 'admin.php?page=wc-settings&tab=jetpack&wcj-cat=emails_and_misc&section=custom_php&wcj_disable_custom_php' ) . '">' .
44
  admin_url( 'admin.php?page=wc-settings&tab=jetpack&wcj-cat=emails_and_misc&section=custom_php&wcj_disable_custom_php' ) . '</a>'
45
  );
46
  $this->link_slug = 'woocommerce-booster-custom-php';
@@ -49,10 +49,7 @@ if ( ! class_exists( 'WCJ_Custom_PHP' ) ) :
49
  add_action( 'woojetpack_after_settings_save', array( $this, 'create_php_file' ), PHP_INT_MAX, 2 );
50
 
51
  if ( $this->is_enabled() ) {
52
- $wpnonce = true;
53
- if ( function_exists( 'wp_verify_nonce' ) ) {
54
- $wpnonce = isset( $_REQUEST['_wpnonce'] ) ? wp_verify_nonce( sanitize_key( isset( $_REQUEST['_wpnonce'] ) ? $_REQUEST['_wpnonce'] : '' ) ) : true;
55
- }
56
 
57
  if ( isset( $_GET['wcj_disable_custom_php'] ) && $wpnonce ) {
58
  if ( wcj_current_user_can( 'manage_woocommerce' ) ) {
2
  /**
3
  * Booster for WooCommerce - Module - Custom PHP
4
  *
5
+ * @version 5.6.7
6
  * @since 4.0.0
7
  * @author Pluggabl LLC.
8
  * @package Booster_For_WooCommerce/includes
21
  /**
22
  * Constructor.
23
  *
24
+ * @version 5.6.7
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))
40
  sprintf(
41
  /* translators: %s: translation added */
42
  __( 'E.g.: %s', 'woocommerce-jetpack' ),
43
+ '<a href="' . admin_url( 'admin.php?page=wc-settings&tab=jetpack&wcj-cat=emails_and_misc&section=custom_php&wcj_disable_custom_php&wcj_disable_custom_php_nonce=' . wp_create_nonce( 'wcj-disable-custom-php' ) ) . '">' .
44
  admin_url( 'admin.php?page=wc-settings&tab=jetpack&wcj-cat=emails_and_misc&section=custom_php&wcj_disable_custom_php' ) . '</a>'
45
  );
46
  $this->link_slug = 'woocommerce-booster-custom-php';
49
  add_action( 'woojetpack_after_settings_save', array( $this, 'create_php_file' ), PHP_INT_MAX, 2 );
50
 
51
  if ( $this->is_enabled() ) {
52
+ $wpnonce = isset( $_REQUEST['wcj_disable_custom_php_nonce'] ) ? wp_verify_nonce( sanitize_key( $_REQUEST['wcj_disable_custom_php_nonce'] ), 'wcj-disable-custom-php' ) : false;
 
 
 
53
 
54
  if ( isset( $_GET['wcj_disable_custom_php'] ) && $wpnonce ) {
55
  if ( wcj_current_user_can( 'manage_woocommerce' ) ) {
includes/class-wcj-debug-tools.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Module - Debug Tools
4
  *
5
- * @version 5.6.2
6
  * @author Pluggabl LLC.
7
  * @package Booster_For_WooCommerce/includes
8
  */
@@ -45,17 +45,14 @@ if ( ! class_exists( 'WCJ_Debug_Tools' ) ) :
45
  /**
46
  * Create_debug_tools_tool.
47
  *
48
- * @version 5.6.2
49
  */
50
  public function create_debug_tools_tool() {
51
  // Delete log.
52
- $wpnonce = true;
53
- if ( function_exists( 'wp_verify_nonce' ) ) {
54
- $wpnonce = isset( $_REQUEST['_wpnonce'] ) ? wp_verify_nonce( sanitize_key( isset( $_REQUEST['_wpnonce'] ) ? $_REQUEST['_wpnonce'] : '' ) ) : true;
55
- }
56
  if ( $wpnonce && isset( $_GET['wcj_delete_log'] ) && wcj_is_user_role( 'administrator' ) ) {
57
  update_option( 'wcj_log', '' );
58
- if ( wp_safe_redirect( esc_url( remove_query_arg( 'wcj_delete_log' ) ) ) ) {
59
  exit;
60
  }
61
  }
@@ -63,7 +60,14 @@ if ( ! class_exists( 'WCJ_Debug_Tools' ) ) :
63
  $the_tools = '';
64
  $the_tools .= '<div class="wcj-setting-jetpack-body wcj_tools_cnt_main">';
65
  $the_tools .= $this->get_tool_header_html( 'debug_tools' );
66
- $the_tools .= '<p><a href="' . esc_url( add_query_arg( 'wcj_delete_log', '1' ) ) . '">' . __( 'Delete Log', 'woocommerce-jetpack' ) . '</a></p>';
 
 
 
 
 
 
 
67
  // Log.
68
  $the_log = '';
69
  /* translators: %s: translation added */
2
  /**
3
  * Booster for WooCommerce - Module - Debug Tools
4
  *
5
+ * @version 5.6.7
6
  * @author Pluggabl LLC.
7
  * @package Booster_For_WooCommerce/includes
8
  */
45
  /**
46
  * Create_debug_tools_tool.
47
  *
48
+ * @version 5.6.7
49
  */
50
  public function create_debug_tools_tool() {
51
  // Delete log.
52
+ $wpnonce = isset( $_REQUEST['wcj_delete_log_nonce'] ) ? wp_verify_nonce( sanitize_key( $_REQUEST['wcj_delete_log_nonce'] ), 'wcj-delete-log' ) : false;
 
 
 
53
  if ( $wpnonce && isset( $_GET['wcj_delete_log'] ) && wcj_is_user_role( 'administrator' ) ) {
54
  update_option( 'wcj_log', '' );
55
+ if ( wp_safe_redirect( esc_url_raw( remove_query_arg( array( 'wcj_delete_log', 'wcj_delete_log_nonce' ) ) ) ) ) {
56
  exit;
57
  }
58
  }
60
  $the_tools = '';
61
  $the_tools .= '<div class="wcj-setting-jetpack-body wcj_tools_cnt_main">';
62
  $the_tools .= $this->get_tool_header_html( 'debug_tools' );
63
+ $the_tools .= '<p><a href="' . esc_url_raw(
64
+ add_query_arg(
65
+ array(
66
+ 'wcj_delete_log' => '1',
67
+ 'wcj_delete_log_nonce' => wp_create_nonce( 'wcj-delete-log' ),
68
+ )
69
+ )
70
+ ) . '">' . __( 'Delete Log', 'woocommerce-jetpack' ) . '</a></p>';
71
  // Log.
72
  $the_log = '';
73
  /* translators: %s: translation added */
includes/class-wcj-empty-cart-button.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Module - Empty Cart Button
4
  *
5
- * @version 5.6.2
6
  * @since 2.2.1
7
  * @author Pluggabl LLC.
8
  * @package Booster_For_WooCommerce/includes
@@ -76,13 +76,10 @@ if ( ! class_exists( 'WCJ_Empty_Cart_Button' ) ) :
76
  /**
77
  * Maybe_empty_cart.
78
  *
79
- * @version 2.8.0
80
  */
81
  public function maybe_empty_cart() {
82
- $wpnonce = true;
83
- if ( function_exists( 'wp_verify_nonce' ) ) {
84
- $wpnonce = isset( $_REQUEST['_wpnonce'] ) ? wp_verify_nonce( sanitize_key( isset( $_REQUEST['_wpnonce'] ) ? $_REQUEST['_wpnonce'] : '' ) ) : true;
85
- }
86
 
87
  if ( isset( $_POST['wcj_empty_cart'] ) && isset( WC()->cart ) && $wpnonce ) {
88
  WC()->cart->empty_cart();
2
  /**
3
  * Booster for WooCommerce - Module - Empty Cart Button
4
  *
5
+ * @version 5.6.7
6
  * @since 2.2.1
7
  * @author Pluggabl LLC.
8
  * @package Booster_For_WooCommerce/includes
76
  /**
77
  * Maybe_empty_cart.
78
  *
79
+ * @version 5.6.7
80
  */
81
  public function maybe_empty_cart() {
82
+ $wpnonce = isset( $_REQUEST['wcj_empty_cart_nonce'] ) ? wp_verify_nonce( sanitize_key( $_REQUEST['wcj_empty_cart_nonce'] ), 'wcj-empty-cart' ) : false;
 
 
 
83
 
84
  if ( isset( $_POST['wcj_empty_cart'] ) && isset( WC()->cart ) && $wpnonce ) {
85
  WC()->cart->empty_cart();
includes/class-wcj-eu-vat-number.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Module - EU VAT Number
4
  *
5
- * @version 5.6.2
6
  * @since 2.3.9
7
  * @author Pluggabl LLC.
8
  * @package Booster_For_WooCommerce/includes
@@ -384,21 +384,18 @@ if ( ! class_exists( 'WCJ_EU_VAT_Number' ) ) :
384
  /**
385
  * Start_session.
386
  *
387
- * @version 5.6.2
388
  */
389
  public function start_session() {
390
  if ( is_admin() ) {
391
  return;
392
  }
393
  wcj_session_maybe_start();
394
- $args = array();
395
- $wpnonce = true;
396
- if ( function_exists( 'wp_verify_nonce' ) ) {
397
- $wpnonce = isset( $_REQUEST['_wpnonce'] ) ? wp_verify_nonce( sanitize_key( isset( $_REQUEST['_wpnonce'] ) ? $_REQUEST['_wpnonce'] : '' ) ) : true;
398
- }
399
- if ( $wpnonce && isset( $_POST['post_data'] ) ) {
400
- parse_str( $_POST['post_data'], $args ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput
401
- if ( isset( $args['billing_eu_vat_number'] ) && wcj_session_get( 'wcj_eu_vat_number_to_check' ) !== $args['billing_eu_vat_number'] ) {
402
  wcj_session_set( 'wcj_is_eu_vat_number_valid', null );
403
  wcj_session_set( 'wcj_eu_vat_number_to_check', null );
404
  }
2
  /**
3
  * Booster for WooCommerce - Module - EU VAT Number
4
  *
5
+ * @version 5.6.7
6
  * @since 2.3.9
7
  * @author Pluggabl LLC.
8
  * @package Booster_For_WooCommerce/includes
384
  /**
385
  * Start_session.
386
  *
387
+ * @version 5.6.7
388
  */
389
  public function start_session() {
390
  if ( is_admin() ) {
391
  return;
392
  }
393
  wcj_session_maybe_start();
394
+ $args = array();
395
+ if ( isset( $_REQUEST['post_data'] ) ) {
396
+ parse_str( sanitize_text_field( wp_unslash( $_REQUEST['post_data'] ) ), $args );
397
+ $wpnonce = isset( $args['woocommerce-process-checkout-nonce'] ) ? wp_verify_nonce( sanitize_key( $args['woocommerce-process-checkout-nonce'] ), 'woocommerce-process_checkout' ) : false;
398
+ if ( $wpnonce && isset( $args['billing_eu_vat_number'] ) && wcj_session_get( 'wcj_eu_vat_number_to_check' ) !== $args['billing_eu_vat_number'] ) {
 
 
 
399
  wcj_session_set( 'wcj_is_eu_vat_number_valid', null );
400
  wcj_session_set( 'wcj_eu_vat_number_to_check', null );
401
  }
includes/class-wcj-export-import.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Module - Export
4
  *
5
- * @version 5.6.6
6
  * @since 2.5.4
7
  * @author Pluggabl LLC.
8
  * @package Booster_For_WooCommerce/includes
@@ -203,7 +203,7 @@ if ( ! class_exists( 'WCJ_Export_Import' ) ) :
203
  /**
204
  * Export_csv.
205
  *
206
- * @version 5.6.6
207
  * @since 2.4.8
208
  */
209
  public function export_csv() {
@@ -216,10 +216,10 @@ if ( ! class_exists( 'WCJ_Export_Import' ) ) :
216
  if ( is_array( $data ) ) {
217
  $csv = '';
218
  foreach ( $data as $row ) {
219
- $row = $this->smart_format_fields( $row );
220
- $row = implode(',', $row);
221
- $row = trim(preg_replace('/\s+/', ' ', $row));
222
- $row = explode(',', $row);
223
  $csv .= implode( wcj_get_option( 'wcj_export_csv_separator', ',' ), $row ) . PHP_EOL;
224
  }
225
  if ( 'yes' === wcj_get_option( 'wcj_export_csv_add_utf_8_bom', 'yes' ) ) {
2
  /**
3
  * Booster for WooCommerce - Module - Export
4
  *
5
+ * @version 5.6.7
6
  * @since 2.5.4
7
  * @author Pluggabl LLC.
8
  * @package Booster_For_WooCommerce/includes
203
  /**
204
  * Export_csv.
205
  *
206
+ * @version 5.6.7
207
  * @since 2.4.8
208
  */
209
  public function export_csv() {
216
  if ( is_array( $data ) ) {
217
  $csv = '';
218
  foreach ( $data as $row ) {
219
+ $row = $this->smart_format_fields( $row );
220
+ $row = implode( ',', $row );
221
+ $row = trim( preg_replace( '/\s+/', ' ', $row ) );
222
+ $row = explode( ',', $row );
223
  $csv .= implode( wcj_get_option( 'wcj_export_csv_separator', ',' ), $row ) . PHP_EOL;
224
  }
225
  if ( 'yes' === wcj_get_option( 'wcj_export_csv_add_utf_8_bom', 'yes' ) ) {
includes/class-wcj-general.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Module - General
4
  *
5
- * @version 5.6.2
6
  * @author Pluggabl LLC.
7
  * @package Booster_For_WooCommerce/includes
8
  */
@@ -102,16 +102,13 @@ if ( ! class_exists( 'WCJ_General' ) ) :
102
  /**
103
  * Change_user_role_meta.
104
  *
105
- * @version 5.6.2
106
  * @since 2.9.0
107
  * @todo [dev] (maybe) optionally via cookies
108
  */
109
  public function change_user_role_meta() {
110
- $wpnonce = true;
111
- if ( function_exists( 'wp_verify_nonce' ) ) {
112
- $wpnonce = isset( $_REQUEST['_wpnonce'] ) ? wp_verify_nonce( sanitize_key( isset( $_REQUEST['_wpnonce'] ) ? $_REQUEST['_wpnonce'] : '' ), 'woocommerce-settings' ) : true;
113
- }
114
- if ( isset( $_GET['wcj_booster_user_role'] ) ) {
115
  $current_user_id = get_current_user_id();
116
  update_user_meta( $current_user_id, '_wcj_booster_user_role', sanitize_text_field( wp_unslash( $_GET['wcj_booster_user_role'] ) ) );
117
  }
@@ -120,7 +117,7 @@ if ( ! class_exists( 'WCJ_General' ) ) :
120
  /**
121
  * Add_user_role_changer.
122
  *
123
- * @version 5.5.9
124
  * @since 2.9.0
125
  * @param string | array $wp_admin_bar defines the wp_admin_bar.
126
  */
@@ -144,7 +141,14 @@ if ( ! class_exists( 'WCJ_General' ) ) :
144
  'parent' => 'booster-user-role-changer',
145
  'id' => 'booster-user-role-changer-role-' . $user_role_key,
146
  'title' => $user_role_name,
147
- 'href' => esc_url( add_query_arg( 'wcj_booster_user_role', $user_role_key ) ),
 
 
 
 
 
 
 
148
  );
149
  $wp_admin_bar->add_node( $args );
150
  }
@@ -193,15 +197,17 @@ if ( ! class_exists( 'WCJ_General' ) ) :
193
  /**
194
  * Create_custom_roles_tool.
195
  *
196
- * @version 5.6.2
197
  * @since 2.5.3
198
  */
199
  public function create_custom_roles_tool() {
200
- $wpnonce = true;
 
201
  if ( function_exists( 'wp_verify_nonce' ) ) {
202
- $wpnonce = isset( $_REQUEST['_wpnonce'] ) ? wp_verify_nonce( sanitize_key( isset( $_REQUEST['_wpnonce'] ) ? $_REQUEST['_wpnonce'] : '' ), 'woocommerce-settings' ) : true;
 
203
  }
204
- if ( $wpnonce && isset( $_POST['wcj_add_new_role'] ) ) {
205
  if ( empty( $_POST['wcj_custom_role_id'] ) || empty( $_POST['wcj_custom_role_name'] ) || empty( $_POST['wcj_custom_role_caps'] ) ) {
206
  echo '<p style="color:red;font-weight:bold;">' . wp_kses_post( 'All fields are required!', 'woocommerce-jetpack' ) . '</p>';
207
  } else {
@@ -227,7 +233,7 @@ if ( ! class_exists( 'WCJ_General' ) ) :
227
  }
228
  }
229
 
230
- if ( isset( $_GET['wcj_delete_role'] ) && '' !== $_GET['wcj_delete_role'] ) {
231
  remove_role( sanitize_text_field( wp_unslash( $_GET['wcj_delete_role'] ) ) );
232
  $custom_roles = wcj_get_option( 'wcj_custom_roles', array() );
233
  if ( isset( $custom_roles[ $_GET['wcj_delete_role'] ] ) ) {
@@ -248,7 +254,14 @@ if ( ! class_exists( 'WCJ_General' ) ) :
248
  foreach ( $existing_roles as $role_key => $role_data ) {
249
  $delete_html = ( in_array( $role_key, $default_wp_wc_roles, true ) )
250
  ? ''
251
- : '<a href="' . esc_url( add_query_arg( 'wcj_delete_role', $role_key ) ) . '"' . wcj_get_js_confirmation() . '>' . __( 'Delete', 'woocommerce-jetpack' ) . '</a>';
 
 
 
 
 
 
 
252
  $caps = ( ! empty( $custom_roles[ $role_key ]['caps_role'] ) ? $custom_roles[ $role_key ]['caps_role'] : $role_key );
253
  $table_data[] = array( $role_key, $role_data['name'], $caps, $delete_html );
254
  }
@@ -271,6 +284,7 @@ if ( ! class_exists( 'WCJ_General' ) ) :
271
  )
272
  )
273
  )
 
274
  . '<p><input type="submit" name="wcj_add_new_role" class="button-primary" value="' . wp_kses_post( 'Add', 'woocommerce-jetpack' ) . '"></p>'
275
  . '</form>';
276
  echo '</div>';
2
  /**
3
  * Booster for WooCommerce - Module - General
4
  *
5
+ * @version 5.6.7
6
  * @author Pluggabl LLC.
7
  * @package Booster_For_WooCommerce/includes
8
  */
102
  /**
103
  * Change_user_role_meta.
104
  *
105
+ * @version 5.6.7
106
  * @since 2.9.0
107
  * @todo [dev] (maybe) optionally via cookies
108
  */
109
  public function change_user_role_meta() {
110
+ $wpnonce = isset( $_REQUEST['wcj_booster_user_role_nonce'] ) ? wp_verify_nonce( sanitize_key( $_REQUEST['wcj_booster_user_role_nonce'] ), 'wcj_booster_user_role' ) : false;
111
+ if ( $wpnonce && isset( $_GET['wcj_booster_user_role'] ) ) {
 
 
 
112
  $current_user_id = get_current_user_id();
113
  update_user_meta( $current_user_id, '_wcj_booster_user_role', sanitize_text_field( wp_unslash( $_GET['wcj_booster_user_role'] ) ) );
114
  }
117
  /**
118
  * Add_user_role_changer.
119
  *
120
+ * @version 5.6.7
121
  * @since 2.9.0
122
  * @param string | array $wp_admin_bar defines the wp_admin_bar.
123
  */
141
  'parent' => 'booster-user-role-changer',
142
  'id' => 'booster-user-role-changer-role-' . $user_role_key,
143
  'title' => $user_role_name,
144
+ 'href' => esc_url(
145
+ add_query_arg(
146
+ array(
147
+ 'wcj_booster_user_role' => $user_role_key,
148
+ 'wcj_booster_user_role_nonce' => wp_cerate_nonce( 'wcj_booster_user_role' ),
149
+ )
150
+ )
151
+ ),
152
  );
153
  $wp_admin_bar->add_node( $args );
154
  }
197
  /**
198
  * Create_custom_roles_tool.
199
  *
200
+ * @version 5.6.7
201
  * @since 2.5.3
202
  */
203
  public function create_custom_roles_tool() {
204
+ $add_role_wpnonce = false;
205
+ $delete_role_wpnonce = false;
206
  if ( function_exists( 'wp_verify_nonce' ) ) {
207
+ $add_role_wpnonce = isset( $_REQUEST['wcj_add_new_role_nonce'] ) ? wp_verify_nonce( sanitize_key( $_REQUEST['wcj_add_new_role_nonce'] ), 'wcj_add_new_role_nonce' ) : false;
208
+ $delete_role_wpnonce = isset( $_REQUEST['wcj_delete_role_nonce'] ) ? wp_verify_nonce( sanitize_key( $_REQUEST['wcj_delete_role_nonce'] ), 'wcj_delete_role_nonce' ) : false;
209
  }
210
+ if ( $add_role_wpnonce && isset( $_POST['wcj_add_new_role'] ) ) {
211
  if ( empty( $_POST['wcj_custom_role_id'] ) || empty( $_POST['wcj_custom_role_name'] ) || empty( $_POST['wcj_custom_role_caps'] ) ) {
212
  echo '<p style="color:red;font-weight:bold;">' . wp_kses_post( 'All fields are required!', 'woocommerce-jetpack' ) . '</p>';
213
  } else {
233
  }
234
  }
235
 
236
+ if ( $delete_role_wpnonce && isset( $_GET['wcj_delete_role'] ) && '' !== $_GET['wcj_delete_role'] ) {
237
  remove_role( sanitize_text_field( wp_unslash( $_GET['wcj_delete_role'] ) ) );
238
  $custom_roles = wcj_get_option( 'wcj_custom_roles', array() );
239
  if ( isset( $custom_roles[ $_GET['wcj_delete_role'] ] ) ) {
254
  foreach ( $existing_roles as $role_key => $role_data ) {
255
  $delete_html = ( in_array( $role_key, $default_wp_wc_roles, true ) )
256
  ? ''
257
+ : '<a href="' . esc_url(
258
+ add_query_arg(
259
+ array(
260
+ 'wcj_delete_role' => $role_key,
261
+ 'wcj_delete_role_nonce' => wp_create_nonce( 'wcj_delete_role_nonce' ),
262
+ )
263
+ )
264
+ ) . '"' . wcj_get_js_confirmation() . '>' . __( 'Delete', 'woocommerce-jetpack' ) . '</a>';
265
  $caps = ( ! empty( $custom_roles[ $role_key ]['caps_role'] ) ? $custom_roles[ $role_key ]['caps_role'] : $role_key );
266
  $table_data[] = array( $role_key, $role_data['name'], $caps, $delete_html );
267
  }
284
  )
285
  )
286
  )
287
+ . wp_kses_post( wp_nonce_field( 'wcj_add_new_role_nonce', 'wcj_add_new_role_nonce' ) )
288
  . '<p><input type="submit" name="wcj_add_new_role" class="button-primary" value="' . wp_kses_post( 'Add', 'woocommerce-jetpack' ) . '"></p>'
289
  . '</form>';
290
  echo '</div>';
includes/class-wcj-global-discount.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Module - Global Discount
4
  *
5
- * @version 5.6.2
6
  * @since 2.5.7
7
  * @author Pluggabl LLC.
8
  * @package Booster_For_WooCommerce/includes
@@ -81,16 +81,12 @@ if ( ! class_exists( 'WCJ_Global_Discount' ) ) :
81
  /**
82
  * Regenerate_wcj_sale_products_in_cache.
83
  *
84
- * @version 5.6.2
85
  * @since 4.8.0
86
  */
87
  public function regenerate_wcj_sale_products_in_cache() {
88
- $wpnonce = true;
89
- if ( function_exists( 'wp_verify_nonce' ) ) {
90
- $wpnonce = isset( $_REQUEST['_wpnonce'] ) ? wp_verify_nonce( sanitize_key( isset( $_REQUEST['_wpnonce'] ) ? $_REQUEST['_wpnonce'] : 'woocommerce-settings' ) ) : true;
91
- }
92
- if (
93
- ! $wpnonce ||
94
  'yes' !== wcj_get_option( 'wcj_global_discount_products_shortcode_compatibility', 'no' ) ||
95
  ! isset( $_REQUEST['page'] ) || 'wc-settings' !== $_REQUEST['page'] ||
96
  ! isset( $_REQUEST['tab'] ) || 'jetpack' !== $_REQUEST['tab'] ||
2
  /**
3
  * Booster for WooCommerce - Module - Global Discount
4
  *
5
+ * @version 5.6.7
6
  * @since 2.5.7
7
  * @author Pluggabl LLC.
8
  * @package Booster_For_WooCommerce/includes
81
  /**
82
  * Regenerate_wcj_sale_products_in_cache.
83
  *
84
+ * @version 5.6.7
85
  * @since 4.8.0
86
  */
87
  public function regenerate_wcj_sale_products_in_cache() {
88
+ $wpnonce = isset( $_REQUEST['_wpnonce'] ) ? wp_verify_nonce( sanitize_key( $_REQUEST['_wpnonce'] ), 'woocommerce-settings' ) : false;
89
+ if ( ! $wpnonce ||
 
 
 
 
90
  'yes' !== wcj_get_option( 'wcj_global_discount_products_shortcode_compatibility', 'no' ) ||
91
  ! isset( $_REQUEST['page'] ) || 'wc-settings' !== $_REQUEST['page'] ||
92
  ! isset( $_REQUEST['tab'] ) || 'jetpack' !== $_REQUEST['tab'] ||
includes/class-wcj-my-account.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Module - My Account
4
  *
5
- * @version 5.6.3
6
  * @since 2.9.0
7
  * @author Pluggabl LLC.
8
  * @package Booster_For_WooCommerce/includes
@@ -169,15 +169,12 @@ if ( ! class_exists( 'WCJ_My_Account' ) ) :
169
  /**
170
  * Set_custom_page_title.
171
  *
172
- * @version 5.6.2
173
  * @since 4.3.0
174
  * @param string $title defines the title.
175
  */
176
  public function set_custom_page_title( $title ) {
177
- $wpnonce = true;
178
- if ( function_exists( 'wp_verify_nonce' ) ) {
179
- $wpnonce = isset( $_REQUEST['_wpnonce'] ) ? wp_verify_nonce( sanitize_key( isset( $_REQUEST['_wpnonce'] ) ? $_REQUEST['_wpnonce'] : '' ), 'woocommerce-settings' ) : true;
180
- }
181
  if (
182
  $wpnonce && (
183
  ! isset( $_GET['section'] ) ||
@@ -286,7 +283,7 @@ if ( ! class_exists( 'WCJ_My_Account' ) ) :
286
  /**
287
  * Customize_dashboard.
288
  *
289
- * @version 5.6.2
290
  * @since 3.8.0
291
  * @see woocommerce/templates/myaccount/dashboard.php
292
  * @param string | array $value defines the value.
@@ -302,8 +299,7 @@ if ( ! class_exists( 'WCJ_My_Account' ) ) :
302
  if ( false !== $endpoint ) {
303
  $endpoint_tab = wp_list_filter( $this->custom_pages, array( 'endpoint' => $endpoint ) );
304
  }
305
- $wpnonce = true;
306
- $wpnonce = isset( $_REQUEST['_wpnonce'] ) ? wp_verify_nonce( sanitize_key( isset( $_REQUEST['_wpnonce'] ) ? $_REQUEST['_wpnonce'] : '' ), 'woocommerce-settings' ) : true;
307
  $page_id = $wpnonce && sanitize_text_field( wp_unslash( ( $_GET['section'] ) ) ) ? sanitize_text_field( wp_unslash( ( $_GET['section'] ) ) ) : ( false !== $endpoint ? array_keys( wp_list_pluck( $endpoint_tab, 'endpoint' ) )[0] : '' );
308
  if ( isset( $this->custom_pages[ $page_id ] ) ) {
309
  echo do_shortcode( $this->custom_pages[ $page_id ]['content'] );
@@ -435,7 +431,7 @@ if ( ! class_exists( 'WCJ_My_Account' ) ) :
435
  /**
436
  * Add_registration_extra_fields.
437
  *
438
- * @version 5.6.2
439
  * @since 3.6.0
440
  * @todo (maybe) more fields to choose from (i.e. not only "user role" field)
441
  * @todo (maybe) customizable position (check for other hooks or at least customizable priority on `woocommerce_register_form`)
@@ -443,7 +439,7 @@ if ( ! class_exists( 'WCJ_My_Account' ) ) :
443
  */
444
  public function add_registration_extra_fields() {
445
  $user_roles_options_html = '';
446
- $wpnonce = isset( $_REQUEST['woocommerce-register-nonce'] ) ? wp_verify_nonce( sanitize_key( isset( $_REQUEST['woocommerce-register-nonce'] ) ? $_REQUEST['woocommerce-register-nonce'] : '' ), 'woocommerce-register' ) : true;
447
  $current_user_role_input = ( $wpnonce && ! empty( $_POST['wcj_user_role'] ) ) ? sanitize_text_field( wp_unslash( $_POST['wcj_user_role'] ) ) :
448
  get_option( 'wcj_my_account_registration_extra_fields_user_role_default', 'customer' );
449
  $user_roles_options = wcj_get_option( 'wcj_my_account_registration_extra_fields_user_role_options', array( 'customer' ) );
@@ -462,7 +458,7 @@ if ( ! class_exists( 'WCJ_My_Account' ) ) :
462
  /**
463
  * Process_registration_extra_fields.
464
  *
465
- * @version 5.6.2
466
  * @since 3.6.0
467
  * @todo (maybe) optional admin confirmation for some user roles (probably will need to create additional `...-pending` user roles)
468
  * @param id $customer_id defines the customer_id.
@@ -470,7 +466,7 @@ if ( ! class_exists( 'WCJ_My_Account' ) ) :
470
  * @param string $password_generated defines the password_generated.
471
  */
472
  public function process_registration_extra_fields( $customer_id, $new_customer_data, $password_generated ) {
473
- $wpnonce = isset( $_REQUEST['woocommerce-register-nonce'] ) ? wp_verify_nonce( sanitize_key( isset( $_REQUEST['woocommerce-register-nonce'] ) ? $_REQUEST['woocommerce-register-nonce'] : '' ), 'woocommerce-register' ) : true;
474
  if ( $wpnonce && isset( $_POST['wcj_user_role'] ) && '' !== $_POST['wcj_user_role'] ) {
475
  $user_roles_options = wcj_get_option( 'wcj_my_account_registration_extra_fields_user_role_options', array( 'customer' ) );
476
  if ( ! empty( $user_roles_options ) && in_array( $_POST['wcj_user_role'], $user_roles_options, true ) ) {
2
  /**
3
  * Booster for WooCommerce - Module - My Account
4
  *
5
+ * @version 5.6.7
6
  * @since 2.9.0
7
  * @author Pluggabl LLC.
8
  * @package Booster_For_WooCommerce/includes
169
  /**
170
  * Set_custom_page_title.
171
  *
172
+ * @version 5.6.7
173
  * @since 4.3.0
174
  * @param string $title defines the title.
175
  */
176
  public function set_custom_page_title( $title ) {
177
+ $wpnonce = isset( $_REQUEST['_wpnonce'] ) ? wp_verify_nonce( sanitize_key( $_REQUEST['_wpnonce'] ), 'woocommerce-settings' ) : true;
 
 
 
178
  if (
179
  $wpnonce && (
180
  ! isset( $_GET['section'] ) ||
283
  /**
284
  * Customize_dashboard.
285
  *
286
+ * @version 5.6.7
287
  * @since 3.8.0
288
  * @see woocommerce/templates/myaccount/dashboard.php
289
  * @param string | array $value defines the value.
299
  if ( false !== $endpoint ) {
300
  $endpoint_tab = wp_list_filter( $this->custom_pages, array( 'endpoint' => $endpoint ) );
301
  }
302
+ $wpnonce = isset( $_REQUEST['_wpnonce'] ) ? wp_verify_nonce( sanitize_key( $_REQUEST['_wpnonce'] ), 'woocommerce-settings' ) : true;
 
303
  $page_id = $wpnonce && sanitize_text_field( wp_unslash( ( $_GET['section'] ) ) ) ? sanitize_text_field( wp_unslash( ( $_GET['section'] ) ) ) : ( false !== $endpoint ? array_keys( wp_list_pluck( $endpoint_tab, 'endpoint' ) )[0] : '' );
304
  if ( isset( $this->custom_pages[ $page_id ] ) ) {
305
  echo do_shortcode( $this->custom_pages[ $page_id ]['content'] );
431
  /**
432
  * Add_registration_extra_fields.
433
  *
434
+ * @version 5.6.7
435
  * @since 3.6.0
436
  * @todo (maybe) more fields to choose from (i.e. not only "user role" field)
437
  * @todo (maybe) customizable position (check for other hooks or at least customizable priority on `woocommerce_register_form`)
439
  */
440
  public function add_registration_extra_fields() {
441
  $user_roles_options_html = '';
442
+ $wpnonce = isset( $_REQUEST['woocommerce-register-nonce'] ) ? wp_verify_nonce( sanitize_key( $_REQUEST['woocommerce-register-nonce'] ), 'woocommerce-register' ) : true;
443
  $current_user_role_input = ( $wpnonce && ! empty( $_POST['wcj_user_role'] ) ) ? sanitize_text_field( wp_unslash( $_POST['wcj_user_role'] ) ) :
444
  get_option( 'wcj_my_account_registration_extra_fields_user_role_default', 'customer' );
445
  $user_roles_options = wcj_get_option( 'wcj_my_account_registration_extra_fields_user_role_options', array( 'customer' ) );
458
  /**
459
  * Process_registration_extra_fields.
460
  *
461
+ * @version 5.6.7
462
  * @since 3.6.0
463
  * @todo (maybe) optional admin confirmation for some user roles (probably will need to create additional `...-pending` user roles)
464
  * @param id $customer_id defines the customer_id.
466
  * @param string $password_generated defines the password_generated.
467
  */
468
  public function process_registration_extra_fields( $customer_id, $new_customer_data, $password_generated ) {
469
+ $wpnonce = isset( $_REQUEST['woocommerce-register-nonce'] ) ? wp_verify_nonce( sanitize_key( $_REQUEST['woocommerce-register-nonce'] ), 'woocommerce-register' ) : true;
470
  if ( $wpnonce && isset( $_POST['wcj_user_role'] ) && '' !== $_POST['wcj_user_role'] ) {
471
  $user_roles_options = wcj_get_option( 'wcj_my_account_registration_extra_fields_user_role_options', array( 'customer' ) );
472
  if ( ! empty( $user_roles_options ) && in_array( $_POST['wcj_user_role'], $user_roles_options, true ) ) {
includes/class-wcj-offer-price.php CHANGED
@@ -2,7 +2,7 @@
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
@@ -134,14 +134,14 @@ if ( ! class_exists( 'WCJ_Offer_Price' ) ) :
134
  /**
135
  * Delete_offer_price_product_history.
136
  *
137
- * @version 5.6.2
138
  * @since 2.9.0
139
  * @todo (maybe) add successful deletion notice
140
  * @param int $post_id defines the post_id.
141
  * @param string | array $post defines the post.
142
  */
143
  public function delete_offer_price_product_history( $post_id, $post ) {
144
- $wpnonce = wp_verify_nonce( wp_unslash( isset( $_POST['woocommerce_meta_nonce'] ) ? sanitize_text_field( wp_unslash( $_POST['woocommerce_meta_nonce'] ) ) : '' ), 'woocommerce_save_data' );
145
  if ( $wpnonce && isset( $_POST['wcj_offer_price_delete_history'] ) ) {
146
  delete_post_meta( $post_id, '_wcj_price_offers' );
147
  add_action( 'admin_notices', array( $this, 'notice_delete_offer_price_product_history' ) );
@@ -502,7 +502,7 @@ if ( ! class_exists( 'WCJ_Offer_Price' ) ) :
502
  /**
503
  * Offer_price.
504
  *
505
- * @version 5.6.2
506
  * @since 2.9.0
507
  * @todo (maybe) separate customer copy email template and subject
508
  * @todo (maybe) redirect (no notice though)
@@ -513,7 +513,7 @@ if ( ! class_exists( 'WCJ_Offer_Price' ) ) :
513
  */
514
  public function offer_price() {
515
  if ( isset( $_POST['wcj-offer-price-submit'] ) ) {
516
- $wpnonce = wp_verify_nonce( isset( $_REQUEST['wcj_offer_price_nonce'] ) ? sanitize_text_field( wp_unslash( $_REQUEST['wcj_offer_price_nonce'] ) ) : '', 'wcj-offer-price-modal' );
517
  $product_id = $wpnonce && isset( $_POST['wcj-offer-price-product-id'] ) ? sanitize_text_field( wp_unslash( $_POST['wcj-offer-price-product-id'] ) ) : '';
518
  $_product = wc_get_product( $product_id );
519
  if ( ! is_a( $_product, 'WC_Product' ) ) {
2
  /**
3
  * Booster for WooCommerce - Module - Offer Price
4
  *
5
+ * @version 5.6.7
6
  * @since 2.9.0
7
  * @author Pluggabl LLC.
8
  * @package Booster_For_WooCommerce/includes
134
  /**
135
  * Delete_offer_price_product_history.
136
  *
137
+ * @version 5.6.7
138
  * @since 2.9.0
139
  * @todo (maybe) add successful deletion notice
140
  * @param int $post_id defines the post_id.
141
  * @param string | array $post defines the post.
142
  */
143
  public function delete_offer_price_product_history( $post_id, $post ) {
144
+ $wpnonce = isset( $_POST['woocommerce_meta_nonce'] ) ? wp_verify_nonce( wp_unslash( sanitize_text_field( wp_unslash( $_POST['woocommerce_meta_nonce'] ) ) ), 'woocommerce_save_data' ) : false;
145
  if ( $wpnonce && isset( $_POST['wcj_offer_price_delete_history'] ) ) {
146
  delete_post_meta( $post_id, '_wcj_price_offers' );
147
  add_action( 'admin_notices', array( $this, 'notice_delete_offer_price_product_history' ) );
502
  /**
503
  * Offer_price.
504
  *
505
+ * @version 5.6.7
506
  * @since 2.9.0
507
  * @todo (maybe) separate customer copy email template and subject
508
  * @todo (maybe) redirect (no notice though)
513
  */
514
  public function offer_price() {
515
  if ( isset( $_POST['wcj-offer-price-submit'] ) ) {
516
+ $wpnonce = isset( $_REQUEST['wcj_offer_price_nonce'] ) ? wp_verify_nonce( sanitize_text_field( wp_unslash( $_REQUEST['wcj_offer_price_nonce'] ) ), 'wcj-offer-price-modal' ) : false;
517
  $product_id = $wpnonce && isset( $_POST['wcj-offer-price-product-id'] ) ? sanitize_text_field( wp_unslash( $_POST['wcj-offer-price-product-id'] ) ) : '';
518
  $_product = wc_get_product( $product_id );
519
  if ( ! is_a( $_product, 'WC_Product' ) ) {
includes/class-wcj-old-slugs.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Module - Old Slugs
4
  *
5
- * @version 5.6.2
6
  * @author Pluggabl LLC.
7
  * @package Booster_For_WooCommerce/includes
8
  */
@@ -43,7 +43,7 @@ if ( ! class_exists( 'WCJ_Old_Slugs' ) ) :
43
  /**
44
  * Create_old_slugs_tool.
45
  *
46
- * @version 5.6.2
47
  */
48
  public function create_old_slugs_tool() {
49
 
@@ -84,15 +84,13 @@ if ( ! class_exists( 'WCJ_Old_Slugs' ) ) :
84
  }
85
  // Actions.
86
 
87
- $wpnonce = true;
88
- if ( function_exists( 'wp_verify_nonce' ) ) {
89
- $wpnonce = isset( $_REQUEST['_wpnonce'] ) ? wp_verify_nonce( sanitize_key( isset( $_REQUEST['_wpnonce'] ) ? $_REQUEST['_wpnonce'] : '' ) ) : true;
90
- }
91
 
92
- if ( isset( $_POST['remove_old_products_slugs'] ) || isset( $_POST['remove_old_non_products_slugs'] ) && $wpnonce ) {
93
  $post_ids_to_delete = join( ',', ( isset( $_POST['remove_old_products_slugs'] ) ? $posts_ids['products'] : $posts_ids['non_products'] ) );
94
- $delete_result = $wpdb->get_results( "DELETE FROM WHERE meta_key = '_wp_old_slug' AND post_id IN ($post_ids_to_delete)" ); //phpcs:ignore
95
- $recheck_result = $wpdb->get_results( "SELECT * FROM WHERE meta_key = '_wp_old_slug'" ); //phpcs:ignore
96
  $recheck_result_count = count( $recheck_result );
97
  $remove_result_html = '<div class="updated"><p>' .
98
  sprintf(
@@ -109,7 +107,7 @@ if ( ! class_exists( 'WCJ_Old_Slugs' ) ) :
109
  /**
110
  * Output_old_slugs_tool.
111
  *
112
- * @version 5.5.6
113
  * @since 2.8.0
114
  * @param string | array $remove_result_html defines the remove_result_html.
115
  * @param array $multi_table_data defines the multi_table_data.
@@ -143,6 +141,7 @@ if ( ! class_exists( 'WCJ_Old_Slugs' ) ) :
143
  $html .= '<p>' . $type['table_content'] . '</p>';
144
  $html .= '<form method="post" action="">';
145
  $html .= '<input class="button-primary" type="submit" name="' . $type['button_name'] . '" value="' . $type['button_label'] . '"/>';
 
146
  $html .= '</form>';
147
  }
148
  }
2
  /**
3
  * Booster for WooCommerce - Module - Old Slugs
4
  *
5
+ * @version 5.6.7
6
  * @author Pluggabl LLC.
7
  * @package Booster_For_WooCommerce/includes
8
  */
43
  /**
44
  * Create_old_slugs_tool.
45
  *
46
+ * @version 5.6.7
47
  */
48
  public function create_old_slugs_tool() {
49
 
84
  }
85
  // Actions.
86
 
87
+ $remove_old_products_slugs_wpnonce = isset( $_REQUEST['remove_old_products_slugs-nonce'] ) ? wp_verify_nonce( sanitize_key( $_REQUEST['remove_old_products_slugs-nonce'] ), 'remove_old_products_slugs' ) : false;
88
+ $remove_old_non_products_slugs_wpnonce = isset( $_REQUEST['remove_old_non_products_slugs-nonce'] ) ? wp_verify_nonce( sanitize_key( $_REQUEST['remove_old_non_products_slugs-nonce'] ), 'remove_old_non_products_slugs' ) : false;
 
 
89
 
90
+ if ( ( isset( $_POST['remove_old_products_slugs'] ) && $remove_old_products_slugs_wpnonce ) || ( isset( $_POST['remove_old_non_products_slugs'] ) && $remove_old_non_products_slugs_wpnonce ) ) {
91
  $post_ids_to_delete = join( ',', ( isset( $_POST['remove_old_products_slugs'] ) ? $posts_ids['products'] : $posts_ids['non_products'] ) );
92
+ $delete_result = $wpdb->get_results( "DELETE FROM $wp_postmeta_table WHERE meta_key = '_wp_old_slug' AND post_id IN ($post_ids_to_delete)" ); //phpcs:ignore
93
+ $recheck_result = $wpdb->get_results( "SELECT * FROM $wp_postmeta_table WHERE meta_key = '_wp_old_slug'" ); //phpcs:ignore
94
  $recheck_result_count = count( $recheck_result );
95
  $remove_result_html = '<div class="updated"><p>' .
96
  sprintf(
107
  /**
108
  * Output_old_slugs_tool.
109
  *
110
+ * @version 5.6.7
111
  * @since 2.8.0
112
  * @param string | array $remove_result_html defines the remove_result_html.
113
  * @param array $multi_table_data defines the multi_table_data.
141
  $html .= '<p>' . $type['table_content'] . '</p>';
142
  $html .= '<form method="post" action="">';
143
  $html .= '<input class="button-primary" type="submit" name="' . $type['button_name'] . '" value="' . $type['button_label'] . '"/>';
144
+ $html .= wp_nonce_field( $type['button_name'], $type['button_name'] . '-nonce' );
145
  $html .= '</form>';
146
  }
147
  }
includes/class-wcj-order-numbers.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Module - Order Numbers
4
  *
5
- * @version 5.6.2
6
  * @author Pluggabl LLC.
7
  * @package Booster_For_WooCommerce/includes
8
  */
@@ -192,7 +192,7 @@ if ( ! class_exists( 'WCJ_Order_Numbers' ) ) :
192
  /**
193
  * Search_by_custom_number.
194
  *
195
- * @version 5.6.2
196
  * @since 2.6.0
197
  * @todo `_wcj_order_number` is used for `sequential` and `hash` only
198
  * @param array | string $query defines the query.
@@ -232,7 +232,7 @@ if ( ! class_exists( 'WCJ_Order_Numbers' ) ) :
232
  // Post Status.
233
  $wpnonce = true;
234
  if ( function_exists( 'wp_verify_nonce' ) ) {
235
- $wpnonce = isset( $_REQUEST['_wpnonce'] ) ? wp_verify_nonce( sanitize_key( isset( $_REQUEST['_wpnonce'] ) ? $_REQUEST['_wpnonce'] : '' ), 'woocommerce-settings' ) : true;
236
  }
237
  $post_status = ( $wpnonce && isset( $_GET['post_status'] ) ) ? sanitize_text_field( wp_unslash( $_GET['post_status'] ) ) : 'any';
238
 
@@ -342,16 +342,13 @@ if ( ! class_exists( 'WCJ_Order_Numbers' ) ) :
342
  /**
343
  * Add Renumerate Orders tool to WooCommerce menu (the content).
344
  *
345
- * @version 5.6.2
346
  * @todo restyle
347
  * @todo add more result info (e.g. number of regenerated orders etc.)
348
  */
349
  public function create_renumerate_orders_tool() {
350
  $result_message = '';
351
- $wpnonce = true;
352
- if ( function_exists( 'wp_verify_nonce' ) ) {
353
- $wpnonce = isset( $_REQUEST['_wpnonce'] ) ? wp_verify_nonce( sanitize_key( isset( $_REQUEST['_wpnonce'] ) ? $_REQUEST['_wpnonce'] : '' ), 'woocommerce-settings' ) : true;
354
- }
355
  if ( $wpnonce && isset( $_POST['renumerate_orders'] ) ) {
356
  $this->renumerate_orders();
357
  $result_message = '<p><div class="updated"><p><strong>' . __( 'Orders successfully renumerated!', 'woocommerce-jetpack' ) . '</strong></p></div></p>';
@@ -381,6 +378,7 @@ if ( ! class_exists( 'WCJ_Order_Numbers' ) ) :
381
  $html .= $result_message;
382
  $html .= '<form method="post" action="">';
383
  $html .= '<input class="button-primary" type="submit" name="renumerate_orders" value="' . __( 'Renumerate orders', 'woocommerce-jetpack' ) . '">';
 
384
  $html .= '</form>';
385
  $html .= '</div>';
386
  $html .= '</div>';
2
  /**
3
  * Booster for WooCommerce - Module - Order Numbers
4
  *
5
+ * @version 5.6.7
6
  * @author Pluggabl LLC.
7
  * @package Booster_For_WooCommerce/includes
8
  */
192
  /**
193
  * Search_by_custom_number.
194
  *
195
+ * @version 5.6.7
196
  * @since 2.6.0
197
  * @todo `_wcj_order_number` is used for `sequential` and `hash` only
198
  * @param array | string $query defines the query.
232
  // Post Status.
233
  $wpnonce = true;
234
  if ( function_exists( 'wp_verify_nonce' ) ) {
235
+ $wpnonce = isset( $_REQUEST['_wpnonce'] ) ? wp_verify_nonce( sanitize_key( $_REQUEST['_wpnonce'] ), 'woocommerce-settings' ) : true;
236
  }
237
  $post_status = ( $wpnonce && isset( $_GET['post_status'] ) ) ? sanitize_text_field( wp_unslash( $_GET['post_status'] ) ) : 'any';
238
 
342
  /**
343
  * Add Renumerate Orders tool to WooCommerce menu (the content).
344
  *
345
+ * @version 5.6.7
346
  * @todo restyle
347
  * @todo add more result info (e.g. number of regenerated orders etc.)
348
  */
349
  public function create_renumerate_orders_tool() {
350
  $result_message = '';
351
+ $wpnonce = isset( $_REQUEST['renumerate-orders-nonce'] ) ? wp_verify_nonce( sanitize_key( $_REQUEST['renumerate-orders-nonce'] ), 'renumerate_orders' ) : false;
 
 
 
352
  if ( $wpnonce && isset( $_POST['renumerate_orders'] ) ) {
353
  $this->renumerate_orders();
354
  $result_message = '<p><div class="updated"><p><strong>' . __( 'Orders successfully renumerated!', 'woocommerce-jetpack' ) . '</strong></p></div></p>';
378
  $html .= $result_message;
379
  $html .= '<form method="post" action="">';
380
  $html .= '<input class="button-primary" type="submit" name="renumerate_orders" value="' . __( 'Renumerate orders', 'woocommerce-jetpack' ) . '">';
381
+ $html .= wp_nonce_field( 'renumerate_orders', 'renumerate-orders-nonce' );
382
  $html .= '</form>';
383
  $html .= '</div>';
384
  $html .= '</div>';
includes/class-wcj-order-quantities.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Module - Order Min/Max Quantities
4
  *
5
- * @version 5.6.2
6
  * @since 2.9.0
7
  * @author Pluggabl LLC.
8
  * @package Booster_For_WooCommerce/includes
@@ -105,19 +105,16 @@ if ( ! class_exists( 'WCJ_Order_Quantities' ) ) :
105
  /**
106
  * Prevents outdated min/max Quantity options.
107
  *
108
- * @version 5.6.2
109
  * @since 4.4.0
110
  * @param int $product_id defines the product_id.
111
  */
112
  public function prevent_outdated_min_max( $product_id ) {
113
  $product = wc_get_product( $product_id );
114
- $wpnonce = true;
115
- if ( function_exists( 'wp_verify_nonce' ) ) {
116
- $wpnonce = isset( $_REQUEST['_wpnonce'] ) ? wp_verify_nonce( sanitize_key( isset( $_REQUEST['_wpnonce'] ) ? $_REQUEST['_wpnonce'] : '' ) ) : true;
117
- }
118
  if (
119
  ! $product->is_type( 'variable' ) ||
120
- isset( $_POST['_wcj_order_quantities_min'] ) && $wpnonce
121
  ) {
122
  return;
123
  }
@@ -632,7 +629,7 @@ if ( ! class_exists( 'WCJ_Order_Quantities' ) ) :
632
  /**
633
  * Check_quantities.
634
  *
635
- * @version 4.2.0
636
  * @since 2.9.0
637
  * @param string $min_or_max defines the min_or_max.
638
  * @param int $cart_item_quantities defines the cart_item_quantities.
@@ -642,7 +639,7 @@ if ( ! class_exists( 'WCJ_Order_Quantities' ) ) :
642
  */
643
  public function check_quantities( $min_or_max, $cart_item_quantities, $cart_total_quantity, $_is_cart, $_return ) {
644
  $min_or_max_cart_total_quantity = wcj_get_option( 'wcj_order_quantities_' . $min_or_max . '_cart_total_quantity', 0 );
645
- if ( 0 !== ( $min_or_max_cart_total_quantity ) ) {
646
  if (
647
  ( 'max' === $min_or_max && $cart_total_quantity > $min_or_max_cart_total_quantity ) ||
648
  ( 'min' === $min_or_max && $cart_total_quantity < $min_or_max_cart_total_quantity )
@@ -657,7 +654,7 @@ if ( ! class_exists( 'WCJ_Order_Quantities' ) ) :
657
  if ( 'yes' === apply_filters( 'booster_option', 'no', wcj_get_option( 'wcj_order_quantities_' . $min_or_max . '_per_item_quantity_per_product', 'no' ) ) ) {
658
  foreach ( $cart_item_quantities as $_product_id => $cart_item_quantity ) {
659
  $max_or_max_per_item_quantity = get_post_meta( $_product_id, '_wcj_order_quantities_' . $min_or_max, true );
660
- if ( 0 !== ( $max_or_max_per_item_quantity ) ) {
661
  if (
662
  ( 'max' === $min_or_max && $cart_item_quantity > $max_or_max_per_item_quantity ) ||
663
  ( 'min' === $min_or_max && $cart_item_quantity < $max_or_max_per_item_quantity )
@@ -672,7 +669,7 @@ if ( ! class_exists( 'WCJ_Order_Quantities' ) ) :
672
  }
673
  }
674
  $max_or_max_per_item_quantity = apply_filters( 'booster_option', 0, wcj_get_option( 'wcj_order_quantities_' . $min_or_max . '_per_item_quantity', 0 ) );
675
- if ( 0 !== ( $max_or_max_per_item_quantity ) ) {
676
  foreach ( $cart_item_quantities as $_product_id => $cart_item_quantity ) {
677
  if (
678
  'yes' === apply_filters( 'booster_option', 'no', wcj_get_option( 'wcj_order_quantities_' . $min_or_max . '_per_item_quantity_per_product', 'no' ) ) &&
2
  /**
3
  * Booster for WooCommerce - Module - Order Min/Max Quantities
4
  *
5
+ * @version 5.6.7
6
  * @since 2.9.0
7
  * @author Pluggabl LLC.
8
  * @package Booster_For_WooCommerce/includes
105
  /**
106
  * Prevents outdated min/max Quantity options.
107
  *
108
+ * @version 5.6.7
109
  * @since 4.4.0
110
  * @param int $product_id defines the product_id.
111
  */
112
  public function prevent_outdated_min_max( $product_id ) {
113
  $product = wc_get_product( $product_id );
114
+ $wpnonce = isset( $_REQUEST['woocommerce_meta_nonce'] ) ? wp_verify_nonce( sanitize_key( $_REQUEST['woocommerce_meta_nonce'] ), 'woocommerce_save_data' ) : false;
 
 
 
115
  if (
116
  ! $product->is_type( 'variable' ) ||
117
+ isset( $_POST['_wcj_order_quantities_min'] ) || ! $wpnonce
118
  ) {
119
  return;
120
  }
629
  /**
630
  * Check_quantities.
631
  *
632
+ * @version 5.6.7
633
  * @since 2.9.0
634
  * @param string $min_or_max defines the min_or_max.
635
  * @param int $cart_item_quantities defines the cart_item_quantities.
639
  */
640
  public function check_quantities( $min_or_max, $cart_item_quantities, $cart_total_quantity, $_is_cart, $_return ) {
641
  $min_or_max_cart_total_quantity = wcj_get_option( 'wcj_order_quantities_' . $min_or_max . '_cart_total_quantity', 0 );
642
+ if ( (string) 0 !== ( $min_or_max_cart_total_quantity ) ) {
643
  if (
644
  ( 'max' === $min_or_max && $cart_total_quantity > $min_or_max_cart_total_quantity ) ||
645
  ( 'min' === $min_or_max && $cart_total_quantity < $min_or_max_cart_total_quantity )
654
  if ( 'yes' === apply_filters( 'booster_option', 'no', wcj_get_option( 'wcj_order_quantities_' . $min_or_max . '_per_item_quantity_per_product', 'no' ) ) ) {
655
  foreach ( $cart_item_quantities as $_product_id => $cart_item_quantity ) {
656
  $max_or_max_per_item_quantity = get_post_meta( $_product_id, '_wcj_order_quantities_' . $min_or_max, true );
657
+ if ( (string) 0 !== ( $max_or_max_per_item_quantity ) ) {
658
  if (
659
  ( 'max' === $min_or_max && $cart_item_quantity > $max_or_max_per_item_quantity ) ||
660
  ( 'min' === $min_or_max && $cart_item_quantity < $max_or_max_per_item_quantity )
669
  }
670
  }
671
  $max_or_max_per_item_quantity = apply_filters( 'booster_option', 0, wcj_get_option( 'wcj_order_quantities_' . $min_or_max . '_per_item_quantity', 0 ) );
672
+ if ( (string) 0 !== ( $max_or_max_per_item_quantity ) ) {
673
  foreach ( $cart_item_quantities as $_product_id => $cart_item_quantity ) {
674
  if (
675
  'yes' === apply_filters( 'booster_option', 'no', wcj_get_option( 'wcj_order_quantities_' . $min_or_max . '_per_item_quantity_per_product', 'no' ) ) &&
includes/class-wcj-orders.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Module - Orders
4
  *
5
- * @version 5.6.2
6
  * @author Pluggabl LLC.
7
  * @package Booster_For_WooCommerce/includes
8
  */
@@ -106,12 +106,12 @@ if ( ! class_exists( 'WCJ_Orders' ) ) :
106
  /**
107
  * Handle_orders_navigation.
108
  *
109
- * @version 5.6.2
110
  * @since 3.4.0
111
  */
112
  public function handle_orders_navigation() {
113
  if ( isset( $_GET['wcj_orders_navigation'] ) ) {
114
- $wpnonce = isset( $_REQUEST['_wpnonce'] ) ? wp_verify_nonce( sanitize_key( isset( $_REQUEST['_wpnonce'] ) ? $_REQUEST['_wpnonce'] : '' ), 'wcj-order-meta-nonce' ) : true;
115
  $adjacent_order_id = $wpnonce && isset( $_GET['post'] ) && isset( $_GET['wcj_orders_navigation'] ) ? wcj_get_adjacent_order_id( sanitize_text_field( wp_unslash( $_GET['post'] ) ), sanitize_text_field( wp_unslash( $_GET['wcj_orders_navigation'] ) ) ) : false;
116
  $url = ( ! isset( $_GET['post'] ) || false === ( $adjacent_order_id ) ?
117
  remove_query_arg( 'wcj_orders_navigation' ) :
@@ -253,15 +253,12 @@ if ( ! class_exists( 'WCJ_Orders' ) ) :
253
  /**
254
  * Admin_notice_regenerate_download_permissions.
255
  *
256
- * @version 5.6.2
257
  * @since 3.2.0
258
  */
259
  public function admin_notice_regenerate_download_permissions() {
260
- $wpnonce = true;
261
- if ( function_exists( 'wp_verify_nonce' ) ) {
262
- $wpnonce = isset( $_REQUEST['_wpnonce'] ) ? wp_verify_nonce( sanitize_key( isset( $_REQUEST['_wpnonce'] ) ? $_REQUEST['_wpnonce'] : '' ), 'woocommerce-settings' ) : true;
263
- }
264
- if ( ! empty( $_REQUEST['wcj_bulk_regenerated_download_permissions'] ) ) {
265
  $orders_count = intval( $_REQUEST['wcj_bulk_regenerated_download_permissions'] );
266
  $message = sprintf(
267
  /* translators: %s: translation added */
2
  /**
3
  * Booster for WooCommerce - Module - Orders
4
  *
5
+ * @version 5.6.7
6
  * @author Pluggabl LLC.
7
  * @package Booster_For_WooCommerce/includes
8
  */
106
  /**
107
  * Handle_orders_navigation.
108
  *
109
+ * @version 5.6.7
110
  * @since 3.4.0
111
  */
112
  public function handle_orders_navigation() {
113
  if ( isset( $_GET['wcj_orders_navigation'] ) ) {
114
+ $wpnonce = isset( $_REQUEST['_wpnonce'] ) ? wp_verify_nonce( sanitize_key( $_REQUEST['_wpnonce'] ), 'wcj-order-meta-nonce' ) : false;
115
  $adjacent_order_id = $wpnonce && isset( $_GET['post'] ) && isset( $_GET['wcj_orders_navigation'] ) ? wcj_get_adjacent_order_id( sanitize_text_field( wp_unslash( $_GET['post'] ) ), sanitize_text_field( wp_unslash( $_GET['wcj_orders_navigation'] ) ) ) : false;
116
  $url = ( ! isset( $_GET['post'] ) || false === ( $adjacent_order_id ) ?
117
  remove_query_arg( 'wcj_orders_navigation' ) :
253
  /**
254
  * Admin_notice_regenerate_download_permissions.
255
  *
256
+ * @version 5.6.7
257
  * @since 3.2.0
258
  */
259
  public function admin_notice_regenerate_download_permissions() {
260
+ $wpnonce = isset( $_REQUEST['_wpnonce'] ) ? wp_verify_nonce( sanitize_key( $_REQUEST['_wpnonce'] ), 'woocommerce-settings' ) : false;
261
+ if ( $wpnonce && ! empty( $_REQUEST['wcj_bulk_regenerated_download_permissions'] ) ) {
 
 
 
262
  $orders_count = intval( $_REQUEST['wcj_bulk_regenerated_download_permissions'] );
263
  $message = sprintf(
264
  /* translators: %s: translation added */
includes/class-wcj-payment-gateways-currency.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Module - Gateways Currency Converter
4
  *
5
- * @version 5.6.2
6
  * @since 2.3.0
7
  * @author Pluggabl LLC.
8
  * @package Booster_For_WooCommerce/includes
@@ -68,14 +68,16 @@ if ( ! class_exists( 'WCJ_Payment_Gateways_Currency' ) ) :
68
  /**
69
  * Fix_chosen_payment_method.
70
  *
71
- * @version 5.6.2
72
  * @since 3.9.0
73
  * @param string | array $post_data defines the post_data.
74
  */
75
  public function fix_chosen_payment_method( $post_data ) {
76
- $wpnonce = true;
77
- if ( function_exists( 'wp_verify_nonce' ) ) {
78
- $wpnonce = isset( $_REQUEST['_wpnonce'] ) ? wp_verify_nonce( sanitize_key( isset( $_REQUEST['_wpnonce'] ) ? $_REQUEST['_wpnonce'] : '' ) ) : true;
 
 
79
  }
80
 
81
  $payment_gateway = ( empty( $_POST['payment_method'] ) ? '' : sanitize_text_field( wp_unslash( $_POST['payment_method'] ) ) );
@@ -104,7 +106,7 @@ if ( ! class_exists( 'WCJ_Payment_Gateways_Currency' ) ) :
104
  /**
105
  * Change_shipping_price_by_gateway.
106
  *
107
- * @version 3.9.0
108
  * @since 2.4.8
109
  * @param int | array $package_rates defines the package_rates.
110
  * @param string | array $package defines the package.
@@ -112,7 +114,7 @@ if ( ! class_exists( 'WCJ_Payment_Gateways_Currency' ) ) :
112
  public function change_shipping_price_by_gateway( $package_rates, $package ) {
113
  if ( $this->is_cart_or_checkout() ) {
114
  $current_gateway = $this->get_chosen_payment_method();
115
- if ( '' !== $current_gateway ) {
116
  $gateway_currency_exchange_rate = wcj_get_option( 'wcj_gateways_currency_exchange_rate_' . $current_gateway );
117
  return wcj_change_price_shipping_package_rates( $package_rates, $gateway_currency_exchange_rate );
118
  }
@@ -150,7 +152,7 @@ if ( ! class_exists( 'WCJ_Payment_Gateways_Currency' ) ) :
150
  /**
151
  * Change_price_by_gateway.
152
  *
153
- * @version 5.6.2
154
  * @since 2.3.0
155
  * @param string $price defines the price.
156
  * @param string | array $product defines the product.
@@ -159,7 +161,7 @@ if ( ! class_exists( 'WCJ_Payment_Gateways_Currency' ) ) :
159
  if ( $this->is_cart_or_checkout() ) {
160
  $current_gateway = $this->get_chosen_payment_method();
161
 
162
- if ( '' !== $current_gateway ) {
163
  $gateway_currency_exchange_rate = wcj_get_option( 'wcj_gateways_currency_exchange_rate_' . $current_gateway );
164
  $gateway_currency_exchange_rate = str_replace( ',', '.', $gateway_currency_exchange_rate );
165
  if ( is_numeric( $price ) ) {
@@ -173,14 +175,14 @@ if ( ! class_exists( 'WCJ_Payment_Gateways_Currency' ) ) :
173
  /**
174
  * Extend_paypal_supported_currencies.
175
  *
176
- * @version 3.9.0
177
  * @since 2.3.0
178
  * @param array $supported_currencies defines the supported_currencies.
179
  */
180
  public function extend_paypal_supported_currencies( $supported_currencies ) {
181
  if ( $this->is_cart_or_checkout() ) {
182
  $current_gateway = $this->get_chosen_payment_method();
183
- if ( '' !== $current_gateway ) {
184
  $gateway_currency = wcj_get_option( 'wcj_gateways_currency_' . $current_gateway );
185
  if ( 'no_changes' !== $gateway_currency ) {
186
  $supported_currencies[] = $gateway_currency;
@@ -193,14 +195,14 @@ if ( ! class_exists( 'WCJ_Payment_Gateways_Currency' ) ) :
193
  /**
194
  * Change_currency_code.
195
  *
196
- * @version 3.9.0
197
  * @since 2.3.0
198
  * @param string $currency defines the currency.
199
  */
200
  public function change_currency_code( $currency ) {
201
  if ( $this->is_cart_or_checkout() ) {
202
  $current_gateway = $this->get_chosen_payment_method();
203
- if ( '' !== $current_gateway ) {
204
  $gateway_currency = wcj_get_option( 'wcj_gateways_currency_' . $current_gateway );
205
  if ( 'no_changes' !== $gateway_currency ) {
206
  return $gateway_currency;
2
  /**
3
  * Booster for WooCommerce - Module - Gateways Currency Converter
4
  *
5
+ * @version 5.6.7
6
  * @since 2.3.0
7
  * @author Pluggabl LLC.
8
  * @package Booster_For_WooCommerce/includes
68
  /**
69
  * Fix_chosen_payment_method.
70
  *
71
+ * @version 5.6.7
72
  * @since 3.9.0
73
  * @param string | array $post_data defines the post_data.
74
  */
75
  public function fix_chosen_payment_method( $post_data ) {
76
+ $wpnonce = false;
77
+ $args = array();
78
+ if ( isset( $_POST['post_data'] ) ) {
79
+ parse_str( sanitize_text_field( wp_unslash( $_POST['post_data'] ) ), $args );
80
+ $wpnonce = isset( $args['woocommerce-process-checkout-nonce'] ) ? wp_verify_nonce( sanitize_key( $args['woocommerce-process-checkout-nonce'] ), 'woocommerce-process_checkout' ) : false;
81
  }
82
 
83
  $payment_gateway = ( empty( $_POST['payment_method'] ) ? '' : sanitize_text_field( wp_unslash( $_POST['payment_method'] ) ) );
106
  /**
107
  * Change_shipping_price_by_gateway.
108
  *
109
+ * @version 5.6.7
110
  * @since 2.4.8
111
  * @param int | array $package_rates defines the package_rates.
112
  * @param string | array $package defines the package.
114
  public function change_shipping_price_by_gateway( $package_rates, $package ) {
115
  if ( $this->is_cart_or_checkout() ) {
116
  $current_gateway = $this->get_chosen_payment_method();
117
+ if ( '' !== $current_gateway && null !== $current_gateway ) {
118
  $gateway_currency_exchange_rate = wcj_get_option( 'wcj_gateways_currency_exchange_rate_' . $current_gateway );
119
  return wcj_change_price_shipping_package_rates( $package_rates, $gateway_currency_exchange_rate );
120
  }
152
  /**
153
  * Change_price_by_gateway.
154
  *
155
+ * @version 5.6.7
156
  * @since 2.3.0
157
  * @param string $price defines the price.
158
  * @param string | array $product defines the product.
161
  if ( $this->is_cart_or_checkout() ) {
162
  $current_gateway = $this->get_chosen_payment_method();
163
 
164
+ if ( '' !== $current_gateway && null !== $current_gateway ) {
165
  $gateway_currency_exchange_rate = wcj_get_option( 'wcj_gateways_currency_exchange_rate_' . $current_gateway );
166
  $gateway_currency_exchange_rate = str_replace( ',', '.', $gateway_currency_exchange_rate );
167
  if ( is_numeric( $price ) ) {
175
  /**
176
  * Extend_paypal_supported_currencies.
177
  *
178
+ * @version 5.6.7
179
  * @since 2.3.0
180
  * @param array $supported_currencies defines the supported_currencies.
181
  */
182
  public function extend_paypal_supported_currencies( $supported_currencies ) {
183
  if ( $this->is_cart_or_checkout() ) {
184
  $current_gateway = $this->get_chosen_payment_method();
185
+ if ( '' !== $current_gateway && null !== $current_gateway ) {
186
  $gateway_currency = wcj_get_option( 'wcj_gateways_currency_' . $current_gateway );
187
  if ( 'no_changes' !== $gateway_currency ) {
188
  $supported_currencies[] = $gateway_currency;
195
  /**
196
  * Change_currency_code.
197
  *
198
+ * @version 5.6.7
199
  * @since 2.3.0
200
  * @param string $currency defines the currency.
201
  */
202
  public function change_currency_code( $currency ) {
203
  if ( $this->is_cart_or_checkout() ) {
204
  $current_gateway = $this->get_chosen_payment_method();
205
+ if ( '' !== $current_gateway && null !== $current_gateway ) {
206
  $gateway_currency = wcj_get_option( 'wcj_gateways_currency_' . $current_gateway );
207
  if ( 'no_changes' !== $gateway_currency ) {
208
  return $gateway_currency;
includes/class-wcj-payment-gateways-min-max.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Module - Gateways Min/Max Amounts
4
  *
5
- * @version 5.6.6
6
  * @since 2.4.1
7
  * @author Pluggabl LLC.
8
  * @package Booster_For_WooCommerce/includes
@@ -77,7 +77,7 @@ if ( ! class_exists( 'WCJ_Payment_Gateways_Min_Max' ) ) :
77
  /**
78
  * Remove_payment_gateways.
79
  *
80
- * @version 5.6.6
81
  * @since 4.7.0
82
  *
83
  * @param array $_available_gateways defines the _available_gateways.
@@ -117,7 +117,7 @@ if ( ! class_exists( 'WCJ_Payment_Gateways_Min_Max' ) ) :
117
  unset( $_available_gateways[ $key ] );
118
  continue;
119
  }
120
-
121
  if ( '0' !== (string) $max && $total_in_cart > $max ) {
122
  $notices[] = str_replace( array( '%gateway_title%', '%max_amount%' ), array( $gateway->title, wc_price( $max ) ), $notices_template_max );
123
  unset( $_available_gateways[ $key ] );
2
  /**
3
  * Booster for WooCommerce - Module - Gateways Min/Max Amounts
4
  *
5
+ * @version 5.6.7
6
  * @since 2.4.1
7
  * @author Pluggabl LLC.
8
  * @package Booster_For_WooCommerce/includes
77
  /**
78
  * Remove_payment_gateways.
79
  *
80
+ * @version 5.6.7
81
  * @since 4.7.0
82
  *
83
  * @param array $_available_gateways defines the _available_gateways.
117
  unset( $_available_gateways[ $key ] );
118
  continue;
119
  }
120
+
121
  if ( '0' !== (string) $max && $total_in_cart > $max ) {
122
  $notices[] = str_replace( array( '%gateway_title%', '%max_amount%' ), array( $gateway->title, wc_price( $max ) ), $notices_template_max );
123
  unset( $_available_gateways[ $key ] );
includes/class-wcj-payment-gateways.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Module - Custom Gateways
4
  *
5
- * @version 5.6.2
6
  * @author Pluggabl LLC.
7
  * @package Booster_For_WooCommerce/includes
8
  */
@@ -58,7 +58,7 @@ if ( ! class_exists( 'WCJ_Payment_Gateways' ) ) :
58
  /**
59
  * Check_required_wcj_input_fields.
60
  *
61
- * @version 5.6.2
62
  * @since 3.0.1
63
  * @param array $data defines the data.
64
  * @param string | array $errors defines the errors.
@@ -66,7 +66,7 @@ if ( ! class_exists( 'WCJ_Payment_Gateways' ) ) :
66
  public function check_required_wcj_input_fields( $data, $errors ) {
67
  $payment_method = $data['payment_method'];
68
  if ( 'jetpack_custom_gateway' === substr( $payment_method, 0, 22 ) ) {
69
- $wpnonce = isset( $_REQUEST['woocommerce-process-checkout-nonce'] ) ? wp_verify_nonce( sanitize_key( isset( $_REQUEST['woocommerce-process-checkout-nonce'] ) ? $_REQUEST['woocommerce-process-checkout-nonce'] : '' ), 'woocommerce-process_checkout' ) : false;
70
  foreach ( $_POST as $key => $value ) {
71
  if ( 'wcj_input_field_' === substr( $key, 0, 16 ) ) {
72
  if ( $wpnonce && isset( $_POST[ 'for_' . $key ] ) && $payment_method === $_POST[ 'for_' . $key ] ) {
@@ -139,7 +139,7 @@ if ( ! class_exists( 'WCJ_Payment_Gateways' ) ) :
139
  /**
140
  * Update_custom_payment_gateways_fields_order_meta.
141
  *
142
- * @version 5.6.2
143
  * @since 2.5.2
144
  * @param int $order_id defines the order_id.
145
  * @param string $posted defines the posted.
@@ -148,7 +148,7 @@ if ( ! class_exists( 'WCJ_Payment_Gateways' ) ) :
148
  $payment_method = get_post_meta( $order_id, '_payment_method', true );
149
  if ( 'jetpack_custom_gateway' === substr( $payment_method, 0, 22 ) ) {
150
  $input_fields = array();
151
- $wpnonce = isset( $_REQUEST['woocommerce-process-checkout-nonce'] ) ? wp_verify_nonce( sanitize_key( isset( $_REQUEST['woocommerce-process-checkout-nonce'] ) ? $_REQUEST['woocommerce-process-checkout-nonce'] : '' ), 'woocommerce-process_checkout' ) : false;
152
  foreach ( $_POST as $key => $value ) {
153
  if ( 'wcj_input_field_' === substr( $key, 0, 16 ) ) {
154
  if ( ! is_array( $value ) ) {
2
  /**
3
  * Booster for WooCommerce - Module - Custom Gateways
4
  *
5
+ * @version 5.6.7
6
  * @author Pluggabl LLC.
7
  * @package Booster_For_WooCommerce/includes
8
  */
58
  /**
59
  * Check_required_wcj_input_fields.
60
  *
61
+ * @version 5.6.7
62
  * @since 3.0.1
63
  * @param array $data defines the data.
64
  * @param string | array $errors defines the errors.
66
  public function check_required_wcj_input_fields( $data, $errors ) {
67
  $payment_method = $data['payment_method'];
68
  if ( 'jetpack_custom_gateway' === substr( $payment_method, 0, 22 ) ) {
69
+ $wpnonce = isset( $_REQUEST['woocommerce-process-checkout-nonce'] ) ? wp_verify_nonce( sanitize_key( $_REQUEST['woocommerce-process-checkout-nonce'] ), 'woocommerce-process_checkout' ) : false;
70
  foreach ( $_POST as $key => $value ) {
71
  if ( 'wcj_input_field_' === substr( $key, 0, 16 ) ) {
72
  if ( $wpnonce && isset( $_POST[ 'for_' . $key ] ) && $payment_method === $_POST[ 'for_' . $key ] ) {
139
  /**
140
  * Update_custom_payment_gateways_fields_order_meta.
141
  *
142
+ * @version 5.6.7
143
  * @since 2.5.2
144
  * @param int $order_id defines the order_id.
145
  * @param string $posted defines the posted.
148
  $payment_method = get_post_meta( $order_id, '_payment_method', true );
149
  if ( 'jetpack_custom_gateway' === substr( $payment_method, 0, 22 ) ) {
150
  $input_fields = array();
151
+ $wpnonce = isset( $_REQUEST['woocommerce-process-checkout-nonce'] ) ? wp_verify_nonce( sanitize_key( $_REQUEST['woocommerce-process-checkout-nonce'] ), 'woocommerce-process_checkout' ) : false;
152
  foreach ( $_POST as $key => $value ) {
153
  if ( 'wcj_input_field_' === substr( $key, 0, 16 ) ) {
154
  if ( ! is_array( $value ) ) {
includes/class-wcj-pdf-invoicing.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Module - PDF Invoicing
4
  *
5
- * @version 5.6.2
6
  * @author Pluggabl LLC.
7
  * @package Booster_For_WooCommerce/includes
8
  */
@@ -447,22 +447,21 @@ if ( ! class_exists( 'WCJ_PDF_Invoicing' ) ) :
447
  /**
448
  * Catch_args.
449
  *
450
- * @version 5.6.2
451
  */
452
  public function catch_args() {
453
- $wpnonce = true;
454
- if ( function_exists( 'wp_verify_nonce' ) ) {
455
- $wpnonce = isset( $_REQUEST['_wpnonce'] ) ? wp_verify_nonce( sanitize_key( isset( $_REQUEST['_wpnonce'] ) ? $_REQUEST['_wpnonce'] : '' ) ) : true;
456
- }
457
- $this->order_id = ( $wpnonce && isset( $_GET['order_id'] ) ) ? sanitize_text_field( wp_unslash( $_GET['order_id'] ) ) : 0;
458
- $this->invoice_type_id = ( $wpnonce && isset( $_GET['invoice_type_id'] ) ) ? sanitize_text_field( wp_unslash( $_GET['invoice_type_id'] ) ) : '';
459
- $this->save_as_pdf = ( $wpnonce && isset( $_GET['save_pdf_invoice'] ) && '1' === $_GET['save_pdf_invoice'] );
460
- $this->get_invoice = ( $wpnonce && isset( $_GET['get_invoice'] ) && '1' === $_GET['get_invoice'] );
461
 
462
- if ( $wpnonce && isset( $_GET['create_invoice_for_order_id'] ) && $this->check_user_roles( false ) ) {
463
  $this->create_document( sanitize_text_field( wp_unslash( $_GET['create_invoice_for_order_id'] ) ), $this->invoice_type_id );
464
  }
465
- if ( $wpnonce && isset( $_GET['delete_invoice_for_order_id'] ) && $this->check_user_roles( false ) ) {
466
  $this->delete_document( sanitize_text_field( wp_unslash( $_GET['delete_invoice_for_order_id'] ) ), $this->invoice_type_id );
467
  }
468
  }
2
  /**
3
  * Booster for WooCommerce - Module - PDF Invoicing
4
  *
5
+ * @version 5.6.7
6
  * @author Pluggabl LLC.
7
  * @package Booster_For_WooCommerce/includes
8
  */
447
  /**
448
  * Catch_args.
449
  *
450
+ * @version 5.6.7
451
  */
452
  public function catch_args() {
453
+ $create_invoice_for_order_id_wpnonce = isset( $_REQUEST['create_invoice_for_order_id-nonce'] ) ? wp_verify_nonce( sanitize_key( $_REQUEST['create_invoice_for_order_id-nonce'] ), 'create_invoice_for_order_id' ) : false;
454
+ $delete_invoice_for_order_id_wpnonce = isset( $_REQUEST['delete_invoice_for_order_id-nonce'] ) ? wp_verify_nonce( sanitize_key( $_REQUEST['delete_invoice_for_order_id-nonce'] ), 'delete_invoice_for_order_id' ) : false;
455
+
456
+ $this->order_id = ( isset( $_GET['order_id'] ) ) ? sanitize_text_field( wp_unslash( $_GET['order_id'] ) ) : 0;
457
+ $this->invoice_type_id = ( isset( $_GET['invoice_type_id'] ) ) ? sanitize_text_field( wp_unslash( $_GET['invoice_type_id'] ) ) : '';
458
+ $this->save_as_pdf = ( isset( $_GET['save_pdf_invoice'] ) && '1' === $_GET['save_pdf_invoice'] );
459
+ $this->get_invoice = ( isset( $_GET['get_invoice'] ) && '1' === $_GET['get_invoice'] );
 
460
 
461
+ if ( $create_invoice_for_order_id_wpnonce && isset( $_GET['create_invoice_for_order_id'] ) && $this->check_user_roles( false ) ) {
462
  $this->create_document( sanitize_text_field( wp_unslash( $_GET['create_invoice_for_order_id'] ) ), $this->invoice_type_id );
463
  }
464
+ if ( $delete_invoice_for_order_id_wpnonce && isset( $_GET['delete_invoice_for_order_id'] ) && $this->check_user_roles( false ) ) {
465
  $this->delete_document( sanitize_text_field( wp_unslash( $_GET['delete_invoice_for_order_id'] ) ), $this->invoice_type_id );
466
  }
467
  }
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.6.4
6
  * @author Pluggabl LLC.
7
  * @package Booster_For_WooCommerce/includes
8
  */
@@ -153,14 +153,11 @@ if ( ! class_exists( 'WCJ_Price_By_Country' ) ) :
153
  /**
154
  * Recalculate_price_filter_products_prices.
155
  *
156
- * @version 5.6.2
157
  * @since 2.5.6
158
  */
159
  public function recalculate_price_filter_products_prices() {
160
- $wpnonce = true;
161
- if ( function_exists( 'wp_verify_nonce' ) ) {
162
- $wpnonce = isset( $_REQUEST['_wpnonce'] ) ? wp_verify_nonce( sanitize_key( isset( $_REQUEST['_wpnonce'] ) ? $_REQUEST['_wpnonce'] : '' ), 'woocommerce-settings' ) : true;
163
- }
164
  if ( $wpnonce && isset( $_GET['recalculate_price_filter_products_prices'] ) && ( wcj_is_user_role( 'administrator' ) || is_shop_manager() ) ) {
165
  wcj_update_products_price_by_country();
166
  global $wcj_notice;
2
  /**
3
  * Booster for WooCommerce - Module - Prices and Currencies by Country
4
  *
5
+ * @version 5.6.7
6
  * @author Pluggabl LLC.
7
  * @package Booster_For_WooCommerce/includes
8
  */
153
  /**
154
  * Recalculate_price_filter_products_prices.
155
  *
156
+ * @version 5.6.7
157
  * @since 2.5.6
158
  */
159
  public function recalculate_price_filter_products_prices() {
160
+ $wpnonce = isset( $_REQUEST['recalculate_price_filter_products_prices-nonce'] ) ? wp_verify_nonce( sanitize_key( $_REQUEST['recalculate_price_filter_products_prices-nonce'] ), 'recalculate_price_filter_products_prices' ) : false;
 
 
 
161
  if ( $wpnonce && isset( $_GET['recalculate_price_filter_products_prices'] ) && ( wcj_is_user_role( 'administrator' ) || is_shop_manager() ) ) {
162
  wcj_update_products_price_by_country();
163
  global $wcj_notice;
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.6.3
6
  * @since 2.5.0
7
  * @author Pluggabl LLC.
8
  * @todo Fix "Make Empty Price" option for variable products
@@ -228,33 +228,34 @@ if ( ! class_exists( 'WCJ_Price_By_User_Role' ) ) :
228
  /**
229
  * Add_notice_query_var.
230
  *
231
- * @version 5.6.3
232
  * @since 2.5.0
233
  * @param string $location defines the location.
234
  */
235
  public function add_notice_query_var( $location ) {
 
 
 
 
236
  remove_filter( 'redirect_post_location', array( $this, 'add_notice_query_var' ), 99 );
237
- return esc_url_raw( add_query_arg( array( 'wcj_product_price_by_user_role_admin_notice' => true ), $location ) );
238
  }
239
 
240
  /**
241
  * Admin_notices.
242
  *
243
- * @version 5.6.2
244
  * @since 2.5.0
245
  */
246
  public function admin_notices() {
247
- $wpnonce = true;
248
- if ( function_exists( 'wp_verify_nonce' ) ) {
249
- $wpnonce = isset( $_REQUEST['_wpnonce'] ) ? wp_verify_nonce( sanitize_key( isset( $_REQUEST['_wpnonce'] ) ? $_REQUEST['_wpnonce'] : '' ) ) : true;
250
- }
251
  if ( ! $wpnonce || ! isset( $_GET['wcj_product_price_by_user_role_admin_notice'] ) ) {
252
  return;
253
  }
254
  ?><div class="error"><p>
255
  <?php
256
  echo '<div class="message">'
257
- . wp_kses_post( __( 'Booster: Free plugin\'s version is limited to only one price by user role per products settings product enabled at a time. You will need to get <a href="https://booster.io/plus/" target="_blank">Booster Plus</a> to add unlimited number of price by user role per product settings products.', 'woocommerce-jetpack' ) )
258
  . '</div>';
259
  ?>
260
  </p></div>
2
  /**
3
  * Booster for WooCommerce - Module - Price based on User Role
4
  *
5
+ * @version 5.6.7
6
  * @since 2.5.0
7
  * @author Pluggabl LLC.
8
  * @todo Fix "Make Empty Price" option for variable products
228
  /**
229
  * Add_notice_query_var.
230
  *
231
+ * @version 5.6.7
232
  * @since 2.5.0
233
  * @param string $location defines the location.
234
  */
235
  public function add_notice_query_var( $location ) {
236
+ $query_arg = array(
237
+ 'wcj_product_price_by_user_role_admin_notice' => true,
238
+ 'wcj_product_price_by_user_role_admin_notice-nonce' => wp_create_nonce( 'wcj_product_price_by_user_role_admin_notice' ),
239
+ );
240
  remove_filter( 'redirect_post_location', array( $this, 'add_notice_query_var' ), 99 );
241
+ return esc_url_raw( add_query_arg( $query_arg, $location ) );
242
  }
243
 
244
  /**
245
  * Admin_notices.
246
  *
247
+ * @version 5.6.7
248
  * @since 2.5.0
249
  */
250
  public function admin_notices() {
251
+ $wpnonce = isset( $_REQUEST['wcj_product_price_by_user_role_admin_notice-nonce'] ) ? wp_verify_nonce( sanitize_key( $_REQUEST['wcj_product_price_by_user_role_admin_notice-nonce'] ), 'wcj_product_price_by_user_role_admin_notice' ) : false;
 
 
 
252
  if ( ! $wpnonce || ! isset( $_GET['wcj_product_price_by_user_role_admin_notice'] ) ) {
253
  return;
254
  }
255
  ?><div class="error"><p>
256
  <?php
257
  echo '<div class="message">'
258
+ . wp_kses_post( __( 'Booster: Free plugin\'s version is limited to only one price by user role per products settings product enabled at a time. You will need to get <a href="https://booster.io/buy-booster/" target="_blank">Booster Plus</a> to add unlimited number of price by user role per product settings products.', 'woocommerce-jetpack' ) )
259
  . '</div>';
260
  ?>
261
  </p></div>
includes/class-wcj-price-labels.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Module - Custom Price Labels
4
  *
5
- * @version 5.6.6
6
  * @author Pluggabl LLC.
7
  * @package Booster_For_WooCommerce/includes
8
  */
@@ -107,13 +107,13 @@ if ( ! class_exists( 'WCJ_Price_Labels' ) ) :
107
  /**
108
  * Save_custom_price_labels.
109
  *
110
- * @version 5.6.6
111
  * @param int $post_id defines the post_id.
112
  * @param string | array $post defines the post.
113
  */
114
  public function save_custom_price_labels( $post_id, $post ) {
115
- $nonce = wp_verify_nonce( wp_unslash( isset( $_POST['woocommerce_meta_nonce'] ) ? sanitize_text_field( wp_unslash( $_POST['woocommerce_meta_nonce'] ) ) : '' ), 'woocommerce_save_data' );
116
- if ( ! isset( $_POST['woojetpack_price_labels_save_post'] ) && $nonce ) {
117
  return;
118
  }
119
  foreach ( $this->custom_tab_sections as $custom_tab_section ) {
2
  /**
3
  * Booster for WooCommerce - Module - Custom Price Labels
4
  *
5
+ * @version 5.6.7
6
  * @author Pluggabl LLC.
7
  * @package Booster_For_WooCommerce/includes
8
  */
107
  /**
108
  * Save_custom_price_labels.
109
  *
110
+ * @version 5.6.7
111
  * @param int $post_id defines the post_id.
112
  * @param string | array $post defines the post.
113
  */
114
  public function save_custom_price_labels( $post_id, $post ) {
115
+ $wpnonce = isset( $_POST['woocommerce_meta_nonce'] ) ? wp_verify_nonce( sanitize_text_field( wp_unslash( $_POST['woocommerce_meta_nonce'] ) ), 'woocommerce_save_data' ) : false;
116
+ if ( ! isset( $_POST['woojetpack_price_labels_save_post'] ) || ! $wpnonce ) {
117
  return;
118
  }
119
  foreach ( $this->custom_tab_sections as $custom_tab_section ) {
includes/class-wcj-product-addons.php CHANGED
@@ -311,7 +311,7 @@ if ( ! class_exists( 'WCJ_Product_Addons' ) ) :
311
  * @since 2.5.3
312
  */
313
  public function get_the_notice() {
314
- return __( 'Booster: Free plugin\'s version is limited to only three products with per product addons enabled at a time. You will need to get <a href="https://booster.io/plus/" target="_blank">Booster Plus</a> to add unlimited number of products with per product addons.', 'woocommerce-jetpack' );
315
  }
316
 
317
  /**
311
  * @since 2.5.3
312
  */
313
  public function get_the_notice() {
314
+ return __( 'Booster: Free plugin\'s version is limited to only three products with per product addons enabled at a time. You will need to get <a href="https://booster.io/buy-booster/" target="_blank">Booster Plus</a> to add unlimited number of products with per product addons.', 'woocommerce-jetpack' );
315
  }
316
 
317
  /**
includes/class-wcj-product-bookings.php CHANGED
@@ -534,7 +534,7 @@ if ( ! class_exists( 'WCJ_Product_Bookings' ) ) :
534
  <div class="error"><p>
535
  <?php
536
  echo '<div class="message">'
537
- . wp_kses_post( __( 'Booster: Free plugin\'s version is limited to only one bookings product enabled at a time. You will need to get <a href="https://booster.io/plus/" target="_blank">Booster Plus</a> to add unlimited number of bookings products.', 'woocommerce-jetpack' ) )
538
  . '</div>';
539
  ?>
540
  </p></div>
534
  <div class="error"><p>
535
  <?php
536
  echo '<div class="message">'
537
+ . wp_kses_post( __( 'Booster: Free plugin\'s version is limited to only one bookings product enabled at a time. You will need to get <a href="https://booster.io/buy-booster/" target="_blank">Booster Plus</a> to add unlimited number of bookings products.', 'woocommerce-jetpack' ) )
538
  . '</div>';
539
  ?>
540
  </p></div>
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.6.2
6
  * @author Pluggabl LLC.
7
  * @package Booster_For_WooCommerce/includes
8
  */
@@ -152,22 +152,32 @@ if ( ! class_exists( 'WCJ_Product_Input_Fields' ) ) :
152
  /**
153
  * Handle_downloads.
154
  *
155
- * @version 5.6.2
156
  * @since 2.2.2
157
  */
158
  public function handle_downloads() {
159
- if ( isset( $_GET['wcj_download_file'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification
160
- $file_name = sanitize_text_field( wp_unslash( $_GET['wcj_download_file'] ) ); // phpcs:ignore WordPress.Security.NonceVerification
 
 
 
 
 
 
 
161
  $upload_dir = wcj_get_wcj_uploads_dir( 'input_fields_uploads' );
162
  $file_path = $upload_dir . '/' . $file_name;
 
163
  if ( wcj_is_user_role( 'administrator' ) || is_shop_manager() ) {
164
- header( 'Expires: 0' );
165
- header( 'Cache-Control: must-revalidate, post-check=0, pre-check=0' );
166
- header( 'Cache-Control: private', false );
167
- header( 'Content-disposition: attachment; filename=' . $file_name );
168
- header( 'Content-Transfer-Encoding: binary' );
169
- header( 'Content-Length: ' . filesize( $file_path ) );
170
- readfile( $file_path ); //phpcs:ignore
 
 
171
  exit();
172
  }
173
  }
2
  /**
3
  * Booster for WooCommerce - Module - Product Input Fields
4
  *
5
+ * @version 5.6.7
6
  * @author Pluggabl LLC.
7
  * @package Booster_For_WooCommerce/includes
8
  */
152
  /**
153
  * Handle_downloads.
154
  *
155
+ * @version 5.6.7
156
  * @since 2.2.2
157
  */
158
  public function handle_downloads() {
159
+ if ( isset( $_GET['wcj_download_file'] ) ) {
160
+ $wcj_download_file_nonce = isset( $_GET['wcj_download_file_nonce'] ) ? sanitize_key( wp_unslash( $_GET['wcj_download_file_nonce'] ) ) : '';
161
+ $wpnonce = wp_verify_nonce( $wcj_download_file_nonce, 'wcj_download_file_nonce' );
162
+ if ( ! $wpnonce ) {
163
+ wp_safe_redirect( admin_url() );
164
+ return;
165
+ }
166
+
167
+ $file_name = sanitize_file_name( wp_unslash( $_GET['wcj_download_file'] ) );
168
  $upload_dir = wcj_get_wcj_uploads_dir( 'input_fields_uploads' );
169
  $file_path = $upload_dir . '/' . $file_name;
170
+
171
  if ( wcj_is_user_role( 'administrator' ) || is_shop_manager() ) {
172
+ $real_file_path = realpath( $file_path );
173
+ $real_base_path = realpath( $upload_dir ) . DIRECTORY_SEPARATOR;
174
+
175
+ if ( false === $real_file_path || 0 !== strpos( $real_file_path, $real_base_path ) ) {
176
+ wp_safe_redirect( admin_url() );
177
+ return; // Traversal attempt.
178
+ }
179
+
180
+ WC_Download_Handler::download_file_force( $file_path, $file_name );
181
  exit();
182
  }
183
  }
includes/class-wcj-product-open-pricing.php CHANGED
@@ -247,7 +247,7 @@ if ( ! class_exists( 'WCJ_Product_Open_Pricing' ) ) :
247
  ?><div class="error"><p>
248
  <?php
249
  echo '<div class="message">'
250
- . wp_kses_post( 'Booster: Free plugin\'s version is limited to only one open pricing product enabled at a time. You will need to get <a href="https://booster.io/plus/" target="_blank">Booster Plus</a> to add unlimited number of open pricing products.', 'woocommerce-jetpack' )
251
  . '</div>';
252
  ?>
253
  </p></div>
247
  ?><div class="error"><p>
248
  <?php
249
  echo '<div class="message">'
250
+ . wp_kses_post( 'Booster: Free plugin\'s version is limited to only one open pricing product enabled at a time. You will need to get <a href="https://booster.io/buy-booster/" target="_blank">Booster Plus</a> to add unlimited number of open pricing products.', 'woocommerce-jetpack' )
251
  . '</div>';
252
  ?>
253
  </p></div>
includes/class-wcj-product-price-by-formula.php CHANGED
@@ -449,7 +449,7 @@ if ( ! class_exists( 'WCJ_Product_Price_By_Formula' ) ) :
449
  ?><div class="error"><p>
450
  <?php
451
  echo '<div class="message">'
452
- . wp_kses_post( 'Booster: Free plugin\'s version is limited to only one price by formula product enabled at a time. You will need to get <a href="https://booster.io/plus/" target="_blank">Booster Plus</a> to add unlimited number of price by formula products.', 'woocommerce-jetpack' )
453
  . '</div>';
454
  ?>
455
  </p></div>
449
  ?><div class="error"><p>
450
  <?php
451
  echo '<div class="message">'
452
+ . wp_kses_post( 'Booster: Free plugin\'s version is limited to only one price by formula product enabled at a time. You will need to get <a href="https://booster.io/buy-booster/" target="_blank">Booster Plus</a> to add unlimited number of price by formula products.', 'woocommerce-jetpack' )
453
  . '</div>';
454
  ?>
455
  </p></div>
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.6.2
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 5.6.2
57
  * @since 2.5.3
58
  */
59
  public function add_products_per_page_form() {
@@ -98,6 +98,7 @@ if ( ! class_exists( 'WCJ_Products_Per_Page' ) ) :
98
  __( 'Products <strong>%1$from% - %to%</strong> from <strong>%total%</strong>. Products on page %2$select_form%', 'woocommerce-jetpack' )
99
  );
100
  $html .= str_replace( array( '%from%', '%to%', '%total%', '%select_form%' ), array( $products_from, $products_to, $products_total, $select_form ), $_text );
 
101
  $html .= '</form>';
102
  $html .= wcj_get_option( 'wcj_products_per_page_text_after', '</div>' );
103
 
@@ -133,15 +134,12 @@ if ( ! class_exists( 'WCJ_Products_Per_Page' ) ) :
133
  /**
134
  * Get_current_products_per_page_number.
135
  *
136
- * @version 5.6.2
137
  * @since 3.8.0
138
  * @param string $do_save defines the do_save.
139
  */
140
  public function get_current_products_per_page_number( $do_save ) {
141
- $wpnonce = true;
142
- if ( function_exists( 'wp_verify_nonce' ) ) {
143
- $wpnonce = isset( $_REQUEST['_wpnonce'] ) ? wp_verify_nonce( sanitize_key( isset( $_REQUEST['_wpnonce'] ) ? $_REQUEST['_wpnonce'] : '' ) ) : true;
144
- }
145
  $products_per_page = $this->get_saved_products_per_page_number();
146
 
147
  if ( isset( $_REQUEST['wcj_products_per_page'] ) && ! empty( $_REQUEST['wcj_products_per_page'] ) && $wpnonce ) {
2
  /**
3
  * Booster for WooCommerce - Module - Products per Page
4
  *
5
+ * @version 5.6.7
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.7
57
  * @since 2.5.3
58
  */
59
  public function add_products_per_page_form() {
98
  __( 'Products <strong>%1$from% - %to%</strong> from <strong>%total%</strong>. Products on page %2$select_form%', 'woocommerce-jetpack' )
99
  );
100
  $html .= str_replace( array( '%from%', '%to%', '%total%', '%select_form%' ), array( $products_from, $products_to, $products_total, $select_form ), $_text );
101
+ $html .= wp_nonce_field( 'wcj_products_per_page', 'wcj_products_per_page-nonce' );
102
  $html .= '</form>';
103
  $html .= wcj_get_option( 'wcj_products_per_page_text_after', '</div>' );
104
 
134
  /**
135
  * Get_current_products_per_page_number.
136
  *
137
+ * @version 5.6.7
138
  * @since 3.8.0
139
  * @param string $do_save defines the do_save.
140
  */
141
  public function get_current_products_per_page_number( $do_save ) {
142
+ $wpnonce = isset( $_REQUEST['wcj_products_per_page-nonce'] ) ? wp_verify_nonce( sanitize_key( $_REQUEST['wcj_products_per_page-nonce'] ), 'wcj_products_per_page' ) : false;
 
 
 
143
  $products_per_page = $this->get_saved_products_per_page_number();
144
 
145
  if ( isset( $_REQUEST['wcj_products_per_page'] ) && ! empty( $_REQUEST['wcj_products_per_page'] ) && $wpnonce ) {
includes/class-wcj-sorting.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Module - Sorting
4
  *
5
- * @version 5.6.2
6
  * @author Pluggabl LLC.
7
  * @package Booster_For_WooCommerce/includes
8
  */
@@ -298,21 +298,21 @@ if ( ! class_exists( 'WCJ_Sorting' ) ) :
298
  * Add new sorting options to WooCommerce sorting.
299
  *
300
  * @param array $args Get args.
301
- * @version 5.6.2
302
  */
303
  public function custom_woocommerce_get_catalog_ordering_args( $args ) {
304
  // Get ordering from query string.
305
- $wpnonce = true;
306
- if ( function_exists( 'wp_verify_nonce' ) ) {
307
- $wpnonce = isset( $_REQUEST['_wpnonce'] ) ? wp_verify_nonce( sanitize_key( isset( $_REQUEST['_wpnonce'] ) ? $_REQUEST['_wpnonce'] : '' ) ) : true;
308
  }
309
-
310
  $orderby_value = ( WCJ_IS_WC_VERSION_BELOW_3 ) ?
311
- ( ( isset( $_GET['orderby'] ) && $wpnonce ) ? woocommerce_clean( sanitize_text_field( wp_unslash( $_GET['orderby'] ) ) ) : apply_filters(
312
  'woocommerce_default_catalog_orderby',
313
  get_option( 'woocommerce_default_catalog_orderby' )
314
  ) ) :
315
- ( isset( $_GET['orderby'] ) ? wc_clean( sanitize_text_field( wp_unslash( $_GET['orderby'] ) ) ) : apply_filters(
316
  'woocommerce_default_catalog_orderby',
317
  get_option( 'woocommerce_default_catalog_orderby' )
318
  )
2
  /**
3
  * Booster for WooCommerce - Module - Sorting
4
  *
5
+ * @version 5.6.7
6
  * @author Pluggabl LLC.
7
  * @package Booster_For_WooCommerce/includes
8
  */
298
  * Add new sorting options to WooCommerce sorting.
299
  *
300
  * @param array $args Get args.
301
+ * @version 5.6.7
302
  */
303
  public function custom_woocommerce_get_catalog_ordering_args( $args ) {
304
  // Get ordering from query string.
305
+ $_get = array();
306
+ if ( ! isset( $_SERVER['QUERY_STRING'] ) ) {
307
+ return $args;
308
  }
309
+ parse_str( sanitize_text_field( wp_unslash( $_SERVER['QUERY_STRING'] ) ), $_get );
310
  $orderby_value = ( WCJ_IS_WC_VERSION_BELOW_3 ) ?
311
+ ( ( isset( $_get['orderby'] ) && $wpnonce ) ? woocommerce_clean( sanitize_text_field( wp_unslash( $_get['orderby'] ) ) ) : apply_filters(
312
  'woocommerce_default_catalog_orderby',
313
  get_option( 'woocommerce_default_catalog_orderby' )
314
  ) ) :
315
+ ( isset( $_get['orderby'] ) ? wc_clean( sanitize_text_field( wp_unslash( $_get['orderby'] ) ) ) : apply_filters(
316
  'woocommerce_default_catalog_orderby',
317
  get_option( 'woocommerce_default_catalog_orderby' )
318
  )
includes/class-wcj-tax-display.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Module - Tax Display
4
  *
5
- * @version 5.6.2
6
  * @since 3.2.4
7
  * @author Pluggabl LLC.
8
  * @package Booster_For_WooCommerce/includes
@@ -59,15 +59,12 @@ if ( ! class_exists( 'WCJ_Tax_Display' ) ) :
59
  /**
60
  * Tax_display_toggle_param.
61
  *
62
- * @version 5.6.2
63
  * @since 3.2.4
64
  */
65
  public function tax_display_toggle_param() {
66
  wcj_session_maybe_start();
67
- $wpnonce = true;
68
- if ( function_exists( 'wp_verify_nonce' ) ) {
69
- $wpnonce = isset( $_REQUEST['_wpnonce'] ) ? wp_verify_nonce( sanitize_key( isset( $_REQUEST['_wpnonce'] ) ? $_REQUEST['_wpnonce'] : '' ) ) : true;
70
- }
71
  if ( $wpnonce && isset( $_REQUEST['wcj_button_toggle_tax_display'] ) ) {
72
  $session_value = wcj_session_get( 'wcj_toggle_tax_display' );
73
  $current_value = ( '' === $session_value ? wcj_get_option( 'woocommerce_tax_display_shop', 'excl' ) : $session_value );
2
  /**
3
  * Booster for WooCommerce - Module - Tax Display
4
  *
5
+ * @version 5.6.7
6
  * @since 3.2.4
7
  * @author Pluggabl LLC.
8
  * @package Booster_For_WooCommerce/includes
59
  /**
60
  * Tax_display_toggle_param.
61
  *
62
+ * @version 5.6.7
63
  * @since 3.2.4
64
  */
65
  public function tax_display_toggle_param() {
66
  wcj_session_maybe_start();
67
+ $wpnonce = isset( $_REQUEST['wcj-button-toggle-tax-display-nonce'] ) ? wp_verify_nonce( sanitize_key( $_REQUEST['wcj-button-toggle-tax-display-nonce'] ), 'wcj_button_toggle_tax_display' ) : false;
 
 
 
68
  if ( $wpnonce && isset( $_REQUEST['wcj_button_toggle_tax_display'] ) ) {
69
  $session_value = wcj_session_get( 'wcj_toggle_tax_display' );
70
  $current_value = ( '' === $session_value ? wcj_get_option( 'woocommerce_tax_display_shop', 'excl' ) : $session_value );
includes/class-wcj-url-coupons.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Module - URL Coupons
4
  *
5
- * @version 5.6.2
6
  * @since 2.9.1
7
  * @author Pluggabl LLC.
8
  * @package Booster_For_WooCommerce/includes
@@ -95,19 +95,20 @@ if ( ! class_exists( 'WCJ_URL_Coupons' ) ) :
95
  /**
96
  * Maybe_apply_url_coupon.
97
  *
98
- * @version 5.6.2
99
  * @since 2.7.0
100
  * @todo (maybe) options to add products to cart with query arg
101
  * @todo (maybe) if ( ! WC()->cart->has_discount( $coupon_code ) ) {}
102
  */
103
  public function maybe_apply_url_coupon() {
104
  $arg_key = wcj_get_option( 'wcj_url_coupons_key', 'wcj_apply_coupon' );
105
- $wpnonce = true;
106
- if ( function_exists( 'wp_verify_nonce' ) ) {
107
- $wpnonce = isset( $_REQUEST['_wpnonce'] ) ? wp_verify_nonce( sanitize_key( isset( $_REQUEST['_wpnonce'] ) ? $_REQUEST['_wpnonce'] : '' ) ) : true;
108
  }
109
- if ( isset( $_GET[ $arg_key ] ) && '' !== $_GET[ $arg_key ] && $wpnonce ) {
110
- $coupon_code = sanitize_text_field( ( wp_unslash( $_GET[ $arg_key ] ) ) );
 
111
  $this->maybe_add_products_to_cart( $coupon_code );
112
  WC()->cart->add_discount( $coupon_code );
113
  wp_safe_redirect( $this->get_redirect_url( $arg_key ) );
2
  /**
3
  * Booster for WooCommerce - Module - URL Coupons
4
  *
5
+ * @version 5.6.7
6
  * @since 2.9.1
7
  * @author Pluggabl LLC.
8
  * @package Booster_For_WooCommerce/includes
95
  /**
96
  * Maybe_apply_url_coupon.
97
  *
98
+ * @version 5.6.7
99
  * @since 2.7.0
100
  * @todo (maybe) options to add products to cart with query arg
101
  * @todo (maybe) if ( ! WC()->cart->has_discount( $coupon_code ) ) {}
102
  */
103
  public function maybe_apply_url_coupon() {
104
  $arg_key = wcj_get_option( 'wcj_url_coupons_key', 'wcj_apply_coupon' );
105
+ $_get = array();
106
+ if ( ! isset( $_SERVER['QUERY_STRING'] ) ) {
107
+ return;
108
  }
109
+ parse_str( sanitize_text_field( wp_unslash( $_SERVER['QUERY_STRING'] ) ), $_get );
110
+ if ( isset( $_get[ $arg_key ] ) && '' !== $_get[ $arg_key ] ) {
111
+ $coupon_code = sanitize_text_field( ( wp_unslash( $_get[ $arg_key ] ) ) );
112
  $this->maybe_add_products_to_cart( $coupon_code );
113
  WC()->cart->add_discount( $coupon_code );
114
  wp_safe_redirect( $this->get_redirect_url( $arg_key ) );
includes/classes/class-wcj-module.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce Module
4
  *
5
- * @version 5.6.3
6
  * @since 2.2.0
7
  * @author Pluggabl LLC.
8
  * @todo [dev] maybe should be `abstract` ?
@@ -382,7 +382,7 @@ if ( ! class_exists( 'WCJ_Module' ) ) :
382
  /* translators: %1$s,%2$s: translators Added */
383
  wp_kses_post( __( 'Booster: Free plugin\'s version is limited to only one "%1$s" product with settings on per product basis enabled at a time. You will need to get <a href="%2$s" target="_blank">Booster Plus</a> to add unlimited number of "%1$s" products.', 'woocommerce-jetpack' ) ),
384
  wp_kses_post( $this->short_desc ),
385
- 'https://booster.io/plus/'
386
  ) .
387
  '</div></p></div>';
388
  }
@@ -522,12 +522,12 @@ if ( ! class_exists( 'WCJ_Module' ) ) :
522
  /**
523
  * Reset_settings.
524
  *
525
- * @version 5.6.2
526
  * @since 2.4.0
527
  * @todo (maybe) always `delete_option()` (instead of `update_option()`)
528
  */
529
  public function reset_settings() {
530
- $wpnonce = isset( $_REQUEST['_wpnonce'] ) ? wp_verify_nonce( sanitize_key( isset( $_REQUEST['_wpnonce'] ) ? $_REQUEST['_wpnonce'] : 'woocommerce-settings' ), 'woocommerce-settings' ) : true;
531
  if ( $wpnonce && isset( $_GET['wcj_reset_settings'] ) && $this->id === $_GET['wcj_reset_settings'] && wcj_is_user_role( 'administrator' ) && ! isset( $_POST['save'] ) ) {
532
  foreach ( $this->get_settings() as $settings ) {
533
  if ( false !== strpos( $settings['id'], '[' ) ) {
@@ -539,7 +539,7 @@ if ( ! class_exists( 'WCJ_Module' ) ) :
539
  update_option( $settings['id'], $default_value );
540
  }
541
  }
542
- wp_safe_redirect( remove_query_arg( 'wcj_reset_settings' ) );
543
  exit();
544
  }
545
  }
@@ -962,7 +962,7 @@ if ( ! class_exists( 'WCJ_Module' ) ) :
962
  /**
963
  * Add_tool_link.
964
  *
965
- * @version 2.3.10
966
  * @since 2.2.3
967
  */
968
  public function add_tool_link() {
@@ -970,7 +970,7 @@ if ( ! class_exists( 'WCJ_Module' ) ) :
970
  $tool_title = $tool_data['title'];
971
  echo '<p>';
972
  echo ( $this->is_enabled() ) ?
973
- '<a href="' . wp_kses_post( admin_url( 'admin.php?page=wcj-tools&tab=' . $tool_id ) ) . '"><code>' . wp_kses_post( $tool_title ) . '</code></a>' :
974
  '<code>' . wp_kses_post( $tool_title ) . '</code>';
975
  echo '</p>';
976
  }
@@ -979,7 +979,7 @@ if ( ! class_exists( 'WCJ_Module' ) ) :
979
  /**
980
  * Add_reset_settings_button.
981
  *
982
- * @version 5.5.9
983
  * @since 2.4.0
984
  * @param Array $settings Get settings.
985
  */
@@ -998,7 +998,12 @@ if ( ! class_exists( 'WCJ_Module' ) ) :
998
  'id' => 'wcj_' . $this->id . '_reset_settings',
999
  'type' => 'custom_link',
1000
  'link' => '<a onclick="return confirm(\'' . __( 'Are you sure?', 'woocommerce-jetpack' ) . '\')" class="button-primary" style="' .
1001
- $reset_button_style . '" href="' . add_query_arg( 'wcj_reset_settings', $this->id ) . '">' . __( 'Reset settings', 'woocommerce-jetpack' ) . '</a>',
 
 
 
 
 
1002
  ),
1003
  array(
1004
  'type' => 'sectionend',
2
  /**
3
  * Booster for WooCommerce Module
4
  *
5
+ * @version 5.6.7
6
  * @since 2.2.0
7
  * @author Pluggabl LLC.
8
  * @todo [dev] maybe should be `abstract` ?
382
  /* translators: %1$s,%2$s: translators Added */
383
  wp_kses_post( __( 'Booster: Free plugin\'s version is limited to only one "%1$s" product with settings on per product basis enabled at a time. You will need to get <a href="%2$s" target="_blank">Booster Plus</a> to add unlimited number of "%1$s" products.', 'woocommerce-jetpack' ) ),
384
  wp_kses_post( $this->short_desc ),
385
+ 'https://booster.io/buy-booster/'
386
  ) .
387
  '</div></p></div>';
388
  }
522
  /**
523
  * Reset_settings.
524
  *
525
+ * @version 5.6.7
526
  * @since 2.4.0
527
  * @todo (maybe) always `delete_option()` (instead of `update_option()`)
528
  */
529
  public function reset_settings() {
530
+ $wpnonce = isset( $_REQUEST[ 'wcj_reset_settings-' . $this->id . '-nonce' ] ) ? wp_verify_nonce( sanitize_key( $_REQUEST[ 'wcj_reset_settings-' . $this->id . '-nonce' ] ), 'wcj_reset_settings' ) : false;
531
  if ( $wpnonce && isset( $_GET['wcj_reset_settings'] ) && $this->id === $_GET['wcj_reset_settings'] && wcj_is_user_role( 'administrator' ) && ! isset( $_POST['save'] ) ) {
532
  foreach ( $this->get_settings() as $settings ) {
533
  if ( false !== strpos( $settings['id'], '[' ) ) {
539
  update_option( $settings['id'], $default_value );
540
  }
541
  }
542
+ wp_safe_redirect( remove_query_arg( array( 'wcj_reset_settings', 'wcj_reset_settings-' . $this->id . '-nonce' ) ) );
543
  exit();
544
  }
545
  }
962
  /**
963
  * Add_tool_link.
964
  *
965
+ * @version 5.6.7
966
  * @since 2.2.3
967
  */
968
  public function add_tool_link() {
970
  $tool_title = $tool_data['title'];
971
  echo '<p>';
972
  echo ( $this->is_enabled() ) ?
973
+ '<a href="' . esc_url_raw( admin_url( 'admin.php?page=wcj-tools&tab=' . $tool_id . '&wcj_tools_nonce=' . wp_create_nonce( 'wcj_tools' ) ) ) . '"><code>' . wp_kses_post( $tool_title ) . '</code></a>' :
974
  '<code>' . wp_kses_post( $tool_title ) . '</code>';
975
  echo '</p>';
976
  }
979
  /**
980
  * Add_reset_settings_button.
981
  *
982
+ * @version 5.6.7
983
  * @since 2.4.0
984
  * @param Array $settings Get settings.
985
  */
998
  'id' => 'wcj_' . $this->id . '_reset_settings',
999
  'type' => 'custom_link',
1000
  'link' => '<a onclick="return confirm(\'' . __( 'Are you sure?', 'woocommerce-jetpack' ) . '\')" class="button-primary" style="' .
1001
+ $reset_button_style . '" href="' . add_query_arg(
1002
+ array(
1003
+ 'wcj_reset_settings' => $this->id,
1004
+ 'wcj_reset_settings-' . $this->id . '-nonce' => wp_create_nonce( 'wcj_reset_settings' ),
1005
+ )
1006
+ ) . '">' . __( 'Reset settings', 'woocommerce-jetpack' ) . '</a>',
1007
  ),
1008
  array(
1009
  'type' => 'sectionend',
includes/core/class-wcj-admin.php CHANGED
@@ -2,7 +2,7 @@
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
@@ -84,14 +84,11 @@ if ( ! class_exists( 'WCJ_Admin' ) ) :
84
  /**
85
  * Admin_footer_text
86
  *
87
- * @version 5.5.6
88
  * @param string $footer_text get admin footer texts.
89
  */
90
  public function admin_footer_text( $footer_text ) {
91
- $wpnonce = true;
92
- if ( function_exists( 'wp_verify_nonce' ) ) {
93
- $wpnonce = isset( $_REQUEST['_wpnonce'] ) ? wp_verify_nonce( sanitize_key( isset( $_REQUEST['_wpnonce'] ) ? $_REQUEST['_wpnonce'] : '' ) ) : true;
94
- }
95
  if ( isset( $_GET['page'] ) && $wpnonce ) {
96
  if ( 'wcj-tools' === $_GET['page'] || ( 'wc-settings' === $_GET['page'] && isset( $_GET['tab'] ) && 'jetpack' === $_GET['tab'] ) ) {
97
  ?>
@@ -144,7 +141,7 @@ if ( ! class_exists( 'WCJ_Admin' ) ) :
144
  '<a href="' . esc_url( 'https://booster.io/' ) . '">' . __( 'Docs', 'woocommerce-jetpack' ) . '</a>',
145
  );
146
  if ( 'woocommerce-jetpack.php' === basename( WCJ_FREE_PLUGIN_FILE ) ) {
147
- $custom_links[] = '<a target="_blank" href="' . esc_url( 'https://booster.io/plus/' ) . '">' . __( 'Unlock all', 'woocommerce-jetpack' ) . '</a>';
148
  } else {
149
  $custom_links[] = '<a target="_blank" href="' . esc_url( 'https://booster.io/my-account/booster-contact/' ) . '">' . __( 'Support', 'woocommerce-jetpack' ) . '</a>';
150
  }
2
  /**
3
  * Booster for WooCommerce - Core - Admin
4
  *
5
+ * @version 5.6.7
6
  * @since 3.2.4
7
  * @author Pluggabl LLC.
8
  * @package Booster_For_WooCommerce/core
84
  /**
85
  * Admin_footer_text
86
  *
87
+ * @version 5.6.7
88
  * @param string $footer_text get admin footer texts.
89
  */
90
  public function admin_footer_text( $footer_text ) {
91
+ $wpnonce = isset( $_REQUEST['_wpnonce'] ) ? wp_verify_nonce( sanitize_key( $_REQUEST['_wpnonce'] ) ) : true;
 
 
 
92
  if ( isset( $_GET['page'] ) && $wpnonce ) {
93
  if ( 'wcj-tools' === $_GET['page'] || ( 'wc-settings' === $_GET['page'] && isset( $_GET['tab'] ) && 'jetpack' === $_GET['tab'] ) ) {
94
  ?>
141
  '<a href="' . esc_url( 'https://booster.io/' ) . '">' . __( 'Docs', 'woocommerce-jetpack' ) . '</a>',
142
  );
143
  if ( 'woocommerce-jetpack.php' === basename( WCJ_FREE_PLUGIN_FILE ) ) {
144
+ $custom_links[] = '<a target="_blank" href="' . esc_url( 'https://booster.io/buy-booster/' ) . '">' . __( 'Unlock all', 'woocommerce-jetpack' ) . '</a>';
145
  } else {
146
  $custom_links[] = '<a target="_blank" href="' . esc_url( 'https://booster.io/my-account/booster-contact/' ) . '">' . __( 'Support', 'woocommerce-jetpack' ) . '</a>';
147
  }
includes/functions/wcj-functions-admin.php CHANGED
@@ -360,20 +360,20 @@ if ( ! function_exists( 'wcj_get_plus_message' ) ) {
360
  '<p><span>' . sprintf(
361
  /* translators: %s: translation added */
362
  __( 'Some settings fields are locked and you will need %s to modify all locked fields.', 'woocommerce-jetpack' ),
363
- '<a href="https://booster.io/plus/" target="_blank">Booster for WooCommerce </a>'
364
  ) . '</span></p>' .
365
  '<p>' .
366
- '<a href="https://booster.io/plus/" target="_blank" class="button button-primary">' . __( 'Buy now', 'woocommerce-jetpack' ) . '</a> <a href="https://booster.io" target="_blank" class="button">' . __( 'Visit Booster Site', 'woocommerce-jetpack' ) . '</a>' .
367
  '</p>' .
368
  '</div>';
369
 
370
  case 'desc':
371
  /* translators: %s: translation added */
372
- return sprintf( __( 'Upgrade <a href="%s" target="_blank">Booster</a> to change value.', 'woocommerce-jetpack' ), 'https://booster.io/plus/' );
373
 
374
  case 'desc_advanced':
375
  /* translators: %s: translation added */
376
- return sprintf( __( 'Upgrade <a href="%1$s" target="_blank">Booster to unlock this feature</a> to enable "%2$s" option.', 'woocommerce-jetpack' ), 'https://booster.io/plus/', $args['option'] );
377
 
378
  case 'desc_advanced_no_link':
379
  /* translators: %s: translation added */
@@ -381,11 +381,11 @@ if ( ! function_exists( 'wcj_get_plus_message' ) ) {
381
 
382
  case 'desc_below':
383
  /* translators: %s: translation added */
384
- return sprintf( __( 'Upgrade <a href="%s" target="_blank">Booster</a> to change values below.', 'woocommerce-jetpack' ), 'https://booster.io/plus/' );
385
 
386
  case 'desc_above':
387
  /* translators: %s: translation added */
388
- return sprintf( __( 'Upgrade <a href="%s" target="_blank">Booster </a> to change values above.', 'woocommerce-jetpack' ), 'https://booster.io/plus/' );
389
 
390
  case 'desc_no_link':
391
  return __( 'Upgrade Booster to change value.', 'woocommerce-jetpack' );
360
  '<p><span>' . sprintf(
361
  /* translators: %s: translation added */
362
  __( 'Some settings fields are locked and you will need %s to modify all locked fields.', 'woocommerce-jetpack' ),
363
+ '<a href="https://booster.io/buy-booster/" target="_blank">Booster for WooCommerce </a>'
364
  ) . '</span></p>' .
365
  '<p>' .
366
+ '<a href="https://booster.io/buy-booster/" target="_blank" class="button button-primary">' . __( 'Buy now', 'woocommerce-jetpack' ) . '</a> <a href="https://booster.io" target="_blank" class="button">' . __( 'Visit Booster Site', 'woocommerce-jetpack' ) . '</a>' .
367
  '</p>' .
368
  '</div>';
369
 
370
  case 'desc':
371
  /* translators: %s: translation added */
372
+ return sprintf( __( 'Upgrade <a href="%s" target="_blank">Booster</a> to change value.', 'woocommerce-jetpack' ), 'https://booster.io/buy-booster/' );
373
 
374
  case 'desc_advanced':
375
  /* translators: %s: translation added */
376
+ return sprintf( __( 'Upgrade <a href="%1$s" target="_blank">Booster to unlock this feature</a> to enable "%2$s" option.', 'woocommerce-jetpack' ), 'https://booster.io/buy-booster/', $args['option'] );
377
 
378
  case 'desc_advanced_no_link':
379
  /* translators: %s: translation added */
381
 
382
  case 'desc_below':
383
  /* translators: %s: translation added */
384
+ return sprintf( __( 'Upgrade <a href="%s" target="_blank">Booster</a> to change values below.', 'woocommerce-jetpack' ), 'https://booster.io/buy-booster/' );
385
 
386
  case 'desc_above':
387
  /* translators: %s: translation added */
388
+ return sprintf( __( 'Upgrade <a href="%s" target="_blank">Booster </a> to change values above.', 'woocommerce-jetpack' ), 'https://booster.io/buy-booster/' );
389
 
390
  case 'desc_no_link':
391
  return __( 'Upgrade Booster to change value.', 'woocommerce-jetpack' );
includes/functions/wcj-functions-html.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Functions - HTML Functions
4
  *
5
- * @version 5.6.2
6
  * @author Pluggabl LLC.
7
  * @package Booster_For_WooCommerce/functions
8
  */
@@ -122,7 +122,7 @@ if ( ! function_exists( 'wcj_empty_cart_button_html' ) ) {
122
  /**
123
  * Wcj_empty_cart_button_html.
124
  *
125
- * @version 3.7.0
126
  * @since 2.8.0
127
  * @todo optional function parameters instead of default `get_option()` calls
128
  */
@@ -132,6 +132,7 @@ if ( ! function_exists( 'wcj_empty_cart_button_html' ) ) {
132
  return '<div style="' . wcj_get_option( 'wcj_empty_cart_div_style', 'float: right;' ) . '">' .
133
  '<form action="" method="post"><input type="submit" class="' . wcj_get_option( 'wcj_empty_cart_button_class', 'button' ) . '" name="wcj_empty_cart" value="' .
134
  apply_filters( 'booster_option', 'Empty Cart', wcj_get_option( 'wcj_empty_cart_text', 'Empty Cart' ) ) . '"' . $confirmation_html . '>' .
 
135
  '</form>' .
136
  '</div>';
137
  }
2
  /**
3
  * Booster for WooCommerce - Functions - HTML Functions
4
  *
5
+ * @version 5.6.7
6
  * @author Pluggabl LLC.
7
  * @package Booster_For_WooCommerce/functions
8
  */
122
  /**
123
  * Wcj_empty_cart_button_html.
124
  *
125
+ * @version 5.6.7
126
  * @since 2.8.0
127
  * @todo optional function parameters instead of default `get_option()` calls
128
  */
132
  return '<div style="' . wcj_get_option( 'wcj_empty_cart_div_style', 'float: right;' ) . '">' .
133
  '<form action="" method="post"><input type="submit" class="' . wcj_get_option( 'wcj_empty_cart_button_class', 'button' ) . '" name="wcj_empty_cart" value="' .
134
  apply_filters( 'booster_option', 'Empty Cart', wcj_get_option( 'wcj_empty_cart_text', 'Empty Cart' ) ) . '"' . $confirmation_html . '>' .
135
+ wp_nonce_field( 'wcj-empty-cart', 'wcj_empty_cart_nonce' ) .
136
  '</form>' .
137
  '</div>';
138
  }
includes/functions/wcj-functions-price-currency.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Functions - Price and Currency
4
  *
5
- * @version 5.6.2
6
  * @since 2.7.0
7
  * @author Pluggabl LLC.
8
  * @package Booster_For_WooCommerce/functions
@@ -129,7 +129,7 @@ if ( ! function_exists( 'wcj_change_price_shipping_package_rates' ) ) {
129
  /**
130
  * Wcj_change_price_shipping_package_rates.
131
  *
132
- * @version 3.2.0
133
  * @since 3.2.0
134
  * @param array $package_rates defines the package_rates.
135
  * @param int $multiplier defines the multiplier.
@@ -138,7 +138,7 @@ if ( ! function_exists( 'wcj_change_price_shipping_package_rates' ) ) {
138
  $modified_package_rates = array();
139
  foreach ( $package_rates as $id => $package_rate ) {
140
  if ( 1 !== $multiplier && isset( $package_rate->cost ) ) {
141
- $package_rate->cost = $package_rate->cost * $multiplier;
142
  if ( isset( $package_rate->taxes ) && ! empty( $package_rate->taxes ) ) {
143
  if ( ! WCJ_IS_WC_VERSION_BELOW_3_2_0 ) {
144
  $rate_taxes = $package_rate->taxes;
2
  /**
3
  * Booster for WooCommerce - Functions - Price and Currency
4
  *
5
+ * @version 5.6.7
6
  * @since 2.7.0
7
  * @author Pluggabl LLC.
8
  * @package Booster_For_WooCommerce/functions
129
  /**
130
  * Wcj_change_price_shipping_package_rates.
131
  *
132
+ * @version 5.6.7
133
  * @since 3.2.0
134
  * @param array $package_rates defines the package_rates.
135
  * @param int $multiplier defines the multiplier.
138
  $modified_package_rates = array();
139
  foreach ( $package_rates as $id => $package_rate ) {
140
  if ( 1 !== $multiplier && isset( $package_rate->cost ) ) {
141
+ $package_rate->cost = (float) $package_rate->cost * (float) $multiplier;
142
  if ( isset( $package_rate->taxes ) && ! empty( $package_rate->taxes ) ) {
143
  if ( ! WCJ_IS_WC_VERSION_BELOW_3_2_0 ) {
144
  $rate_taxes = $package_rate->taxes;
includes/input-fields/class-wcj-product-input-fields-core.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Product Input Fields - Core
4
  *
5
- * @version 5.6.3
6
  * @author Pluggabl LLC.
7
  * @package Booster_For_WooCommerce/includes
8
  */
@@ -415,7 +415,7 @@ if ( ! class_exists( 'WCJ_Product_Input_Fields_Core' ) ) :
415
  /**
416
  * Output_custom_input_fields_in_admin_order.
417
  *
418
- * @version 5.5.9
419
  * @param int $item_id Get item id.
420
  * @param Array $item Get item.
421
  * @param Array $_product Get products.
@@ -435,7 +435,14 @@ if ( ! class_exists( 'WCJ_Product_Input_Fields_Core' ) ) :
435
  $value = maybe_unserialize( $value );
436
  if ( isset( $value['name'] ) ) {
437
  if ( isset( $value['wcj_uniqid'] ) ) {
438
- $value = '<a href="' . esc_url( add_query_arg( 'wcj_download_file', $_product_id . '_' . $i . '_' . $value['wcj_uniqid'] . '.' . pathinfo( $value['name'], PATHINFO_EXTENSION ) ) ) . '">' . $value['name'] . '</a>';
 
 
 
 
 
 
 
439
  } else {
440
  $value = '<a href="' . esc_url( add_query_arg( 'wcj_download_file', $item_id . '_' . $i . '.' . pathinfo( $value['name'], PATHINFO_EXTENSION ) ) ) . '">' . $value['name'] . '</a>';
441
  }
2
  /**
3
  * Booster for WooCommerce - Product Input Fields - Core
4
  *
5
+ * @version 5.6.7
6
  * @author Pluggabl LLC.
7
  * @package Booster_For_WooCommerce/includes
8
  */
415
  /**
416
  * Output_custom_input_fields_in_admin_order.
417
  *
418
+ * @version 5.6.7
419
  * @param int $item_id Get item id.
420
  * @param Array $item Get item.
421
  * @param Array $_product Get products.
435
  $value = maybe_unserialize( $value );
436
  if ( isset( $value['name'] ) ) {
437
  if ( isset( $value['wcj_uniqid'] ) ) {
438
+ $value = '<a href="' . esc_url(
439
+ add_query_arg(
440
+ array(
441
+ 'wcj_download_file' => $_product_id . '_' . $i . '_' . $value['wcj_uniqid'] . '.' . pathinfo( $value['name'], PATHINFO_EXTENSION ),
442
+ 'wcj_download_file_nonce' => wp_create_nonce( 'wcj_download_file_nonce' ),
443
+ )
444
+ )
445
+ ) . '">' . $value['name'] . '</a>';
446
  } else {
447
  $value = '<a href="' . esc_url( add_query_arg( 'wcj_download_file', $item_id . '_' . $i . '.' . pathinfo( $value['name'], PATHINFO_EXTENSION ) ) ) . '">' . $value['name'] . '</a>';
448
  }
includes/js/wcj-admin.js CHANGED
@@ -1,7 +1,7 @@
1
  /**
2
  * Wcj-admin.
3
  *
4
- * @version 5.6.2
5
  * @since 5.4.2
6
  * @package Booster_For_WooCommerce/includes/JS
7
  */
@@ -24,12 +24,13 @@ jQuery( document ).ready(
24
  jQuery( "#subscribe-email .subscribe-email-btn" ).click(
25
  function() {
26
  var email = jQuery( "#subscribe-email input[name=user_email]" );
 
27
  if (IsValidEmail( email.val() ) == false) {
28
  email.focus();
29
  return false;
30
  }
31
 
32
- var redirectUrl = window.location.origin + window.location.pathname + "?page=jetpack-getting-started&wcj-redirect=1&msg=";
33
  var msgId = 3;
34
  var settings = {
35
  "async": true,
1
  /**
2
  * Wcj-admin.
3
  *
4
+ * @version 5.6.7
5
  * @since 5.4.2
6
  * @package Booster_For_WooCommerce/includes/JS
7
  */
24
  jQuery( "#subscribe-email .subscribe-email-btn" ).click(
25
  function() {
26
  var email = jQuery( "#subscribe-email input[name=user_email]" );
27
+ var subscribe_email_nonce = jQuery( "#subscribe-email input[name=subscribe-email-nonce]" ).val();
28
  if (IsValidEmail( email.val() ) == false) {
29
  email.focus();
30
  return false;
31
  }
32
 
33
+ var redirectUrl = window.location.origin + window.location.pathname + "?page=jetpack-getting-started&subscribe-email-nonce=" + subscribe_email_nonce + " &wcj-redirect=1&msg=";
34
  var msgId = 3;
35
  var settings = {
36
  "async": true,
includes/mini-plugin/wcj-mini-plugin.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Mini plugin customizations
4
  *
5
- * @version 5.6.3
6
  * @author Pluggabl LLC.
7
  * @package Booster_For_WooCommerce/mini-plugin
8
  */
@@ -18,37 +18,37 @@ add_filter(
18
  ARRAY_FILTER_USE_KEY
19
  );
20
  $all_cat_ids1 = array( 'price_by_country', 'multicurrency', 'multicurrency_base_price', 'currency_per_product', 'currency', 'currency_external_products', 'bulk_price_converter', 'wholesale_price', 'product_open_pricing', 'offer_price', 'price_by_user_role', 'product_price_by_formula', 'global_discount', 'currency_exchange_rates', 'price_formats', 'price_labels', 'call_for_price', 'free_price', 'add_to_cart', 'more_button_labels', 'product_listings', 'tax_display', 'admin_products_list', 'products_per_page', 'product_tabs', 'product_custom_info', 'related_products', 'cross_sells', 'upsells', 'sorting', 'sku', 'stock', 'product_input_fields', 'product_add_to_cart', 'add_to_cart_button_visibility', 'purchase_data', 'product_bookings', 'crowdfunding', 'product_addons', 'product_images', 'sale_flash', 'product_by_country', 'product_by_user_role', 'product_custom_visibility', 'product_by_time', 'product_by_date', 'product_by_user', 'products_xml', 'product_bulk_meta_editor', 'product_msrp', 'product_extra_fees', 'cart', 'cart_customization', 'empty_cart', 'mini_cart', 'url_coupons', 'coupon_code_generator', 'coupon_by_user_role', 'checkout_core_fields', 'checkout_custom_fields', 'checkout_files_upload', 'checkout_custom_info', 'checkout_customization', 'checkout_fees', 'eu_vat_number', 'frequently_bought_together', 'one_page_checkout', 'payment_gateways', 'payment_gateways_icons', 'payment_gateways_fees', 'payment_gateways_per_category', 'payment_gateways_currency', 'payment_gateways_by_currency', 'payment_gateways_min_max', 'payment_gateways_by_country', 'payment_gateways_by_user_role', 'payment_gateways_by_shipping', 'shipping', 'shipping_options', 'shipping_icons', 'shipping_description', 'shipping_time', 'left_to_free_shipping', 'shipping_calculator', 'shipping_by_user_role', 'shipping_by_products', 'shipping_by_cities', 'shipping_by_time', 'shipping_by_order_amount', 'shipping_by_order_qty', 'address_formats', 'orders', 'admin_orders_list', 'order_min_amount', 'order_numbers', 'order_custom_statuses', 'order_quantities', 'max_products_per_user', 'pdf_invoicing', 'pdf_invoicing_numbering', 'pdf_invoicing_templates', 'pdf_invoicing_header', 'pdf_invoicing_footer', 'pdf_invoicing_styling', 'pdf_invoicing_page', 'pdf_invoicing_emails', 'pdf_invoicing_paid_stamp', 'pdf_invoicing_display', 'pdf_invoicing_advanced', 'pdf_invoicing_extra_columns', 'general', 'breadcrumbs', 'admin_bar', 'export', 'my_account', 'old_slugs', 'reports', 'admin_tools', 'debug_tools', 'emails', 'email_options', 'emails_verification', 'wpml', 'custom_css', 'custom_js', 'custom_php', 'track_users', 'modules_by_user_roles', 'template_editor', 'product_info' );
21
- $modules_all_cats = $modules_cats;
22
- $all_cat_ids=$all_cat_ids1;
23
-
24
  // ----- Modules By User Roles Module Options Start -----
25
- if( wcj_is_module_enabled( 'modules_by_user_roles' ) ) {
26
- $current_user = wp_get_current_user();
27
 
28
- $wcj_modules_by_user_roles_data['role'] = ( isset( $current_user->roles ) && is_array( $current_user->roles ) && ! empty( $current_user->roles ) ?
29
- reset( $current_user->roles ) : 'guest' );
30
- $wcj_modules_by_user_roles_data['role'] = ( '' !== $wcj_modules_by_user_roles_data['role'] ? $wcj_modules_by_user_roles_data['role'] : 'guest' );
31
- $wcj_modules_by_user_roles_data['modules_incl'] = wcj_get_option( 'wcj_modules_by_user_roles_incl_' . $wcj_modules_by_user_roles_data['role'], '' );
32
- $wcj_modules_by_user_roles_data['modules_excl'] = wcj_get_option( 'wcj_modules_by_user_roles_excl_' . $wcj_modules_by_user_roles_data['role'], '' );
33
 
34
- if ( empty( $wcj_modules_by_user_roles_data['modules_incl'] ) && empty( $wcj_modules_by_user_roles_data['modules_excl'] ) ) {
35
- $all_cat_ids = $all_cat_ids1;
36
- } elseif ( ! empty( $wcj_modules_by_user_roles_data['modules_incl'] ) && empty( $wcj_modules_by_user_roles_data['modules_excl'] ) ) {
37
 
38
- $all_cat_ids = $wcj_modules_by_user_roles_data['modules_incl'];
39
 
40
- } elseif ( empty( $wcj_modules_by_user_roles_data['modules_incl'] ) && ! empty( $wcj_modules_by_user_roles_data['modules_excl'] ) ) {
41
- $array = $all_cat_ids1;
42
 
43
- $value = $wcj_modules_by_user_roles_data['modules_excl'];
44
- $array = array_diff( $array, $value );
45
 
46
- $all_cat_ids = $array;
47
- } elseif ( ! empty( $wcj_modules_by_user_roles_data['modules_incl'] ) && ! empty( $wcj_modules_by_user_roles_data['modules_excl'] ) ) {
48
 
49
- $all_cat_ids = $wcj_modules_by_user_roles_data['modules_incl'];
 
50
  }
51
- }
52
  // ----- Modules By User Roles Module Options End -----
53
 
54
  if ( count( $all_cat_ids ) <= 1 && '' === $all_cat_ids[0] ) {
2
  /**
3
  * Booster for WooCommerce - Mini plugin customizations
4
  *
5
+ * @version 5.6.7
6
  * @author Pluggabl LLC.
7
  * @package Booster_For_WooCommerce/mini-plugin
8
  */
18
  ARRAY_FILTER_USE_KEY
19
  );
20
  $all_cat_ids1 = array( 'price_by_country', 'multicurrency', 'multicurrency_base_price', 'currency_per_product', 'currency', 'currency_external_products', 'bulk_price_converter', 'wholesale_price', 'product_open_pricing', 'offer_price', 'price_by_user_role', 'product_price_by_formula', 'global_discount', 'currency_exchange_rates', 'price_formats', 'price_labels', 'call_for_price', 'free_price', 'add_to_cart', 'more_button_labels', 'product_listings', 'tax_display', 'admin_products_list', 'products_per_page', 'product_tabs', 'product_custom_info', 'related_products', 'cross_sells', 'upsells', 'sorting', 'sku', 'stock', 'product_input_fields', 'product_add_to_cart', 'add_to_cart_button_visibility', 'purchase_data', 'product_bookings', 'crowdfunding', 'product_addons', 'product_images', 'sale_flash', 'product_by_country', 'product_by_user_role', 'product_custom_visibility', 'product_by_time', 'product_by_date', 'product_by_user', 'products_xml', 'product_bulk_meta_editor', 'product_msrp', 'product_extra_fees', 'cart', 'cart_customization', 'empty_cart', 'mini_cart', 'url_coupons', 'coupon_code_generator', 'coupon_by_user_role', 'checkout_core_fields', 'checkout_custom_fields', 'checkout_files_upload', 'checkout_custom_info', 'checkout_customization', 'checkout_fees', 'eu_vat_number', 'frequently_bought_together', 'one_page_checkout', 'payment_gateways', 'payment_gateways_icons', 'payment_gateways_fees', 'payment_gateways_per_category', 'payment_gateways_currency', 'payment_gateways_by_currency', 'payment_gateways_min_max', 'payment_gateways_by_country', 'payment_gateways_by_user_role', 'payment_gateways_by_shipping', 'shipping', 'shipping_options', 'shipping_icons', 'shipping_description', 'shipping_time', 'left_to_free_shipping', 'shipping_calculator', 'shipping_by_user_role', 'shipping_by_products', 'shipping_by_cities', 'shipping_by_time', 'shipping_by_order_amount', 'shipping_by_order_qty', 'address_formats', 'orders', 'admin_orders_list', 'order_min_amount', 'order_numbers', 'order_custom_statuses', 'order_quantities', 'max_products_per_user', 'pdf_invoicing', 'pdf_invoicing_numbering', 'pdf_invoicing_templates', 'pdf_invoicing_header', 'pdf_invoicing_footer', 'pdf_invoicing_styling', 'pdf_invoicing_page', 'pdf_invoicing_emails', 'pdf_invoicing_paid_stamp', 'pdf_invoicing_display', 'pdf_invoicing_advanced', 'pdf_invoicing_extra_columns', 'general', 'breadcrumbs', 'admin_bar', 'export', 'my_account', 'old_slugs', 'reports', 'admin_tools', 'debug_tools', 'emails', 'email_options', 'emails_verification', 'wpml', 'custom_css', 'custom_js', 'custom_php', 'track_users', 'modules_by_user_roles', 'template_editor', 'product_info' );
21
+ $modules_all_cats = $modules_cats;
22
+ $all_cat_ids = $all_cat_ids1;
23
+
24
  // ----- Modules By User Roles Module Options Start -----
25
+ if ( wcj_is_module_enabled( 'modules_by_user_roles' ) ) {
26
+ $current_user = wp_get_current_user();
27
 
28
+ $wcj_modules_by_user_roles_data['role'] = ( isset( $current_user->roles ) && is_array( $current_user->roles ) && ! empty( $current_user->roles ) ?
29
+ reset( $current_user->roles ) : 'guest' );
30
+ $wcj_modules_by_user_roles_data['role'] = ( '' !== $wcj_modules_by_user_roles_data['role'] ? $wcj_modules_by_user_roles_data['role'] : 'guest' );
31
+ $wcj_modules_by_user_roles_data['modules_incl'] = wcj_get_option( 'wcj_modules_by_user_roles_incl_' . $wcj_modules_by_user_roles_data['role'], '' );
32
+ $wcj_modules_by_user_roles_data['modules_excl'] = wcj_get_option( 'wcj_modules_by_user_roles_excl_' . $wcj_modules_by_user_roles_data['role'], '' );
33
 
34
+ if ( empty( $wcj_modules_by_user_roles_data['modules_incl'] ) && empty( $wcj_modules_by_user_roles_data['modules_excl'] ) ) {
35
+ $all_cat_ids = $all_cat_ids1;
36
+ } elseif ( ! empty( $wcj_modules_by_user_roles_data['modules_incl'] ) && empty( $wcj_modules_by_user_roles_data['modules_excl'] ) ) {
37
 
38
+ $all_cat_ids = $wcj_modules_by_user_roles_data['modules_incl'];
39
 
40
+ } elseif ( empty( $wcj_modules_by_user_roles_data['modules_incl'] ) && ! empty( $wcj_modules_by_user_roles_data['modules_excl'] ) ) {
41
+ $array = $all_cat_ids1;
42
 
43
+ $value = $wcj_modules_by_user_roles_data['modules_excl'];
44
+ $array = array_diff( $array, $value );
45
 
46
+ $all_cat_ids = $array;
47
+ } elseif ( ! empty( $wcj_modules_by_user_roles_data['modules_incl'] ) && ! empty( $wcj_modules_by_user_roles_data['modules_excl'] ) ) {
48
 
49
+ $all_cat_ids = $wcj_modules_by_user_roles_data['modules_incl'];
50
+ }
51
  }
 
52
  // ----- Modules By User Roles Module Options End -----
53
 
54
  if ( count( $all_cat_ids ) <= 1 && '' === $all_cat_ids[0] ) {
includes/pdf-invoices/submodules/class-wcj-pdf-invoicing-display.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - PDF Invoicing - Display
4
  *
5
- * @version 5.6.2
6
  * @author Pluggabl LLC.
7
  * @package Booster_For_WooCommerce/includes
8
  */
@@ -103,7 +103,7 @@ if ( ! class_exists( 'WCJ_PDF_Invoicing_Display' ) ) :
103
  /**
104
  * Add_pdf_invoices_admin_actions_buttons_css.
105
  *
106
- * @version 3.1.0
107
  * @since 2.4.7
108
  */
109
  public function add_pdf_invoices_admin_actions_buttons_css() {
@@ -114,8 +114,8 @@ if ( ! class_exists( 'WCJ_PDF_Invoicing_Display' ) ) :
114
  echo '.view.' . esc_html( $invoice_type['id'] ) . '_create { color: ' . esc_html( $invoice_type['color'] ) . ' !important; }' . PHP_EOL;
115
  echo '.view.' . esc_html( $invoice_type['id'] ) . '_delete { color: ' . esc_html( $invoice_type['color'] ) . ' !important; }' . PHP_EOL;
116
  echo '.view.' . esc_html( $invoice_type['id'] ) . '::after { content: "\f498" !important; }' . PHP_EOL;
117
- echo '.view.' . esc_html( $invoice_type['id'] ) . '_create ::after { content: "\f119" !important; }' . PHP_EOL;
118
- echo '.view.' . esc_html( $invoice_type['id'] ) . '_delete ::after { content: "\f153" !important; }' . PHP_EOL;
119
  }
120
  echo '</style>' . PHP_EOL;
121
  }
@@ -123,7 +123,7 @@ if ( ! class_exists( 'WCJ_PDF_Invoicing_Display' ) ) :
123
  /**
124
  * Add_pdf_invoices_admin_actions.
125
  *
126
- * @version 5.5.9
127
  * @since 2.4.7
128
  * @param Array $actions Get action data.
129
  * @param Array $the_order Get the order.
@@ -142,7 +142,7 @@ if ( ! class_exists( 'WCJ_PDF_Invoicing_Display' ) ) :
142
  if ( 'yes' === wcj_get_option( 'wcj_invoicing_' . $invoice_type['id'] . '_save_as_enabled', 'no' ) ) {
143
  $query_args['save_pdf_invoice'] = '1';
144
  }
145
- $the_url = esc_url( add_query_arg( $query_args, esc_url( remove_query_arg( array( 'create_invoice_for_order_id', 'delete_invoice_for_order_id' ) ) ) ) );
146
  $the_name = __( 'View', 'woocommerce-jetpack' ) . ' ' . $invoice_type['title'];
147
  $the_action = 'view ' . $invoice_type['id'];
148
  $the_action_id = $invoice_type['id'];
@@ -156,9 +156,10 @@ if ( ! class_exists( 'WCJ_PDF_Invoicing_Display' ) ) :
156
  // Delete button.
157
  $query_args = array(
158
  'delete_invoice_for_order_id' => wcj_get_order_id( $the_order ),
 
159
  'invoice_type_id' => $invoice_type['id'],
160
  );
161
- $the_url = esc_url( add_query_arg( $query_args, esc_url( remove_query_arg( 'create_invoice_for_order_id' ) ) ) );
162
  $the_name = __( 'Delete', 'woocommerce-jetpack' ) . ' ' . $invoice_type['title'];
163
  $the_action = 'view ' . $invoice_type['id'] . '_delete' . ( ( 'yes' === wcj_get_option( 'wcj_invoicing_' . $invoice_type['id'] . '_admin_orders_delete_btn_confirm', 'yes' ) ) ? ' wcj_need_confirmation' : '' );
164
  $the_action_id = $invoice_type['id'] . '_delete';
@@ -173,9 +174,10 @@ if ( ! class_exists( 'WCJ_PDF_Invoicing_Display' ) ) :
173
  // Create button.
174
  $query_args = array(
175
  'create_invoice_for_order_id' => wcj_get_order_id( $the_order ),
 
176
  'invoice_type_id' => $invoice_type['id'],
177
  );
178
- $the_url = esc_url( add_query_arg( $query_args, esc_url( remove_query_arg( 'delete_invoice_for_order_id' ) ) ) );
179
  $the_name = __( 'Create', 'woocommerce-jetpack' ) . ' ' . $invoice_type['title'];
180
  $the_action = 'view ' . $invoice_type['id'] . '_create' . ( ( 'yes' === wcj_get_option( 'wcj_invoicing_' . $invoice_type['id'] . '_admin_orders_create_btn_confirm', 'yes' ) ) ? ' wcj_need_confirmation' : '' );
181
  $the_action_id = $invoice_type['id'] . '_create';
@@ -209,7 +211,7 @@ if ( ! class_exists( 'WCJ_PDF_Invoicing_Display' ) ) :
209
  /**
210
  * Output custom columns for products
211
  *
212
- * @version 5.6.2
213
  * @param string $column Get order columns.
214
  */
215
  public function render_order_columns( $column ) {
@@ -233,7 +235,7 @@ if ( ! class_exists( 'WCJ_PDF_Invoicing_Display' ) ) :
233
  if ( 'yes' === wcj_get_option( 'wcj_invoicing_' . $invoice_type_id . '_save_as_enabled', 'no' ) ) {
234
  $query_args['save_pdf_invoice'] = '1';
235
  }
236
- $html .= '<a href="' . esc_url( add_query_arg( $query_args, esc_url( remove_query_arg( array( 'create_invoice_for_order_id', 'delete_invoice_for_order_id' ) ) ) ) ) . '">' .
237
  $the_number . '</a>';
238
  }
239
  echo wp_kses_post( $html );
@@ -343,7 +345,7 @@ if ( ! class_exists( 'WCJ_PDF_Invoicing_Display' ) ) :
343
  /**
344
  * Create_invoices_meta_box.
345
  *
346
- * @version 5.6.2
347
  * @since 2.8.0
348
  */
349
  public function create_invoices_meta_box() {
@@ -369,7 +371,7 @@ if ( ! class_exists( 'WCJ_PDF_Invoicing_Display' ) ) :
369
  $query_args['save_pdf_invoice'] = '1';
370
  $target = '';
371
  }
372
- $the_url = esc_url( add_query_arg( $query_args, remove_query_arg( array( 'create_invoice_for_order_id', 'delete_invoice_for_order_id' ) ) ) );
373
  $the_name = __( 'View', 'woocommerce-jetpack' );
374
  $the_invoice = wcj_get_invoice( $order_id, $invoice_type['id'] );
375
  $the_number = ' [#' . $the_invoice->get_invoice_number() . ']';
@@ -378,9 +380,10 @@ if ( ! class_exists( 'WCJ_PDF_Invoicing_Display' ) ) :
378
  // "Delete" link.
379
  $query_args = array(
380
  'delete_invoice_for_order_id' => $order_id,
 
381
  'invoice_type_id' => $invoice_type['id'],
382
  );
383
- $the_url = esc_url( add_query_arg( $query_args, remove_query_arg( 'create_invoice_for_order_id' ) ) );
384
  $the_name = __( 'Delete', 'woocommerce-jetpack' );
385
  $delete_link = '<a class="wcj_need_confirmation" href="' . $the_url . '">' . $the_name . '</a>';
386
  // Numbering & date.
@@ -401,9 +404,10 @@ if ( ! class_exists( 'WCJ_PDF_Invoicing_Display' ) ) :
401
  // "Create" link
402
  $query_args = array(
403
  'create_invoice_for_order_id' => $order_id,
 
404
  'invoice_type_id' => $invoice_type['id'],
405
  );
406
- $the_url = esc_url( add_query_arg( $query_args, remove_query_arg( 'delete_invoice_for_order_id' ) ) );
407
  $the_name = __( 'Create', 'woocommerce-jetpack' );
408
  $actions = array( '<a class="wcj_need_confirmation" href="' . $the_url . '">' . $the_name . '</a>' );
409
  }
2
  /**
3
  * Booster for WooCommerce - PDF Invoicing - Display
4
  *
5
+ * @version 5.6.7
6
  * @author Pluggabl LLC.
7
  * @package Booster_For_WooCommerce/includes
8
  */
103
  /**
104
  * Add_pdf_invoices_admin_actions_buttons_css.
105
  *
106
+ * @version 5.6.7
107
  * @since 2.4.7
108
  */
109
  public function add_pdf_invoices_admin_actions_buttons_css() {
114
  echo '.view.' . esc_html( $invoice_type['id'] ) . '_create { color: ' . esc_html( $invoice_type['color'] ) . ' !important; }' . PHP_EOL;
115
  echo '.view.' . esc_html( $invoice_type['id'] ) . '_delete { color: ' . esc_html( $invoice_type['color'] ) . ' !important; }' . PHP_EOL;
116
  echo '.view.' . esc_html( $invoice_type['id'] ) . '::after { content: "\f498" !important; }' . PHP_EOL;
117
+ echo '.view.' . esc_html( $invoice_type['id'] ) . '_create::after { content: "\f119" !important; }' . PHP_EOL;
118
+ echo '.view.' . esc_html( $invoice_type['id'] ) . '_delete::after { content: "\f153" !important; }' . PHP_EOL;
119
  }
120
  echo '</style>' . PHP_EOL;
121
  }
123
  /**
124
  * Add_pdf_invoices_admin_actions.
125
  *
126
+ * @version 5.6.7
127
  * @since 2.4.7
128
  * @param Array $actions Get action data.
129
  * @param Array $the_order Get the order.
142
  if ( 'yes' === wcj_get_option( 'wcj_invoicing_' . $invoice_type['id'] . '_save_as_enabled', 'no' ) ) {
143
  $query_args['save_pdf_invoice'] = '1';
144
  }
145
+ $the_url = esc_url( add_query_arg( $query_args, remove_query_arg( array( 'create_invoice_for_order_id', 'create_invoice_for_order_id-nonce', 'delete_invoice_for_order_id', 'delete_invoice_for_order_id-nonce' ) ) ) );
146
  $the_name = __( 'View', 'woocommerce-jetpack' ) . ' ' . $invoice_type['title'];
147
  $the_action = 'view ' . $invoice_type['id'];
148
  $the_action_id = $invoice_type['id'];
156
  // Delete button.
157
  $query_args = array(
158
  'delete_invoice_for_order_id' => wcj_get_order_id( $the_order ),
159
+ 'delete_invoice_for_order_id-nonce' => wp_create_nonce( 'delete_invoice_for_order_id' ),
160
  'invoice_type_id' => $invoice_type['id'],
161
  );
162
+ $the_url = esc_url( add_query_arg( $query_args, remove_query_arg( array( 'create_invoice_for_order_id', 'create_invoice_for_order_id-nonce' ) ) ) );
163
  $the_name = __( 'Delete', 'woocommerce-jetpack' ) . ' ' . $invoice_type['title'];
164
  $the_action = 'view ' . $invoice_type['id'] . '_delete' . ( ( 'yes' === wcj_get_option( 'wcj_invoicing_' . $invoice_type['id'] . '_admin_orders_delete_btn_confirm', 'yes' ) ) ? ' wcj_need_confirmation' : '' );
165
  $the_action_id = $invoice_type['id'] . '_delete';
174
  // Create button.
175
  $query_args = array(
176
  'create_invoice_for_order_id' => wcj_get_order_id( $the_order ),
177
+ 'create_invoice_for_order_id-nonce' => wp_create_nonce( 'create_invoice_for_order_id' ),
178
  'invoice_type_id' => $invoice_type['id'],
179
  );
180
+ $the_url = esc_url( add_query_arg( $query_args, remove_query_arg( array( 'delete_invoice_for_order_id', 'delete_invoice_for_order_id-nonce' ) ) ) );
181
  $the_name = __( 'Create', 'woocommerce-jetpack' ) . ' ' . $invoice_type['title'];
182
  $the_action = 'view ' . $invoice_type['id'] . '_create' . ( ( 'yes' === wcj_get_option( 'wcj_invoicing_' . $invoice_type['id'] . '_admin_orders_create_btn_confirm', 'yes' ) ) ? ' wcj_need_confirmation' : '' );
183
  $the_action_id = $invoice_type['id'] . '_create';
211
  /**
212
  * Output custom columns for products
213
  *
214
+ * @version 5.6.7
215
  * @param string $column Get order columns.
216
  */
217
  public function render_order_columns( $column ) {
235
  if ( 'yes' === wcj_get_option( 'wcj_invoicing_' . $invoice_type_id . '_save_as_enabled', 'no' ) ) {
236
  $query_args['save_pdf_invoice'] = '1';
237
  }
238
+ $html .= '<a href="' . esc_url( add_query_arg( $query_args, esc_url( remove_query_arg( array( 'create_invoice_for_order_id', 'create_invoice_for_order_id-nonce', 'delete_invoice_for_order_id', 'delete_invoice_for_order_id-nonce' ) ) ) ) ) . '">' .
239
  $the_number . '</a>';
240
  }
241
  echo wp_kses_post( $html );
345
  /**
346
  * Create_invoices_meta_box.
347
  *
348
+ * @version 5.6.7
349
  * @since 2.8.0
350
  */
351
  public function create_invoices_meta_box() {
371
  $query_args['save_pdf_invoice'] = '1';
372
  $target = '';
373
  }
374
+ $the_url = esc_url( add_query_arg( $query_args, remove_query_arg( array( 'create_invoice_for_order_id', 'create_invoice_for_order_id-nonce', 'delete_invoice_for_order_id', 'delete_invoice_for_order_id-nonce' ) ) ) );
375
  $the_name = __( 'View', 'woocommerce-jetpack' );
376
  $the_invoice = wcj_get_invoice( $order_id, $invoice_type['id'] );
377
  $the_number = ' [#' . $the_invoice->get_invoice_number() . ']';
380
  // "Delete" link.
381
  $query_args = array(
382
  'delete_invoice_for_order_id' => $order_id,
383
+ 'delete_invoice_for_order_id-nonce' => wp_create_nonce( 'delete_invoice_for_order_id' ),
384
  'invoice_type_id' => $invoice_type['id'],
385
  );
386
+ $the_url = esc_url( add_query_arg( $query_args, remove_query_arg( array( 'create_invoice_for_order_id', 'create_invoice_for_order_id-nonce' ) ) ) );
387
  $the_name = __( 'Delete', 'woocommerce-jetpack' );
388
  $delete_link = '<a class="wcj_need_confirmation" href="' . $the_url . '">' . $the_name . '</a>';
389
  // Numbering & date.
404
  // "Create" link
405
  $query_args = array(
406
  'create_invoice_for_order_id' => $order_id,
407
+ 'create_invoice_for_order_id-nonce' => wp_create_nonce( 'create_invoice_for_order_id' ),
408
  'invoice_type_id' => $invoice_type['id'],
409
  );
410
+ $the_url = esc_url( add_query_arg( $query_args, remove_query_arg( array( 'delete_invoice_for_order_id', 'delete_invoice_for_order_id-nonce' ) ) ) );
411
  $the_name = __( 'Create', 'woocommerce-jetpack' );
412
  $actions = array( '<a class="wcj_need_confirmation" href="' . $the_url . '">' . $the_name . '</a>' );
413
  }
includes/price-by-country/class-wcj-price-by-country-core.php CHANGED
@@ -725,7 +725,7 @@ if ( ! class_exists( 'WCJ_Price_By_Country_Core' ) ) :
725
  }
726
 
727
  $this->customer_country_group_id = $this->get_country_group_id( $country );
728
- if ( - 1 >= $this->customer_country_group_id ) {
729
  return $this->customer_country_group_id;
730
  }
731
 
725
  }
726
 
727
  $this->customer_country_group_id = $this->get_country_group_id( $country );
728
+ if ( - 1 !== $this->customer_country_group_id ) {
729
  return $this->customer_country_group_id;
730
  }
731
 
includes/reports/class-wcj-reports-customers.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Reports - Customers
4
  *
5
- * @version 5.5.9
6
  * @author Pluggabl LLC.
7
  * @package Booster_For_WooCommerce/includes
8
  */
@@ -35,12 +35,11 @@ if ( ! class_exists( 'WCJ_Reports_Customers' ) ) :
35
 
36
  /**
37
  * Get_report function.
 
 
38
  */
39
  public function get_report() {
40
- $wpnonce = true;
41
- if ( function_exists( 'wp_verify_nonce' ) ) {
42
- $wpnonce = isset( $_REQUEST['_wpnonce'] ) ? wp_verify_nonce( sanitize_key( isset( $_REQUEST['_wpnonce'] ) ? $_REQUEST['_wpnonce'] : '' ) ) : true;
43
- }
44
  $report_type = $wpnonce && isset( $_GET['country'] ) ? sanitize_text_field( wp_unslash( $_GET['country'] ) ) : 'all_countries';
45
 
46
  $html = '';
@@ -136,7 +135,7 @@ if ( ! class_exists( 'WCJ_Reports_Customers' ) ) :
136
  /**
137
  * Get_data function.
138
  *
139
- * @version 5.5.9
140
  * @param Array $data Get data.
141
  * @param int $total_customers Get total number of customers.
142
  * @param string $report_type Get all_countries.
@@ -159,12 +158,26 @@ if ( ! class_exists( 'WCJ_Reports_Customers' ) ) :
159
  $result = $result['customer_counter'];
160
  $html .= '<tr>';
161
  $html .= '<td>' . ( ++$i ) . '</td>';
162
- $country_code_link = '<a href="' . esc_url( add_query_arg( array( 'country' => $country_code ) ) ) . '">' . $country_code . '</a>';
 
 
 
 
 
 
 
163
  $html .= ( 2 === strlen( $country_code ) ) ? '<td>' . $country_code_link . '</td>' : '<td>' . $country_code . '</td>';
164
  $html .= '<td>' . $result . '</td>';
165
  $html .= ( 0 !== $total_customers ) ? '<td>' . number_format( ( $result / $total_customers ) * 100, 2 ) . '% </td>' : '<td></td>';
166
  $country_flag_img = wcj_get_country_flag_by_code( $country_code );
167
- $country_flag_img_link = '<a href="' . esc_url( add_query_arg( array( 'country' => $country_code ) ) ) . '">' .
 
 
 
 
 
 
 
168
  $country_flag_img . ' ' . wcj_get_country_name_by_code( $country_code ) . '</a>';
169
  $html .= ( 2 === strlen( $country_code ) ) ? '<td>' . $country_flag_img_link . '</td>' : '<td></td>';
170
  $html .= '</tr>';
2
  /**
3
  * Booster for WooCommerce - Reports - Customers
4
  *
5
+ * @version 5.6.7
6
  * @author Pluggabl LLC.
7
  * @package Booster_For_WooCommerce/includes
8
  */
35
 
36
  /**
37
  * Get_report function.
38
+ *
39
+ * @version 5.6.7
40
  */
41
  public function get_report() {
42
+ $wpnonce = isset( $_REQUEST['wcj_reports_customers_nonce'] ) ? wp_verify_nonce( sanitize_key( $_REQUEST['wcj_reports_customers_nonce'] ), 'wcj-reports-customers' ) : false;
 
 
 
43
  $report_type = $wpnonce && isset( $_GET['country'] ) ? sanitize_text_field( wp_unslash( $_GET['country'] ) ) : 'all_countries';
44
 
45
  $html = '';
135
  /**
136
  * Get_data function.
137
  *
138
+ * @version 5.6.7
139
  * @param Array $data Get data.
140
  * @param int $total_customers Get total number of customers.
141
  * @param string $report_type Get all_countries.
158
  $result = $result['customer_counter'];
159
  $html .= '<tr>';
160
  $html .= '<td>' . ( ++$i ) . '</td>';
161
+ $country_code_link = '<a href="' . esc_url(
162
+ add_query_arg(
163
+ array(
164
+ 'country' => $country_code,
165
+ 'wcj_reports_customers_nonce' => wp_create_nonce( 'wcj-reports-customers' ),
166
+ )
167
+ )
168
+ ) . '">' . $country_code . '</a>';
169
  $html .= ( 2 === strlen( $country_code ) ) ? '<td>' . $country_code_link . '</td>' : '<td>' . $country_code . '</td>';
170
  $html .= '<td>' . $result . '</td>';
171
  $html .= ( 0 !== $total_customers ) ? '<td>' . number_format( ( $result / $total_customers ) * 100, 2 ) . '% </td>' : '<td></td>';
172
  $country_flag_img = wcj_get_country_flag_by_code( $country_code );
173
+ $country_flag_img_link = '<a href="' . esc_url(
174
+ add_query_arg(
175
+ array(
176
+ 'country' => $country_code,
177
+ 'wcj_reports_customers_nonce' => wp_create_nonce( 'wcj-reports-customers' ),
178
+ )
179
+ )
180
+ ) . '">' .
181
  $country_flag_img . ' ' . wcj_get_country_name_by_code( $country_code ) . '</a>';
182
  $html .= ( 2 === strlen( $country_code ) ) ? '<td>' . $country_flag_img_link . '</td>' : '<td></td>';
183
  $html .= '</tr>';
includes/reports/class-wcj-reports-monthly-sales.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Reports - Monthly Sales (with Currency Conversion)
4
  *
5
- * @version 5.6.2
6
  * @since 2.4.7
7
  * @author Pluggabl LLC.
8
  * @package Booster_For_WooCommerce/includes
@@ -35,20 +35,18 @@ if ( ! class_exists( 'WCJ_Reports_Monthly_Sales' ) ) :
35
  /**
36
  * Get_report.
37
  *
38
- * @version 5.6.2
39
  * @since 2.4.7
40
  */
41
  public function get_report() {
42
- $html = '';
43
- $wpnonce = true;
44
- if ( function_exists( 'wp_verify_nonce' ) ) {
45
- $wpnonce = isset( $_REQUEST['_wpnonce'] ) ? wp_verify_nonce( sanitize_key( isset( $_REQUEST['_wpnonce'] ) ? $_REQUEST['_wpnonce'] : '' ) ) : true;
46
- }
47
- if ( $wpnonce && isset( $_POST['wcj_save_currency_rates'] ) && isset( $_POST['wcj_save_currency_rates_array'] ) && is_array( $_POST['wcj_save_currency_rates_array'] ) ) {
48
  // Save rates.
49
  update_option( 'wcj_reports_currency_rates', array_replace_recursive( wcj_get_option( 'wcj_reports_currency_rates', array() ), sanitize_text_field( wp_unslash( $_POST['wcj_save_currency_rates_array'] ) ) ) );
50
  $html .= '<div class="notice notice-success is-dismissible"><p><strong>' . __( 'Currency rates saved.', 'woocommerce-jetpack' ) . '</strong></p></div>';
51
- } elseif ( isset( $_POST['wcj_reset_currency_rates'] ) ) {
52
  // Delete rates.
53
  delete_option( 'wcj_reports_currency_rates' );
54
  $html .= '<div class="notice notice-success is-dismissible"><p><strong>' . __( 'Currency rates deleted.', 'woocommerce-jetpack' ) . '</strong></p></div>';
@@ -88,7 +86,7 @@ if ( ! class_exists( 'WCJ_Reports_Monthly_Sales' ) ) :
88
  /**
89
  * Get_monthly_sales_report.
90
  *
91
- * @version 5.5.9
92
  * @since 2.4.7
93
  * @todo (maybe) visible rows selection by admin (as option)
94
  * @todo (maybe) take not monthly average, but "Close" of closest day (probably create new "Daily Sales (with Currency Conversion)" report)
@@ -386,11 +384,13 @@ if ( ! class_exists( 'WCJ_Reports_Monthly_Sales' ) ) :
386
  number_format( ( $execution_time_end - $execution_time_start ), 2, '.', ',' )
387
  ) . '</em></p>';
388
  $html .= '<p><input name="wcj_save_currency_rates" type="submit" class="button button-primary" value="' .
389
- __( 'Save Currency Rates', 'woocommerce-jetpack' ) . '"></p>';
 
390
  $html .= '</form>';
391
  $html .= '<form method="post" action="">' .
392
  '<input name="wcj_reset_currency_rates" type="submit" class="button button-primary" value="' .
393
  __( 'Reset Currency Rates', 'woocommerce-jetpack' ) . '" onclick="return confirm(\'' . __( 'Are you sure?', 'woocommerce-jetpack' ) . '\')">' .
 
394
  '</form>';
395
  return $html;
396
  }
2
  /**
3
  * Booster for WooCommerce - Reports - Monthly Sales (with Currency Conversion)
4
  *
5
+ * @version 5.6.7
6
  * @since 2.4.7
7
  * @author Pluggabl LLC.
8
  * @package Booster_For_WooCommerce/includes
35
  /**
36
  * Get_report.
37
  *
38
+ * @version 5.6.7
39
  * @since 2.4.7
40
  */
41
  public function get_report() {
42
+ $html = '';
43
+ $save_currency_wpnonce = isset( $_REQUEST['wcj-save-currency-rates-nonce'] ) ? wp_verify_nonce( sanitize_key( $_REQUEST['wcj-save-currency-rates-nonce'] ), 'wcj_save_currency_rates' ) : false;
44
+ $reset_currency_wpnonce = isset( $_REQUEST['wcj-reset-currency-rates-nonce'] ) ? wp_verify_nonce( sanitize_key( $_REQUEST['wcj-reset-currency-rates-nonce'] ), 'wcj_reset_currency_rates' ) : false;
45
+ if ( $save_currency_wpnonce && isset( $_POST['wcj_save_currency_rates'] ) && isset( $_POST['wcj_save_currency_rates_array'] ) && is_array( $_POST['wcj_save_currency_rates_array'] ) ) {
 
 
46
  // Save rates.
47
  update_option( 'wcj_reports_currency_rates', array_replace_recursive( wcj_get_option( 'wcj_reports_currency_rates', array() ), sanitize_text_field( wp_unslash( $_POST['wcj_save_currency_rates_array'] ) ) ) );
48
  $html .= '<div class="notice notice-success is-dismissible"><p><strong>' . __( 'Currency rates saved.', 'woocommerce-jetpack' ) . '</strong></p></div>';
49
+ } elseif ( $reset_currency_wpnonce && isset( $_POST['wcj_reset_currency_rates'] ) ) {
50
  // Delete rates.
51
  delete_option( 'wcj_reports_currency_rates' );
52
  $html .= '<div class="notice notice-success is-dismissible"><p><strong>' . __( 'Currency rates deleted.', 'woocommerce-jetpack' ) . '</strong></p></div>';
86
  /**
87
  * Get_monthly_sales_report.
88
  *
89
+ * @version 5.6.7
90
  * @since 2.4.7
91
  * @todo (maybe) visible rows selection by admin (as option)
92
  * @todo (maybe) take not monthly average, but "Close" of closest day (probably create new "Daily Sales (with Currency Conversion)" report)
384
  number_format( ( $execution_time_end - $execution_time_start ), 2, '.', ',' )
385
  ) . '</em></p>';
386
  $html .= '<p><input name="wcj_save_currency_rates" type="submit" class="button button-primary" value="' .
387
+ __( 'Save Currency Rates', 'woocommerce-jetpack' ) . '"> ' .
388
+ wp_nonce_field( 'wcj_save_currency_rates', 'wcj-save-currency-rates-nonce' ) . '</p>';
389
  $html .= '</form>';
390
  $html .= '<form method="post" action="">' .
391
  '<input name="wcj_reset_currency_rates" type="submit" class="button button-primary" value="' .
392
  __( 'Reset Currency Rates', 'woocommerce-jetpack' ) . '" onclick="return confirm(\'' . __( 'Are you sure?', 'woocommerce-jetpack' ) . '\')">' .
393
+ wp_nonce_field( 'wcj_reset_currency_rates', 'wcj-reset-currency-rates-nonce' ) .
394
  '</form>';
395
  return $html;
396
  }
includes/reports/class-wcj-reports-product-sales-daily.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Reports - Product Sales (Daily)
4
  *
5
- * @version 5.5.9
6
  * @since 2.9.0
7
  * @author Pluggabl LLC.
8
  * @package Booster_For_WooCommerce/includes
@@ -47,15 +47,12 @@ if ( ! class_exists( 'WCJ_Reports_Product_Sales_Daily' ) ) :
47
  /**
48
  * Get_report_args.
49
  *
50
- * @version 3.2.4
51
  * @since 2.9.0
52
  */
53
  public function get_report_args() {
54
- $current_time = (int) gmdate( 'U' );
55
- $wpnonce = true;
56
- if ( function_exists( 'wp_verify_nonce' ) ) {
57
- $wpnonce = isset( $_REQUEST['_wpnonce'] ) ? wp_verify_nonce( sanitize_key( isset( $_REQUEST['_wpnonce'] ) ? $_REQUEST['_wpnonce'] : '' ) ) : true;
58
- }
59
  $this->start_date = $wpnonce && isset( $_GET['start_date'] ) ? sanitize_text_field( wp_unslash( $_GET['start_date'] ) ) : gmdate( 'Y-m-d', strtotime( '-7 days', $current_time ) );
60
  $this->end_date = isset( $_GET['end_date'] ) ? sanitize_text_field( wp_unslash( $_GET['end_date'] ) ) : gmdate( 'Y-m-d', $current_time );
61
  $this->product_title = isset( $_GET['product_title'] ) ? sanitize_text_field( wp_unslash( $_GET['product_title'] ) ) : '';
@@ -174,7 +171,7 @@ if ( ! class_exists( 'WCJ_Reports_Product_Sales_Daily' ) ) :
174
  /**
175
  * Output_report_header.
176
  *
177
- * @version 5.6.6
178
  * @since 2.9.0
179
  */
180
  public function output_report_header() {
@@ -199,10 +196,7 @@ if ( ! class_exists( 'WCJ_Reports_Product_Sales_Daily' ) ) :
199
  $menu .= '</ul>';
200
  $menu .= '<br class="clear">';
201
  // Product and date filter form.
202
- $wpnonce = true;
203
- if ( function_exists( 'wp_verify_nonce' ) ) {
204
- $wpnonce = isset( $_REQUEST['_wpnonce'] ) ? wp_verify_nonce( sanitize_key( isset( $_REQUEST['_wpnonce'] ) ? $_REQUEST['_wpnonce'] : '' ) ) : true;
205
- }
206
  $pages = isset( $_GET['page'] ) ? sanitize_text_field( wp_unslash( $_GET['page'] ) ) : '';
207
  $tabs = isset( $_GET['tab'] ) ? sanitize_text_field( wp_unslash( $_GET['tab'] ) ) : '';
208
  $reports = isset( $_GET['report'] ) ? sanitize_text_field( wp_unslash( $_GET['report'] ) ) : '';
@@ -219,6 +213,7 @@ if ( ! class_exists( 'WCJ_Reports_Product_Sales_Daily' ) ) :
219
  $filter_form .= ' ';
220
  $filter_form .= '<label style="font-style:italic;" for="product_title">' . __( 'Product:', 'woocommerce-jetpack' ) . '</label> ' .
221
  '<input type="text" name="product_title" id="product_title" title="" value="' . $this->product_title . '" />';
 
222
  $filter_form .= '<input type="submit" value="' . __( 'Filter', 'woocommerce-jetpack' ) . '" />';
223
  $filter_form .= '</form>';
224
  // Final result.
2
  /**
3
  * Booster for WooCommerce - Reports - Product Sales (Daily)
4
  *
5
+ * @version 5.6.7
6
  * @since 2.9.0
7
  * @author Pluggabl LLC.
8
  * @package Booster_For_WooCommerce/includes
47
  /**
48
  * Get_report_args.
49
  *
50
+ * @version 5.6.7
51
  * @since 2.9.0
52
  */
53
  public function get_report_args() {
54
+ $current_time = (int) gmdate( 'U' );
55
+ $wpnonce = isset( $_REQUEST['booster_products_sales_daily_filter-nonce'] ) ? wp_verify_nonce( sanitize_key( $_REQUEST['booster_products_sales_daily_filter-nonce'] ), 'booster_products_sales_daily_filter' ) : false;
 
 
 
56
  $this->start_date = $wpnonce && isset( $_GET['start_date'] ) ? sanitize_text_field( wp_unslash( $_GET['start_date'] ) ) : gmdate( 'Y-m-d', strtotime( '-7 days', $current_time ) );
57
  $this->end_date = isset( $_GET['end_date'] ) ? sanitize_text_field( wp_unslash( $_GET['end_date'] ) ) : gmdate( 'Y-m-d', $current_time );
58
  $this->product_title = isset( $_GET['product_title'] ) ? sanitize_text_field( wp_unslash( $_GET['product_title'] ) ) : '';
171
  /**
172
  * Output_report_header.
173
  *
174
+ * @version 5.6.7
175
  * @since 2.9.0
176
  */
177
  public function output_report_header() {
196
  $menu .= '</ul>';
197
  $menu .= '<br class="clear">';
198
  // Product and date filter form.
199
+ $wpnonce = isset( $_REQUEST['_wpnonce'] ) ? wp_verify_nonce( sanitize_key( $_REQUEST['_wpnonce'] ) ) : true;
 
 
 
200
  $pages = isset( $_GET['page'] ) ? sanitize_text_field( wp_unslash( $_GET['page'] ) ) : '';
201
  $tabs = isset( $_GET['tab'] ) ? sanitize_text_field( wp_unslash( $_GET['tab'] ) ) : '';
202
  $reports = isset( $_GET['report'] ) ? sanitize_text_field( wp_unslash( $_GET['report'] ) ) : '';
213
  $filter_form .= ' ';
214
  $filter_form .= '<label style="font-style:italic;" for="product_title">' . __( 'Product:', 'woocommerce-jetpack' ) . '</label> ' .
215
  '<input type="text" name="product_title" id="product_title" title="" value="' . $this->product_title . '" />';
216
+ $filter_form .= wp_nonce_field( 'booster_products_sales_daily_filter', 'booster_products_sales_daily_filter-nonce' );
217
  $filter_form .= '<input type="submit" value="' . __( 'Filter', 'woocommerce-jetpack' ) . '" />';
218
  $filter_form .= '</form>';
219
  // Final result.
includes/settings/wcj-settings-price-by-country.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Settings - Prices and Currencies by Country
4
  *
5
- * @version 5.6.2
6
  * @since 2.8.1
7
  * @author Pluggabl LLC.
8
  * @package Booster_For_WooCommerce/settings
@@ -190,7 +190,15 @@ $settings = array(
190
  'title' => __( 'Price Filter Widget and Sorting by Price Support', 'woocommerce-jetpack' ),
191
  'desc' => empty( $message ) ? __( 'Enable', 'woocommerce-jetpack' ) : $message,
192
  'custom_attributes' => apply_filters( 'booster_message', '', 'disabled' ),
193
- 'desc_tip' => '<a href="' . esc_url( add_query_arg( 'recalculate_price_filter_products_prices', '1', remove_query_arg( array( 'wcj_generate_country_groups' ) ) ) ) . '">' .
 
 
 
 
 
 
 
 
194
  __( 'Recalculate price filter widget and sorting by price product prices.', 'woocommerce-jetpack' ) . '</a>',
195
  'id' => 'wcj_price_by_country_price_filter_widget_support_enabled',
196
  'default' => 'no',
2
  /**
3
  * Booster for WooCommerce - Settings - Prices and Currencies by Country
4
  *
5
+ * @version 5.6.7
6
  * @since 2.8.1
7
  * @author Pluggabl LLC.
8
  * @package Booster_For_WooCommerce/settings
190
  'title' => __( 'Price Filter Widget and Sorting by Price Support', 'woocommerce-jetpack' ),
191
  'desc' => empty( $message ) ? __( 'Enable', 'woocommerce-jetpack' ) : $message,
192
  'custom_attributes' => apply_filters( 'booster_message', '', 'disabled' ),
193
+ 'desc_tip' => '<a href="' . esc_url(
194
+ add_query_arg(
195
+ array(
196
+ 'recalculate_price_filter_products_prices' => '1',
197
+ 'recalculate_price_filter_products_prices-nonce' => wp_create_nonce( 'recalculate_price_filter_products_prices' ),
198
+ ),
199
+ remove_query_arg( array( 'wcj_generate_country_groups' ) )
200
+ )
201
+ ) . '">' .
202
  __( 'Recalculate price filter widget and sorting by price product prices.', 'woocommerce-jetpack' ) . '</a>',
203
  'id' => 'wcj_price_by_country_price_filter_widget_support_enabled',
204
  'default' => 'no',
includes/settings/wcj-settings-products-per-page.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Settings - Products per Page
4
  *
5
- * @version 5.6.2
6
  * @since 2.8.0
7
  * @author Pluggabl LLC.
8
  * @package Booster_For_WooCommerce/settings
@@ -64,7 +64,7 @@ return array(
64
  'title' => __( 'Template - Form', 'woocommerce-jetpack' ),
65
  'id' => 'wcj_products_per_page_text',
66
  /* translators: %s: translators Added */
67
- 'default' => __( 'Products <strong>%1$from% - %to%</strong> from <strong>%total%</strong>. Products on page %2$select_form%', 'woocommerce-jetpack' ),
68
  'type' => 'custom_textarea',
69
  'css' => 'width:100%',
70
  ),
2
  /**
3
  * Booster for WooCommerce - Settings - Products per Page
4
  *
5
+ * @version 5.6.7
6
  * @since 2.8.0
7
  * @author Pluggabl LLC.
8
  * @package Booster_For_WooCommerce/settings
64
  'title' => __( 'Template - Form', 'woocommerce-jetpack' ),
65
  'id' => 'wcj_products_per_page_text',
66
  /* translators: %s: translators Added */
67
+ 'default' => sprintf( __( 'Products <strong>%1$s - %2$s</strong> from <strong>%3$s</strong>. Products on page %4$s', 'woocommerce-jetpack' ), '%from%', '%to%', '%total%', '%select_form%' ) . '<br>',
68
  'type' => 'custom_textarea',
69
  'css' => 'width:100%',
70
  ),
includes/shortcodes/class-wcj-general-shortcodes.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Shortcodes - General
4
  *
5
- * @version 5.6.2
6
  * @author Pluggabl LLC.
7
  * @package Booster_For_WooCommerce/shortcodes
8
  */
@@ -399,7 +399,7 @@ if ( ! class_exists( 'WCJ_General_Shortcodes' ) ) :
399
  /**
400
  * Wcj_button_toggle_tax_display.
401
  *
402
- * @version 5.6.2
403
  * @since 3.2.4
404
  * @todo (dev) different style/class for different tax state
405
  * @todo (maybe) `get` instead of `post`
@@ -410,7 +410,7 @@ if ( ! class_exists( 'WCJ_General_Shortcodes' ) ) :
410
  $current_value = ( ( '' === $session_value || null === $session_value ) ? wcj_get_option( 'woocommerce_tax_display_shop', 'excl' ) : $session_value );
411
  $current_value = '' === $current_value ? 'excl' : $current_value;
412
  $label = $atts[ 'label_' . $current_value ];
413
- return '<form method="post" action=""><input type="submit" name="wcj_button_toggle_tax_display"' .
414
  ' class="' . $atts['class'] . '" style="' . $atts['style'] . '" value="' . $label . '"></form>';
415
  }
416
 
2
  /**
3
  * Booster for WooCommerce - Shortcodes - General
4
  *
5
+ * @version 5.6.7
6
  * @author Pluggabl LLC.
7
  * @package Booster_For_WooCommerce/shortcodes
8
  */
399
  /**
400
  * Wcj_button_toggle_tax_display.
401
  *
402
+ * @version 5.6.7
403
  * @since 3.2.4
404
  * @todo (dev) different style/class for different tax state
405
  * @todo (maybe) `get` instead of `post`
410
  $current_value = ( ( '' === $session_value || null === $session_value ) ? wcj_get_option( 'woocommerce_tax_display_shop', 'excl' ) : $session_value );
411
  $current_value = '' === $current_value ? 'excl' : $current_value;
412
  $label = $atts[ 'label_' . $current_value ];
413
+ return '<form method="post" action="">' . wp_nonce_field( 'wcj_button_toggle_tax_display', 'wcj-button-toggle-tax-display-nonce' ) . '<input type="submit" name="wcj_button_toggle_tax_display"' .
414
  ' class="' . $atts['class'] . '" style="' . $atts['style'] . '" value="' . $label . '"></form>';
415
  }
416
 
includes/shortcodes/class-wcj-order-items-shortcodes.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Shortcodes - Order Items
4
  *
5
- * @version 5.6.2
6
  * @author Pluggabl LLC.
7
  * @package Booster_For_WooCommerce/shortcodes
8
  */
@@ -32,18 +32,14 @@ if ( ! class_exists( 'WCJ_Order_Items_Shortcodes' ) ) :
32
  /**
33
  * Add_extra_atts.
34
  *
35
- * @version 5.6.2
36
  * @param array $atts The user defined shortcode attributes.
37
  */
38
  public function add_extra_atts( $atts ) {
39
 
40
- $wpnonce = true;
41
- if ( function_exists( 'wp_verify_nonce' ) ) {
42
- $wpnonce = isset( $_REQUEST['_wpnonce'] ) ? wp_verify_nonce( sanitize_key( isset( $_REQUEST['_wpnonce'] ) ? $_REQUEST['_wpnonce'] : '' ) ) : true;
43
- }
44
  $modified_atts = array_merge(
45
  array(
46
- 'order_id' => ( isset( $_GET['order_id'] ) && $wpnonce ) ? sanitize_text_field( wp_unslash( $_GET['order_id'] ) ) : get_the_ID(),
47
  'hide_currency' => 'no',
48
  'table_class' => '',
49
  'shipping_as_item' => '', // e.g.: 'Shipping'.
2
  /**
3
  * Booster for WooCommerce - Shortcodes - Order Items
4
  *
5
+ * @version 5.6.7
6
  * @author Pluggabl LLC.
7
  * @package Booster_For_WooCommerce/shortcodes
8
  */
32
  /**
33
  * Add_extra_atts.
34
  *
35
+ * @version 5.6.7
36
  * @param array $atts The user defined shortcode attributes.
37
  */
38
  public function add_extra_atts( $atts ) {
39
 
 
 
 
 
40
  $modified_atts = array_merge(
41
  array(
42
+ 'order_id' => ( isset( $_GET['order_id'] ) ) ? sanitize_text_field( wp_unslash( $_GET['order_id'] ) ) : get_the_ID(), // phpcs:ignore WordPress.Security.NonceVerification
43
  'hide_currency' => 'no',
44
  'table_class' => '',
45
  'shipping_as_item' => '', // e.g.: 'Shipping'.
includes/tools/class-wcj-order-statuses-tool.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Tool - Order Statuses
4
  *
5
- * @version 5.6.2
6
  * @since 3.2.2
7
  * @author Pluggabl LLC.
8
  * @package Booster_For_WooCommerce/tools
@@ -177,7 +177,7 @@ if ( ! class_exists( 'WCJ_Order_Statuses_Tool' ) ) :
177
  /**
178
  * Get_custom_statuses_table.
179
  *
180
- * @version 5.6.2
181
  * @since 3.2.2
182
  */
183
  public function get_custom_statuses_table() {
@@ -203,11 +203,23 @@ if ( ! class_exists( 'WCJ_Order_Statuses_Tool' ) ) :
203
  $icon_data = $this->module->get_status_icon_data( substr( $status, 3 ) );
204
  $color_html = '<input disabled type="color" value="' . $icon_data['color'] . '">';
205
  $text_color_html = '<input disabled type="color" value="' . $icon_data['text_color'] . '">';
206
- $delete_button = '<a class="button-primary" href="' . add_query_arg( 'delete', $status, remove_query_arg( 'edit' ) ) .
 
 
 
 
 
 
207
  '" onclick="return confirm(\'' . __( 'Are you sure?', 'woocommerce-jetpack' ) . '\')">' . __( 'Delete', 'woocommerce-jetpack' ) . '</a>';
208
  $edit_button = '<a class="button-primary"' . ( '' !== apply_filters( 'booster_message', '', 'desc' ) ?
209
  ' disabled title="' . __( 'Get Booster Plus to enable.', 'woocommerce-jetpack' ) . '"' :
210
- ' href="' . add_query_arg( 'edit', $status, remove_query_arg( 'delete' ) ) . '"' ) . '>' . __( 'Edit', 'woocommerce-jetpack' ) . '</a>';
 
 
 
 
 
 
211
  $row = array_merge(
212
  $row,
213
  array(
@@ -241,14 +253,11 @@ if ( ! class_exists( 'WCJ_Order_Statuses_Tool' ) ) :
241
  /**
242
  * Get_custom_statuses_add_edit_table.
243
  *
244
- * @version 5.6.2
245
  * @since 3.2.2
246
  */
247
  public function get_custom_statuses_add_edit_table() {
248
- $wpnonce = true;
249
- if ( function_exists( 'wp_verify_nonce' ) ) {
250
- $wpnonce = isset( $_REQUEST['_wpnonce'] ) ? wp_verify_nonce( sanitize_key( isset( $_REQUEST['_wpnonce'] ) ? $_REQUEST['_wpnonce'] : 'woocommerce-settings' ) ) : true;
251
- }
252
  $is_editing = ( $wpnonce && isset( $_GET['edit'] ) );
253
  if ( $is_editing ) {
254
  $edit_slug = sanitize_text_field( wp_unslash( $_GET['edit'] ) );
@@ -264,7 +273,8 @@ if ( ! class_exists( 'WCJ_Order_Statuses_Tool' ) ) :
264
  $action_button = '<input class="button-primary" type="submit" name="' . ( $is_editing ? 'edit_custom_status' : 'add_custom_status' ) . '"' .
265
  ' value="' . ( $is_editing ? __( 'Edit custom status', 'woocommerce-jetpack' ) : __( 'Add new custom status', 'woocommerce-jetpack' ) ) . '">';
266
  $clear_button = ( $is_editing ?
267
- ' <a class="button-primary" href="' . ( remove_query_arg( array( 'delete', 'edit' ) ) ) . '">' . __( 'Clear', 'woocommerce-jetpack' ) . '</a>' : '' );
 
268
  $table_data = array(
269
  array(
270
  __( 'Slug (without <code>wc-</code> prefix)', 'woocommerce-jetpack' ),
@@ -280,7 +290,7 @@ if ( ! class_exists( 'WCJ_Order_Statuses_Tool' ) ) :
280
  $icon_code_input_html,
281
  $icon_color_input_html,
282
  $text_color_input_html,
283
- $action_button . $clear_button,
284
  ),
285
  );
286
  $columns_styles = array();
@@ -303,28 +313,29 @@ if ( ! class_exists( 'WCJ_Order_Statuses_Tool' ) ) :
303
  /**
304
  * Process_actions.
305
  *
306
- * @version 5.6.2
307
  * @since 3.2.2
308
  * @todo (maybe) use `init` hook for processing actions
309
  */
310
  public function process_actions() {
311
- $wpnonce = true;
312
- if ( function_exists( 'wp_verify_nonce' ) ) {
313
- $wpnonce = isset( $_REQUEST['_wpnonce'] ) ? wp_verify_nonce( sanitize_key( isset( $_REQUEST['_wpnonce'] ) ? $_REQUEST['_wpnonce'] : 'woocommerce-settings' ) ) : true;
314
- }
 
315
  $new_status = isset( $_POST['new_status'] ) ? sanitize_text_field( wp_unslash( $_POST['new_status'] ) ) : '';
316
  $new_status_label = isset( $_POST['new_status_label'] ) ? sanitize_text_field( wp_unslash( $_POST['new_status_label'] ) ) : '';
317
  $new_status_icon_content = isset( $_POST['new_status_icon_content'] ) ? sanitize_text_field( wp_unslash( $_POST['new_status_icon_content'] ) ) : '';
318
  $new_status_icon_color = isset( $_POST['new_status_icon_color'] ) ? sanitize_text_field( wp_unslash( $_POST['new_status_icon_color'] ) ) : '';
319
  $new_status_text_color = isset( $_POST['new_status_text_color'] ) ? sanitize_text_field( wp_unslash( $_POST['new_status_text_color'] ) ) : '';
320
 
321
- if ( $wpnonce && isset( $_POST['add_custom_status'] ) ) {
322
  return $this->add_custom_status( $new_status, $new_status_label, $new_status_icon_content, $new_status_icon_color, $new_status_text_color );
323
- } elseif ( $wpnonce && isset( $_POST['edit_custom_status'] ) ) {
324
  return $this->edit_custom_status( $new_status, $new_status_label, $new_status_icon_content, $new_status_icon_color, $new_status_text_color );
325
- } elseif ( $wpnonce && isset( $_GET['delete'] ) && '' !== $_GET['delete'] ) {
326
  return $this->delete_custom_status( sanitize_text_field( wp_unslash( $_GET['delete'] ) ) );
327
- } elseif ( $wpnonce && isset( $_GET['delete_all'] ) && '' !== $_GET['delete_all'] ) {
328
  return $this->delete_custom_status_all();
329
  }
330
  }
@@ -332,11 +343,23 @@ if ( ! class_exists( 'WCJ_Order_Statuses_Tool' ) ) :
332
  /**
333
  * Get_delete_all_custom_statuses_button.
334
  *
335
- * @version 5.5.9
336
  * @since 3.2.2
337
  */
338
  public function get_delete_all_custom_statuses_button() {
339
- return '<p> <a class="button-primary" href="' . ( add_query_arg( 'delete_all', '1', ( remove_query_arg( array( 'edit', 'delete' ) ) ) ) ) .
 
 
 
 
 
 
 
 
 
 
 
 
340
  '" onclick="return confirm(\'' . __( 'Are you sure?', 'woocommerce-jetpack' ) . '\')">' . __( 'Delete All Custom Statuses', 'woocommerce-jetpack' ) . '</a>' .
341
  '</p>';
342
  }
2
  /**
3
  * Booster for WooCommerce - Tool - Order Statuses
4
  *
5
+ * @version 5.6.7
6
  * @since 3.2.2
7
  * @author Pluggabl LLC.
8
  * @package Booster_For_WooCommerce/tools
177
  /**
178
  * Get_custom_statuses_table.
179
  *
180
+ * @version 5.6.7
181
  * @since 3.2.2
182
  */
183
  public function get_custom_statuses_table() {
203
  $icon_data = $this->module->get_status_icon_data( substr( $status, 3 ) );
204
  $color_html = '<input disabled type="color" value="' . $icon_data['color'] . '">';
205
  $text_color_html = '<input disabled type="color" value="' . $icon_data['text_color'] . '">';
206
+ $delete_button = '<a class="button-primary" href="' . add_query_arg(
207
+ array(
208
+ 'delete' => $status,
209
+ 'delete_custom_status-nonce' => wp_create_nonce( 'delete_custom_status' ),
210
+ ),
211
+ remove_query_arg( array( 'edit', 'edit-custom-statuses-nonce', 'delete_custom_status-nonce', 'delete_all_custom_status-nonce' ) )
212
+ ) .
213
  '" onclick="return confirm(\'' . __( 'Are you sure?', 'woocommerce-jetpack' ) . '\')">' . __( 'Delete', 'woocommerce-jetpack' ) . '</a>';
214
  $edit_button = '<a class="button-primary"' . ( '' !== apply_filters( 'booster_message', '', 'desc' ) ?
215
  ' disabled title="' . __( 'Get Booster Plus to enable.', 'woocommerce-jetpack' ) . '"' :
216
+ ' href="' . add_query_arg(
217
+ array(
218
+ 'edit' => $status,
219
+ 'edit-custom-statuses-nonce' => wp_create_nonce( 'edit-custom-statuses' ),
220
+ ),
221
+ remove_query_arg( 'delete', 'edit-custom-statuses-nonce', 'delete_all_custom_status-nonce' )
222
+ ) . '"' ) . '>' . __( 'Edit', 'woocommerce-jetpack' ) . '</a>';
223
  $row = array_merge(
224
  $row,
225
  array(
253
  /**
254
  * Get_custom_statuses_add_edit_table.
255
  *
256
+ * @version 5.6.7
257
  * @since 3.2.2
258
  */
259
  public function get_custom_statuses_add_edit_table() {
260
+ $wpnonce = isset( $_REQUEST['edit-custom-statuses-nonce'] ) ? wp_verify_nonce( sanitize_key( $_REQUEST['edit-custom-statuses-nonce'] ), 'edit-custom-statuses' ) : false;
 
 
 
261
  $is_editing = ( $wpnonce && isset( $_GET['edit'] ) );
262
  if ( $is_editing ) {
263
  $edit_slug = sanitize_text_field( wp_unslash( $_GET['edit'] ) );
273
  $action_button = '<input class="button-primary" type="submit" name="' . ( $is_editing ? 'edit_custom_status' : 'add_custom_status' ) . '"' .
274
  ' value="' . ( $is_editing ? __( 'Edit custom status', 'woocommerce-jetpack' ) : __( 'Add new custom status', 'woocommerce-jetpack' ) ) . '">';
275
  $clear_button = ( $is_editing ?
276
+ ' <a class="button-primary" href="' . ( remove_query_arg( array( 'delete', 'edit', 'edit-custom-statuses-nonce', 'delete_custom_status-nonce', 'delete_all_custom_status-nonce' ) ) ) . '">' . __( 'Clear', 'woocommerce-jetpack' ) . '</a>' : '' );
277
+ $nonce_field = wp_nonce_field( $is_editing ? 'edit_custom_status' : 'add_custom_status', $is_editing ? 'edit_custom_status-nonce' : 'add_custom_status-nonce' );
278
  $table_data = array(
279
  array(
280
  __( 'Slug (without <code>wc-</code> prefix)', 'woocommerce-jetpack' ),
290
  $icon_code_input_html,
291
  $icon_color_input_html,
292
  $text_color_input_html,
293
+ $action_button . $clear_button . $nonce_field,
294
  ),
295
  );
296
  $columns_styles = array();
313
  /**
314
  * Process_actions.
315
  *
316
+ * @version 5.6.7
317
  * @since 3.2.2
318
  * @todo (maybe) use `init` hook for processing actions
319
  */
320
  public function process_actions() {
321
+ $add_custom_status_wpnonce = isset( $_REQUEST['add_custom_status-nonce'] ) ? wp_verify_nonce( sanitize_key( $_REQUEST['add_custom_status-nonce'] ), 'add_custom_status' ) : false;
322
+ $edit_custom_status_wpnonce = isset( $_REQUEST['edit_custom_status-nonce'] ) ? wp_verify_nonce( sanitize_key( $_REQUEST['edit_custom_status-nonce'] ), 'edit_custom_status' ) : false;
323
+ $delete_custom_status_wpnonce = isset( $_REQUEST['delete_custom_status-nonce'] ) ? wp_verify_nonce( sanitize_key( $_REQUEST['delete_custom_status-nonce'] ), 'delete_custom_status' ) : false;
324
+ $delete_all_custom_status_wpnonce = isset( $_REQUEST['delete_all_custom_status-nonce'] ) ? wp_verify_nonce( sanitize_key( $_REQUEST['delete_all_custom_status-nonce'] ), 'delete_all_custom_status' ) : false;
325
+
326
  $new_status = isset( $_POST['new_status'] ) ? sanitize_text_field( wp_unslash( $_POST['new_status'] ) ) : '';
327
  $new_status_label = isset( $_POST['new_status_label'] ) ? sanitize_text_field( wp_unslash( $_POST['new_status_label'] ) ) : '';
328
  $new_status_icon_content = isset( $_POST['new_status_icon_content'] ) ? sanitize_text_field( wp_unslash( $_POST['new_status_icon_content'] ) ) : '';
329
  $new_status_icon_color = isset( $_POST['new_status_icon_color'] ) ? sanitize_text_field( wp_unslash( $_POST['new_status_icon_color'] ) ) : '';
330
  $new_status_text_color = isset( $_POST['new_status_text_color'] ) ? sanitize_text_field( wp_unslash( $_POST['new_status_text_color'] ) ) : '';
331
 
332
+ if ( $add_custom_status_wpnonce && isset( $_POST['add_custom_status'] ) ) {
333
  return $this->add_custom_status( $new_status, $new_status_label, $new_status_icon_content, $new_status_icon_color, $new_status_text_color );
334
+ } elseif ( $edit_custom_status_wpnonce && isset( $_POST['edit_custom_status'] ) ) {
335
  return $this->edit_custom_status( $new_status, $new_status_label, $new_status_icon_content, $new_status_icon_color, $new_status_text_color );
336
+ } elseif ( $delete_custom_status_wpnonce && isset( $_GET['delete'] ) && '' !== $_GET['delete'] ) {
337
  return $this->delete_custom_status( sanitize_text_field( wp_unslash( $_GET['delete'] ) ) );
338
+ } elseif ( $delete_all_custom_status_wpnonce && isset( $_GET['delete_all'] ) && '' !== $_GET['delete_all'] ) {
339
  return $this->delete_custom_status_all();
340
  }
341
  }
343
  /**
344
  * Get_delete_all_custom_statuses_button.
345
  *
346
+ * @version 5.6.7
347
  * @since 3.2.2
348
  */
349
  public function get_delete_all_custom_statuses_button() {
350
+ return '<p> <a class="button-primary" href="' . (
351
+ add_query_arg(
352
+ array(
353
+ 'delete_all' => '1',
354
+ 'delete_all_custom_status-nonce' => wp_create_nonce( 'delete_all_custom_status' ),
355
+ ),
356
+ (
357
+ remove_query_arg(
358
+ array( 'edit', 'delete', 'edit-custom-statuses-nonce', 'delete_custom_status-nonce' )
359
+ )
360
+ )
361
+ )
362
+ ) .
363
  '" onclick="return confirm(\'' . __( 'Are you sure?', 'woocommerce-jetpack' ) . '\')">' . __( 'Delete All Custom Statuses', 'woocommerce-jetpack' ) . '</a>' .
364
  '</p>';
365
  }
langs/woocommerce-jetpack.pot CHANGED
@@ -10,7 +10,7 @@ msgstr ""
10
  "Content-Type: text/plain; charset=UTF-8\n"
11
  "Content-Transfer-Encoding: 8bit\n"
12
  "Plural-Forms: nplurals=2; plural=(n != 1);\n"
13
- "X-Generator: Poedit 2.0.6\n"
14
  "X-Poedit-Basepath: ..\n"
15
  "X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;"
16
  "_n_noop:1,2;_c;_nc:4c,1,2;_x:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2;_ex:1,2c;"
@@ -34,7 +34,7 @@ msgid "Product category (archive) view"
34
  msgstr ""
35
 
36
  #: includes/admin/class-wc-settings-jetpack.php:33
37
- #: includes/admin/class-wc-settings-jetpack.php:400
38
  #: includes/class-wcj-admin-bar.php:299
39
  #: includes/class-wcj-checkout-files-upload.php:273
40
  #: includes/class-wcj-eu-vat-number.php:179
@@ -44,7 +44,7 @@ msgstr ""
44
  #: includes/class-wcj-track-users.php:174 includes/class-wcj-track-users.php:265
45
  #: includes/classes/class-wcj-module.php:678
46
  #: includes/classes/class-wcj-module.php:887
47
- #: includes/settings/wcj-settings-price-by-country.php:259
48
  msgid "Booster"
49
  msgstr ""
50
 
@@ -71,39 +71,39 @@ msgid ""
71
  "from Booster team!"
72
  msgstr ""
73
 
74
- #: includes/admin/class-wc-settings-jetpack.php:253
75
- #: includes/admin/class-wc-settings-jetpack.php:319
76
- #: includes/admin/class-wc-settings-jetpack.php:937
77
  #: includes/admin/wcj-modules-cats.php:17 includes/class-wcj-admin-bar.php:234
78
  #: includes/class-wcj-my-account.php:39
79
  msgid "Dashboard"
80
  msgstr ""
81
 
82
- #: includes/admin/class-wc-settings-jetpack.php:254
83
  msgid "All Module"
84
  msgstr ""
85
 
86
- #: includes/admin/class-wc-settings-jetpack.php:255
87
  msgid "Active Modules"
88
  msgstr ""
89
 
90
- #: includes/admin/class-wc-settings-jetpack.php:256
91
  #: includes/class-wcj-admin-bar.php:167
92
  msgid "Manage Settings"
93
  msgstr ""
94
 
95
- #: includes/admin/class-wc-settings-jetpack.php:367
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:373
103
  msgid "Module will be removed from the module's list as soon as you disable it."
104
  msgstr ""
105
 
106
- #: includes/admin/class-wc-settings-jetpack.php:385
107
  #, php-format
108
  msgid ""
109
  "Please note that <em>%s</em> module is currently under development. Until "
@@ -111,88 +111,88 @@ msgid ""
111
  "be moved to paid plugin version."
112
  msgstr ""
113
 
114
- #: includes/admin/class-wc-settings-jetpack.php:396
115
  #: includes/class-wcj-admin-bar.php:411
116
  #: includes/settings/wcj-settings-emails-verification.php:152
117
- #: includes/settings/wcj-settings-price-by-country.php:258
118
  msgid "WooCommerce"
119
  msgstr ""
120
 
121
- #: includes/admin/class-wc-settings-jetpack.php:398
122
- #: includes/admin/class-wc-settings-jetpack.php:629
123
  #: includes/class-wcj-admin-bar.php:184 includes/class-wcj-admin-bar.php:535
124
- #: includes/class-wcj-admin-bar.php:635 includes/core/class-wcj-admin.php:143
125
  msgid "Settings"
126
  msgstr ""
127
 
128
- #: includes/admin/class-wc-settings-jetpack.php:455
129
  msgid ""
130
  "This section lets you export, import or reset all Booster's modules settings."
131
  msgstr ""
132
 
133
- #: includes/admin/class-wc-settings-jetpack.php:483
134
- #: includes/admin/class-wc-settings-jetpack.php:1055
135
  #: includes/class-wcj-export-import.php:31
136
  msgid "Export"
137
  msgstr ""
138
 
139
- #: includes/admin/class-wc-settings-jetpack.php:484
140
  msgid "Export all Booster's options to a file."
141
  msgstr ""
142
 
143
- #: includes/admin/class-wc-settings-jetpack.php:487
144
- #: includes/admin/class-wc-settings-jetpack.php:1046
145
  #: includes/class-wcj-purchase-data.php:124
146
  msgid "Import"
147
  msgstr ""
148
 
149
- #: includes/admin/class-wc-settings-jetpack.php:489
150
  msgid "Import all Booster's options from a file."
151
  msgstr ""
152
 
153
- #: includes/admin/class-wc-settings-jetpack.php:493
154
  msgid ""
155
  "This will reset settings to defaults for all Booster modules. Are you sure?"
156
  msgstr ""
157
 
158
- #: includes/admin/class-wc-settings-jetpack.php:494
159
- #: includes/admin/class-wc-settings-jetpack.php:1066
160
  msgid "Reset"
161
  msgstr ""
162
 
163
- #: includes/admin/class-wc-settings-jetpack.php:495
164
  msgid "Reset all Booster's options."
165
  msgstr ""
166
 
167
- #: includes/admin/class-wc-settings-jetpack.php:499
168
  msgid "This will delete all Booster meta. Are you sure?"
169
  msgstr ""
170
 
171
- #: includes/admin/class-wc-settings-jetpack.php:500
172
- #: includes/admin/class-wc-settings-jetpack.php:1075
173
  msgid "Reset meta"
174
  msgstr ""
175
 
176
- #: includes/admin/class-wc-settings-jetpack.php:501
177
  msgid "Reset all Booster's meta."
178
  msgstr ""
179
 
180
- #: includes/admin/class-wc-settings-jetpack.php:554
181
  msgid "Version"
182
  msgstr ""
183
 
184
- #: includes/admin/class-wc-settings-jetpack.php:581
185
- #: includes/admin/class-wc-settings-jetpack.php:590
186
  msgid "Select All"
187
  msgstr ""
188
 
189
- #: includes/admin/class-wc-settings-jetpack.php:583
190
- #: includes/admin/class-wc-settings-jetpack.php:591
191
  msgid "Module"
192
  msgstr ""
193
 
194
- #: includes/admin/class-wc-settings-jetpack.php:585
195
- #: includes/admin/class-wc-settings-jetpack.php:594
196
  #: includes/export/class-wcj-export-fields-helper.php:297
197
  #: includes/gateways/class-wc-gateway-wcj-custom.php:67
198
  #: includes/settings/wcj-settings-checkout-custom-fields.php:181
@@ -203,161 +203,161 @@ msgstr ""
203
  msgid "Description"
204
  msgstr ""
205
 
206
- #: includes/admin/class-wc-settings-jetpack.php:631
207
- #: includes/admin/class-wc-settings-jetpack.php:1084
208
  #: includes/class-wcj-admin-bar.php:188
209
- #: includes/classes/class-wcj-module.php:1035
210
  msgid "Documentation"
211
  msgstr ""
212
 
213
- #: includes/admin/class-wc-settings-jetpack.php:642
214
  msgid "No active modules found."
215
  msgstr ""
216
 
217
- #: includes/admin/class-wc-settings-jetpack.php:648
218
  msgid "Total Modules:"
219
  msgstr ""
220
 
221
- #: includes/admin/class-wc-settings-jetpack.php:712
222
  msgid "Autoload Booster's Options"
223
  msgstr ""
224
 
225
- #: includes/admin/class-wc-settings-jetpack.php:714
226
  msgid ""
227
  "Choose if you want Booster's options to be autoloaded when calling "
228
  "add_option. After saving this option, you need to Reset all Booster's "
229
  "settings. Leave default value (i.e. Enabled) if not sure."
230
  msgstr ""
231
 
232
- #: includes/admin/class-wc-settings-jetpack.php:719
233
  msgid "Load Modules on Init Hook"
234
  msgstr ""
235
 
236
- #: includes/admin/class-wc-settings-jetpack.php:721
237
  msgid "Choose if you want to load Booster Modules on Init hook."
238
  msgstr ""
239
 
240
- #: includes/admin/class-wc-settings-jetpack.php:721
241
  msgid ""
242
  "It will load the locale appropriately if users change it from the profile "
243
  "page."
244
  msgstr ""
245
 
246
- #: includes/admin/class-wc-settings-jetpack.php:726
247
  msgid "Use List Instead of Comma Separated Text for Products in Settings"
248
  msgstr ""
249
 
250
- #: includes/admin/class-wc-settings-jetpack.php:730
251
- #: includes/admin/class-wc-settings-jetpack.php:751
252
- #: includes/admin/class-wc-settings-jetpack.php:767
253
  #, php-format
254
  msgid "Supported modules: %s."
255
  msgstr ""
256
 
257
- #: includes/admin/class-wc-settings-jetpack.php:734
258
  #: includes/class-wcj-payment-gateways-per-category.php:31
259
  msgid "Gateways per Product or Category"
260
  msgstr ""
261
 
262
- #: includes/admin/class-wc-settings-jetpack.php:735
263
  #: includes/class-wcj-global-discount.php:38
264
  #: includes/settings/wcj-settings-product-addons.php:275
265
  msgid "Global Discount"
266
  msgstr ""
267
 
268
- #: includes/admin/class-wc-settings-jetpack.php:736
269
- #: includes/admin/class-wc-settings-jetpack.php:755
270
- #: includes/admin/class-wc-settings-jetpack.php:771
271
  #: includes/class-wcj-product-custom-info.php:29
272
  #: includes/functions/wcj-functions-general.php:488
273
  msgid "Product Info"
274
  msgstr ""
275
 
276
- #: includes/admin/class-wc-settings-jetpack.php:737
277
  #: includes/admin/wcj-welcome-screen-content.php:82
278
  #: includes/class-wcj-product-input-fields.php:29
279
  #: includes/input-fields/class-wcj-product-input-fields-core.php:214
280
  msgid "Product Input Fields"
281
  msgstr ""
282
 
283
- #: includes/admin/class-wc-settings-jetpack.php:738
284
  msgid "Products XML"
285
  msgstr ""
286
 
287
- #: includes/admin/class-wc-settings-jetpack.php:739
288
  #: includes/class-wcj-related-products.php:52
289
  #: includes/settings/meta-box/wcj-settings-meta-box-related-products.php:33
290
  #: includes/settings/wcj-settings-free-price.php:23
291
  msgid "Related Products"
292
  msgstr ""
293
 
294
- #: includes/admin/class-wc-settings-jetpack.php:747
295
  msgid ""
296
  "Use List Instead of Comma Separated Text for Products Categories in Settings"
297
  msgstr ""
298
 
299
- #: includes/admin/class-wc-settings-jetpack.php:763
300
  msgid "Use List Instead of Comma Separated Text for Products Tags in Settings"
301
  msgstr ""
302
 
303
- #: includes/admin/class-wc-settings-jetpack.php:802
304
- #: includes/core/class-wcj-admin.php:127
305
  msgid "Booster for WooCommerce"
306
  msgstr ""
307
 
308
- #: includes/admin/class-wc-settings-jetpack.php:896
309
  msgid "Need Help?"
310
  msgstr ""
311
 
312
- #: includes/admin/class-wc-settings-jetpack.php:923
313
  #: includes/class-wcj-my-account.php:32
314
  msgid "My Account"
315
  msgstr ""
316
 
317
- #: includes/admin/class-wc-settings-jetpack.php:927
318
  msgid "Get Booster Plus"
319
  msgstr ""
320
 
321
- #: includes/admin/class-wc-settings-jetpack.php:934
322
  msgid "Getting Started"
323
  msgstr ""
324
 
325
- #: includes/admin/class-wc-settings-jetpack.php:938
326
  msgid "Navigating Categories"
327
  msgstr ""
328
 
329
- #: includes/admin/class-wc-settings-jetpack.php:939
330
  msgid "How to get started with booster"
331
  msgstr ""
332
 
333
- #: includes/admin/class-wc-settings-jetpack.php:944
334
  msgid "Frequently Asked Questions"
335
  msgstr ""
336
 
337
- #: includes/admin/class-wc-settings-jetpack.php:949
338
  msgid "Do I need to have coding skills to use Booster Plus?"
339
  msgstr ""
340
 
341
- #: includes/admin/class-wc-settings-jetpack.php:953
342
  msgid ""
343
  "Absolutely not. You can configure pretty much everything Booster Plus has to "
344
  "offer without any coding knowledge."
345
  msgstr ""
346
 
347
- #: includes/admin/class-wc-settings-jetpack.php:958
348
  msgid "Will Booster Plus slow down my website?"
349
  msgstr ""
350
 
351
- #: includes/admin/class-wc-settings-jetpack.php:962
352
  msgid ""
353
  "Absolutely not. Booster Plus is carefully built with performance in mind."
354
  msgstr ""
355
 
356
- #: includes/admin/class-wc-settings-jetpack.php:967
357
  msgid "Do you offer refunds?"
358
  msgstr ""
359
 
360
- #: includes/admin/class-wc-settings-jetpack.php:971
361
  #, php-format
362
  msgid ""
363
  "If you are not completely satisfied with Booster Plus within the fist 30 "
@@ -365,38 +365,38 @@ msgid ""
365
  "no questions asked."
366
  msgstr ""
367
 
368
- #: includes/admin/class-wc-settings-jetpack.php:976
369
  msgid "Can I use Booster Plus on client sites?"
370
  msgstr ""
371
 
372
- #: includes/admin/class-wc-settings-jetpack.php:980
373
  msgid ""
374
  "Yes, you can use Booster Plus on client sites. You can purchase the multiple "
375
  "sites license of Booster Plus."
376
  msgstr ""
377
 
378
- #: includes/admin/class-wc-settings-jetpack.php:985
379
  msgid "Do you have an affiliate program?"
380
  msgstr ""
381
 
382
- #: includes/admin/class-wc-settings-jetpack.php:989
383
  msgid "Yes, We do have an affiliate program. "
384
  msgstr ""
385
 
386
- #: includes/admin/class-wc-settings-jetpack.php:989
387
  msgid "Click here"
388
  msgstr ""
389
 
390
- #: includes/admin/class-wc-settings-jetpack.php:989
391
  msgid " for the details."
392
  msgstr ""
393
 
394
- #: includes/admin/class-wc-settings-jetpack.php:994
395
  msgid ""
396
  "Why should I choose the Booster Plus suite over other individual plugins?"
397
  msgstr ""
398
 
399
- #: includes/admin/class-wc-settings-jetpack.php:998
400
  msgid ""
401
  "Oh, that's an easy one! Implementing just a few modules from the Booster Plus "
402
  "suite is more cost-effective than using dozens of individual plugins often "
@@ -408,171 +408,171 @@ msgid ""
408
  "your WooCommerce site easily."
409
  msgstr ""
410
 
411
- #: includes/admin/class-wc-settings-jetpack.php:1003
412
  msgid "What features does Booster Plus have?"
413
  msgstr ""
414
 
415
- #: includes/admin/class-wc-settings-jetpack.php:1007
416
  msgid "You can see all the features at "
417
  msgstr ""
418
 
419
- #: includes/admin/class-wc-settings-jetpack.php:1007
420
  msgid "About Booster"
421
  msgstr ""
422
 
423
- #: includes/admin/class-wc-settings-jetpack.php:1007
424
  msgid " page."
425
  msgstr ""
426
 
427
- #: includes/admin/class-wc-settings-jetpack.php:1011
428
  msgid "Still have a question?"
429
  msgstr ""
430
 
431
- #: includes/admin/class-wc-settings-jetpack.php:1012
432
  msgid "CONTACT BOOSTER SUPPORT"
433
  msgstr ""
434
 
435
- #: includes/admin/class-wc-settings-jetpack.php:1018
436
  msgid "Connect with Booster"
437
  msgstr ""
438
 
439
- #: includes/admin/class-wc-settings-jetpack.php:1022
440
  msgid "BOOSTER WEBSITE"
441
  msgstr ""
442
 
443
- #: includes/admin/class-wc-settings-jetpack.php:1036
444
- #: includes/class-wcj-general.php:244 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:275
448
  msgid "Actions"
449
  msgstr ""
450
 
451
- #: includes/admin/class-wc-settings-jetpack.php:1047
452
  msgid "Import Booster options"
453
  msgstr ""
454
 
455
- #: includes/admin/class-wc-settings-jetpack.php:1056
456
  msgid "Export Booster options"
457
  msgstr ""
458
 
459
- #: includes/admin/class-wc-settings-jetpack.php:1067
460
  msgid "Reset all Booster's options"
461
  msgstr ""
462
 
463
- #: includes/admin/class-wc-settings-jetpack.php:1076
464
  msgid "Reset all Booster's meta"
465
  msgstr ""
466
 
467
- #: includes/admin/class-wc-settings-jetpack.php:1091
468
  msgid "Here you can find all documentation of Booster"
469
  msgstr ""
470
 
471
- #: includes/admin/class-wc-settings-jetpack.php:1093
472
  msgid "See Documentation"
473
  msgstr ""
474
 
475
- #: includes/admin/class-wc-settings-jetpack.php:1100
476
  msgid "Latest updates"
477
  msgstr ""
478
 
479
- #: includes/admin/class-wc-settings-jetpack.php:1103
480
  msgid "Version "
481
  msgstr ""
482
 
483
- #: includes/admin/class-wc-settings-jetpack.php:1108
484
  msgid "SEE MORE"
485
  msgstr ""
486
 
487
- #: includes/admin/class-wc-settings-jetpack.php:1119
488
- #: includes/core/class-wcj-admin.php:101
489
  msgid "Please rate "
490
  msgstr ""
491
 
492
- #: includes/admin/class-wc-settings-jetpack.php:1119
493
- #: includes/core/class-wcj-admin.php:101
494
  msgid "Booster for Woocommerce"
495
  msgstr ""
496
 
497
- #: includes/admin/class-wc-settings-jetpack.php:1127
498
- #: includes/core/class-wcj-admin.php:109
499
  msgid "WordPress.org"
500
  msgstr ""
501
 
502
- #: includes/admin/class-wc-settings-jetpack.php:1127
503
- #: includes/core/class-wcj-admin.php:109
504
  msgid " to help us spread the word. Thank you from Booster team!"
505
  msgstr ""
506
 
507
- #: includes/admin/class-wc-settings-jetpack.php:1131
508
  msgid "Upgrade today to unlock these popular premium features:"
509
  msgstr ""
510
 
511
- #: includes/admin/class-wc-settings-jetpack.php:1133
512
  msgid "+ PDF Invoices and Packing slips –"
513
  msgstr ""
514
 
515
- #: includes/admin/class-wc-settings-jetpack.php:1133
516
  msgid ""
517
  "Add ability to create Proforma Invoices, Credit Notes and Packaging slips"
518
  msgstr ""
519
 
520
- #: includes/admin/class-wc-settings-jetpack.php:1134
521
  msgid "+ Empty Cart –"
522
  msgstr ""
523
 
524
- #: includes/admin/class-wc-settings-jetpack.php:1134
525
  msgid ""
526
  "customize empty cart button text, different button positions on cart page"
527
  msgstr ""
528
 
529
- #: includes/admin/class-wc-settings-jetpack.php:1135
530
  msgid "+ Cart and checkout –"
531
  msgstr ""
532
 
533
- #: includes/admin/class-wc-settings-jetpack.php:1135
534
  msgid "add multiple – custom fields, custom info blocks, check out file uploads"
535
  msgstr ""
536
 
537
- #: includes/admin/class-wc-settings-jetpack.php:1136
538
  msgid "+ Mini cart –"
539
  msgstr ""
540
 
541
- #: includes/admin/class-wc-settings-jetpack.php:1136
542
  msgid "More custom information options"
543
  msgstr ""
544
 
545
- #: includes/admin/class-wc-settings-jetpack.php:1137
546
  msgid "+ Prices and currencies –"
547
  msgstr ""
548
 
549
- #: includes/admin/class-wc-settings-jetpack.php:1137
550
  msgid "add more unlimited number of currencies to WooCommerce"
551
  msgstr ""
552
 
553
- #: includes/admin/class-wc-settings-jetpack.php:1138
554
  msgid "+ Export options –"
555
  msgstr ""
556
 
557
- #: includes/admin/class-wc-settings-jetpack.php:1138
558
  msgid "more fields enabled"
559
  msgstr ""
560
 
561
- #: includes/admin/class-wc-settings-jetpack.php:1139
562
  msgid "+ Add to cart –"
563
  msgstr ""
564
 
565
- #: includes/admin/class-wc-settings-jetpack.php:1139
566
  msgid ""
567
  "customize add to cart messages, Button labels - multiple category groups "
568
  "allowed+ +"
569
  msgstr ""
570
 
571
- #: includes/admin/class-wc-settings-jetpack.php:1140
572
  msgid "+ More configuration options for payments and shipping"
573
  msgstr ""
574
 
575
- #: includes/admin/class-wc-settings-jetpack.php:1143
576
  msgid "Upgrade to Booster Plus"
577
  msgstr ""
578
 
@@ -625,11 +625,11 @@ msgstr ""
625
  msgid "Tools Dashboard"
626
  msgstr ""
627
 
628
- #: includes/admin/class-wcj-tools.php:108
629
  msgid "Booster for WooCommerce Tools - Dashboard"
630
  msgstr ""
631
 
632
- #: includes/admin/class-wcj-tools.php:109
633
  msgid ""
634
  "This dashboard lets you check statuses and short descriptions of all "
635
  "available Booster for WooCommerce tools. Tools can be enabled through "
@@ -882,39 +882,39 @@ msgstr ""
882
  msgid "Don't miss updates from us!"
883
  msgstr ""
884
 
885
- #: includes/admin/wcj-welcome-screen-content.php:150
886
  msgid "Thank you for subscribing your email"
887
  msgstr ""
888
 
889
- #: includes/admin/wcj-welcome-screen-content.php:152
890
  msgid "You have already subscribed your email"
891
  msgstr ""
892
 
893
- #: includes/admin/wcj-welcome-screen-content.php:154
894
  msgid "Something went wrong with your subscription. Please after some time !"
895
  msgstr ""
896
 
897
- #: includes/admin/wcj-welcome-screen-content.php:162
898
  msgid "Contact Us"
899
  msgstr ""
900
 
901
- #: includes/admin/wcj-welcome-screen-content.php:164
902
  msgid ""
903
  "Booster Plus customers get access to Premium Support and we respond within 24 "
904
  "business hours."
905
  msgstr ""
906
 
907
- #: includes/admin/wcj-welcome-screen-content.php:165
908
  msgid "Booster Plus Premium Support"
909
  msgstr ""
910
 
911
- #: includes/admin/wcj-welcome-screen-content.php:168
912
  msgid ""
913
  "Free users post on WordPress Plugin Support forum here. We check these "
914
  "threads twice every week Mon and Frid to respond."
915
  msgstr ""
916
 
917
- #: includes/admin/wcj-welcome-screen-content.php:169
918
  msgid "Booster Free Plugin Support"
919
  msgstr ""
920
 
@@ -1280,25 +1280,25 @@ msgid ""
1280
  "filtering."
1281
  msgstr ""
1282
 
1283
- #: includes/class-wcj-admin-orders-list.php:219
1284
  msgid "Not Completed"
1285
  msgstr ""
1286
 
1287
- #: includes/class-wcj-admin-orders-list.php:264
1288
  msgid "Trash"
1289
  msgstr ""
1290
 
1291
- #: includes/class-wcj-admin-orders-list.php:362
1292
  #: includes/class-wcj-product-by-country.php:192
1293
  #: includes/class-wcj-product-by-country.php:228
1294
  msgid "All countries"
1295
  msgstr ""
1296
 
1297
- #: includes/class-wcj-admin-orders-list.php:371
1298
  msgid "All currencies"
1299
  msgstr ""
1300
 
1301
- #: includes/class-wcj-admin-orders-list.php:413
1302
  #: includes/export/class-wcj-export-fields-helper.php:52
1303
  #: includes/export/class-wcj-export-fields-helper.php:136
1304
  #: includes/export/class-wcj-export-fields-helper.php:219
@@ -1306,7 +1306,7 @@ msgstr ""
1306
  msgid "Billing Country"
1307
  msgstr ""
1308
 
1309
- #: includes/class-wcj-admin-orders-list.php:416
1310
  #: includes/settings/wcj-settings-admin-orders-list.php:37
1311
  msgid "Currency Code"
1312
  msgstr ""
@@ -1373,8 +1373,8 @@ msgstr ""
1373
  msgid "Item Meta Value"
1374
  msgstr ""
1375
 
1376
- #: includes/class-wcj-admin-tools.php:290 includes/class-wcj-admin-tools.php:339
1377
- #: includes/class-wcj-admin-tools.php:349
1378
  #: includes/class-wcj-product-bulk-meta-editor.php:383
1379
  #: includes/class-wcj-sku.php:710
1380
  #: includes/reports/class-wcj-reports-sales.php:212
@@ -1382,13 +1382,13 @@ msgstr ""
1382
  msgid "Product"
1383
  msgstr ""
1384
 
1385
- #: includes/class-wcj-admin-tools.php:291 includes/class-wcj-admin-tools.php:340
1386
- #: includes/class-wcj-admin-tools.php:350
1387
  #: includes/reports/class-wcj-reports-stock.php:290
1388
  msgid "Category"
1389
  msgstr ""
1390
 
1391
- #: includes/class-wcj-admin-tools.php:368
1392
  msgid "Total Products:"
1393
  msgstr ""
1394
 
@@ -1554,7 +1554,7 @@ msgstr ""
1554
  msgid "Add fees to WooCommerce cart & checkout."
1555
  msgstr ""
1556
 
1557
- #: includes/class-wcj-checkout-fees.php:254
1558
  #: includes/settings/wcj-settings-checkout-fees.php:46
1559
  #: includes/settings/wcj-settings-checkout-fees.php:67
1560
  msgid "Fee"
@@ -1589,8 +1589,8 @@ msgstr ""
1589
 
1590
  #: includes/class-wcj-checkout-files-upload.php:235
1591
  #: includes/class-wcj-checkout-files-upload.php:250
1592
- #: includes/class-wcj-checkout-files-upload.php:519
1593
- #: includes/class-wcj-checkout-files-upload.php:535
1594
  #: includes/settings/wcj-settings-checkout-files-upload.php:120
1595
  #, php-format
1596
  msgid "Wrong file type: \"%s\"!"
@@ -1600,62 +1600,62 @@ msgstr ""
1600
  msgid "Uploaded Files"
1601
  msgstr ""
1602
 
1603
- #: includes/class-wcj-checkout-files-upload.php:306
1604
  msgid "No files uploaded."
1605
  msgstr ""
1606
 
1607
- #: includes/class-wcj-checkout-files-upload.php:309
1608
  msgid "Delete all files"
1609
  msgstr ""
1610
 
1611
- #: includes/class-wcj-checkout-files-upload.php:400
1612
  #: includes/settings/wcj-settings-checkout-files-upload.php:260
1613
  msgid "Files were successfully removed."
1614
  msgstr ""
1615
 
1616
- #: includes/class-wcj-checkout-files-upload.php:429
1617
  msgid "Booster for WooCommerce: Checkout Files Upload: %action%"
1618
  msgstr ""
1619
 
1620
- #: includes/class-wcj-checkout-files-upload.php:432
1621
  #, php-format
1622
  msgid "Order ID: %1$s; File name: %2$s"
1623
  msgstr ""
1624
 
1625
- #: includes/class-wcj-checkout-files-upload.php:452
1626
- #: includes/class-wcj-checkout-files-upload.php:489
1627
  #: includes/settings/wcj-settings-checkout-files-upload.php:150
1628
  #, php-format
1629
  msgid "File \"%s\" was successfully removed."
1630
  msgstr ""
1631
 
1632
- #: includes/class-wcj-checkout-files-upload.php:464
1633
  msgid "File Removed"
1634
  msgstr ""
1635
 
1636
- #: includes/class-wcj-checkout-files-upload.php:555
1637
  #: includes/settings/wcj-settings-checkout-files-upload.php:135
1638
  #, php-format
1639
  msgid "File \"%s\" was successfully uploaded."
1640
  msgstr ""
1641
 
1642
- #: includes/class-wcj-checkout-files-upload.php:570
1643
  msgid "File Uploaded"
1644
  msgstr ""
1645
 
1646
- #: includes/class-wcj-checkout-files-upload.php:598
1647
  #: includes/settings/wcj-settings-checkout-files-upload.php:141
1648
  msgid "Please select file to upload!"
1649
  msgstr ""
1650
 
1651
- #: includes/class-wcj-checkout-files-upload.php:896
1652
- #: includes/class-wcj-checkout-files-upload.php:897
1653
  #: includes/settings/wcj-settings-checkout-files-upload.php:105
1654
  msgid "Upload"
1655
  msgstr ""
1656
 
1657
- #: includes/class-wcj-checkout-files-upload.php:912
1658
- #: includes/class-wcj-checkout-files-upload.php:913
1659
  #: includes/settings/wcj-settings-checkout-files-upload.php:111
1660
  #: includes/settings/wcj-settings-price-by-user-role.php:81
1661
  #: includes/settings/wcj-settings-price-by-user-role.php:89
@@ -2064,20 +2064,20 @@ msgstr ""
2064
  msgid "Log."
2065
  msgstr ""
2066
 
2067
- #: includes/class-wcj-debug-tools.php:66
2068
  msgid "Delete Log"
2069
  msgstr ""
2070
 
2071
- #: includes/class-wcj-debug-tools.php:70
2072
  #, php-format
2073
  msgid "Now: %s"
2074
  msgstr ""
2075
 
2076
- #: includes/class-wcj-debug-tools.php:75
2077
  msgid "Log is empty."
2078
  msgstr ""
2079
 
2080
- #: includes/class-wcj-debug-tools.php:107
2081
  msgid "NOT DEFINED"
2082
  msgstr ""
2083
 
@@ -2312,31 +2312,31 @@ msgstr ""
2312
  msgid "Customer EU VAT Number"
2313
  msgstr ""
2314
 
2315
- #: includes/class-wcj-eu-vat-number.php:451
2316
  #: includes/settings/wcj-settings-eu-vat-number.php:169
2317
  msgid "Validating VAT. Please wait..."
2318
  msgstr ""
2319
 
2320
- #: includes/class-wcj-eu-vat-number.php:452
2321
  #: includes/settings/wcj-settings-eu-vat-number.php:176
2322
  msgid "VAT is valid."
2323
  msgstr ""
2324
 
2325
- #: includes/class-wcj-eu-vat-number.php:453
2326
  #: includes/settings/wcj-settings-eu-vat-number.php:183
2327
  msgid "VAT is not valid."
2328
  msgstr ""
2329
 
2330
- #: includes/class-wcj-eu-vat-number.php:454
2331
  #: includes/settings/wcj-settings-eu-vat-number.php:191
2332
  msgid "Validation failed. Please try again."
2333
  msgstr ""
2334
 
2335
- #: includes/class-wcj-eu-vat-number.php:592
2336
  msgid "<strong>Billing EU VAT Number</strong>is a required field."
2337
  msgstr ""
2338
 
2339
- #: includes/class-wcj-eu-vat-number.php:611
2340
  #: includes/settings/wcj-settings-eu-vat-number.php:78
2341
  msgid "<strong>EU VAT Number</strong> is not valid."
2342
  msgstr ""
@@ -2408,7 +2408,7 @@ msgid "Filter by Product Title"
2408
  msgstr ""
2409
 
2410
  #: includes/class-wcj-export-import.php:275
2411
- #: includes/reports/class-wcj-reports-product-sales-daily.php:222
2412
  #: includes/reports/wcj-class-reports-sales-gateways.php:166
2413
  #: includes/settings/wcj-settings-orders.php:48
2414
  msgid "Filter"
@@ -2471,11 +2471,11 @@ msgstr ""
2471
  msgid "Current PHP time limit: %s seconds."
2472
  msgstr ""
2473
 
2474
- #: includes/class-wcj-general.php:138
2475
  msgid "Booster User Role"
2476
  msgstr ""
2477
 
2478
- #: includes/class-wcj-general.php:244 includes/class-wcj-general.php:259
2479
  #: includes/class-wcj-sku.php:709
2480
  #: includes/reports/class-wcj-reports-sales.php:211
2481
  #: includes/settings/wcj-settings-cross-sells.php:46
@@ -2487,7 +2487,7 @@ msgstr ""
2487
  msgid "ID"
2488
  msgstr ""
2489
 
2490
- #: includes/class-wcj-general.php:244 includes/class-wcj-general.php:260
2491
  #: includes/class-wcj-offer-price.php:179
2492
  #: includes/export/class-wcj-export-fields-helper.php:287
2493
  #: includes/tools/class-wcj-eu-countries-vat-rates-tool.php:92
@@ -2495,18 +2495,18 @@ msgstr ""
2495
  msgid "Name"
2496
  msgstr ""
2497
 
2498
- #: includes/class-wcj-general.php:244 includes/class-wcj-general.php:261
2499
  msgid "Capabilities"
2500
  msgstr ""
2501
 
2502
- #: includes/class-wcj-general.php:251
2503
  #: includes/class-wcj-payment-gateways.php:134
2504
  #: includes/class-wcj-product-bulk-meta-editor.php:411
2505
  #: includes/class-wcj-product-by-user.php:287
2506
- #: includes/pdf-invoices/submodules/class-wcj-pdf-invoicing-display.php:162
2507
- #: includes/pdf-invoices/submodules/class-wcj-pdf-invoicing-display.php:384
2508
  #: includes/shortcodes/class-wcj-products-add-form-shortcodes.php:394
2509
- #: includes/tools/class-wcj-order-statuses-tool.php:207
2510
  msgid "Delete"
2511
  msgstr ""
2512
 
@@ -2723,12 +2723,12 @@ msgstr ""
2723
  msgid "Lost password"
2724
  msgstr ""
2725
 
2726
- #: includes/class-wcj-my-account.php:335
2727
  #, php-format
2728
  msgid "Hello %1$s (not %1$s? <a href=\"%2$s\">Log out</a>)"
2729
  msgstr ""
2730
 
2731
- #: includes/class-wcj-my-account.php:346
2732
  #, php-format
2733
  msgid ""
2734
  "From your account dashboard you can view your <a href=\"%1$s\">recent orders</"
@@ -2736,7 +2736,7 @@ msgid ""
2736
  "href=\"%3$s\">edit your password and account details</a>."
2737
  msgstr ""
2738
 
2739
- #: includes/class-wcj-my-account.php:456
2740
  msgid "User role"
2741
  msgstr ""
2742
 
@@ -2791,7 +2791,7 @@ msgstr ""
2791
  #: includes/class-wcj-offer-price.php:180
2792
  #: includes/export/class-wcj-export-fields-helper.php:83
2793
  #: includes/input-fields/wcj-product-input-fields-options.php:47
2794
- #: includes/reports/class-wcj-reports-customers.php:102
2795
  #: includes/settings/wcj-settings-checkout-custom-fields.php:156
2796
  msgid "Email"
2797
  msgstr ""
@@ -2938,34 +2938,34 @@ msgstr ""
2938
  msgid "Current slug"
2939
  msgstr ""
2940
 
2941
- #: includes/class-wcj-old-slugs.php:100
2942
  #, php-format
2943
  msgid ""
2944
  "Removing old slugs from database finished! <strong>%d</strong> old slug(s) "
2945
  "deleted."
2946
  msgstr ""
2947
 
2948
- #: includes/class-wcj-old-slugs.php:102
2949
  msgid "Please <a href=\"\">refresh</a> the page."
2950
  msgstr ""
2951
 
2952
- #: includes/class-wcj-old-slugs.php:127
2953
  msgid "Old products slugs found:"
2954
  msgstr ""
2955
 
2956
- #: includes/class-wcj-old-slugs.php:130
2957
  msgid "Remove all old product slugs"
2958
  msgstr ""
2959
 
2960
- #: includes/class-wcj-old-slugs.php:133
2961
  msgid "Old non-products slugs found:"
2962
  msgstr ""
2963
 
2964
- #: includes/class-wcj-old-slugs.php:136
2965
  msgid "Remove all old non-product slugs"
2966
  msgstr ""
2967
 
2968
- #: includes/class-wcj-old-slugs.php:150
2969
  msgid "No old slugs found."
2970
  msgstr ""
2971
 
@@ -3058,23 +3058,23 @@ msgstr ""
3058
  msgid "Tool renumerates all orders."
3059
  msgstr ""
3060
 
3061
- #: includes/class-wcj-order-numbers.php:357
3062
  msgid "Orders successfully renumerated!"
3063
  msgstr ""
3064
 
3065
- #: includes/class-wcj-order-numbers.php:362
3066
  #, php-format
3067
  msgid "Sequential number generation is enabled. Next order number will be %s."
3068
  msgstr ""
3069
 
3070
- #: includes/class-wcj-order-numbers.php:375
3071
  #, php-format
3072
  msgid ""
3073
  "Press the button below to renumerate all existing orders starting from order "
3074
  "counter settings in <a href=\"%s\">Order Numbers</a> module."
3075
  msgstr ""
3076
 
3077
- #: includes/class-wcj-order-numbers.php:383
3078
  msgid "Renumerate orders"
3079
  msgstr ""
3080
 
@@ -3088,42 +3088,42 @@ msgid ""
3088
  "decimal quantities etc."
3089
  msgstr ""
3090
 
3091
- #: includes/class-wcj-order-quantities.php:291
3092
  #: includes/settings/wcj-settings-order-quantities.php:297
3093
  msgid ""
3094
  "Only one item can be added to the cart. Clear the cart or finish the order, "
3095
  "before adding another item to the cart."
3096
  msgstr ""
3097
 
3098
- #: includes/class-wcj-order-quantities.php:485
3099
  #: includes/settings/wcj-settings-order-quantities.php:182
3100
  msgid ""
3101
  "Maximum allowed order quantity is %max_cart_total_quantity%. Your current "
3102
  "order quantity is %cart_total_quantity%."
3103
  msgstr ""
3104
 
3105
- #: includes/class-wcj-order-quantities.php:496
3106
  #: includes/settings/wcj-settings-order-quantities.php:109
3107
  msgid ""
3108
  "Minimum allowed order quantity is %min_cart_total_quantity%. Your current "
3109
  "order quantity is %cart_total_quantity%."
3110
  msgstr ""
3111
 
3112
- #: includes/class-wcj-order-quantities.php:508
3113
  #: includes/settings/wcj-settings-order-quantities.php:220
3114
  msgid ""
3115
  "Maximum allowed quantity for %product_title% is %max_per_item_quantity%. Your "
3116
  "current item quantity is %item_quantity%."
3117
  msgstr ""
3118
 
3119
- #: includes/class-wcj-order-quantities.php:523
3120
  #: includes/settings/wcj-settings-order-quantities.php:146
3121
  msgid ""
3122
  "Minimum allowed quantity for %product_title% is %min_per_item_quantity%. Your "
3123
  "current item quantity is %item_quantity%."
3124
  msgstr ""
3125
 
3126
- #: includes/class-wcj-order-quantities.php:535
3127
  #: includes/settings/wcj-settings-order-quantities.php:271
3128
  msgid ""
3129
  "Required step for %product_title% is %required_step%. Your current item "
@@ -3158,7 +3158,7 @@ msgstr ""
3158
  msgid "Regenerate download permissions"
3159
  msgstr ""
3160
 
3161
- #: includes/class-wcj-orders.php:268
3162
  #, php-format
3163
  msgid "Download permissions regenerated for %s order."
3164
  msgid_plural "Download permissions regenerated for %s orders."
@@ -3355,7 +3355,7 @@ msgstr ""
3355
  msgid "Change product price and currency automatically by customer's country."
3356
  msgstr ""
3357
 
3358
- #: includes/class-wcj-price-by-country.php:167
3359
  msgid "Price filter widget product prices recalculated."
3360
  msgstr ""
3361
 
@@ -3392,11 +3392,11 @@ msgstr ""
3392
  msgid "Copy price to all %s"
3393
  msgstr ""
3394
 
3395
- #: includes/class-wcj-price-by-user-role.php:257
3396
  msgid ""
3397
  "Booster: Free plugin's version is limited to only one price by user role per "
3398
  "products settings product enabled at a time. You will need to get <a href="
3399
- "\"https://booster.io/plus/\" target=\"_blank\">Booster Plus</a> to add "
3400
  "unlimited number of price by user role per product settings products."
3401
  msgstr ""
3402
 
@@ -3606,12 +3606,12 @@ msgstr ""
3606
  #: includes/settings/wcj-settings-price-by-country.php:117
3607
  #: includes/settings/wcj-settings-price-by-country.php:144
3608
  #: includes/settings/wcj-settings-price-by-country.php:191
3609
- #: includes/settings/wcj-settings-price-by-country.php:201
3610
- #: includes/settings/wcj-settings-price-by-country.php:210
3611
- #: includes/settings/wcj-settings-price-by-country.php:219
3612
- #: includes/settings/wcj-settings-price-by-country.php:229
3613
- #: includes/settings/wcj-settings-price-by-country.php:276
3614
  #: includes/settings/wcj-settings-price-by-country.php:284
 
3615
  #: includes/settings/wcj-settings-price-by-user-role.php:23
3616
  #: includes/settings/wcj-settings-price-by-user-role.php:50
3617
  #: includes/settings/wcj-settings-price-by-user-role.php:97
@@ -3849,8 +3849,8 @@ msgstr ""
3849
  msgid ""
3850
  "Booster: Free plugin's version is limited to only three products with per "
3851
  "product addons enabled at a time. You will need to get <a href=\"https://"
3852
- "booster.io/plus/\" target=\"_blank\">Booster Plus</a> to add unlimited number "
3853
- "of products with per product addons."
3854
  msgstr ""
3855
 
3856
  #: includes/class-wcj-product-bookings.php:30
@@ -3914,9 +3914,9 @@ msgstr ""
3914
  #: includes/class-wcj-product-bookings.php:537
3915
  msgid ""
3916
  "Booster: Free plugin's version is limited to only one bookings product "
3917
- "enabled at a time. You will need to get <a href=\"https://booster.io/plus/\" "
3918
- "target=\"_blank\">Booster Plus</a> to add unlimited number of bookings "
3919
- "products."
3920
  msgstr ""
3921
 
3922
  #: includes/class-wcj-product-bulk-meta-editor.php:30
@@ -3986,11 +3986,11 @@ msgstr ""
3986
  #: includes/classes/class-wcj-module.php:1000
3987
  #: includes/functions/wcj-functions-general.php:208
3988
  #: includes/functions/wcj-functions-html.php:131
3989
- #: includes/reports/class-wcj-reports-monthly-sales.php:393
3990
  #: includes/settings/wcj-settings-empty-cart.php:88
3991
  #: includes/shortcodes/class-wcj-products-add-form-shortcodes.php:394
3992
- #: includes/tools/class-wcj-order-statuses-tool.php:207
3993
- #: includes/tools/class-wcj-order-statuses-tool.php:340
3994
  msgid "Are you sure?"
3995
  msgstr ""
3996
 
@@ -4403,8 +4403,8 @@ msgstr ""
4403
 
4404
  #: includes/class-wcj-product-by-user.php:286
4405
  #: includes/shortcodes/class-wcj-products-add-form-shortcodes.php:473
4406
- #: includes/tools/class-wcj-order-statuses-tool.php:210
4407
- #: includes/tools/class-wcj-order-statuses-tool.php:290
4408
  msgid "Edit"
4409
  msgstr ""
4410
 
@@ -4923,7 +4923,6 @@ msgid "Add \"products per page\" selector to WooCommerce."
4923
  msgstr ""
4924
 
4925
  #: includes/class-wcj-products-per-page.php:98
4926
- #: includes/settings/wcj-settings-products-per-page.php:67
4927
  msgid ""
4928
  "Products <strong>%1$from% - %to%</strong> from <strong>%total%</strong>. "
4929
  "Products on page %2$select_form%"
@@ -5329,7 +5328,7 @@ msgstr ""
5329
  #: includes/settings/wcj-settings-sku.php:314
5330
  #: includes/settings/wcj-settings-sku.php:341
5331
  #: includes/shortcodes/class-wcj-products-add-form-shortcodes.php:473
5332
- #: includes/tools/class-wcj-order-statuses-tool.php:290
5333
  msgid "Add"
5334
  msgstr ""
5335
 
@@ -5876,15 +5875,15 @@ msgstr ""
5876
  msgid "Reset Submodule to Default Settings"
5877
  msgstr ""
5878
 
5879
- #: includes/classes/class-wcj-module.php:1001
5880
  msgid "Reset settings"
5881
  msgstr ""
5882
 
5883
- #: includes/classes/class-wcj-module.php:1039
5884
  msgid "Module Options"
5885
  msgstr ""
5886
 
5887
- #: includes/classes/class-wcj-module.php:1046
5888
  msgid "Enable Module"
5889
  msgstr ""
5890
 
@@ -5925,19 +5924,19 @@ msgstr ""
5925
  msgid "Click <a target=\"_blank\" href=\"%s\">here</a> for more info."
5926
  msgstr ""
5927
 
5928
- #: includes/core/class-wcj-admin.php:128
5929
  msgid "Booster Settings"
5930
  msgstr ""
5931
 
5932
- #: includes/core/class-wcj-admin.php:144
5933
  msgid "Docs"
5934
  msgstr ""
5935
 
5936
- #: includes/core/class-wcj-admin.php:147
5937
  msgid "Unlock all"
5938
  msgstr ""
5939
 
5940
- #: includes/core/class-wcj-admin.php:149
5941
  msgid "Support"
5942
  msgstr ""
5943
 
@@ -6235,7 +6234,7 @@ msgid "URL"
6235
  msgstr ""
6236
 
6237
  #: includes/export/class-wcj-export-fields-helper.php:89
6238
- #: includes/reports/class-wcj-reports-customers.php:104
6239
  msgid "Registered"
6240
  msgstr ""
6241
 
@@ -8102,20 +8101,20 @@ msgid "Total number of "
8102
  msgstr ""
8103
 
8104
  #: includes/input-fields/class-wcj-product-input-fields-core.php:253
8105
- #: includes/input-fields/class-wcj-product-input-fields-core.php:451
8106
  #: includes/settings/wcj-settings-product-input-fields.php:96
8107
  msgid "Product Input Field"
8108
  msgstr ""
8109
 
8110
- #: includes/input-fields/class-wcj-product-input-fields-core.php:536
8111
  msgid "Wrong file type!"
8112
  msgstr ""
8113
 
8114
- #: includes/input-fields/class-wcj-product-input-fields-core.php:545
8115
  msgid "File is too big!"
8116
  msgstr ""
8117
 
8118
- #: includes/input-fields/class-wcj-product-input-fields-core.php:782
8119
  msgid "Select a country&hellip;"
8120
  msgstr ""
8121
 
@@ -8576,7 +8575,7 @@ msgstr ""
8576
  #: includes/settings/wcj-settings-multicurrency-base-price.php:67
8577
  #: includes/settings/wcj-settings-multicurrency.php:244
8578
  #: includes/settings/wcj-settings-order-min-amount.php:87
8579
- #: includes/settings/wcj-settings-price-by-country.php:241
8580
  #: includes/settings/wcj-settings-price-by-user-role.php:110
8581
  #: includes/settings/wcj-settings-product-addons.php:251
8582
  msgid "Advanced"
@@ -8656,26 +8655,26 @@ msgid "Display & Misc."
8656
  msgstr ""
8657
 
8658
  #: includes/pdf-invoices/submodules/class-wcj-pdf-invoicing-display.php:146
8659
- #: includes/pdf-invoices/submodules/class-wcj-pdf-invoicing-display.php:373
8660
  msgid "View"
8661
  msgstr ""
8662
 
8663
- #: includes/pdf-invoices/submodules/class-wcj-pdf-invoicing-display.php:179
8664
- #: includes/pdf-invoices/submodules/class-wcj-pdf-invoicing-display.php:407
8665
  msgid "Create"
8666
  msgstr ""
8667
 
8668
- #: includes/pdf-invoices/submodules/class-wcj-pdf-invoicing-display.php:276
8669
  #: includes/settings/wcj-settings-pdf-invoicing-display.php:104
8670
  #, php-format
8671
  msgid "Your %s:"
8672
  msgstr ""
8673
 
8674
- #: includes/pdf-invoices/submodules/class-wcj-pdf-invoicing-display.php:334
8675
  msgid "Booster: PDF Invoices"
8676
  msgstr ""
8677
 
8678
- #: includes/pdf-invoices/submodules/class-wcj-pdf-invoicing-display.php:413
8679
  msgid ""
8680
  "In case of partial refund, you need to reload the page to see created "
8681
  "document in this meta box."
@@ -8720,18 +8719,18 @@ msgstr ""
8720
 
8721
  #: includes/price-by-country/class-wcj-price-by-country-local.php:124
8722
  #: includes/settings/meta-box/wcj-settings-meta-box-price-by-country.php:77
8723
- #: includes/settings/wcj-settings-price-by-country.php:449
8724
  msgid "Make empty price"
8725
  msgstr ""
8726
 
8727
  #: includes/price-by-country/class-wcj-price-by-country-local.php:249
8728
  #: includes/settings/meta-box/wcj-settings-meta-box-price-by-country.php:21
8729
  #: includes/settings/wcj-settings-add-to-cart.php:59
8730
- #: includes/settings/wcj-settings-price-by-country.php:334
8731
- #: includes/settings/wcj-settings-price-by-country.php:335
8732
- #: includes/settings/wcj-settings-price-by-country.php:340
8733
- #: includes/settings/wcj-settings-price-by-country.php:390
8734
- #: includes/settings/wcj-settings-price-by-country.php:440
8735
  msgid "Group"
8736
  msgstr ""
8737
 
@@ -8744,159 +8743,159 @@ msgstr ""
8744
  msgid "Show reports only in"
8745
  msgstr ""
8746
 
8747
- #: includes/reports/class-wcj-reports-customers.php:52
8748
  msgid "No customers found."
8749
  msgstr ""
8750
 
8751
- #: includes/reports/class-wcj-reports-customers.php:88
8752
  msgid "Non Available"
8753
  msgstr ""
8754
 
8755
- #: includes/reports/class-wcj-reports-customers.php:101
8756
  #: includes/settings/wcj-settings-offer-price.php:212
8757
  msgid "Customer Name"
8758
  msgstr ""
8759
 
8760
- #: includes/reports/class-wcj-reports-customers.php:103
8761
  msgid "Total Spent"
8762
  msgstr ""
8763
 
8764
- #: includes/reports/class-wcj-reports-customers.php:147
8765
  msgid "Total customers"
8766
  msgstr ""
8767
 
8768
- #: includes/reports/class-wcj-reports-customers.php:151
8769
  msgid "Country Code"
8770
  msgstr ""
8771
 
8772
- #: includes/reports/class-wcj-reports-customers.php:152
8773
  msgid "Customers Count"
8774
  msgstr ""
8775
 
8776
- #: includes/reports/class-wcj-reports-customers.php:153
8777
  msgid "Percent of total"
8778
  msgstr ""
8779
 
8780
- #: includes/reports/class-wcj-reports-customers.php:175
8781
  msgid "Report for:"
8782
  msgstr ""
8783
 
8784
- #: includes/reports/class-wcj-reports-monthly-sales.php:50
8785
  msgid "Currency rates saved."
8786
  msgstr ""
8787
 
8788
- #: includes/reports/class-wcj-reports-monthly-sales.php:54
8789
  msgid "Currency rates deleted."
8790
  msgstr ""
8791
 
8792
- #: includes/reports/class-wcj-reports-monthly-sales.php:101
8793
  msgid "Days"
8794
  msgstr ""
8795
 
8796
- #: includes/reports/class-wcj-reports-monthly-sales.php:102
8797
  msgid "Total Orders"
8798
  msgstr ""
8799
 
8800
- #: includes/reports/class-wcj-reports-monthly-sales.php:103
8801
  msgid "Orders Average / Day"
8802
  msgstr ""
8803
 
8804
- #: includes/reports/class-wcj-reports-monthly-sales.php:104
8805
  #: includes/reports/class-wcj-reports-sales.php:347
8806
  msgid "Total Sum"
8807
  msgstr ""
8808
 
8809
- #: includes/reports/class-wcj-reports-monthly-sales.php:105
8810
  msgid "Total Sum (excl. TAX)"
8811
  msgstr ""
8812
 
8813
- #: includes/reports/class-wcj-reports-monthly-sales.php:106
8814
  msgid "Average / Order (excl. TAX)"
8815
  msgstr ""
8816
 
8817
- #: includes/reports/class-wcj-reports-monthly-sales.php:107
8818
  msgid "Average / Day (excl. TAX)"
8819
  msgstr ""
8820
 
8821
- #: includes/reports/class-wcj-reports-monthly-sales.php:108
8822
  msgid "Currency Rates"
8823
  msgstr ""
8824
 
8825
- #: includes/reports/class-wcj-reports-monthly-sales.php:109
8826
  msgid "Orders by Currency"
8827
  msgstr ""
8828
 
8829
- #: includes/reports/class-wcj-reports-monthly-sales.php:222
8830
- #: includes/reports/class-wcj-reports-monthly-sales.php:238
8831
- #: includes/reports/class-wcj-reports-monthly-sales.php:310
8832
- #: includes/reports/class-wcj-reports-monthly-sales.php:315
8833
  #, php-format
8834
  msgid "Forecast: %s"
8835
  msgstr ""
8836
 
8837
- #: includes/reports/class-wcj-reports-monthly-sales.php:262
8838
  msgid "Grab average rate"
8839
  msgstr ""
8840
 
8841
- #: includes/reports/class-wcj-reports-monthly-sales.php:321
8842
  msgid "Totals"
8843
  msgstr ""
8844
 
8845
- #: includes/reports/class-wcj-reports-monthly-sales.php:365
8846
  msgid "Report currency"
8847
  msgstr ""
8848
 
8849
- #: includes/reports/class-wcj-reports-monthly-sales.php:385
8850
  #, php-format
8851
  msgid "Report generated in: %s s"
8852
  msgstr ""
8853
 
8854
- #: includes/reports/class-wcj-reports-monthly-sales.php:389
8855
  msgid "Save Currency Rates"
8856
  msgstr ""
8857
 
8858
- #: includes/reports/class-wcj-reports-monthly-sales.php:393
8859
  msgid "Reset Currency Rates"
8860
  msgstr ""
8861
 
8862
- #: includes/reports/class-wcj-reports-product-sales-daily.php:183
8863
  #: includes/reports/class-wcj-reports-sales.php:367
8864
  #: includes/reports/wcj-class-reports-sales-gateways.php:128
8865
  msgid "Reports Settings"
8866
  msgstr ""
8867
 
8868
- #: includes/reports/class-wcj-reports-product-sales-daily.php:214
8869
  #: includes/reports/wcj-class-reports-sales-gateways.php:160
8870
  msgid "From:"
8871
  msgstr ""
8872
 
8873
- #: includes/reports/class-wcj-reports-product-sales-daily.php:217
8874
  #: includes/reports/wcj-class-reports-sales-gateways.php:163
8875
  msgid "To:"
8876
  msgstr ""
8877
 
8878
- #: includes/reports/class-wcj-reports-product-sales-daily.php:220
8879
  msgid "Product:"
8880
  msgstr ""
8881
 
8882
- #: includes/reports/class-wcj-reports-product-sales-daily.php:310
8883
  #, php-format
8884
  msgid "Total: %d"
8885
  msgstr ""
8886
 
 
8887
  #: includes/reports/class-wcj-reports-product-sales-daily.php:315
8888
- #: includes/reports/class-wcj-reports-product-sales-daily.php:320
8889
  #, php-format
8890
  msgid "Total: %s"
8891
  msgstr ""
8892
 
8893
- #: includes/reports/class-wcj-reports-product-sales-daily.php:339
8894
  #: includes/reports/wcj-class-reports-sales-gateways.php:196
8895
  #, php-format
8896
  msgid "Total orders: %d"
8897
  msgstr ""
8898
 
8899
- #: includes/reports/class-wcj-reports-product-sales-daily.php:340
8900
  #: includes/reports/class-wcj-reports-sales.php:400
8901
  #: includes/reports/wcj-class-reports-sales-gateways.php:198
8902
  msgid "No sales data for current period."
@@ -10027,7 +10026,7 @@ msgstr ""
10027
  #: includes/settings/wcj-settings-offer-price.php:221
10028
  #: includes/settings/wcj-settings-offer-price.php:229
10029
  #: includes/tools/class-wcj-order-statuses-tool.php:187
10030
- #: includes/tools/class-wcj-order-statuses-tool.php:271
10031
  msgid "Label"
10032
  msgstr ""
10033
 
@@ -10124,7 +10123,7 @@ msgid "Preset"
10124
  msgstr ""
10125
 
10126
  #: includes/settings/wcj-settings-admin-orders-list.php:194
10127
- #: includes/tools/class-wcj-order-statuses-tool.php:228
10128
  msgid "Statuses"
10129
  msgstr ""
10130
 
@@ -10693,7 +10692,7 @@ msgstr ""
10693
  #: includes/settings/wcj-settings-checkout-custom-fields.php:219
10694
  #: includes/settings/wcj-settings-eu-vat-number.php:51
10695
  #: includes/templates/wcj-radio-for-variations.php:25
10696
- #: includes/tools/class-wcj-order-statuses-tool.php:267
10697
  msgid "Clear"
10698
  msgstr ""
10699
 
@@ -11860,7 +11859,7 @@ msgstr ""
11860
  #: includes/settings/wcj-settings-multicurrency-base-price.php:26
11861
  #: includes/settings/wcj-settings-multicurrency.php:26
11862
  #: includes/settings/wcj-settings-payment-gateways-currency.php:76
11863
- #: includes/settings/wcj-settings-price-by-country.php:409
11864
  msgid "Exchange Rates Updates"
11865
  msgstr ""
11866
 
@@ -11974,7 +11973,7 @@ msgid "Custom Currency"
11974
  msgstr ""
11975
 
11976
  #: includes/settings/wcj-settings-currency-exchange-rates.php:192
11977
- #: includes/settings/wcj-settings-price-by-country.php:404
11978
  msgid "Exchange Rates"
11979
  msgstr ""
11980
 
@@ -11994,7 +11993,7 @@ msgstr ""
11994
  #: includes/settings/wcj-settings-multicurrency-base-price.php:151
11995
  #: includes/settings/wcj-settings-multicurrency.php:322
11996
  #: includes/settings/wcj-settings-multicurrency.php:366
11997
- #: includes/settings/wcj-settings-price-by-country.php:381
11998
  #: includes/settings/wcj-settings-price-formats.php:68
11999
  msgid "Currency"
12000
  msgstr ""
@@ -12067,7 +12066,7 @@ msgstr ""
12067
  #: includes/settings/wcj-settings-multicurrency-base-price.php:31
12068
  #: includes/settings/wcj-settings-multicurrency.php:32
12069
  #: includes/settings/wcj-settings-payment-gateways-currency.php:81
12070
- #: includes/settings/wcj-settings-price-by-country.php:414
12071
  msgid "Enter Rates Manually"
12072
  msgstr ""
12073
 
@@ -12075,7 +12074,7 @@ msgstr ""
12075
  #: includes/settings/wcj-settings-multicurrency-base-price.php:32
12076
  #: includes/settings/wcj-settings-multicurrency.php:33
12077
  #: includes/settings/wcj-settings-payment-gateways-currency.php:82
12078
- #: includes/settings/wcj-settings-price-by-country.php:415
12079
  msgid "Automatically via Currency Exchange Rates module"
12080
  msgstr ""
12081
 
@@ -12083,7 +12082,7 @@ msgstr ""
12083
  #: includes/settings/wcj-settings-multicurrency-base-price.php:35
12084
  #: includes/settings/wcj-settings-multicurrency.php:36
12085
  #: includes/settings/wcj-settings-payment-gateways-currency.php:85
12086
- #: includes/settings/wcj-settings-price-by-country.php:418
12087
  msgid "Visit"
12088
  msgstr ""
12089
 
@@ -12091,7 +12090,7 @@ msgstr ""
12091
  #: includes/settings/wcj-settings-multicurrency-base-price.php:35
12092
  #: includes/settings/wcj-settings-multicurrency.php:36
12093
  #: includes/settings/wcj-settings-payment-gateways-currency.php:87
12094
- #: includes/settings/wcj-settings-price-by-country.php:418
12095
  msgid "Currency Exchange Rates module"
12096
  msgstr ""
12097
 
@@ -13200,7 +13199,7 @@ msgstr ""
13200
  #: includes/settings/wcj-settings-global-discount.php:231
13201
  #: includes/settings/wcj-settings-multicurrency-base-price.php:80
13202
  #: includes/settings/wcj-settings-multicurrency.php:259
13203
- #: includes/settings/wcj-settings-price-by-country.php:246
13204
  #: includes/settings/wcj-settings-price-by-user-role.php:115
13205
  #: includes/settings/wcj-settings-product-addons.php:279
13206
  #: includes/settings/wcj-settings-product-price-by-formula.php:136
@@ -13210,7 +13209,7 @@ msgstr ""
13210
  #: includes/settings/wcj-settings-global-discount.php:232
13211
  #: includes/settings/wcj-settings-multicurrency-base-price.php:81
13212
  #: includes/settings/wcj-settings-multicurrency.php:260
13213
- #: includes/settings/wcj-settings-price-by-country.php:247
13214
  #: includes/settings/wcj-settings-price-by-user-role.php:116
13215
  #: includes/settings/wcj-settings-product-addons.php:280
13216
  #: includes/settings/wcj-settings-product-price-by-formula.php:137
@@ -13437,7 +13436,7 @@ msgstr ""
13437
 
13438
  #: includes/settings/wcj-settings-multicurrency-base-price.php:72
13439
  #: includes/settings/wcj-settings-multicurrency.php:274
13440
- #: includes/settings/wcj-settings-price-by-country.php:274
13441
  #: includes/settings/wcj-settings-product-price-by-formula.php:143
13442
  msgid "Save Calculated Products Prices"
13443
  msgstr ""
@@ -13597,12 +13596,12 @@ msgid ""
13597
  msgstr ""
13598
 
13599
  #: includes/settings/wcj-settings-multicurrency.php:125
13600
- #: includes/settings/wcj-settings-price-by-country.php:200
13601
  msgid "Free Shipping"
13602
  msgstr ""
13603
 
13604
  #: includes/settings/wcj-settings-multicurrency.php:128
13605
- #: includes/settings/wcj-settings-price-by-country.php:203
13606
  msgid "Converts minimum amount from WooCommerce Free Shipping native method."
13607
  msgstr ""
13608
 
@@ -13611,7 +13610,7 @@ msgid "WooCommerce Fixed Coupons"
13611
  msgstr ""
13612
 
13613
  #: includes/settings/wcj-settings-multicurrency.php:136
13614
- #: includes/settings/wcj-settings-price-by-country.php:211
13615
  msgid ""
13616
  "When a fixed coupon is used its value changes according to the current "
13617
  "currency."
@@ -13751,7 +13750,7 @@ msgid ""
13751
  msgstr ""
13752
 
13753
  #: includes/settings/wcj-settings-multicurrency.php:275
13754
- #: includes/settings/wcj-settings-price-by-country.php:275
13755
  #: includes/settings/wcj-settings-product-price-by-formula.php:144
13756
  msgid ""
13757
  "This may help if you are experiencing compatibility issues with other plugins."
@@ -15656,7 +15655,7 @@ msgid "Replace"
15656
  msgstr ""
15657
 
15658
  #: includes/settings/wcj-settings-pdf-invoicing-display.php:30
15659
- #: includes/settings/wcj-settings-price-by-country.php:388
15660
  #: includes/settings/wcj-settings-shipping.php:34
15661
  msgid "Admin Title"
15662
  msgstr ""
@@ -16196,115 +16195,115 @@ msgstr ""
16196
  msgid "Price Filter Widget and Sorting by Price Support"
16197
  msgstr ""
16198
 
16199
- #: includes/settings/wcj-settings-price-by-country.php:194
16200
  msgid "Recalculate price filter widget and sorting by price product prices."
16201
  msgstr ""
16202
 
16203
- #: includes/settings/wcj-settings-price-by-country.php:209
16204
  msgid "WooCommerce Coupons"
16205
  msgstr ""
16206
 
16207
- #: includes/settings/wcj-settings-price-by-country.php:217
16208
  msgid "Woo Discount Rules"
16209
  msgstr ""
16210
 
16211
- #: includes/settings/wcj-settings-price-by-country.php:221
16212
  #, php-format
16213
  msgid ""
16214
  "Adds compatibility with <a href=\"%s\" target=\"_blank\">Woo Discount Rules</"
16215
  "a> plugin."
16216
  msgstr ""
16217
 
16218
- #: includes/settings/wcj-settings-price-by-country.php:221
16219
  #, php-format
16220
  msgid ""
16221
  "If it doesn't work properly try to enable <a href=\"%s\">redirect to the cart "
16222
  "page after successful addition</a> option."
16223
  msgstr ""
16224
 
16225
- #: includes/settings/wcj-settings-price-by-country.php:227
16226
  msgid "WooCommerce Points and Rewards"
16227
  msgstr ""
16228
 
16229
- #: includes/settings/wcj-settings-price-by-country.php:231
16230
  #, php-format
16231
  msgid ""
16232
  "Adds compatibility with <a href=\"%s\" target=\"_blank\">WooCommerce Points "
16233
  "and Rewards</a> plugin."
16234
  msgstr ""
16235
 
16236
- #: includes/settings/wcj-settings-price-by-country.php:253
16237
  msgid "User IP Detection Method"
16238
  msgstr ""
16239
 
16240
- #: includes/settings/wcj-settings-price-by-country.php:263
16241
  msgid "Price Format Method"
16242
  msgstr ""
16243
 
16244
- #: includes/settings/wcj-settings-price-by-country.php:264
16245
  msgid "The moment \"Pretty Price\" and \"Rounding\" will be applied"
16246
  msgstr ""
16247
 
16248
- #: includes/settings/wcj-settings-price-by-country.php:269
16249
  msgid "get_price()"
16250
  msgstr ""
16251
 
16252
- #: includes/settings/wcj-settings-price-by-country.php:270
16253
  msgid "wc_get_price_to_display()"
16254
  msgstr ""
16255
 
16256
- #: includes/settings/wcj-settings-price-by-country.php:282
16257
  msgid "Save Country Group ID"
16258
  msgstr ""
16259
 
16260
- #: includes/settings/wcj-settings-price-by-country.php:283
16261
  msgid ""
16262
  "Try to disable it if the country detection is not correct, most probably if "
16263
  "\"Override Country Options\" is enabled."
16264
  msgstr ""
16265
 
16266
- #: includes/settings/wcj-settings-price-by-country.php:294
16267
  msgid "Country Groups"
16268
  msgstr ""
16269
 
16270
- #: includes/settings/wcj-settings-price-by-country.php:299
16271
  msgid "Countries Selection"
16272
  msgstr ""
16273
 
16274
- #: includes/settings/wcj-settings-price-by-country.php:300
16275
  msgid "Choose how do you want to enter countries groups in admin."
16276
  msgstr ""
16277
 
16278
- #: includes/settings/wcj-settings-price-by-country.php:305
16279
  msgid "Comma separated list"
16280
  msgstr ""
16281
 
16282
- #: includes/settings/wcj-settings-price-by-country.php:306
16283
  msgid "Multiselect"
16284
  msgstr ""
16285
 
16286
- #: includes/settings/wcj-settings-price-by-country.php:307
16287
  #: includes/settings/wcj-settings-product-by-condition.php:90
16288
  #: includes/settings/wcj-settings-related-products.php:181
16289
  msgid "Chosen select"
16290
  msgstr ""
16291
 
16292
- #: includes/settings/wcj-settings-price-by-country.php:311
16293
  msgid "Autogenerate Groups"
16294
  msgstr ""
16295
 
16296
- #: includes/settings/wcj-settings-price-by-country.php:317
16297
  msgid "Groups Number"
16298
  msgstr ""
16299
 
16300
- #: includes/settings/wcj-settings-price-by-country.php:346
16301
  msgid ""
16302
  "Countries. List of comma separated country codes.<br>For country codes and "
16303
  "predefined sets visit <a href=\"https://booster.io/country-codes/\" target="
16304
  "\"_blank\">https://booster.io/country-codes/</a>"
16305
  msgstr ""
16306
 
16307
- #: includes/settings/wcj-settings-price-by-country.php:441
16308
  msgid "Multiply Price by"
16309
  msgstr ""
16310
 
@@ -17170,7 +17169,7 @@ msgstr ""
17170
 
17171
  #: includes/settings/wcj-settings-product-by-condition.php:91
17172
  #: includes/settings/wcj-settings-related-products.php:182
17173
- #: includes/shortcodes/class-wcj-order-items-shortcodes.php:216
17174
  msgid "Standard"
17175
  msgstr ""
17176
 
@@ -18535,6 +18534,13 @@ msgstr ""
18535
  msgid "Template - Form"
18536
  msgstr ""
18537
 
 
 
 
 
 
 
 
18538
  #: includes/settings/wcj-settings-products-per-page.php:72
18539
  msgid "Template - After Form"
18540
  msgstr ""
@@ -20748,37 +20754,37 @@ msgid "%s status delete failed!"
20748
  msgstr ""
20749
 
20750
  #: includes/tools/class-wcj-order-statuses-tool.php:188
20751
- #: includes/tools/class-wcj-order-statuses-tool.php:272
20752
  msgid "Icon Code"
20753
  msgstr ""
20754
 
20755
  #: includes/tools/class-wcj-order-statuses-tool.php:189
20756
- #: includes/tools/class-wcj-order-statuses-tool.php:273
20757
  msgid "Color"
20758
  msgstr ""
20759
 
20760
  #: includes/tools/class-wcj-order-statuses-tool.php:190
20761
- #: includes/tools/class-wcj-order-statuses-tool.php:274
20762
  msgid "Text Color"
20763
  msgstr ""
20764
 
20765
- #: includes/tools/class-wcj-order-statuses-tool.php:209
20766
  msgid "Get Booster Plus to enable."
20767
  msgstr ""
20768
 
20769
- #: includes/tools/class-wcj-order-statuses-tool.php:265
20770
  msgid "Edit custom status"
20771
  msgstr ""
20772
 
20773
- #: includes/tools/class-wcj-order-statuses-tool.php:265
20774
  msgid "Add new custom status"
20775
  msgstr ""
20776
 
20777
- #: includes/tools/class-wcj-order-statuses-tool.php:270
20778
  msgid "Slug (without <code>wc-</code> prefix)"
20779
  msgstr ""
20780
 
20781
- #: includes/tools/class-wcj-order-statuses-tool.php:340
20782
  msgid "Delete All Custom Statuses"
20783
  msgstr ""
20784
 
10
  "Content-Type: text/plain; charset=UTF-8\n"
11
  "Content-Transfer-Encoding: 8bit\n"
12
  "Plural-Forms: nplurals=2; plural=(n != 1);\n"
13
+ "X-Generator: Poedit 2.3\n"
14
  "X-Poedit-Basepath: ..\n"
15
  "X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;"
16
  "_n_noop:1,2;_c;_nc:4c,1,2;_x:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2;_ex:1,2c;"
34
  msgstr ""
35
 
36
  #: includes/admin/class-wc-settings-jetpack.php:33
37
+ #: includes/admin/class-wc-settings-jetpack.php:394
38
  #: includes/class-wcj-admin-bar.php:299
39
  #: includes/class-wcj-checkout-files-upload.php:273
40
  #: includes/class-wcj-eu-vat-number.php:179
44
  #: includes/class-wcj-track-users.php:174 includes/class-wcj-track-users.php:265
45
  #: includes/classes/class-wcj-module.php:678
46
  #: includes/classes/class-wcj-module.php:887
47
+ #: includes/settings/wcj-settings-price-by-country.php:267
48
  msgid "Booster"
49
  msgstr ""
50
 
71
  "from Booster team!"
72
  msgstr ""
73
 
74
+ #: includes/admin/class-wc-settings-jetpack.php:247
75
+ #: includes/admin/class-wc-settings-jetpack.php:313
76
+ #: includes/admin/class-wc-settings-jetpack.php:931
77
  #: includes/admin/wcj-modules-cats.php:17 includes/class-wcj-admin-bar.php:234
78
  #: includes/class-wcj-my-account.php:39
79
  msgid "Dashboard"
80
  msgstr ""
81
 
82
+ #: includes/admin/class-wc-settings-jetpack.php:248
83
  msgid "All Module"
84
  msgstr ""
85
 
86
+ #: includes/admin/class-wc-settings-jetpack.php:249
87
  msgid "Active Modules"
88
  msgstr ""
89
 
90
+ #: includes/admin/class-wc-settings-jetpack.php:250
91
  #: includes/class-wcj-admin-bar.php:167
92
  msgid "Manage Settings"
93
  msgstr ""
94
 
95
+ #: includes/admin/class-wc-settings-jetpack.php:361
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:367
103
  msgid "Module will be removed from the module's list as soon as you disable it."
104
  msgstr ""
105
 
106
+ #: includes/admin/class-wc-settings-jetpack.php:379
107
  #, php-format
108
  msgid ""
109
  "Please note that <em>%s</em> module is currently under development. Until "
111
  "be moved to paid plugin version."
112
  msgstr ""
113
 
114
+ #: includes/admin/class-wc-settings-jetpack.php:390
115
  #: includes/class-wcj-admin-bar.php:411
116
  #: includes/settings/wcj-settings-emails-verification.php:152
117
+ #: includes/settings/wcj-settings-price-by-country.php:266
118
  msgid "WooCommerce"
119
  msgstr ""
120
 
121
+ #: includes/admin/class-wc-settings-jetpack.php:392
122
+ #: includes/admin/class-wc-settings-jetpack.php:623
123
  #: includes/class-wcj-admin-bar.php:184 includes/class-wcj-admin-bar.php:535
124
+ #: includes/class-wcj-admin-bar.php:635 includes/core/class-wcj-admin.php:140
125
  msgid "Settings"
126
  msgstr ""
127
 
128
+ #: includes/admin/class-wc-settings-jetpack.php:449
129
  msgid ""
130
  "This section lets you export, import or reset all Booster's modules settings."
131
  msgstr ""
132
 
133
+ #: includes/admin/class-wc-settings-jetpack.php:477
134
+ #: includes/admin/class-wc-settings-jetpack.php:1049
135
  #: includes/class-wcj-export-import.php:31
136
  msgid "Export"
137
  msgstr ""
138
 
139
+ #: includes/admin/class-wc-settings-jetpack.php:478
140
  msgid "Export all Booster's options to a file."
141
  msgstr ""
142
 
143
+ #: includes/admin/class-wc-settings-jetpack.php:481
144
+ #: includes/admin/class-wc-settings-jetpack.php:1040
145
  #: includes/class-wcj-purchase-data.php:124
146
  msgid "Import"
147
  msgstr ""
148
 
149
+ #: includes/admin/class-wc-settings-jetpack.php:483
150
  msgid "Import all Booster's options from a file."
151
  msgstr ""
152
 
153
+ #: includes/admin/class-wc-settings-jetpack.php:487
154
  msgid ""
155
  "This will reset settings to defaults for all Booster modules. Are you sure?"
156
  msgstr ""
157
 
158
+ #: includes/admin/class-wc-settings-jetpack.php:488
159
+ #: includes/admin/class-wc-settings-jetpack.php:1060
160
  msgid "Reset"
161
  msgstr ""
162
 
163
+ #: includes/admin/class-wc-settings-jetpack.php:489
164
  msgid "Reset all Booster's options."
165
  msgstr ""
166
 
167
+ #: includes/admin/class-wc-settings-jetpack.php:493
168
  msgid "This will delete all Booster meta. Are you sure?"
169
  msgstr ""
170
 
171
+ #: includes/admin/class-wc-settings-jetpack.php:494
172
+ #: includes/admin/class-wc-settings-jetpack.php:1069
173
  msgid "Reset meta"
174
  msgstr ""
175
 
176
+ #: includes/admin/class-wc-settings-jetpack.php:495
177
  msgid "Reset all Booster's meta."
178
  msgstr ""
179
 
180
+ #: includes/admin/class-wc-settings-jetpack.php:548
181
  msgid "Version"
182
  msgstr ""
183
 
184
+ #: includes/admin/class-wc-settings-jetpack.php:575
185
+ #: includes/admin/class-wc-settings-jetpack.php:584
186
  msgid "Select All"
187
  msgstr ""
188
 
189
+ #: includes/admin/class-wc-settings-jetpack.php:577
190
+ #: includes/admin/class-wc-settings-jetpack.php:585
191
  msgid "Module"
192
  msgstr ""
193
 
194
+ #: includes/admin/class-wc-settings-jetpack.php:579
195
+ #: includes/admin/class-wc-settings-jetpack.php:588
196
  #: includes/export/class-wcj-export-fields-helper.php:297
197
  #: includes/gateways/class-wc-gateway-wcj-custom.php:67
198
  #: includes/settings/wcj-settings-checkout-custom-fields.php:181
203
  msgid "Description"
204
  msgstr ""
205
 
206
+ #: includes/admin/class-wc-settings-jetpack.php:625
207
+ #: includes/admin/class-wc-settings-jetpack.php:1078
208
  #: includes/class-wcj-admin-bar.php:188
209
+ #: includes/classes/class-wcj-module.php:1040
210
  msgid "Documentation"
211
  msgstr ""
212
 
213
+ #: includes/admin/class-wc-settings-jetpack.php:636
214
  msgid "No active modules found."
215
  msgstr ""
216
 
217
+ #: includes/admin/class-wc-settings-jetpack.php:642
218
  msgid "Total Modules:"
219
  msgstr ""
220
 
221
+ #: includes/admin/class-wc-settings-jetpack.php:706
222
  msgid "Autoload Booster's Options"
223
  msgstr ""
224
 
225
+ #: includes/admin/class-wc-settings-jetpack.php:708
226
  msgid ""
227
  "Choose if you want Booster's options to be autoloaded when calling "
228
  "add_option. After saving this option, you need to Reset all Booster's "
229
  "settings. Leave default value (i.e. Enabled) if not sure."
230
  msgstr ""
231
 
232
+ #: includes/admin/class-wc-settings-jetpack.php:713
233
  msgid "Load Modules on Init Hook"
234
  msgstr ""
235
 
236
+ #: includes/admin/class-wc-settings-jetpack.php:715
237
  msgid "Choose if you want to load Booster Modules on Init hook."
238
  msgstr ""
239
 
240
+ #: includes/admin/class-wc-settings-jetpack.php:715
241
  msgid ""
242
  "It will load the locale appropriately if users change it from the profile "
243
  "page."
244
  msgstr ""
245
 
246
+ #: includes/admin/class-wc-settings-jetpack.php:720
247
  msgid "Use List Instead of Comma Separated Text for Products in Settings"
248
  msgstr ""
249
 
250
+ #: includes/admin/class-wc-settings-jetpack.php:724
251
+ #: includes/admin/class-wc-settings-jetpack.php:745
252
+ #: includes/admin/class-wc-settings-jetpack.php:761
253
  #, php-format
254
  msgid "Supported modules: %s."
255
  msgstr ""
256
 
257
+ #: includes/admin/class-wc-settings-jetpack.php:728
258
  #: includes/class-wcj-payment-gateways-per-category.php:31
259
  msgid "Gateways per Product or Category"
260
  msgstr ""
261
 
262
+ #: includes/admin/class-wc-settings-jetpack.php:729
263
  #: includes/class-wcj-global-discount.php:38
264
  #: includes/settings/wcj-settings-product-addons.php:275
265
  msgid "Global Discount"
266
  msgstr ""
267
 
268
+ #: includes/admin/class-wc-settings-jetpack.php:730
269
+ #: includes/admin/class-wc-settings-jetpack.php:749
270
+ #: includes/admin/class-wc-settings-jetpack.php:765
271
  #: includes/class-wcj-product-custom-info.php:29
272
  #: includes/functions/wcj-functions-general.php:488
273
  msgid "Product Info"
274
  msgstr ""
275
 
276
+ #: includes/admin/class-wc-settings-jetpack.php:731
277
  #: includes/admin/wcj-welcome-screen-content.php:82
278
  #: includes/class-wcj-product-input-fields.php:29
279
  #: includes/input-fields/class-wcj-product-input-fields-core.php:214
280
  msgid "Product Input Fields"
281
  msgstr ""
282
 
283
+ #: includes/admin/class-wc-settings-jetpack.php:732
284
  msgid "Products XML"
285
  msgstr ""
286
 
287
+ #: includes/admin/class-wc-settings-jetpack.php:733
288
  #: includes/class-wcj-related-products.php:52
289
  #: includes/settings/meta-box/wcj-settings-meta-box-related-products.php:33
290
  #: includes/settings/wcj-settings-free-price.php:23
291
  msgid "Related Products"
292
  msgstr ""
293
 
294
+ #: includes/admin/class-wc-settings-jetpack.php:741
295
  msgid ""
296
  "Use List Instead of Comma Separated Text for Products Categories in Settings"
297
  msgstr ""
298
 
299
+ #: includes/admin/class-wc-settings-jetpack.php:757
300
  msgid "Use List Instead of Comma Separated Text for Products Tags in Settings"
301
  msgstr ""
302
 
303
+ #: includes/admin/class-wc-settings-jetpack.php:796
304
+ #: includes/core/class-wcj-admin.php:124
305
  msgid "Booster for WooCommerce"
306
  msgstr ""
307
 
308
+ #: includes/admin/class-wc-settings-jetpack.php:890
309
  msgid "Need Help?"
310
  msgstr ""
311
 
312
+ #: includes/admin/class-wc-settings-jetpack.php:917
313
  #: includes/class-wcj-my-account.php:32
314
  msgid "My Account"
315
  msgstr ""
316
 
317
+ #: includes/admin/class-wc-settings-jetpack.php:921
318
  msgid "Get Booster Plus"
319
  msgstr ""
320
 
321
+ #: includes/admin/class-wc-settings-jetpack.php:928
322
  msgid "Getting Started"
323
  msgstr ""
324
 
325
+ #: includes/admin/class-wc-settings-jetpack.php:932
326
  msgid "Navigating Categories"
327
  msgstr ""
328
 
329
+ #: includes/admin/class-wc-settings-jetpack.php:933
330
  msgid "How to get started with booster"
331
  msgstr ""
332
 
333
+ #: includes/admin/class-wc-settings-jetpack.php:938
334
  msgid "Frequently Asked Questions"
335
  msgstr ""
336
 
337
+ #: includes/admin/class-wc-settings-jetpack.php:943
338
  msgid "Do I need to have coding skills to use Booster Plus?"
339
  msgstr ""
340
 
341
+ #: includes/admin/class-wc-settings-jetpack.php:947
342
  msgid ""
343
  "Absolutely not. You can configure pretty much everything Booster Plus has to "
344
  "offer without any coding knowledge."
345
  msgstr ""
346
 
347
+ #: includes/admin/class-wc-settings-jetpack.php:952
348
  msgid "Will Booster Plus slow down my website?"
349
  msgstr ""
350
 
351
+ #: includes/admin/class-wc-settings-jetpack.php:956
352
  msgid ""
353
  "Absolutely not. Booster Plus is carefully built with performance in mind."
354
  msgstr ""
355
 
356
+ #: includes/admin/class-wc-settings-jetpack.php:961
357
  msgid "Do you offer refunds?"
358
  msgstr ""
359
 
360
+ #: includes/admin/class-wc-settings-jetpack.php:965
361
  #, php-format
362
  msgid ""
363
  "If you are not completely satisfied with Booster Plus within the fist 30 "
365
  "no questions asked."
366
  msgstr ""
367
 
368
+ #: includes/admin/class-wc-settings-jetpack.php:970
369
  msgid "Can I use Booster Plus on client sites?"
370
  msgstr ""
371
 
372
+ #: includes/admin/class-wc-settings-jetpack.php:974
373
  msgid ""
374
  "Yes, you can use Booster Plus on client sites. You can purchase the multiple "
375
  "sites license of Booster Plus."
376
  msgstr ""
377
 
378
+ #: includes/admin/class-wc-settings-jetpack.php:979
379
  msgid "Do you have an affiliate program?"
380
  msgstr ""
381
 
382
+ #: includes/admin/class-wc-settings-jetpack.php:983
383
  msgid "Yes, We do have an affiliate program. "
384
  msgstr ""
385
 
386
+ #: includes/admin/class-wc-settings-jetpack.php:983
387
  msgid "Click here"
388
  msgstr ""
389
 
390
+ #: includes/admin/class-wc-settings-jetpack.php:983
391
  msgid " for the details."
392
  msgstr ""
393
 
394
+ #: includes/admin/class-wc-settings-jetpack.php:988
395
  msgid ""
396
  "Why should I choose the Booster Plus suite over other individual plugins?"
397
  msgstr ""
398
 
399
+ #: includes/admin/class-wc-settings-jetpack.php:992
400
  msgid ""
401
  "Oh, that's an easy one! Implementing just a few modules from the Booster Plus "
402
  "suite is more cost-effective than using dozens of individual plugins often "
408
  "your WooCommerce site easily."
409
  msgstr ""
410
 
411
+ #: includes/admin/class-wc-settings-jetpack.php:997
412
  msgid "What features does Booster Plus have?"
413
  msgstr ""
414
 
415
+ #: includes/admin/class-wc-settings-jetpack.php:1001
416
  msgid "You can see all the features at "
417
  msgstr ""
418
 
419
+ #: includes/admin/class-wc-settings-jetpack.php:1001
420
  msgid "About Booster"
421
  msgstr ""
422
 
423
+ #: includes/admin/class-wc-settings-jetpack.php:1001
424
  msgid " page."
425
  msgstr ""
426
 
427
+ #: includes/admin/class-wc-settings-jetpack.php:1005
428
  msgid "Still have a question?"
429
  msgstr ""
430
 
431
+ #: includes/admin/class-wc-settings-jetpack.php:1006
432
  msgid "CONTACT BOOSTER SUPPORT"
433
  msgstr ""
434
 
435
+ #: includes/admin/class-wc-settings-jetpack.php:1012
436
  msgid "Connect with Booster"
437
  msgstr ""
438
 
439
+ #: includes/admin/class-wc-settings-jetpack.php:1016
440
  msgid "BOOSTER WEBSITE"
441
  msgstr ""
442
 
443
+ #: includes/admin/class-wc-settings-jetpack.php:1030
444
+ #: includes/class-wcj-general.php:250 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:285
448
  msgid "Actions"
449
  msgstr ""
450
 
451
+ #: includes/admin/class-wc-settings-jetpack.php:1041
452
  msgid "Import Booster options"
453
  msgstr ""
454
 
455
+ #: includes/admin/class-wc-settings-jetpack.php:1050
456
  msgid "Export Booster options"
457
  msgstr ""
458
 
459
+ #: includes/admin/class-wc-settings-jetpack.php:1061
460
  msgid "Reset all Booster's options"
461
  msgstr ""
462
 
463
+ #: includes/admin/class-wc-settings-jetpack.php:1070
464
  msgid "Reset all Booster's meta"
465
  msgstr ""
466
 
467
+ #: includes/admin/class-wc-settings-jetpack.php:1085
468
  msgid "Here you can find all documentation of Booster"
469
  msgstr ""
470
 
471
+ #: includes/admin/class-wc-settings-jetpack.php:1087
472
  msgid "See Documentation"
473
  msgstr ""
474
 
475
+ #: includes/admin/class-wc-settings-jetpack.php:1094
476
  msgid "Latest updates"
477
  msgstr ""
478
 
479
+ #: includes/admin/class-wc-settings-jetpack.php:1097
480
  msgid "Version "
481
  msgstr ""
482
 
483
+ #: includes/admin/class-wc-settings-jetpack.php:1102
484
  msgid "SEE MORE"
485
  msgstr ""
486
 
487
+ #: includes/admin/class-wc-settings-jetpack.php:1113
488
+ #: includes/core/class-wcj-admin.php:98
489
  msgid "Please rate "
490
  msgstr ""
491
 
492
+ #: includes/admin/class-wc-settings-jetpack.php:1113
493
+ #: includes/core/class-wcj-admin.php:98
494
  msgid "Booster for Woocommerce"
495
  msgstr ""
496
 
497
+ #: includes/admin/class-wc-settings-jetpack.php:1121
498
+ #: includes/core/class-wcj-admin.php:106
499
  msgid "WordPress.org"
500
  msgstr ""
501
 
502
+ #: includes/admin/class-wc-settings-jetpack.php:1121
503
+ #: includes/core/class-wcj-admin.php:106
504
  msgid " to help us spread the word. Thank you from Booster team!"
505
  msgstr ""
506
 
507
+ #: includes/admin/class-wc-settings-jetpack.php:1125
508
  msgid "Upgrade today to unlock these popular premium features:"
509
  msgstr ""
510
 
511
+ #: includes/admin/class-wc-settings-jetpack.php:1127
512
  msgid "+ PDF Invoices and Packing slips –"
513
  msgstr ""
514
 
515
+ #: includes/admin/class-wc-settings-jetpack.php:1127
516
  msgid ""
517
  "Add ability to create Proforma Invoices, Credit Notes and Packaging slips"
518
  msgstr ""
519
 
520
+ #: includes/admin/class-wc-settings-jetpack.php:1128
521
  msgid "+ Empty Cart –"
522
  msgstr ""
523
 
524
+ #: includes/admin/class-wc-settings-jetpack.php:1128
525
  msgid ""
526
  "customize empty cart button text, different button positions on cart page"
527
  msgstr ""
528
 
529
+ #: includes/admin/class-wc-settings-jetpack.php:1129
530
  msgid "+ Cart and checkout –"
531
  msgstr ""
532
 
533
+ #: includes/admin/class-wc-settings-jetpack.php:1129
534
  msgid "add multiple – custom fields, custom info blocks, check out file uploads"
535
  msgstr ""
536
 
537
+ #: includes/admin/class-wc-settings-jetpack.php:1130
538
  msgid "+ Mini cart –"
539
  msgstr ""
540
 
541
+ #: includes/admin/class-wc-settings-jetpack.php:1130
542
  msgid "More custom information options"
543
  msgstr ""
544
 
545
+ #: includes/admin/class-wc-settings-jetpack.php:1131
546
  msgid "+ Prices and currencies –"
547
  msgstr ""
548
 
549
+ #: includes/admin/class-wc-settings-jetpack.php:1131
550
  msgid "add more unlimited number of currencies to WooCommerce"
551
  msgstr ""
552
 
553
+ #: includes/admin/class-wc-settings-jetpack.php:1132
554
  msgid "+ Export options –"
555
  msgstr ""
556
 
557
+ #: includes/admin/class-wc-settings-jetpack.php:1132
558
  msgid "more fields enabled"
559
  msgstr ""
560
 
561
+ #: includes/admin/class-wc-settings-jetpack.php:1133
562
  msgid "+ Add to cart –"
563
  msgstr ""
564
 
565
+ #: includes/admin/class-wc-settings-jetpack.php:1133
566
  msgid ""
567
  "customize add to cart messages, Button labels - multiple category groups "
568
  "allowed+ +"
569
  msgstr ""
570
 
571
+ #: includes/admin/class-wc-settings-jetpack.php:1134
572
  msgid "+ More configuration options for payments and shipping"
573
  msgstr ""
574
 
575
+ #: includes/admin/class-wc-settings-jetpack.php:1137
576
  msgid "Upgrade to Booster Plus"
577
  msgstr ""
578
 
625
  msgid "Tools Dashboard"
626
  msgstr ""
627
 
628
+ #: includes/admin/class-wcj-tools.php:109
629
  msgid "Booster for WooCommerce Tools - Dashboard"
630
  msgstr ""
631
 
632
+ #: includes/admin/class-wcj-tools.php:110
633
  msgid ""
634
  "This dashboard lets you check statuses and short descriptions of all "
635
  "available Booster for WooCommerce tools. Tools can be enabled through "
882
  msgid "Don't miss updates from us!"
883
  msgstr ""
884
 
885
+ #: includes/admin/wcj-welcome-screen-content.php:148
886
  msgid "Thank you for subscribing your email"
887
  msgstr ""
888
 
889
+ #: includes/admin/wcj-welcome-screen-content.php:150
890
  msgid "You have already subscribed your email"
891
  msgstr ""
892
 
893
+ #: includes/admin/wcj-welcome-screen-content.php:152
894
  msgid "Something went wrong with your subscription. Please after some time !"
895
  msgstr ""
896
 
897
+ #: includes/admin/wcj-welcome-screen-content.php:160
898
  msgid "Contact Us"
899
  msgstr ""
900
 
901
+ #: includes/admin/wcj-welcome-screen-content.php:162
902
  msgid ""
903
  "Booster Plus customers get access to Premium Support and we respond within 24 "
904
  "business hours."
905
  msgstr ""
906
 
907
+ #: includes/admin/wcj-welcome-screen-content.php:163
908
  msgid "Booster Plus Premium Support"
909
  msgstr ""
910
 
911
+ #: includes/admin/wcj-welcome-screen-content.php:166
912
  msgid ""
913
  "Free users post on WordPress Plugin Support forum here. We check these "
914
  "threads twice every week Mon and Frid to respond."
915
  msgstr ""
916
 
917
+ #: includes/admin/wcj-welcome-screen-content.php:167
918
  msgid "Booster Free Plugin Support"
919
  msgstr ""
920
 
1280
  "filtering."
1281
  msgstr ""
1282
 
1283
+ #: includes/class-wcj-admin-orders-list.php:227
1284
  msgid "Not Completed"
1285
  msgstr ""
1286
 
1287
+ #: includes/class-wcj-admin-orders-list.php:269
1288
  msgid "Trash"
1289
  msgstr ""
1290
 
1291
+ #: includes/class-wcj-admin-orders-list.php:367
1292
  #: includes/class-wcj-product-by-country.php:192
1293
  #: includes/class-wcj-product-by-country.php:228
1294
  msgid "All countries"
1295
  msgstr ""
1296
 
1297
+ #: includes/class-wcj-admin-orders-list.php:376
1298
  msgid "All currencies"
1299
  msgstr ""
1300
 
1301
+ #: includes/class-wcj-admin-orders-list.php:418
1302
  #: includes/export/class-wcj-export-fields-helper.php:52
1303
  #: includes/export/class-wcj-export-fields-helper.php:136
1304
  #: includes/export/class-wcj-export-fields-helper.php:219
1306
  msgid "Billing Country"
1307
  msgstr ""
1308
 
1309
+ #: includes/class-wcj-admin-orders-list.php:421
1310
  #: includes/settings/wcj-settings-admin-orders-list.php:37
1311
  msgid "Currency Code"
1312
  msgstr ""
1373
  msgid "Item Meta Value"
1374
  msgstr ""
1375
 
1376
+ #: includes/class-wcj-admin-tools.php:295 includes/class-wcj-admin-tools.php:340
1377
+ #: includes/class-wcj-admin-tools.php:350
1378
  #: includes/class-wcj-product-bulk-meta-editor.php:383
1379
  #: includes/class-wcj-sku.php:710
1380
  #: includes/reports/class-wcj-reports-sales.php:212
1382
  msgid "Product"
1383
  msgstr ""
1384
 
1385
+ #: includes/class-wcj-admin-tools.php:296 includes/class-wcj-admin-tools.php:341
1386
+ #: includes/class-wcj-admin-tools.php:351
1387
  #: includes/reports/class-wcj-reports-stock.php:290
1388
  msgid "Category"
1389
  msgstr ""
1390
 
1391
+ #: includes/class-wcj-admin-tools.php:369
1392
  msgid "Total Products:"
1393
  msgstr ""
1394
 
1554
  msgid "Add fees to WooCommerce cart & checkout."
1555
  msgstr ""
1556
 
1557
+ #: includes/class-wcj-checkout-fees.php:250
1558
  #: includes/settings/wcj-settings-checkout-fees.php:46
1559
  #: includes/settings/wcj-settings-checkout-fees.php:67
1560
  msgid "Fee"
1589
 
1590
  #: includes/class-wcj-checkout-files-upload.php:235
1591
  #: includes/class-wcj-checkout-files-upload.php:250
1592
+ #: includes/class-wcj-checkout-files-upload.php:525
1593
+ #: includes/class-wcj-checkout-files-upload.php:541
1594
  #: includes/settings/wcj-settings-checkout-files-upload.php:120
1595
  #, php-format
1596
  msgid "Wrong file type: \"%s\"!"
1600
  msgid "Uploaded Files"
1601
  msgstr ""
1602
 
1603
+ #: includes/class-wcj-checkout-files-upload.php:307
1604
  msgid "No files uploaded."
1605
  msgstr ""
1606
 
1607
+ #: includes/class-wcj-checkout-files-upload.php:315
1608
  msgid "Delete all files"
1609
  msgstr ""
1610
 
1611
+ #: includes/class-wcj-checkout-files-upload.php:406
1612
  #: includes/settings/wcj-settings-checkout-files-upload.php:260
1613
  msgid "Files were successfully removed."
1614
  msgstr ""
1615
 
1616
+ #: includes/class-wcj-checkout-files-upload.php:435
1617
  msgid "Booster for WooCommerce: Checkout Files Upload: %action%"
1618
  msgstr ""
1619
 
1620
+ #: includes/class-wcj-checkout-files-upload.php:438
1621
  #, php-format
1622
  msgid "Order ID: %1$s; File name: %2$s"
1623
  msgstr ""
1624
 
1625
+ #: includes/class-wcj-checkout-files-upload.php:458
1626
+ #: includes/class-wcj-checkout-files-upload.php:495
1627
  #: includes/settings/wcj-settings-checkout-files-upload.php:150
1628
  #, php-format
1629
  msgid "File \"%s\" was successfully removed."
1630
  msgstr ""
1631
 
1632
+ #: includes/class-wcj-checkout-files-upload.php:470
1633
  msgid "File Removed"
1634
  msgstr ""
1635
 
1636
+ #: includes/class-wcj-checkout-files-upload.php:561
1637
  #: includes/settings/wcj-settings-checkout-files-upload.php:135
1638
  #, php-format
1639
  msgid "File \"%s\" was successfully uploaded."
1640
  msgstr ""
1641
 
1642
+ #: includes/class-wcj-checkout-files-upload.php:576
1643
  msgid "File Uploaded"
1644
  msgstr ""
1645
 
1646
+ #: includes/class-wcj-checkout-files-upload.php:604
1647
  #: includes/settings/wcj-settings-checkout-files-upload.php:141
1648
  msgid "Please select file to upload!"
1649
  msgstr ""
1650
 
1651
+ #: includes/class-wcj-checkout-files-upload.php:933
1652
+ #: includes/class-wcj-checkout-files-upload.php:934
1653
  #: includes/settings/wcj-settings-checkout-files-upload.php:105
1654
  msgid "Upload"
1655
  msgstr ""
1656
 
1657
+ #: includes/class-wcj-checkout-files-upload.php:949
1658
+ #: includes/class-wcj-checkout-files-upload.php:950
1659
  #: includes/settings/wcj-settings-checkout-files-upload.php:111
1660
  #: includes/settings/wcj-settings-price-by-user-role.php:81
1661
  #: includes/settings/wcj-settings-price-by-user-role.php:89
2064
  msgid "Log."
2065
  msgstr ""
2066
 
2067
+ #: includes/class-wcj-debug-tools.php:70
2068
  msgid "Delete Log"
2069
  msgstr ""
2070
 
2071
+ #: includes/class-wcj-debug-tools.php:74
2072
  #, php-format
2073
  msgid "Now: %s"
2074
  msgstr ""
2075
 
2076
+ #: includes/class-wcj-debug-tools.php:79
2077
  msgid "Log is empty."
2078
  msgstr ""
2079
 
2080
+ #: includes/class-wcj-debug-tools.php:111
2081
  msgid "NOT DEFINED"
2082
  msgstr ""
2083
 
2312
  msgid "Customer EU VAT Number"
2313
  msgstr ""
2314
 
2315
+ #: includes/class-wcj-eu-vat-number.php:448
2316
  #: includes/settings/wcj-settings-eu-vat-number.php:169
2317
  msgid "Validating VAT. Please wait..."
2318
  msgstr ""
2319
 
2320
+ #: includes/class-wcj-eu-vat-number.php:449
2321
  #: includes/settings/wcj-settings-eu-vat-number.php:176
2322
  msgid "VAT is valid."
2323
  msgstr ""
2324
 
2325
+ #: includes/class-wcj-eu-vat-number.php:450
2326
  #: includes/settings/wcj-settings-eu-vat-number.php:183
2327
  msgid "VAT is not valid."
2328
  msgstr ""
2329
 
2330
+ #: includes/class-wcj-eu-vat-number.php:451
2331
  #: includes/settings/wcj-settings-eu-vat-number.php:191
2332
  msgid "Validation failed. Please try again."
2333
  msgstr ""
2334
 
2335
+ #: includes/class-wcj-eu-vat-number.php:589
2336
  msgid "<strong>Billing EU VAT Number</strong>is a required field."
2337
  msgstr ""
2338
 
2339
+ #: includes/class-wcj-eu-vat-number.php:608
2340
  #: includes/settings/wcj-settings-eu-vat-number.php:78
2341
  msgid "<strong>EU VAT Number</strong> is not valid."
2342
  msgstr ""
2408
  msgstr ""
2409
 
2410
  #: includes/class-wcj-export-import.php:275
2411
+ #: includes/reports/class-wcj-reports-product-sales-daily.php:217
2412
  #: includes/reports/wcj-class-reports-sales-gateways.php:166
2413
  #: includes/settings/wcj-settings-orders.php:48
2414
  msgid "Filter"
2471
  msgid "Current PHP time limit: %s seconds."
2472
  msgstr ""
2473
 
2474
+ #: includes/class-wcj-general.php:135
2475
  msgid "Booster User Role"
2476
  msgstr ""
2477
 
2478
+ #: includes/class-wcj-general.php:250 includes/class-wcj-general.php:272
2479
  #: includes/class-wcj-sku.php:709
2480
  #: includes/reports/class-wcj-reports-sales.php:211
2481
  #: includes/settings/wcj-settings-cross-sells.php:46
2487
  msgid "ID"
2488
  msgstr ""
2489
 
2490
+ #: includes/class-wcj-general.php:250 includes/class-wcj-general.php:273
2491
  #: includes/class-wcj-offer-price.php:179
2492
  #: includes/export/class-wcj-export-fields-helper.php:287
2493
  #: includes/tools/class-wcj-eu-countries-vat-rates-tool.php:92
2495
  msgid "Name"
2496
  msgstr ""
2497
 
2498
+ #: includes/class-wcj-general.php:250 includes/class-wcj-general.php:274
2499
  msgid "Capabilities"
2500
  msgstr ""
2501
 
2502
+ #: includes/class-wcj-general.php:264
2503
  #: includes/class-wcj-payment-gateways.php:134
2504
  #: includes/class-wcj-product-bulk-meta-editor.php:411
2505
  #: includes/class-wcj-product-by-user.php:287
2506
+ #: includes/pdf-invoices/submodules/class-wcj-pdf-invoicing-display.php:163
2507
+ #: includes/pdf-invoices/submodules/class-wcj-pdf-invoicing-display.php:387
2508
  #: includes/shortcodes/class-wcj-products-add-form-shortcodes.php:394
2509
+ #: includes/tools/class-wcj-order-statuses-tool.php:213
2510
  msgid "Delete"
2511
  msgstr ""
2512
 
2723
  msgid "Lost password"
2724
  msgstr ""
2725
 
2726
+ #: includes/class-wcj-my-account.php:331
2727
  #, php-format
2728
  msgid "Hello %1$s (not %1$s? <a href=\"%2$s\">Log out</a>)"
2729
  msgstr ""
2730
 
2731
+ #: includes/class-wcj-my-account.php:342
2732
  #, php-format
2733
  msgid ""
2734
  "From your account dashboard you can view your <a href=\"%1$s\">recent orders</"
2736
  "href=\"%3$s\">edit your password and account details</a>."
2737
  msgstr ""
2738
 
2739
+ #: includes/class-wcj-my-account.php:452
2740
  msgid "User role"
2741
  msgstr ""
2742
 
2791
  #: includes/class-wcj-offer-price.php:180
2792
  #: includes/export/class-wcj-export-fields-helper.php:83
2793
  #: includes/input-fields/wcj-product-input-fields-options.php:47
2794
+ #: includes/reports/class-wcj-reports-customers.php:101
2795
  #: includes/settings/wcj-settings-checkout-custom-fields.php:156
2796
  msgid "Email"
2797
  msgstr ""
2938
  msgid "Current slug"
2939
  msgstr ""
2940
 
2941
+ #: includes/class-wcj-old-slugs.php:98
2942
  #, php-format
2943
  msgid ""
2944
  "Removing old slugs from database finished! <strong>%d</strong> old slug(s) "
2945
  "deleted."
2946
  msgstr ""
2947
 
2948
+ #: includes/class-wcj-old-slugs.php:100
2949
  msgid "Please <a href=\"\">refresh</a> the page."
2950
  msgstr ""
2951
 
2952
+ #: includes/class-wcj-old-slugs.php:125
2953
  msgid "Old products slugs found:"
2954
  msgstr ""
2955
 
2956
+ #: includes/class-wcj-old-slugs.php:128
2957
  msgid "Remove all old product slugs"
2958
  msgstr ""
2959
 
2960
+ #: includes/class-wcj-old-slugs.php:131
2961
  msgid "Old non-products slugs found:"
2962
  msgstr ""
2963
 
2964
+ #: includes/class-wcj-old-slugs.php:134
2965
  msgid "Remove all old non-product slugs"
2966
  msgstr ""
2967
 
2968
+ #: includes/class-wcj-old-slugs.php:149
2969
  msgid "No old slugs found."
2970
  msgstr ""
2971
 
3058
  msgid "Tool renumerates all orders."
3059
  msgstr ""
3060
 
3061
+ #: includes/class-wcj-order-numbers.php:354
3062
  msgid "Orders successfully renumerated!"
3063
  msgstr ""
3064
 
3065
+ #: includes/class-wcj-order-numbers.php:359
3066
  #, php-format
3067
  msgid "Sequential number generation is enabled. Next order number will be %s."
3068
  msgstr ""
3069
 
3070
+ #: includes/class-wcj-order-numbers.php:372
3071
  #, php-format
3072
  msgid ""
3073
  "Press the button below to renumerate all existing orders starting from order "
3074
  "counter settings in <a href=\"%s\">Order Numbers</a> module."
3075
  msgstr ""
3076
 
3077
+ #: includes/class-wcj-order-numbers.php:380
3078
  msgid "Renumerate orders"
3079
  msgstr ""
3080
 
3088
  "decimal quantities etc."
3089
  msgstr ""
3090
 
3091
+ #: includes/class-wcj-order-quantities.php:288
3092
  #: includes/settings/wcj-settings-order-quantities.php:297
3093
  msgid ""
3094
  "Only one item can be added to the cart. Clear the cart or finish the order, "
3095
  "before adding another item to the cart."
3096
  msgstr ""
3097
 
3098
+ #: includes/class-wcj-order-quantities.php:482
3099
  #: includes/settings/wcj-settings-order-quantities.php:182
3100
  msgid ""
3101
  "Maximum allowed order quantity is %max_cart_total_quantity%. Your current "
3102
  "order quantity is %cart_total_quantity%."
3103
  msgstr ""
3104
 
3105
+ #: includes/class-wcj-order-quantities.php:493
3106
  #: includes/settings/wcj-settings-order-quantities.php:109
3107
  msgid ""
3108
  "Minimum allowed order quantity is %min_cart_total_quantity%. Your current "
3109
  "order quantity is %cart_total_quantity%."
3110
  msgstr ""
3111
 
3112
+ #: includes/class-wcj-order-quantities.php:505
3113
  #: includes/settings/wcj-settings-order-quantities.php:220
3114
  msgid ""
3115
  "Maximum allowed quantity for %product_title% is %max_per_item_quantity%. Your "
3116
  "current item quantity is %item_quantity%."
3117
  msgstr ""
3118
 
3119
+ #: includes/class-wcj-order-quantities.php:520
3120
  #: includes/settings/wcj-settings-order-quantities.php:146
3121
  msgid ""
3122
  "Minimum allowed quantity for %product_title% is %min_per_item_quantity%. Your "
3123
  "current item quantity is %item_quantity%."
3124
  msgstr ""
3125
 
3126
+ #: includes/class-wcj-order-quantities.php:532
3127
  #: includes/settings/wcj-settings-order-quantities.php:271
3128
  msgid ""
3129
  "Required step for %product_title% is %required_step%. Your current item "
3158
  msgid "Regenerate download permissions"
3159
  msgstr ""
3160
 
3161
+ #: includes/class-wcj-orders.php:265
3162
  #, php-format
3163
  msgid "Download permissions regenerated for %s order."
3164
  msgid_plural "Download permissions regenerated for %s orders."
3355
  msgid "Change product price and currency automatically by customer's country."
3356
  msgstr ""
3357
 
3358
+ #: includes/class-wcj-price-by-country.php:164
3359
  msgid "Price filter widget product prices recalculated."
3360
  msgstr ""
3361
 
3392
  msgid "Copy price to all %s"
3393
  msgstr ""
3394
 
3395
+ #: includes/class-wcj-price-by-user-role.php:258
3396
  msgid ""
3397
  "Booster: Free plugin's version is limited to only one price by user role per "
3398
  "products settings product enabled at a time. You will need to get <a href="
3399
+ "\"https://booster.io/buy-booster/\" target=\"_blank\">Booster Plus</a> to add "
3400
  "unlimited number of price by user role per product settings products."
3401
  msgstr ""
3402
 
3606
  #: includes/settings/wcj-settings-price-by-country.php:117
3607
  #: includes/settings/wcj-settings-price-by-country.php:144
3608
  #: includes/settings/wcj-settings-price-by-country.php:191
3609
+ #: includes/settings/wcj-settings-price-by-country.php:209
3610
+ #: includes/settings/wcj-settings-price-by-country.php:218
3611
+ #: includes/settings/wcj-settings-price-by-country.php:227
3612
+ #: includes/settings/wcj-settings-price-by-country.php:237
 
3613
  #: includes/settings/wcj-settings-price-by-country.php:284
3614
+ #: includes/settings/wcj-settings-price-by-country.php:292
3615
  #: includes/settings/wcj-settings-price-by-user-role.php:23
3616
  #: includes/settings/wcj-settings-price-by-user-role.php:50
3617
  #: includes/settings/wcj-settings-price-by-user-role.php:97
3849
  msgid ""
3850
  "Booster: Free plugin's version is limited to only three products with per "
3851
  "product addons enabled at a time. You will need to get <a href=\"https://"
3852
+ "booster.io/buy-booster/\" target=\"_blank\">Booster Plus</a> to add unlimited "
3853
+ "number of products with per product addons."
3854
  msgstr ""
3855
 
3856
  #: includes/class-wcj-product-bookings.php:30
3914
  #: includes/class-wcj-product-bookings.php:537
3915
  msgid ""
3916
  "Booster: Free plugin's version is limited to only one bookings product "
3917
+ "enabled at a time. You will need to get <a href=\"https://booster.io/buy-"
3918
+ "booster/\" target=\"_blank\">Booster Plus</a> to add unlimited number of "
3919
+ "bookings products."
3920
  msgstr ""
3921
 
3922
  #: includes/class-wcj-product-bulk-meta-editor.php:30
3986
  #: includes/classes/class-wcj-module.php:1000
3987
  #: includes/functions/wcj-functions-general.php:208
3988
  #: includes/functions/wcj-functions-html.php:131
3989
+ #: includes/reports/class-wcj-reports-monthly-sales.php:392
3990
  #: includes/settings/wcj-settings-empty-cart.php:88
3991
  #: includes/shortcodes/class-wcj-products-add-form-shortcodes.php:394
3992
+ #: includes/tools/class-wcj-order-statuses-tool.php:213
3993
+ #: includes/tools/class-wcj-order-statuses-tool.php:363
3994
  msgid "Are you sure?"
3995
  msgstr ""
3996
 
4403
 
4404
  #: includes/class-wcj-product-by-user.php:286
4405
  #: includes/shortcodes/class-wcj-products-add-form-shortcodes.php:473
4406
+ #: includes/tools/class-wcj-order-statuses-tool.php:222
4407
+ #: includes/tools/class-wcj-order-statuses-tool.php:300
4408
  msgid "Edit"
4409
  msgstr ""
4410
 
4923
  msgstr ""
4924
 
4925
  #: includes/class-wcj-products-per-page.php:98
 
4926
  msgid ""
4927
  "Products <strong>%1$from% - %to%</strong> from <strong>%total%</strong>. "
4928
  "Products on page %2$select_form%"
5328
  #: includes/settings/wcj-settings-sku.php:314
5329
  #: includes/settings/wcj-settings-sku.php:341
5330
  #: includes/shortcodes/class-wcj-products-add-form-shortcodes.php:473
5331
+ #: includes/tools/class-wcj-order-statuses-tool.php:300
5332
  msgid "Add"
5333
  msgstr ""
5334
 
5875
  msgid "Reset Submodule to Default Settings"
5876
  msgstr ""
5877
 
5878
+ #: includes/classes/class-wcj-module.php:1006
5879
  msgid "Reset settings"
5880
  msgstr ""
5881
 
5882
+ #: includes/classes/class-wcj-module.php:1044
5883
  msgid "Module Options"
5884
  msgstr ""
5885
 
5886
+ #: includes/classes/class-wcj-module.php:1051
5887
  msgid "Enable Module"
5888
  msgstr ""
5889
 
5924
  msgid "Click <a target=\"_blank\" href=\"%s\">here</a> for more info."
5925
  msgstr ""
5926
 
5927
+ #: includes/core/class-wcj-admin.php:125
5928
  msgid "Booster Settings"
5929
  msgstr ""
5930
 
5931
+ #: includes/core/class-wcj-admin.php:141
5932
  msgid "Docs"
5933
  msgstr ""
5934
 
5935
+ #: includes/core/class-wcj-admin.php:144
5936
  msgid "Unlock all"
5937
  msgstr ""
5938
 
5939
+ #: includes/core/class-wcj-admin.php:146
5940
  msgid "Support"
5941
  msgstr ""
5942
 
6234
  msgstr ""
6235
 
6236
  #: includes/export/class-wcj-export-fields-helper.php:89
6237
+ #: includes/reports/class-wcj-reports-customers.php:103
6238
  msgid "Registered"
6239
  msgstr ""
6240
 
8101
  msgstr ""
8102
 
8103
  #: includes/input-fields/class-wcj-product-input-fields-core.php:253
8104
+ #: includes/input-fields/class-wcj-product-input-fields-core.php:458
8105
  #: includes/settings/wcj-settings-product-input-fields.php:96
8106
  msgid "Product Input Field"
8107
  msgstr ""
8108
 
8109
+ #: includes/input-fields/class-wcj-product-input-fields-core.php:543
8110
  msgid "Wrong file type!"
8111
  msgstr ""
8112
 
8113
+ #: includes/input-fields/class-wcj-product-input-fields-core.php:552
8114
  msgid "File is too big!"
8115
  msgstr ""
8116
 
8117
+ #: includes/input-fields/class-wcj-product-input-fields-core.php:789
8118
  msgid "Select a country&hellip;"
8119
  msgstr ""
8120
 
8575
  #: includes/settings/wcj-settings-multicurrency-base-price.php:67
8576
  #: includes/settings/wcj-settings-multicurrency.php:244
8577
  #: includes/settings/wcj-settings-order-min-amount.php:87
8578
+ #: includes/settings/wcj-settings-price-by-country.php:249
8579
  #: includes/settings/wcj-settings-price-by-user-role.php:110
8580
  #: includes/settings/wcj-settings-product-addons.php:251
8581
  msgid "Advanced"
8655
  msgstr ""
8656
 
8657
  #: includes/pdf-invoices/submodules/class-wcj-pdf-invoicing-display.php:146
8658
+ #: includes/pdf-invoices/submodules/class-wcj-pdf-invoicing-display.php:375
8659
  msgid "View"
8660
  msgstr ""
8661
 
8662
+ #: includes/pdf-invoices/submodules/class-wcj-pdf-invoicing-display.php:181
8663
+ #: includes/pdf-invoices/submodules/class-wcj-pdf-invoicing-display.php:411
8664
  msgid "Create"
8665
  msgstr ""
8666
 
8667
+ #: includes/pdf-invoices/submodules/class-wcj-pdf-invoicing-display.php:278
8668
  #: includes/settings/wcj-settings-pdf-invoicing-display.php:104
8669
  #, php-format
8670
  msgid "Your %s:"
8671
  msgstr ""
8672
 
8673
+ #: includes/pdf-invoices/submodules/class-wcj-pdf-invoicing-display.php:336
8674
  msgid "Booster: PDF Invoices"
8675
  msgstr ""
8676
 
8677
+ #: includes/pdf-invoices/submodules/class-wcj-pdf-invoicing-display.php:417
8678
  msgid ""
8679
  "In case of partial refund, you need to reload the page to see created "
8680
  "document in this meta box."
8719
 
8720
  #: includes/price-by-country/class-wcj-price-by-country-local.php:124
8721
  #: includes/settings/meta-box/wcj-settings-meta-box-price-by-country.php:77
8722
+ #: includes/settings/wcj-settings-price-by-country.php:457
8723
  msgid "Make empty price"
8724
  msgstr ""
8725
 
8726
  #: includes/price-by-country/class-wcj-price-by-country-local.php:249
8727
  #: includes/settings/meta-box/wcj-settings-meta-box-price-by-country.php:21
8728
  #: includes/settings/wcj-settings-add-to-cart.php:59
8729
+ #: includes/settings/wcj-settings-price-by-country.php:342
8730
+ #: includes/settings/wcj-settings-price-by-country.php:343
8731
+ #: includes/settings/wcj-settings-price-by-country.php:348
8732
+ #: includes/settings/wcj-settings-price-by-country.php:398
8733
+ #: includes/settings/wcj-settings-price-by-country.php:448
8734
  msgid "Group"
8735
  msgstr ""
8736
 
8743
  msgid "Show reports only in"
8744
  msgstr ""
8745
 
8746
+ #: includes/reports/class-wcj-reports-customers.php:51
8747
  msgid "No customers found."
8748
  msgstr ""
8749
 
8750
+ #: includes/reports/class-wcj-reports-customers.php:87
8751
  msgid "Non Available"
8752
  msgstr ""
8753
 
8754
+ #: includes/reports/class-wcj-reports-customers.php:100
8755
  #: includes/settings/wcj-settings-offer-price.php:212
8756
  msgid "Customer Name"
8757
  msgstr ""
8758
 
8759
+ #: includes/reports/class-wcj-reports-customers.php:102
8760
  msgid "Total Spent"
8761
  msgstr ""
8762
 
8763
+ #: includes/reports/class-wcj-reports-customers.php:146
8764
  msgid "Total customers"
8765
  msgstr ""
8766
 
8767
+ #: includes/reports/class-wcj-reports-customers.php:150
8768
  msgid "Country Code"
8769
  msgstr ""
8770
 
8771
+ #: includes/reports/class-wcj-reports-customers.php:151
8772
  msgid "Customers Count"
8773
  msgstr ""
8774
 
8775
+ #: includes/reports/class-wcj-reports-customers.php:152
8776
  msgid "Percent of total"
8777
  msgstr ""
8778
 
8779
+ #: includes/reports/class-wcj-reports-customers.php:188
8780
  msgid "Report for:"
8781
  msgstr ""
8782
 
8783
+ #: includes/reports/class-wcj-reports-monthly-sales.php:48
8784
  msgid "Currency rates saved."
8785
  msgstr ""
8786
 
8787
+ #: includes/reports/class-wcj-reports-monthly-sales.php:52
8788
  msgid "Currency rates deleted."
8789
  msgstr ""
8790
 
8791
+ #: includes/reports/class-wcj-reports-monthly-sales.php:99
8792
  msgid "Days"
8793
  msgstr ""
8794
 
8795
+ #: includes/reports/class-wcj-reports-monthly-sales.php:100
8796
  msgid "Total Orders"
8797
  msgstr ""
8798
 
8799
+ #: includes/reports/class-wcj-reports-monthly-sales.php:101
8800
  msgid "Orders Average / Day"
8801
  msgstr ""
8802
 
8803
+ #: includes/reports/class-wcj-reports-monthly-sales.php:102
8804
  #: includes/reports/class-wcj-reports-sales.php:347
8805
  msgid "Total Sum"
8806
  msgstr ""
8807
 
8808
+ #: includes/reports/class-wcj-reports-monthly-sales.php:103
8809
  msgid "Total Sum (excl. TAX)"
8810
  msgstr ""
8811
 
8812
+ #: includes/reports/class-wcj-reports-monthly-sales.php:104
8813
  msgid "Average / Order (excl. TAX)"
8814
  msgstr ""
8815
 
8816
+ #: includes/reports/class-wcj-reports-monthly-sales.php:105
8817
  msgid "Average / Day (excl. TAX)"
8818
  msgstr ""
8819
 
8820
+ #: includes/reports/class-wcj-reports-monthly-sales.php:106
8821
  msgid "Currency Rates"
8822
  msgstr ""
8823
 
8824
+ #: includes/reports/class-wcj-reports-monthly-sales.php:107
8825
  msgid "Orders by Currency"
8826
  msgstr ""
8827
 
8828
+ #: includes/reports/class-wcj-reports-monthly-sales.php:220
8829
+ #: includes/reports/class-wcj-reports-monthly-sales.php:236
8830
+ #: includes/reports/class-wcj-reports-monthly-sales.php:308
8831
+ #: includes/reports/class-wcj-reports-monthly-sales.php:313
8832
  #, php-format
8833
  msgid "Forecast: %s"
8834
  msgstr ""
8835
 
8836
+ #: includes/reports/class-wcj-reports-monthly-sales.php:260
8837
  msgid "Grab average rate"
8838
  msgstr ""
8839
 
8840
+ #: includes/reports/class-wcj-reports-monthly-sales.php:319
8841
  msgid "Totals"
8842
  msgstr ""
8843
 
8844
+ #: includes/reports/class-wcj-reports-monthly-sales.php:363
8845
  msgid "Report currency"
8846
  msgstr ""
8847
 
8848
+ #: includes/reports/class-wcj-reports-monthly-sales.php:383
8849
  #, php-format
8850
  msgid "Report generated in: %s s"
8851
  msgstr ""
8852
 
8853
+ #: includes/reports/class-wcj-reports-monthly-sales.php:387
8854
  msgid "Save Currency Rates"
8855
  msgstr ""
8856
 
8857
+ #: includes/reports/class-wcj-reports-monthly-sales.php:392
8858
  msgid "Reset Currency Rates"
8859
  msgstr ""
8860
 
8861
+ #: includes/reports/class-wcj-reports-product-sales-daily.php:180
8862
  #: includes/reports/class-wcj-reports-sales.php:367
8863
  #: includes/reports/wcj-class-reports-sales-gateways.php:128
8864
  msgid "Reports Settings"
8865
  msgstr ""
8866
 
8867
+ #: includes/reports/class-wcj-reports-product-sales-daily.php:208
8868
  #: includes/reports/wcj-class-reports-sales-gateways.php:160
8869
  msgid "From:"
8870
  msgstr ""
8871
 
8872
+ #: includes/reports/class-wcj-reports-product-sales-daily.php:211
8873
  #: includes/reports/wcj-class-reports-sales-gateways.php:163
8874
  msgid "To:"
8875
  msgstr ""
8876
 
8877
+ #: includes/reports/class-wcj-reports-product-sales-daily.php:214
8878
  msgid "Product:"
8879
  msgstr ""
8880
 
8881
+ #: includes/reports/class-wcj-reports-product-sales-daily.php:305
8882
  #, php-format
8883
  msgid "Total: %d"
8884
  msgstr ""
8885
 
8886
+ #: includes/reports/class-wcj-reports-product-sales-daily.php:310
8887
  #: includes/reports/class-wcj-reports-product-sales-daily.php:315
 
8888
  #, php-format
8889
  msgid "Total: %s"
8890
  msgstr ""
8891
 
8892
+ #: includes/reports/class-wcj-reports-product-sales-daily.php:334
8893
  #: includes/reports/wcj-class-reports-sales-gateways.php:196
8894
  #, php-format
8895
  msgid "Total orders: %d"
8896
  msgstr ""
8897
 
8898
+ #: includes/reports/class-wcj-reports-product-sales-daily.php:335
8899
  #: includes/reports/class-wcj-reports-sales.php:400
8900
  #: includes/reports/wcj-class-reports-sales-gateways.php:198
8901
  msgid "No sales data for current period."
10026
  #: includes/settings/wcj-settings-offer-price.php:221
10027
  #: includes/settings/wcj-settings-offer-price.php:229
10028
  #: includes/tools/class-wcj-order-statuses-tool.php:187
10029
+ #: includes/tools/class-wcj-order-statuses-tool.php:281
10030
  msgid "Label"
10031
  msgstr ""
10032
 
10123
  msgstr ""
10124
 
10125
  #: includes/settings/wcj-settings-admin-orders-list.php:194
10126
+ #: includes/tools/class-wcj-order-statuses-tool.php:240
10127
  msgid "Statuses"
10128
  msgstr ""
10129
 
10692
  #: includes/settings/wcj-settings-checkout-custom-fields.php:219
10693
  #: includes/settings/wcj-settings-eu-vat-number.php:51
10694
  #: includes/templates/wcj-radio-for-variations.php:25
10695
+ #: includes/tools/class-wcj-order-statuses-tool.php:276
10696
  msgid "Clear"
10697
  msgstr ""
10698
 
11859
  #: includes/settings/wcj-settings-multicurrency-base-price.php:26
11860
  #: includes/settings/wcj-settings-multicurrency.php:26
11861
  #: includes/settings/wcj-settings-payment-gateways-currency.php:76
11862
+ #: includes/settings/wcj-settings-price-by-country.php:417
11863
  msgid "Exchange Rates Updates"
11864
  msgstr ""
11865
 
11973
  msgstr ""
11974
 
11975
  #: includes/settings/wcj-settings-currency-exchange-rates.php:192
11976
+ #: includes/settings/wcj-settings-price-by-country.php:412
11977
  msgid "Exchange Rates"
11978
  msgstr ""
11979
 
11993
  #: includes/settings/wcj-settings-multicurrency-base-price.php:151
11994
  #: includes/settings/wcj-settings-multicurrency.php:322
11995
  #: includes/settings/wcj-settings-multicurrency.php:366
11996
+ #: includes/settings/wcj-settings-price-by-country.php:389
11997
  #: includes/settings/wcj-settings-price-formats.php:68
11998
  msgid "Currency"
11999
  msgstr ""
12066
  #: includes/settings/wcj-settings-multicurrency-base-price.php:31
12067
  #: includes/settings/wcj-settings-multicurrency.php:32
12068
  #: includes/settings/wcj-settings-payment-gateways-currency.php:81
12069
+ #: includes/settings/wcj-settings-price-by-country.php:422
12070
  msgid "Enter Rates Manually"
12071
  msgstr ""
12072
 
12074
  #: includes/settings/wcj-settings-multicurrency-base-price.php:32
12075
  #: includes/settings/wcj-settings-multicurrency.php:33
12076
  #: includes/settings/wcj-settings-payment-gateways-currency.php:82
12077
+ #: includes/settings/wcj-settings-price-by-country.php:423
12078
  msgid "Automatically via Currency Exchange Rates module"
12079
  msgstr ""
12080
 
12082
  #: includes/settings/wcj-settings-multicurrency-base-price.php:35
12083
  #: includes/settings/wcj-settings-multicurrency.php:36
12084
  #: includes/settings/wcj-settings-payment-gateways-currency.php:85
12085
+ #: includes/settings/wcj-settings-price-by-country.php:426
12086
  msgid "Visit"
12087
  msgstr ""
12088
 
12090
  #: includes/settings/wcj-settings-multicurrency-base-price.php:35
12091
  #: includes/settings/wcj-settings-multicurrency.php:36
12092
  #: includes/settings/wcj-settings-payment-gateways-currency.php:87
12093
+ #: includes/settings/wcj-settings-price-by-country.php:426
12094
  msgid "Currency Exchange Rates module"
12095
  msgstr ""
12096
 
13199
  #: includes/settings/wcj-settings-global-discount.php:231
13200
  #: includes/settings/wcj-settings-multicurrency-base-price.php:80
13201
  #: includes/settings/wcj-settings-multicurrency.php:259
13202
+ #: includes/settings/wcj-settings-price-by-country.php:254
13203
  #: includes/settings/wcj-settings-price-by-user-role.php:115
13204
  #: includes/settings/wcj-settings-product-addons.php:279
13205
  #: includes/settings/wcj-settings-product-price-by-formula.php:136
13209
  #: includes/settings/wcj-settings-global-discount.php:232
13210
  #: includes/settings/wcj-settings-multicurrency-base-price.php:81
13211
  #: includes/settings/wcj-settings-multicurrency.php:260
13212
+ #: includes/settings/wcj-settings-price-by-country.php:255
13213
  #: includes/settings/wcj-settings-price-by-user-role.php:116
13214
  #: includes/settings/wcj-settings-product-addons.php:280
13215
  #: includes/settings/wcj-settings-product-price-by-formula.php:137
13436
 
13437
  #: includes/settings/wcj-settings-multicurrency-base-price.php:72
13438
  #: includes/settings/wcj-settings-multicurrency.php:274
13439
+ #: includes/settings/wcj-settings-price-by-country.php:282
13440
  #: includes/settings/wcj-settings-product-price-by-formula.php:143
13441
  msgid "Save Calculated Products Prices"
13442
  msgstr ""
13596
  msgstr ""
13597
 
13598
  #: includes/settings/wcj-settings-multicurrency.php:125
13599
+ #: includes/settings/wcj-settings-price-by-country.php:208
13600
  msgid "Free Shipping"
13601
  msgstr ""
13602
 
13603
  #: includes/settings/wcj-settings-multicurrency.php:128
13604
+ #: includes/settings/wcj-settings-price-by-country.php:211
13605
  msgid "Converts minimum amount from WooCommerce Free Shipping native method."
13606
  msgstr ""
13607
 
13610
  msgstr ""
13611
 
13612
  #: includes/settings/wcj-settings-multicurrency.php:136
13613
+ #: includes/settings/wcj-settings-price-by-country.php:219
13614
  msgid ""
13615
  "When a fixed coupon is used its value changes according to the current "
13616
  "currency."
13750
  msgstr ""
13751
 
13752
  #: includes/settings/wcj-settings-multicurrency.php:275
13753
+ #: includes/settings/wcj-settings-price-by-country.php:283
13754
  #: includes/settings/wcj-settings-product-price-by-formula.php:144
13755
  msgid ""
13756
  "This may help if you are experiencing compatibility issues with other plugins."
15655
  msgstr ""
15656
 
15657
  #: includes/settings/wcj-settings-pdf-invoicing-display.php:30
15658
+ #: includes/settings/wcj-settings-price-by-country.php:396
15659
  #: includes/settings/wcj-settings-shipping.php:34
15660
  msgid "Admin Title"
15661
  msgstr ""
16195
  msgid "Price Filter Widget and Sorting by Price Support"
16196
  msgstr ""
16197
 
16198
+ #: includes/settings/wcj-settings-price-by-country.php:202
16199
  msgid "Recalculate price filter widget and sorting by price product prices."
16200
  msgstr ""
16201
 
16202
+ #: includes/settings/wcj-settings-price-by-country.php:217
16203
  msgid "WooCommerce Coupons"
16204
  msgstr ""
16205
 
16206
+ #: includes/settings/wcj-settings-price-by-country.php:225
16207
  msgid "Woo Discount Rules"
16208
  msgstr ""
16209
 
16210
+ #: includes/settings/wcj-settings-price-by-country.php:229
16211
  #, php-format
16212
  msgid ""
16213
  "Adds compatibility with <a href=\"%s\" target=\"_blank\">Woo Discount Rules</"
16214
  "a> plugin."
16215
  msgstr ""
16216
 
16217
+ #: includes/settings/wcj-settings-price-by-country.php:229
16218
  #, php-format
16219
  msgid ""
16220
  "If it doesn't work properly try to enable <a href=\"%s\">redirect to the cart "
16221
  "page after successful addition</a> option."
16222
  msgstr ""
16223
 
16224
+ #: includes/settings/wcj-settings-price-by-country.php:235
16225
  msgid "WooCommerce Points and Rewards"
16226
  msgstr ""
16227
 
16228
+ #: includes/settings/wcj-settings-price-by-country.php:239
16229
  #, php-format
16230
  msgid ""
16231
  "Adds compatibility with <a href=\"%s\" target=\"_blank\">WooCommerce Points "
16232
  "and Rewards</a> plugin."
16233
  msgstr ""
16234
 
16235
+ #: includes/settings/wcj-settings-price-by-country.php:261
16236
  msgid "User IP Detection Method"
16237
  msgstr ""
16238
 
16239
+ #: includes/settings/wcj-settings-price-by-country.php:271
16240
  msgid "Price Format Method"
16241
  msgstr ""
16242
 
16243
+ #: includes/settings/wcj-settings-price-by-country.php:272
16244
  msgid "The moment \"Pretty Price\" and \"Rounding\" will be applied"
16245
  msgstr ""
16246
 
16247
+ #: includes/settings/wcj-settings-price-by-country.php:277
16248
  msgid "get_price()"
16249
  msgstr ""
16250
 
16251
+ #: includes/settings/wcj-settings-price-by-country.php:278
16252
  msgid "wc_get_price_to_display()"
16253
  msgstr ""
16254
 
16255
+ #: includes/settings/wcj-settings-price-by-country.php:290
16256
  msgid "Save Country Group ID"
16257
  msgstr ""
16258
 
16259
+ #: includes/settings/wcj-settings-price-by-country.php:291
16260
  msgid ""
16261
  "Try to disable it if the country detection is not correct, most probably if "
16262
  "\"Override Country Options\" is enabled."
16263
  msgstr ""
16264
 
16265
+ #: includes/settings/wcj-settings-price-by-country.php:302
16266
  msgid "Country Groups"
16267
  msgstr ""
16268
 
16269
+ #: includes/settings/wcj-settings-price-by-country.php:307
16270
  msgid "Countries Selection"
16271
  msgstr ""
16272
 
16273
+ #: includes/settings/wcj-settings-price-by-country.php:308
16274
  msgid "Choose how do you want to enter countries groups in admin."
16275
  msgstr ""
16276
 
16277
+ #: includes/settings/wcj-settings-price-by-country.php:313
16278
  msgid "Comma separated list"
16279
  msgstr ""
16280
 
16281
+ #: includes/settings/wcj-settings-price-by-country.php:314
16282
  msgid "Multiselect"
16283
  msgstr ""
16284
 
16285
+ #: includes/settings/wcj-settings-price-by-country.php:315
16286
  #: includes/settings/wcj-settings-product-by-condition.php:90
16287
  #: includes/settings/wcj-settings-related-products.php:181
16288
  msgid "Chosen select"
16289
  msgstr ""
16290
 
16291
+ #: includes/settings/wcj-settings-price-by-country.php:319
16292
  msgid "Autogenerate Groups"
16293
  msgstr ""
16294
 
16295
+ #: includes/settings/wcj-settings-price-by-country.php:325
16296
  msgid "Groups Number"
16297
  msgstr ""
16298
 
16299
+ #: includes/settings/wcj-settings-price-by-country.php:354
16300
  msgid ""
16301
  "Countries. List of comma separated country codes.<br>For country codes and "
16302
  "predefined sets visit <a href=\"https://booster.io/country-codes/\" target="
16303
  "\"_blank\">https://booster.io/country-codes/</a>"
16304
  msgstr ""
16305
 
16306
+ #: includes/settings/wcj-settings-price-by-country.php:449
16307
  msgid "Multiply Price by"
16308
  msgstr ""
16309
 
17169
 
17170
  #: includes/settings/wcj-settings-product-by-condition.php:91
17171
  #: includes/settings/wcj-settings-related-products.php:182
17172
+ #: includes/shortcodes/class-wcj-order-items-shortcodes.php:212
17173
  msgid "Standard"
17174
  msgstr ""
17175
 
18534
  msgid "Template - Form"
18535
  msgstr ""
18536
 
18537
+ #: includes/settings/wcj-settings-products-per-page.php:67
18538
+ #, php-format
18539
+ msgid ""
18540
+ "Products <strong>%1$s - %2$s</strong> from <strong>%3$s</strong>. Products on "
18541
+ "page %4$s"
18542
+ msgstr ""
18543
+
18544
  #: includes/settings/wcj-settings-products-per-page.php:72
18545
  msgid "Template - After Form"
18546
  msgstr ""
20754
  msgstr ""
20755
 
20756
  #: includes/tools/class-wcj-order-statuses-tool.php:188
20757
+ #: includes/tools/class-wcj-order-statuses-tool.php:282
20758
  msgid "Icon Code"
20759
  msgstr ""
20760
 
20761
  #: includes/tools/class-wcj-order-statuses-tool.php:189
20762
+ #: includes/tools/class-wcj-order-statuses-tool.php:283
20763
  msgid "Color"
20764
  msgstr ""
20765
 
20766
  #: includes/tools/class-wcj-order-statuses-tool.php:190
20767
+ #: includes/tools/class-wcj-order-statuses-tool.php:284
20768
  msgid "Text Color"
20769
  msgstr ""
20770
 
20771
+ #: includes/tools/class-wcj-order-statuses-tool.php:215
20772
  msgid "Get Booster Plus to enable."
20773
  msgstr ""
20774
 
20775
+ #: includes/tools/class-wcj-order-statuses-tool.php:274
20776
  msgid "Edit custom status"
20777
  msgstr ""
20778
 
20779
+ #: includes/tools/class-wcj-order-statuses-tool.php:274
20780
  msgid "Add new custom status"
20781
  msgstr ""
20782
 
20783
+ #: includes/tools/class-wcj-order-statuses-tool.php:280
20784
  msgid "Slug (without <code>wc-</code> prefix)"
20785
  msgstr ""
20786
 
20787
+ #: includes/tools/class-wcj-order-statuses-tool.php:363
20788
  msgid "Delete All Custom Statuses"
20789
  msgstr ""
20790
 
readme.txt CHANGED
@@ -2,9 +2,9 @@
2
  Contributors: anbinder, karzin, pluggabl
3
  Tags: woocommerce customization, woocommerce bundle, woocommerce product addon, woocommerce integration, ecommerce plugin
4
  Requires at least: 4.4
5
- Tested up to: 6.0.2
6
  Requires PHP: 7.2
7
- Stable tag: 5.6.6
8
  License: GNU General Public License v3.0
9
  License URI: http://www.gnu.org/licenses/gpl-3.0.html
10
 
@@ -275,6 +275,23 @@ To unlock all Booster for WooCommerce features, please install additional paid B
275
 
276
  == Changelog ==
277
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
278
  = 5.6.6 28/09/2022 =
279
 
280
  * FIXED - CART & CHECKOUT - Checkout Core Fields - Fixed checkout form design issues.
@@ -282,7 +299,7 @@ To unlock all Booster for WooCommerce features, please install additional paid B
282
  * FIXED - BUTTON & PRICE LABELS - Custom Price Labels- Escape the HTML content from the "per page product meta box" value.
283
  * FIXED - EMAILS & MISC. - Reports- Fixed date range filter on product sale report.
284
  * FIXED - EMAILS & MISC. - Export - Fixed export order line break issue in this module.
285
- FIXED - PHP Fatal error: Uncaught TypeError: Unsupported operand types: string in /includes/class-wcj-multicurrency.php...
286
  * WooCommerce 6.9.4 tested
287
  * WordPress 6.0.2 Tested
288
 
2
  Contributors: anbinder, karzin, pluggabl
3
  Tags: woocommerce customization, woocommerce bundle, woocommerce product addon, woocommerce integration, ecommerce plugin
4
  Requires at least: 4.4
5
+ Tested up to: 6.0.3
6
  Requires PHP: 7.2
7
+ Stable tag: 5.6.7
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.7 27/10/2022 =
279
+
280
+ * FIXED - PAYMENT GATEWAYS - Gateways Currency Converter - Fixed the issue of currency on the cart page.
281
+ * FIXED - CART & CHECKOUT - Checkout Files Upload - Fixed Security vulnerability for ShopManager + Arbitrary File Download.
282
+ * FIXED - CART & CHECKOUT - Checkout Files Upload - Fixed Security vulnerability for Checkout Files Deletion.
283
+ * FIXED - PRODUCTS - Product Input Fields - Fixed Security vulnerability for ShopManager + Arbitrary File Download.
284
+ * FIXED - PRODUCTS - Products per Page - Fixed "Template - Form" default text translators issue.
285
+ * FIXED - EMAILS & MISC. - Old Slugs - Fixed SQL error - syntax near 'WHERE meta_key = '_wp_old_slug'....
286
+ * FIXED - PRICES & CURRENCIES - Prices and Currencies by Country - Price conversion issue by user selection with country group
287
+ * FIXED - Added CSRF Token for each "Reset settings" button of the module.
288
+ * FIXED - Added Security vulnerability fixes - Multiple CSRF.
289
+ * FIXED - Added Security vulnerability fixes.
290
+ * FIXED - PDF INVOICING & PACKING SLIPS - PDF Invoicing - Fixed order item table issue while merging multiple invoice PDFs.
291
+ * FIXED - PHP Warning: A non-numeric value encountered in ...includes/functions/wcj-functions-price-currency.php on line 141
292
+ * WooCommerce 7.0.0 tested
293
+ * WordPress 6.0.3 Tested
294
+
295
  = 5.6.6 28/09/2022 =
296
 
297
  * FIXED - CART & CHECKOUT - Checkout Core Fields - Fixed checkout form design issues.
299
  * FIXED - BUTTON & PRICE LABELS - Custom Price Labels- Escape the HTML content from the "per page product meta box" value.
300
  * FIXED - EMAILS & MISC. - Reports- Fixed date range filter on product sale report.
301
  * FIXED - EMAILS & MISC. - Export - Fixed export order line break issue in this module.
302
+ * FIXED - PHP Fatal error: Uncaught TypeError: Unsupported operand types: string in /includes/class-wcj-multicurrency.php...
303
  * WooCommerce 6.9.4 tested
304
  * WordPress 6.0.2 Tested
305
 
version-details.json CHANGED
@@ -1,6 +1,6 @@
1
  {
2
- "0" : "= 5.6.6 28/09/2022 =",
3
- "1" : "* FIXED - CART & CHECKOUT - Checkout Core Fields - Fixed checkout form design issues.",
4
- "2" : "* FIXED - PAYMENT GATEWAYS - Gateways Min/Max Amounts - Fixed showing all payment gateways notice on the checkout page.",
5
- "3" : "* FIXED - BUTTON & PRICE LABELS - Custom Price Labels- Escape the HTML content from the 'per page product meta box' value."
6
  }
1
  {
2
+ "0" : "= 5.6.7 27/10/2022 =",
3
+ "1" : "* FIXED - PAYMENT GATEWAYS - Gateways Currency Converter - Fixed the issue of currency on the cart page.",
4
+ "2" : "* FIXED - CART & CHECKOUT - Checkout Files Upload - Fixed Security vulnerability for ShopManager + Arbitrary File Download.",
5
+ "3" : "* FIXED - CART & CHECKOUT - Checkout Files Upload - Fixed Security vulnerability for Checkout Files Deletion."
6
  }
woocommerce-jetpack.php CHANGED
@@ -3,13 +3,13 @@
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.6
7
  * Author: Pluggabl LLC
8
  * Author URI: https://booster.io
9
  * Text Domain: woocommerce-jetpack
10
  * Domain Path: /langs
11
  * Copyright: © 2020 Pluggabl LLC.
12
- * WC tested up to: 6.9.4
13
  * License: GNU General Public License v3.0
14
  * php version 7.2
15
  * License URI: http://www.gnu.org/licenses/gpl-3.0.html
@@ -65,7 +65,7 @@ if ( ! class_exists( 'WC_Jetpack' ) ) :
65
  * @var string
66
  * @since 2.4.7
67
  */
68
- public $version = '5.6.6';
69
 
70
  /**
71
  * 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.7
7
  * Author: Pluggabl LLC
8
  * Author URI: https://booster.io
9
  * Text Domain: woocommerce-jetpack
10
  * Domain Path: /langs
11
  * Copyright: © 2020 Pluggabl LLC.
12
+ * WC tested up to: 7.0.0
13
  * License: GNU General Public License v3.0
14
  * php version 7.2
15
  * License URI: http://www.gnu.org/licenses/gpl-3.0.html
65
  * @var string
66
  * @since 2.4.7
67
  */
68
+ public $version = '5.6.7';
69
 
70
  /**
71
  * The single instance of the class