Booster for WooCommerce - Version 3.3.0

Version Description

  • 11/01/2018 =
  • Dev - PRICES & CURRENCIES - Currencies - Belarusian ruble code updated (from BYR to BYN).
  • Dev - PRICES & CURRENCIES - Currency per Product - Advanced Options - "Save Converted Product Prices in Array" option added.
  • Dev - PRICES & CURRENCIES - Prices and Currencies by Country - "Per product options style" option added.
  • Dev - PRICES & CURRENCIES - Prices and Currencies by Country - Per product settings (inline) restyled.
  • Dev - PRICES & CURRENCIES - Prices and Currencies by Country - Groups - "Admin Title" option added.
  • Dev - PRICES & CURRENCIES - Product Open Pricing (Name Your Price) - Admin settings restyled.
  • Dev - PRICES & CURRENCIES - Wholesale Price - "Round single product price" option added.
  • Fix - PRICES & CURRENCIES - Wholesale Price - wcj_is_product_wholesale_enabled() - "Products to exclude" option fixed.
  • Dev - BUTTON & PRICE LABELS - Add to Cart Button Labels - Module renamed (was "Add to Cart Labels").
  • Dev - BUTTON & PRICE LABELS - Custom Price Labels - Passing product object to shortcodes (instead of product id).
  • Dev - BUTTON & PRICE LABELS - Custom Price Labels - Admin settings restyled etc.
  • Dev - BUTTON & PRICE LABELS - More Button Labels - "Override Default Text" option added.
  • Dev - PRODUCTS - Add to Cart - "Add to Cart Button Position Options" section added.
  • Dev - PRODUCTS - Add to Cart - Module renamed (was "Product Add to Cart").
  • Dev - PRODUCTS - Add to Cart Button Visibility - Per Product - "Content" options added.
  • Dev - PRODUCTS - Add to Cart Button Visibility - "Per Category" options added.
  • Dev - PRODUCTS - Add to Cart Button Visibility - Initial module release (copied from "Product Add to Cart - Add to Cart Button Disabling").
  • Dev - PRODUCTS - Product Addons - "Quantity" options added.
  • Dev - PRODUCTS - Product Addons - Admin settings minor restyling.
  • Dev - PRODUCTS - Product Visibility by User Role - Settings (meta box) restyled.
  • Dev - PRODUCTS - Products XML Feeds - Admin settings - Minor changes.
  • Dev - CART & CHECKOUT - Cart Custom Info - Admin settings minor restyling.
  • Fix - CART & CHECKOUT - Checkout Core Fields - Override Fields - required added to options.
  • Dev - CART & CHECKOUT - Checkout Custom Info - Admin settings minor restyling.
  • Dev - CART & CHECKOUT - Checkout Customization - Customize "Returning customer?" message option added.
  • Dev - CART & CHECKOUT - EU VAT Number - Admin order edit - Customer's VAT number added on admin customer select and on "Load billing address".
  • Dev - CART & CHECKOUT - EU VAT Number - Admin order edit - "Validate VAT and remove taxes" button added.
  • Dev - PAYMENT GATEWAYS - Custom Gateways - Advanced Options - Gateways Input Fields - "Add 'Delete' button" option added.
  • Dev - PAYMENT GATEWAYS - Gateways by Country or State - Admin settings description updated. Minor code refactoring.
  • Fix - PAYMENT GATEWAYS - Gateways by Currency - Admin settings - $paypal_allowed_currencies_and_names type fixed (changed to array).
  • Dev - PAYMENT GATEWAYS - Gateways Fees and Discounts - "WooCommerce PayPal Express Checkout Payment Gateway" (by WooCommerce) plugin support added.
  • Dev - SHIPPING & ORDERS - Admin Orders List - Admin settings - Minor restyling.
  • Dev - SHIPPING & ORDERS - Left to Free Shipping - Outputting "You have Free delivery" if free shipping is available without order minimum amount (e.g. coupon).
  • Dev - SHIPPING & ORDERS - Left to Free Shipping - Admin settings - Minor restyling.
  • Fix - SHIPPING & ORDERS - Order Numbers - Orders Renumerate Tool - More info added when sequential number generation is enabled.
  • Fix - SHIPPING & ORDERS - Order Numbers - add_order_number_meta() - Bug fixed (when "Number Generation" is set to "Order ID").
  • Dev - SHIPPING & ORDERS - Order Numbers - Admin settings - Minor restyling.
  • Dev - SHIPPING & ORDERS - Order Numbers - "Sequential: Reset Counter" option added.
  • Dev - SHIPPING & ORDERS - Orders - "Country by IP" section added.
  • Dev - PDF INVOICING & PACKING SLIPS - "Advanced" submodule added (some settings moved from "General", "Styling" and "Display & Misc." sections).
  • Dev - PDF INVOICING & PACKING SLIPS - Display - Admin order meta box - Message if no document types are enabled added.
  • Dev - PDF INVOICING & PACKING SLIPS - General - Admin settings minor restyling.
  • Dev - PDF INVOICING & PACKING SLIPS - General - Report Tool Options - Report Columns - "Cart Total Excl. Tax", "Shipping Total Excl. Tax", "Cart Tax", "Shipping Tax", "Cart Tax %", "Shipping Tax %" columns added.
  • Dev - PDF INVOICING & PACKING SLIPS - General - Report Tool Options - "Report Columns" option added.
  • Dev - PDF INVOICING & PACKING SLIPS - General - Report Tool Options - "Tax Percent Precision" option added.
  • Dev - PDF INVOICING & PACKING SLIPS - Templates - Admin settings minor restyling.
  • Dev - EMAILS & MISC. - Admin Tools - Log tool restyled.
  • Dev - EMAILS & MISC. - Admin Tools - "Show Variable Product Pricing Table" option added.
  • Dev - EMAILS & MISC. - Modules By User Roles - Initial module release.
  • Fix - EMAILS & MISC. - Reports - Customers - Flag images fixed.
  • Dev - EMAILS & MISC. - Reports - Customers - Country sets updated.
  • Dev - Shortcodes - General - [wcj_tcpdf_rectangle] shortcode added.
  • Dev - Shortcodes - General - [wcj_tcpdf_barcode] and [wcj_barcode] - Code refactoring (corresponding functions added to wcj-functions-general.php).
  • Dev - Shortcodes - Orders - currency attribute added to all shortcodes which use wcj_price_shortcode() function.
  • Dev - Shortcodes - Orders - [wcj_order_tcpdf_barcode] shortcode added.
  • Fix - Shortcodes - Orders - [wcj_order_items_table] - item_subtotal_tax_excl, item_subtotal_tax_incl, line_subtotal_tax_excl, line_subtotal_tax_incl and line_subtax columns fixed for "custom" items (i.e. "shipping and discount as item") for WC from v3.0.0.
  • Dev - Shortcodes - Orders - [wcj_order_items_table] - product_barcode column added.
  • Dev - Shortcodes - Orders - [wcj_order_profit] and [wcj_order_items_cost] shortcodes added.
  • Dev - Shortcodes - Products - [wcj_product_barcode] shortcode added.
  • Dev - Functions - General - wcj_tcpdf_barcode() - Border removed.
  • Dev - Functions - Booster Core - wcj-functions-core.php file renamed to wcj-functions-booster-core.php.
  • Dev - Functions - "Core" functions file added.
  • Dev - Functions - Exchange Rates - wcj_get_saved_exchange_rate() - Returning 1 when currency_from equals currency_to.
  • Fix - Functions - Price and Currency - wcj_price_by_product_base_currency() - Checking if currency exchange rate not equals zero (so no division by zero can happen).
  • Dev - Settings - Readme generator woojetpack_readme removed.
  • Dev - Classes - WCJ_Module - create_meta_box() - Tooltip restyled. Optional css attribute added to title type.
  • Dev - Core - Options - Code refactoring.
  • Dev - Core - Shortcodes - Code refactoring - Shortcodes objects saved in WCJ()->shortcodes array.
  • Dev - Core - wcj-constants.php file moved to core directory.
  • Dev - Version option name changed. Some filters renamed. "WC tested up to" added to plugin's header.
Download this release

Release Info

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

Code changes from version 3.2.4 to 3.3.0

Files changed (225) hide show
  1. includes/add-to-cart/class-wcj-add-to-cart-per-category.php +1 -1
  2. includes/admin/class-wc-settings-jetpack.php +6 -16
  3. includes/admin/class-wcj-settings-custom-fields.php +1 -1
  4. includes/admin/class-wcj-settings-manager.php +5 -4
  5. includes/admin/wcj-modules-cats.php +5 -2
  6. includes/class-wcj-add-to-cart-button-visibility.php +173 -0
  7. includes/class-wcj-add-to-cart.php +3 -3
  8. includes/class-wcj-admin-orders-list.php +3 -3
  9. includes/class-wcj-admin-products-list.php +2 -2
  10. includes/class-wcj-admin-tools.php +41 -4
  11. includes/class-wcj-breadcrumbs.php +1 -1
  12. includes/class-wcj-call-for-price.php +5 -5
  13. includes/class-wcj-cart.php +2 -2
  14. includes/class-wcj-checkout-core-fields.php +28 -8
  15. includes/class-wcj-checkout-custom-fields.php +8 -8
  16. includes/class-wcj-checkout-custom-info.php +2 -2
  17. includes/class-wcj-checkout-customization.php +16 -2
  18. includes/class-wcj-checkout-files-upload.php +6 -6
  19. includes/class-wcj-coupon-code-generator.php +2 -2
  20. includes/class-wcj-currencies.php +2 -2
  21. includes/class-wcj-currency-exchange-rates.php +10 -10
  22. includes/class-wcj-currency-per-product.php +60 -11
  23. includes/class-wcj-emails-verification.php +3 -3
  24. includes/class-wcj-emails.php +4 -4
  25. includes/class-wcj-empty-cart-button.php +1 -1
  26. includes/class-wcj-eu-vat-number.php +53 -9
  27. includes/class-wcj-free-price.php +2 -2
  28. includes/class-wcj-global-discount.php +2 -2
  29. includes/class-wcj-left-to-free-shipping.php +2 -2
  30. includes/class-wcj-mini-cart.php +2 -2
  31. includes/class-wcj-modules-by-user-roles.php +35 -0
  32. includes/class-wcj-more-button-labels.php +19 -2
  33. includes/class-wcj-multicurrency-product-base-price.php +1 -1
  34. includes/class-wcj-multicurrency.php +1 -1
  35. includes/class-wcj-offer-price.php +4 -4
  36. includes/class-wcj-order-custom-statuses.php +5 -5
  37. includes/class-wcj-order-min-amount.php +2 -2
  38. includes/class-wcj-order-numbers.php +63 -8
  39. includes/class-wcj-order-quantities.php +7 -7
  40. includes/class-wcj-orders.php +51 -5
  41. includes/class-wcj-payment-gateways-by-country.php +4 -3
  42. includes/class-wcj-payment-gateways-fees.php +26 -9
  43. includes/class-wcj-payment-gateways-icons.php +1 -1
  44. includes/class-wcj-payment-gateways-per-category.php +2 -2
  45. includes/class-wcj-payment-gateways.php +23 -3
  46. includes/class-wcj-pdf-invoicing.php +2 -2
  47. includes/class-wcj-price-by-country.php +9 -3
  48. includes/class-wcj-price-by-user-role.php +3 -3
  49. includes/class-wcj-price-formats.php +1 -1
  50. includes/class-wcj-price-labels.php +19 -19
  51. includes/class-wcj-product-add-to-cart.php +59 -86
  52. includes/class-wcj-product-addons.php +74 -4
  53. includes/class-wcj-product-bookings.php +1 -1
  54. includes/class-wcj-product-bulk-meta-editor.php +1 -1
  55. includes/class-wcj-product-bulk-price-converter.php +7 -7
  56. includes/class-wcj-product-by-country.php +6 -6
  57. includes/class-wcj-product-by-date.php +2 -2
  58. includes/class-wcj-product-by-time.php +2 -2
  59. includes/class-wcj-product-custom-info.php +2 -2
  60. includes/class-wcj-product-info.php +4 -4
  61. includes/class-wcj-product-listings.php +1 -1
  62. includes/class-wcj-product-open-pricing.php +1 -1
  63. includes/class-wcj-product-price-by-formula.php +2 -2
  64. includes/class-wcj-product-tabs.php +11 -11
  65. includes/class-wcj-products-per-page.php +1 -1
  66. includes/class-wcj-products-xml.php +24 -22
  67. includes/class-wcj-purchase-data.php +16 -25
  68. includes/class-wcj-related-products.php +4 -4
  69. includes/class-wcj-sale-flash.php +3 -3
  70. includes/class-wcj-shipping-by-order-amount.php +1 -1
  71. includes/class-wcj-shipping-calculator.php +1 -1
  72. includes/class-wcj-shipping-options.php +9 -7
  73. includes/class-wcj-sku.php +10 -10
  74. includes/class-wcj-sorting.php +6 -6
  75. includes/class-wcj-track-users.php +1 -1
  76. includes/class-wcj-url-coupons.php +2 -2
  77. includes/class-wcj-wholesale-price.php +10 -8
  78. includes/classes/class-wcj-module-shipping-by-condition.php +1 -1
  79. includes/classes/class-wcj-module.php +8 -9
  80. includes/core/class-wcj-admin.php +20 -28
  81. includes/{constants → core}/wcj-constants.php +12 -1
  82. includes/core/wcj-functions.php +2 -2
  83. includes/core/wcj-loader.php +2 -2
  84. includes/core/wcj-modules.php +4 -1
  85. includes/core/wcj-options.php +6 -16
  86. includes/core/wcj-shortcodes.php +11 -11
  87. includes/exchange-rates/class-wcj-exchange-rates-crons.php +10 -10
  88. includes/export/class-wcj-exporter-orders.php +4 -4
  89. includes/export/class-wcj-exporter-products.php +2 -2
  90. includes/functions/wcj-functions-admin.php +66 -3
  91. includes/functions/wcj-functions-booster-core.php +67 -0
  92. includes/functions/wcj-functions-core.php +13 -32
  93. includes/functions/wcj-functions-country.php +3 -3
  94. includes/functions/wcj-functions-currencies.php +4 -2
  95. includes/functions/wcj-functions-debug.php +2 -5
  96. includes/functions/wcj-functions-exchange-rates.php +6 -3
  97. includes/functions/wcj-functions-general.php +128 -2
  98. includes/functions/wcj-functions-html.php +6 -4
  99. includes/functions/wcj-functions-invoicing.php +1 -1
  100. includes/functions/wcj-functions-price-currency.php +11 -11
  101. includes/functions/wcj-functions-products.php +6 -18
  102. includes/functions/wcj-functions-users.php +1 -1
  103. includes/gateways/class-wc-gateway-wcj-custom.php +6 -6
  104. includes/input-fields/class-wcj-product-input-fields-core.php +15 -15
  105. includes/lib/tcpdf_min/include/barcodes/pdf417.php +6 -0
  106. includes/pdf-invoices/class-wcj-pdf-invoicing-report-tool.php +98 -33
  107. includes/pdf-invoices/submodules/class-wcj-pdf-invoicing-advanced.php +87 -0
  108. includes/pdf-invoices/submodules/class-wcj-pdf-invoicing-display.php +39 -35
  109. includes/price-by-country/class-wcj-price-by-country-core.php +1 -1
  110. includes/price-by-country/class-wcj-price-by-country-group-generator.php +1 -1
  111. includes/price-by-country/class-wcj-price-by-country-local.php +37 -57
  112. includes/price-by-country/wcj-country-currency.php +5 -5
  113. includes/reports/class-wcj-currency-reports.php +3 -3
  114. includes/reports/countries/wcj-country-sets.php +7 -2
  115. includes/reports/wcj-class-reports-customers.php +30 -29
  116. includes/settings/meta-box/wcj-settings-meta-box-add-to-cart-button-visibility.php +51 -0
  117. includes/settings/meta-box/wcj-settings-meta-box-admin-tools.php +39 -0
  118. includes/settings/meta-box/wcj-settings-meta-box-currency-per-product.php +1 -1
  119. includes/settings/meta-box/wcj-settings-meta-box-multicurrency-base-price.php +2 -2
  120. includes/settings/meta-box/wcj-settings-meta-box-multicurrency.php +1 -1
  121. includes/settings/meta-box/wcj-settings-meta-box-order-quantities.php +2 -2
  122. includes/settings/meta-box/wcj-settings-meta-box-price-by-country.php +75 -0
  123. includes/settings/meta-box/wcj-settings-meta-box-product-add-to-cart.php +2 -26
  124. includes/settings/meta-box/wcj-settings-meta-box-product-addons.php +8 -1
  125. includes/settings/meta-box/wcj-settings-meta-box-product-by-country.php +3 -3
  126. includes/settings/meta-box/wcj-settings-meta-box-product-by-user-role.php +3 -2
  127. includes/settings/meta-box/wcj-settings-meta-box-purchase-data.php +1 -1
  128. includes/settings/meta-box/wcj-settings-meta-box-wholesale-price.php +6 -6
  129. includes/settings/wcj-settings-add-to-cart-button-visibility.php +111 -0
  130. includes/settings/wcj-settings-add-to-cart.php +3 -3
  131. includes/settings/wcj-settings-address-formats.php +1 -1
  132. includes/settings/wcj-settings-admin-orders-list.php +6 -4
  133. includes/settings/wcj-settings-admin-products-list.php +3 -3
  134. includes/settings/wcj-settings-admin-tools.php +8 -1
  135. includes/settings/wcj-settings-breadcrumbs.php +2 -2
  136. includes/settings/wcj-settings-call-for-price.php +10 -10
  137. includes/settings/wcj-settings-cart.php +6 -8
  138. includes/settings/wcj-settings-checkout-core-fields.php +2 -2
  139. includes/settings/wcj-settings-checkout-custom-fields.php +3 -3
  140. includes/settings/wcj-settings-checkout-custom-info.php +5 -7
  141. includes/settings/wcj-settings-checkout-customization.php +16 -3
  142. includes/settings/wcj-settings-checkout-files-upload.php +3 -3
  143. includes/settings/wcj-settings-coupon-code-generator.php +4 -4
  144. includes/settings/wcj-settings-currency-exchange-rates.php +3 -3
  145. includes/settings/wcj-settings-currency-per-product.php +24 -7
  146. includes/settings/wcj-settings-currency.php +5 -5
  147. includes/settings/wcj-settings-emails-verification.php +8 -8
  148. includes/settings/wcj-settings-emails.php +3 -3
  149. includes/settings/wcj-settings-empty-cart.php +4 -4
  150. includes/settings/wcj-settings-eu-vat-number.php +4 -4
  151. includes/settings/wcj-settings-export.php +12 -12
  152. includes/settings/wcj-settings-free-price.php +2 -2
  153. includes/settings/wcj-settings-general.php +2 -2
  154. includes/settings/wcj-settings-global-discount.php +4 -4
  155. includes/settings/wcj-settings-left-to-free-shipping.php +9 -15
  156. includes/settings/wcj-settings-mini-cart.php +3 -3
  157. includes/settings/wcj-settings-modules-by-user-roles.php +51 -0
  158. includes/settings/wcj-settings-more-button-labels.php +9 -1
  159. includes/settings/wcj-settings-multicurrency-base-price.php +7 -7
  160. includes/settings/wcj-settings-multicurrency.php +6 -6
  161. includes/settings/wcj-settings-offer-price.php +5 -5
  162. includes/settings/wcj-settings-order-custom-statuses.php +8 -8
  163. includes/settings/wcj-settings-order-min-amount.php +6 -6
  164. includes/settings/wcj-settings-order-numbers.php +25 -16
  165. includes/settings/wcj-settings-order-quantities.php +8 -8
  166. includes/settings/wcj-settings-orders.php +27 -10
  167. includes/settings/wcj-settings-payment-gateways-by-country.php +4 -4
  168. includes/settings/wcj-settings-payment-gateways-by-currency.php +5 -5
  169. includes/settings/wcj-settings-payment-gateways-by-shipping.php +2 -2
  170. includes/settings/wcj-settings-payment-gateways-by-user-role.php +2 -2
  171. includes/settings/wcj-settings-payment-gateways-currency.php +3 -3
  172. includes/settings/wcj-settings-payment-gateways-icons.php +2 -2
  173. includes/settings/wcj-settings-payment-gateways-min-max.php +2 -2
  174. includes/settings/wcj-settings-payment-gateways-per-category.php +4 -4
  175. includes/settings/wcj-settings-payment-gateways.php +22 -5
  176. includes/settings/wcj-settings-pdf-invoicing-advanced.php +179 -0
  177. includes/settings/wcj-settings-pdf-invoicing-display.php +1 -19
  178. includes/settings/wcj-settings-pdf-invoicing-emails.php +1 -1
  179. includes/settings/wcj-settings-pdf-invoicing-styling.php +1 -53
  180. includes/settings/wcj-settings-pdf-invoicing-templates.php +8 -16
  181. includes/settings/wcj-settings-pdf-invoicing.php +5 -77
  182. includes/settings/wcj-settings-price-by-country.php +37 -11
  183. includes/settings/wcj-settings-price-by-user-role.php +3 -3
  184. includes/settings/wcj-settings-price-formats.php +3 -3
  185. includes/settings/wcj-settings-price-labels.php +37 -47
  186. includes/settings/wcj-settings-product-add-to-cart.php +91 -46
  187. includes/settings/wcj-settings-product-addons.php +28 -17
  188. includes/settings/wcj-settings-product-bulk-meta-editor.php +2 -2
  189. includes/settings/wcj-settings-product-by-country.php +6 -6
  190. includes/settings/wcj-settings-product-by-date.php +4 -4
  191. includes/settings/wcj-settings-product-by-time.php +4 -4
  192. includes/settings/wcj-settings-product-by-user.php +9 -9
  193. includes/settings/wcj-settings-product-custom-info.php +3 -3
  194. includes/settings/wcj-settings-product-input-fields.php +5 -5
  195. includes/settings/wcj-settings-product-listings.php +2 -2
  196. includes/settings/wcj-settings-product-open-pricing.php +10 -10
  197. includes/settings/wcj-settings-product-price-by-formula.php +2 -2
  198. includes/settings/wcj-settings-product-tabs.php +12 -12
  199. includes/settings/wcj-settings-products-per-page.php +2 -2
  200. includes/settings/wcj-settings-products-xml.php +12 -16
  201. includes/settings/wcj-settings-purchase-data.php +7 -7
  202. includes/settings/wcj-settings-related-products.php +2 -2
  203. includes/settings/wcj-settings-sale-flash.php +4 -4
  204. includes/settings/wcj-settings-shipping-by-condition.php +2 -2
  205. includes/settings/wcj-settings-shipping-by-order-amount.php +2 -2
  206. includes/settings/wcj-settings-shipping-calculator.php +6 -6
  207. includes/settings/wcj-settings-shipping-options.php +8 -8
  208. includes/settings/wcj-settings-sku.php +10 -10
  209. includes/settings/wcj-settings-sorting.php +6 -6
  210. includes/settings/wcj-settings-track-users.php +2 -2
  211. includes/settings/wcj-settings-url-coupons.php +4 -4
  212. includes/settings/wcj-settings-wholesale-price.php +15 -7
  213. includes/shipping/class-wc-shipping-wcj-custom-with-shipping-zones.php +2 -2
  214. includes/shipping/class-wc-shipping-wcj-custom.php +2 -2
  215. includes/shortcodes/class-wcj-shortcodes-general.php +46 -90
  216. includes/shortcodes/class-wcj-shortcodes-order-items.php +62 -9
  217. includes/shortcodes/class-wcj-shortcodes-orders.php +109 -11
  218. includes/shortcodes/class-wcj-shortcodes-products-add-form.php +3 -3
  219. includes/shortcodes/class-wcj-shortcodes-products-crowdfunding.php +17 -9
  220. includes/shortcodes/class-wcj-shortcodes-products.php +53 -12
  221. includes/templates/cart-empty.php +36 -36
  222. includes/tools/class-wcj-order-statuses-tool.php +1 -1
  223. langs/woocommerce-jetpack.pot +1367 -1026
  224. readme.txt +77 -3
  225. woocommerce-jetpack.php +6 -18
includes/add-to-cart/class-wcj-add-to-cart-per-category.php CHANGED
@@ -44,7 +44,7 @@ class WCJ_Add_To_Cart_Per_Category {
44
  function change_add_to_cart_button_text( $add_to_cart_text, $single_or_archive ) {
45
  $product_categories = get_the_terms( get_the_ID(), 'product_cat' );
46
  if ( empty( $product_categories ) ) return $add_to_cart_text;
47
- for ( $i = 1; $i <= apply_filters( 'booster_get_option', 1, get_option( 'wcj_add_to_cart_per_category_total_groups_number', 1 ) ); $i++ ) {
48
  if ( 'yes' !== get_option( 'wcj_add_to_cart_per_category_enabled_group_' . $i ) ) continue;
49
  $categories = get_option( 'wcj_add_to_cart_per_category_ids_group_' . $i );
50
  if ( empty( $categories ) ) continue;
44
  function change_add_to_cart_button_text( $add_to_cart_text, $single_or_archive ) {
45
  $product_categories = get_the_terms( get_the_ID(), 'product_cat' );
46
  if ( empty( $product_categories ) ) return $add_to_cart_text;
47
+ for ( $i = 1; $i <= apply_filters( 'booster_option', 1, get_option( 'wcj_add_to_cart_per_category_total_groups_number', 1 ) ); $i++ ) {
48
  if ( 'yes' !== get_option( 'wcj_add_to_cart_per_category_enabled_group_' . $i ) ) continue;
49
  $categories = get_option( 'wcj_add_to_cart_per_category_ids_group_' . $i );
50
  if ( empty( $categories ) ) continue;
includes/admin/class-wc-settings-jetpack.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Settings
4
  *
5
- * @version 3.2.4
6
  * @since 1.0.0
7
  * @author Algoritmika Ltd.
8
  */
@@ -243,8 +243,7 @@ class WC_Settings_Jetpack extends WC_Settings_Page {
243
  /**
244
  * output_dashboard.
245
  *
246
- * @version 3.2.4
247
- * @todo (maybe) remove `woojetpack_readme`
248
  */
249
  function output_dashboard( $current_section ) {
250
 
@@ -263,9 +262,6 @@ class WC_Settings_Jetpack extends WC_Settings_Page {
263
  echo '<p>' . __( 'This section lets you export, import or reset all Booster\'s modules settings.', 'woocommerce-jetpack' ) . '</p>';
264
  }
265
 
266
- $readme_html = '';
267
- $readme_html .= '<pre>';
268
-
269
  if ( 'alphabetically' === $current_section ) {
270
  $this->output_dashboard_modules( $the_settings );
271
  } elseif ( 'by_category' === $current_section ) {
@@ -280,8 +276,7 @@ class WC_Settings_Jetpack extends WC_Settings_Page {
280
  } else {
281
  echo '<h4>' . $cat_label_info['label'] . '</h4>';
282
  }
283
- $readme_html .= PHP_EOL . '**' . $cat_label_info['label'] . '**' . PHP_EOL . PHP_EOL;
284
- $readme_html .= $this->output_dashboard_modules( $the_settings, $cat_id );
285
  }
286
  } elseif ( 'active' === $current_section ) {
287
  $this->output_dashboard_modules( $the_settings, 'active_modules_only' );
@@ -335,10 +330,8 @@ class WC_Settings_Jetpack extends WC_Settings_Page {
335
  $plugin_data = get_plugin_data( WCJ_PLUGIN_FILE );
336
  $plugin_title = ( isset( $plugin_data['Name'] ) ? '[' . $plugin_data['Name'] . '] ' : '' );
337
  echo '<p style="text-align:right;color:gray;font-size:x-small;font-style:italic;">' . $plugin_title .
338
- __( 'Version', 'woocommerce-jetpack' ) . ': ' . get_option( 'booster_for_woocommerce_version', 'N/A' ) . '</p>';
339
 
340
- $readme_html .= '</pre>';
341
- if ( isset( $_GET['woojetpack_readme'] ) ) echo $readme_html;
342
  }
343
 
344
  /**
@@ -351,10 +344,9 @@ class WC_Settings_Jetpack extends WC_Settings_Page {
351
  /**
352
  * output_dashboard_modules.
353
  *
354
- * @version 3.0.0
355
  */
356
  function output_dashboard_modules( $settings, $cat_id = '' ) {
357
- $readme_html = '';
358
  ?>
359
  <table class="wp-list-table widefat plugins">
360
  <thead>
@@ -412,7 +404,6 @@ class WC_Settings_Jetpack extends WC_Settings_Page {
412
  $html .= '<div class="plugin-description"><p>' . ( ( isset( $the_feature['wcj_desc'] ) ) ? $the_feature['wcj_desc'] : $the_feature['desc_tip'] ) . '</p></div>';
413
  $html .= '</td>';
414
  $html .= '</tr>';
415
- $readme_html .= '* *' . $the_feature['title'] . '* - ' . ( ( isset( $the_feature['wcj_desc'] ) ) ? $the_feature['wcj_desc'] : $the_feature['desc_tip'] ) . PHP_EOL;
416
  }
417
  echo $html;
418
  if ( 0 == $total_modules && 'active_modules_only' === $cat_id ) {
@@ -420,7 +411,6 @@ class WC_Settings_Jetpack extends WC_Settings_Page {
420
  }
421
  ?></tbody>
422
  </table><p style="color:gray;font-size:x-small;font-style:italic;"><?php echo __( 'Total Modules:' ) . ' ' . $total_modules; ?></p><?php
423
- return $readme_html;
424
  }
425
 
426
  /**
@@ -432,7 +422,7 @@ class WC_Settings_Jetpack extends WC_Settings_Page {
432
  global $current_section;
433
  $settings = $this->get_settings( $current_section );
434
  WC_Admin_Settings::save_fields( $settings );
435
- echo apply_filters( 'booster_get_message', '', 'global' );
436
  do_action( 'woojetpack_after_settings_save', $this->get_sections(), $current_section );
437
  }
438
 
2
  /**
3
  * Booster for WooCommerce - Settings
4
  *
5
+ * @version 3.3.0
6
  * @since 1.0.0
7
  * @author Algoritmika Ltd.
8
  */
243
  /**
244
  * output_dashboard.
245
  *
246
+ * @version 3.3.0
 
247
  */
248
  function output_dashboard( $current_section ) {
249
 
262
  echo '<p>' . __( 'This section lets you export, import or reset all Booster\'s modules settings.', 'woocommerce-jetpack' ) . '</p>';
263
  }
264
 
 
 
 
265
  if ( 'alphabetically' === $current_section ) {
266
  $this->output_dashboard_modules( $the_settings );
267
  } elseif ( 'by_category' === $current_section ) {
276
  } else {
277
  echo '<h4>' . $cat_label_info['label'] . '</h4>';
278
  }
279
+ $this->output_dashboard_modules( $the_settings, $cat_id );
 
280
  }
281
  } elseif ( 'active' === $current_section ) {
282
  $this->output_dashboard_modules( $the_settings, 'active_modules_only' );
330
  $plugin_data = get_plugin_data( WCJ_PLUGIN_FILE );
331
  $plugin_title = ( isset( $plugin_data['Name'] ) ? '[' . $plugin_data['Name'] . '] ' : '' );
332
  echo '<p style="text-align:right;color:gray;font-size:x-small;font-style:italic;">' . $plugin_title .
333
+ __( 'Version', 'woocommerce-jetpack' ) . ': ' . get_option( WCJ_VERSION_OPTION, 'N/A' ) . '</p>';
334
 
 
 
335
  }
336
 
337
  /**
344
  /**
345
  * output_dashboard_modules.
346
  *
347
+ * @version 3.3.0
348
  */
349
  function output_dashboard_modules( $settings, $cat_id = '' ) {
 
350
  ?>
351
  <table class="wp-list-table widefat plugins">
352
  <thead>
404
  $html .= '<div class="plugin-description"><p>' . ( ( isset( $the_feature['wcj_desc'] ) ) ? $the_feature['wcj_desc'] : $the_feature['desc_tip'] ) . '</p></div>';
405
  $html .= '</td>';
406
  $html .= '</tr>';
 
407
  }
408
  echo $html;
409
  if ( 0 == $total_modules && 'active_modules_only' === $cat_id ) {
411
  }
412
  ?></tbody>
413
  </table><p style="color:gray;font-size:x-small;font-style:italic;"><?php echo __( 'Total Modules:' ) . ' ' . $total_modules; ?></p><?php
 
414
  }
415
 
416
  /**
422
  global $current_section;
423
  $settings = $this->get_settings( $current_section );
424
  WC_Admin_Settings::save_fields( $settings );
425
+ echo apply_filters( 'booster_message', '', 'global' );
426
  do_action( 'woojetpack_after_settings_save', $this->get_sections(), $current_section );
427
  }
428
 
includes/admin/class-wcj-settings-custom-fields.php CHANGED
@@ -294,7 +294,7 @@ class WCJ_Settings_Custom_Fields {
294
  $tooltip_html = ( isset( $value['desc_tip'] ) && '' != $value['desc_tip'] ) ?
295
  '<span class="woocommerce-help-tip" data-tip="' . $value['desc_tip'] . '"></span>' : '';
296
  $description = ' <span class="description">' . $value['desc'] . '</span>';
297
- $save_button = apply_filters( 'booster_get_option', '',
298
  ' <input name="save" class="button-primary" type="submit" value="' . __( 'Save changes', 'woocommerce' ) . '">' );
299
  // Custom attribute handling
300
  $custom_attributes = array();
294
  $tooltip_html = ( isset( $value['desc_tip'] ) && '' != $value['desc_tip'] ) ?
295
  '<span class="woocommerce-help-tip" data-tip="' . $value['desc_tip'] . '"></span>' : '';
296
  $description = ' <span class="description">' . $value['desc'] . '</span>';
297
+ $save_button = apply_filters( 'booster_option', '',
298
  ' <input name="save" class="button-primary" type="submit" value="' . __( 'Save changes', 'woocommerce' ) . '">' );
299
  // Custom attribute handling
300
  $custom_attributes = array();
includes/admin/class-wcj-settings-manager.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Settings Manager
4
  *
5
- * @version 3.2.4
6
  * @since 2.9.0
7
  * @author Algoritmika Ltd.
8
  */
@@ -17,7 +17,8 @@ class WCJ_Settings_Manager {
17
  * Constructor.
18
  *
19
  * @version 2.9.0
20
- * @version 2.9.0
 
21
  */
22
  function __construct() {
23
  // Import / Export / Reset Booster's settings
@@ -87,7 +88,7 @@ class WCJ_Settings_Manager {
87
  /**
88
  * manage_options_export.
89
  *
90
- * @version 2.9.0
91
  * @since 2.5.2
92
  */
93
  function manage_options_export() {
@@ -108,7 +109,7 @@ class WCJ_Settings_Manager {
108
  }
109
  }
110
  $export_settings = json_encode( $export_settings );
111
- $export_settings = 'Booster for WooCommerce v' . get_option( 'booster_for_woocommerce_version', 'NA' ) . PHP_EOL . $export_settings;
112
  header( "Content-Type: application/octet-stream" );
113
  header( "Content-Disposition: attachment; filename=booster_settings.txt" );
114
  header( "Content-Type: application/octet-stream" );
2
  /**
3
  * Booster for WooCommerce - Settings Manager
4
  *
5
+ * @version 3.3.0
6
  * @since 2.9.0
7
  * @author Algoritmika Ltd.
8
  */
17
  * Constructor.
18
  *
19
  * @version 2.9.0
20
+ * @since 2.9.0
21
+ * @todo add options to import/export selected modules only
22
  */
23
  function __construct() {
24
  // Import / Export / Reset Booster's settings
88
  /**
89
  * manage_options_export.
90
  *
91
+ * @version 3.3.0
92
  * @since 2.5.2
93
  */
94
  function manage_options_export() {
109
  }
110
  }
111
  $export_settings = json_encode( $export_settings );
112
+ $export_settings = 'Booster for WooCommerce v' . get_option( WCJ_VERSION_OPTION, 'NA' ) . PHP_EOL . $export_settings;
113
  header( "Content-Type: application/octet-stream" );
114
  header( "Content-Disposition: attachment; filename=booster_settings.txt" );
115
  header( "Content-Type: application/octet-stream" );
includes/admin/wcj-modules-cats.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Modules Array
4
  *
5
- * @version 3.2.4
6
  * @since 2.2.0
7
  * @author Algoritmika Ltd.
8
  * @todo (maybe) split "Shipping & Orders", "Cart & Checkout", "Products", "Prices & Currencies" etc.
@@ -71,6 +71,7 @@ return apply_filters( 'wcj_modules', array(
71
  'stock',
72
  'product_input_fields',
73
  'product_add_to_cart',
 
74
  'purchase_data',
75
  'product_bookings',
76
  'crowdfunding',
@@ -158,6 +159,7 @@ return apply_filters( 'wcj_modules', array(
158
  'pdf_invoicing_page',
159
  'pdf_invoicing_emails',
160
  'pdf_invoicing_display',
 
161
  ),
162
  ),
163
 
@@ -180,7 +182,8 @@ return apply_filters( 'wcj_modules', array(
180
  'custom_css',
181
  'custom_js',
182
  'track_users',
183
- 'product_info',
 
184
  ),
185
  ),
186
 
2
  /**
3
  * Booster for WooCommerce - Modules Array
4
  *
5
+ * @version 3.3.0
6
  * @since 2.2.0
7
  * @author Algoritmika Ltd.
8
  * @todo (maybe) split "Shipping & Orders", "Cart & Checkout", "Products", "Prices & Currencies" etc.
71
  'stock',
72
  'product_input_fields',
73
  'product_add_to_cart',
74
+ 'add_to_cart_button_visibility',
75
  'purchase_data',
76
  'product_bookings',
77
  'crowdfunding',
159
  'pdf_invoicing_page',
160
  'pdf_invoicing_emails',
161
  'pdf_invoicing_display',
162
+ 'pdf_invoicing_advanced',
163
  ),
164
  ),
165
 
182
  'custom_css',
183
  'custom_js',
184
  'track_users',
185
+ 'modules_by_user_roles',
186
+ 'product_info', // deprecated
187
  ),
188
  ),
189
 
includes/class-wcj-add-to-cart-button-visibility.php ADDED
@@ -0,0 +1,173 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Booster for WooCommerce - Module - Add to Cart Button Visibility
4
+ *
5
+ * @version 3.3.0
6
+ * @since 3.3.0
7
+ * @author Algoritmika Ltd.
8
+ */
9
+
10
+ if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
11
+
12
+ if ( ! class_exists( 'WCJ_Add_To_Cart_Button_Visibility' ) ) :
13
+
14
+ class WCJ_Add_To_Cart_Button_Visibility extends WCJ_Module {
15
+
16
+ /**
17
+ * Constructor.
18
+ *
19
+ * @version 3.3.0
20
+ * @since 3.3.0
21
+ */
22
+ function __construct() {
23
+
24
+ $this->id = 'add_to_cart_button_visibility';
25
+ $this->short_desc = __( 'Add to Cart Button Visibility', 'woocommerce-jetpack' );
26
+ $this->desc = __( 'Enable/disable WooCommerce Add to Cart button globally or on per product basis.', 'woocommerce-jetpack' );
27
+ $this->extra_desc = '<em>' . sprintf(
28
+ __( 'If you need to enable/disable Add to Cart button for some <strong>user roles</strong> only, we suggest using this module in conjunction with Booster\'s %s module.', 'woocommerce-jetpack' ),
29
+ '<a href="' . wcj_get_module_settings_admin_url( 'modules_by_user_roles' ) . '">' .
30
+ __( 'Modules By User Roles', 'woocommerce-jetpack' ) . '</a>'
31
+ ) . '</em>';
32
+ $this->link_slug = 'woocommerce-add-to-cart-button-visibility';
33
+ parent::__construct();
34
+
35
+ if ( $this->is_enabled() ) {
36
+ // All products
37
+ if ( 'yes' === get_option( 'wcj_add_to_cart_button_global_enabled', 'no' ) ) {
38
+ // Archives
39
+ if ( 'yes' === get_option( 'wcj_add_to_cart_button_disable_archives', 'no' ) ) {
40
+ add_action( 'init', array( $this, 'add_to_cart_button_disable_archives' ), PHP_INT_MAX );
41
+ }
42
+ // Single Product
43
+ if ( 'yes' === get_option( 'wcj_add_to_cart_button_disable_single', 'no' ) ) {
44
+ add_action( 'init', array( $this, 'add_to_cart_button_disable_single' ), PHP_INT_MAX );
45
+ }
46
+ }
47
+ // Per category
48
+ if ( 'yes' === get_option( 'wcj_add_to_cart_button_per_category_enabled', 'no' ) ) {
49
+ // Single Product
50
+ add_action( 'woocommerce_before_add_to_cart_button', array( $this, 'add_to_cart_button_disable_start_per_category' ), PHP_INT_MAX, 0 );
51
+ add_action( 'woocommerce_after_add_to_cart_button', array( $this, 'add_to_cart_button_disable_end_per_category' ), PHP_INT_MAX, 0 );
52
+ // Archives
53
+ add_filter( 'woocommerce_loop_add_to_cart_link', array( $this, 'add_to_cart_button_loop_disable_per_category' ), PHP_INT_MAX, 2 );
54
+ }
55
+ // Per product
56
+ if ( 'yes' === get_option( 'wcj_add_to_cart_button_per_product_enabled', 'no' ) ) {
57
+ // Single Product
58
+ add_action( 'woocommerce_before_add_to_cart_button', array( $this, 'add_to_cart_button_disable_start' ), PHP_INT_MAX, 0 );
59
+ add_action( 'woocommerce_after_add_to_cart_button', array( $this, 'add_to_cart_button_disable_end' ), PHP_INT_MAX, 0 );
60
+ // Archives
61
+ add_filter( 'woocommerce_loop_add_to_cart_link', array( $this, 'add_to_cart_button_loop_disable' ), PHP_INT_MAX, 2 );
62
+ // Metaboxes
63
+ add_action( 'add_meta_boxes', array( $this, 'add_meta_box' ) );
64
+ add_action( 'save_post_product', array( $this, 'save_meta_box' ), PHP_INT_MAX, 2 );
65
+ }
66
+ }
67
+
68
+ }
69
+
70
+ /**
71
+ * add_to_cart_button_disable_end_per_category.
72
+ *
73
+ * @version 3.3.0
74
+ * @since 3.3.0
75
+ */
76
+ function add_to_cart_button_disable_end_per_category() {
77
+ $cats_to_hide = get_option( 'wcj_add_to_cart_button_per_category_disable_single', '' );
78
+ if ( ! empty( $cats_to_hide ) && 0 != get_the_ID() && wcj_is_product_term( get_the_ID(), $cats_to_hide, 'product_cat' ) ) {
79
+ ob_end_clean();
80
+ echo do_shortcode( get_option( 'wcj_add_to_cart_button_per_category_content_single', '' ) );
81
+ }
82
+ }
83
+
84
+ /**
85
+ * add_to_cart_button_disable_start_per_category.
86
+ *
87
+ * @version 3.3.0
88
+ * @since 3.3.0
89
+ */
90
+ function add_to_cart_button_disable_start_per_category() {
91
+ $cats_to_hide = get_option( 'wcj_add_to_cart_button_per_category_disable_single', '' );
92
+ if ( ! empty( $cats_to_hide ) && 0 != get_the_ID() && wcj_is_product_term( get_the_ID(), $cats_to_hide, 'product_cat' ) ) {
93
+ ob_start();
94
+ }
95
+ }
96
+
97
+ /**
98
+ * add_to_cart_button_loop_disable_per_category.
99
+ *
100
+ * @version 3.3.0
101
+ * @since 3.3.0
102
+ */
103
+ function add_to_cart_button_loop_disable_per_category( $link, $_product ) {
104
+ $cats_to_hide = get_option( 'wcj_add_to_cart_button_per_category_disable_loop', '' );
105
+ if ( ! empty( $cats_to_hide ) && wcj_is_product_term( wcj_get_product_id_or_variation_parent_id( $_product ), $cats_to_hide, 'product_cat' ) ) {
106
+ return do_shortcode( get_option( 'wcj_add_to_cart_button_per_category_content_loop', '' ) );
107
+ }
108
+ return $link;
109
+ }
110
+
111
+ /**
112
+ * add_to_cart_button_disable_single.
113
+ *
114
+ * @version 2.6.0
115
+ * @since 2.6.0
116
+ */
117
+ function add_to_cart_button_disable_single() {
118
+ remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30 );
119
+ }
120
+
121
+ /**
122
+ * add_to_cart_button_disable_archives.
123
+ *
124
+ * @version 2.6.0
125
+ * @since 2.6.0
126
+ */
127
+ function add_to_cart_button_disable_archives() {
128
+ remove_action( 'woocommerce_after_shop_loop_item', 'woocommerce_template_loop_add_to_cart', 10 );
129
+ }
130
+
131
+ /**
132
+ * add_to_cart_button_loop_disable.
133
+ *
134
+ * @version 3.3.0
135
+ * @since 2.5.2
136
+ */
137
+ function add_to_cart_button_loop_disable( $link, $_product ) {
138
+ if ( 0 != get_the_ID() && 'yes' === get_post_meta( get_the_ID(), '_' . 'wcj_add_to_cart_button_loop_disable', true ) ) {
139
+ return do_shortcode( get_post_meta( get_the_ID(), '_' . 'wcj_add_to_cart_button_loop_disable_content', true ) );
140
+ }
141
+ return $link;
142
+ }
143
+
144
+ /**
145
+ * add_to_cart_button_disable_end.
146
+ *
147
+ * @version 3.3.0
148
+ * @since 2.5.2
149
+ */
150
+ function add_to_cart_button_disable_end() {
151
+ if ( 0 != get_the_ID() && 'yes' === get_post_meta( get_the_ID(), '_' . 'wcj_add_to_cart_button_disable', true ) ) {
152
+ ob_end_clean();
153
+ echo do_shortcode( get_post_meta( get_the_ID(), '_' . 'wcj_add_to_cart_button_disable_content', true ) );
154
+ }
155
+ }
156
+
157
+ /**
158
+ * add_to_cart_button_disable_start.
159
+ *
160
+ * @version 2.5.2
161
+ * @since 2.5.2
162
+ */
163
+ function add_to_cart_button_disable_start() {
164
+ if ( 0 != get_the_ID() && 'yes' === get_post_meta( get_the_ID(), '_' . 'wcj_add_to_cart_button_disable', true ) ) {
165
+ ob_start();
166
+ }
167
+ }
168
+
169
+ }
170
+
171
+ endif;
172
+
173
+ return new WCJ_Add_To_Cart_Button_Visibility();
includes/class-wcj-add-to-cart.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Module - Add to Cart
4
  *
5
- * @version 2.8.0
6
  * @author Algoritmika Ltd.
7
  */
8
 
@@ -15,12 +15,12 @@ class WCJ_Add_To_Cart extends WCJ_Module {
15
  /**
16
  * Constructor.
17
  *
18
- * @version 2.8.0
19
  */
20
  function __construct() {
21
 
22
  $this->id = 'add_to_cart';
23
- $this->short_desc = __( 'Add to Cart Labels', 'woocommerce-jetpack' );
24
  $this->desc = __( 'Change text for Add to Cart button by WooCommerce product type, by product category or for individual products.', 'woocommerce-jetpack' );
25
  $this->link_slug = 'woocommerce-add-to-cart-labels';
26
  parent::__construct();
2
  /**
3
  * Booster for WooCommerce - Module - Add to Cart
4
  *
5
+ * @version 3.3.0
6
  * @author Algoritmika Ltd.
7
  */
8
 
15
  /**
16
  * Constructor.
17
  *
18
+ * @version 3.3.0
19
  */
20
  function __construct() {
21
 
22
  $this->id = 'add_to_cart';
23
+ $this->short_desc = __( 'Add to Cart Button Labels', 'woocommerce-jetpack' );
24
  $this->desc = __( 'Change text for Add to Cart button by WooCommerce product type, by product category or for individual products.', 'woocommerce-jetpack' );
25
  $this->link_slug = 'woocommerce-add-to-cart-labels';
26
  parent::__construct();
includes/class-wcj-admin-orders-list.php CHANGED
@@ -100,7 +100,7 @@ class WCJ_Admin_Orders_List extends WCJ_Module {
100
  */
101
  function shop_order_sortable_columns( $columns ) {
102
  $custom = array();
103
- $total_number = apply_filters( 'booster_get_option', 1, get_option( 'wcj_orders_list_custom_columns_total_number', 1 ) );
104
  for ( $i = 1; $i <= $total_number; $i++ ) {
105
  if ( 'yes' === get_option( 'wcj_orders_list_custom_columns_enabled_' . $i, 'no' ) ) {
106
  if ( 'no' != get_option( 'wcj_orders_list_custom_columns_sortable_' . $i, 'no' ) && '' != get_option( 'wcj_orders_list_custom_columns_sortable_key_' . $i, '' ) ) {
@@ -332,7 +332,7 @@ class WCJ_Admin_Orders_List extends WCJ_Module {
332
  if ( 'yes' === get_option( 'wcj_orders_list_custom_columns_currency', 'no' ) ) {
333
  $columns['currency'] = __( 'Currency Code', 'woocommerce-jetpack' );
334
  }
335
- $total_number = apply_filters( 'booster_get_option', 1, get_option( 'wcj_orders_list_custom_columns_total_number', 1 ) );
336
  for ( $i = 1; $i <= $total_number; $i++ ) {
337
  if ( 'yes' === get_option( 'wcj_orders_list_custom_columns_enabled_' . $i, 'no' ) ) {
338
  $columns[ 'wcj_orders_custom_column_' . $i ] = get_option( 'wcj_orders_list_custom_columns_label_' . $i, '' );
@@ -356,7 +356,7 @@ class WCJ_Admin_Orders_List extends WCJ_Module {
356
  } elseif ( 'currency' === $column && 'yes' === get_option( 'wcj_orders_list_custom_columns_currency', 'no' ) ) {
357
  echo do_shortcode( '[wcj_order_currency]' );
358
  } else {
359
- $total_number = apply_filters( 'booster_get_option', 1, get_option( 'wcj_orders_list_custom_columns_total_number', 1 ) );
360
  for ( $i = 1; $i <= $total_number; $i++ ) {
361
  if ( 'yes' === get_option( 'wcj_orders_list_custom_columns_enabled_' . $i, 'no' ) ) {
362
  if ( 'wcj_orders_custom_column_' . $i === $column ) {
100
  */
101
  function shop_order_sortable_columns( $columns ) {
102
  $custom = array();
103
+ $total_number = apply_filters( 'booster_option', 1, get_option( 'wcj_orders_list_custom_columns_total_number', 1 ) );
104
  for ( $i = 1; $i <= $total_number; $i++ ) {
105
  if ( 'yes' === get_option( 'wcj_orders_list_custom_columns_enabled_' . $i, 'no' ) ) {
106
  if ( 'no' != get_option( 'wcj_orders_list_custom_columns_sortable_' . $i, 'no' ) && '' != get_option( 'wcj_orders_list_custom_columns_sortable_key_' . $i, '' ) ) {
332
  if ( 'yes' === get_option( 'wcj_orders_list_custom_columns_currency', 'no' ) ) {
333
  $columns['currency'] = __( 'Currency Code', 'woocommerce-jetpack' );
334
  }
335
+ $total_number = apply_filters( 'booster_option', 1, get_option( 'wcj_orders_list_custom_columns_total_number', 1 ) );
336
  for ( $i = 1; $i <= $total_number; $i++ ) {
337
  if ( 'yes' === get_option( 'wcj_orders_list_custom_columns_enabled_' . $i, 'no' ) ) {
338
  $columns[ 'wcj_orders_custom_column_' . $i ] = get_option( 'wcj_orders_list_custom_columns_label_' . $i, '' );
356
  } elseif ( 'currency' === $column && 'yes' === get_option( 'wcj_orders_list_custom_columns_currency', 'no' ) ) {
357
  echo do_shortcode( '[wcj_order_currency]' );
358
  } else {
359
+ $total_number = apply_filters( 'booster_option', 1, get_option( 'wcj_orders_list_custom_columns_total_number', 1 ) );
360
  for ( $i = 1; $i <= $total_number; $i++ ) {
361
  if ( 'yes' === get_option( 'wcj_orders_list_custom_columns_enabled_' . $i, 'no' ) ) {
362
  if ( 'wcj_orders_custom_column_' . $i === $column ) {
includes/class-wcj-admin-products-list.php CHANGED
@@ -94,7 +94,7 @@ class WCJ_Admin_Products_List extends WCJ_Module {
94
  * @since 2.9.0
95
  */
96
  function add_product_columns( $columns ) {
97
- $total_number = apply_filters( 'booster_get_option', 1, get_option( 'wcj_products_admin_list_custom_columns_total_number', 1 ) );
98
  for ( $i = 1; $i <= $total_number; $i++ ) {
99
  if ( 'yes' === get_option( 'wcj_products_admin_list_custom_columns_enabled_' . $i, 'no' ) ) {
100
  $columns[ 'wcj_products_custom_column_' . $i ] = get_option( 'wcj_products_admin_list_custom_columns_label_' . $i, '' );
@@ -110,7 +110,7 @@ class WCJ_Admin_Products_List extends WCJ_Module {
110
  * @since 2.9.0
111
  */
112
  function render_product_column( $column ) {
113
- $total_number = apply_filters( 'booster_get_option', 1, get_option( 'wcj_products_admin_list_custom_columns_total_number', 1 ) );
114
  for ( $i = 1; $i <= $total_number; $i++ ) {
115
  if ( 'yes' === get_option( 'wcj_products_admin_list_custom_columns_enabled_' . $i, 'no' ) ) {
116
  if ( 'wcj_products_custom_column_' . $i === $column ) {
94
  * @since 2.9.0
95
  */
96
  function add_product_columns( $columns ) {
97
+ $total_number = apply_filters( 'booster_option', 1, get_option( 'wcj_products_admin_list_custom_columns_total_number', 1 ) );
98
  for ( $i = 1; $i <= $total_number; $i++ ) {
99
  if ( 'yes' === get_option( 'wcj_products_admin_list_custom_columns_enabled_' . $i, 'no' ) ) {
100
  $columns[ 'wcj_products_custom_column_' . $i ] = get_option( 'wcj_products_admin_list_custom_columns_label_' . $i, '' );
110
  * @since 2.9.0
111
  */
112
  function render_product_column( $column ) {
113
+ $total_number = apply_filters( 'booster_option', 1, get_option( 'wcj_products_admin_list_custom_columns_total_number', 1 ) );
114
  for ( $i = 1; $i <= $total_number; $i++ ) {
115
  if ( 'yes' === get_option( 'wcj_products_admin_list_custom_columns_enabled_' . $i, 'no' ) ) {
116
  if ( 'wcj_products_custom_column_' . $i === $column ) {
includes/class-wcj-admin-tools.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Module - Admin Tools
4
  *
5
- * @version 3.2.1
6
  * @author Algoritmika Ltd.
7
  */
8
 
@@ -15,7 +15,7 @@ class WCJ_Admin_Tools extends WCJ_Module {
15
  /**
16
  * Constructor.
17
  *
18
- * @version 2.8.0
19
  */
20
  function __construct() {
21
 
@@ -54,6 +54,39 @@ class WCJ_Admin_Tools extends WCJ_Module {
54
  if ( 'yes' === get_option( 'wcj_admin_tools_show_product_meta_enabled', 'no' ) ) {
55
  add_action( 'add_meta_boxes', array( $this, 'add_product_meta_meta_box' ) );
56
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
57
  }
58
  }
59
 
@@ -132,7 +165,7 @@ class WCJ_Admin_Tools extends WCJ_Module {
132
  /**
133
  * create_admin_tools_tool.
134
  *
135
- * @version 2.9.0
136
  */
137
  function create_admin_tools_tool() {
138
  // Delete log
@@ -149,7 +182,11 @@ class WCJ_Admin_Tools extends WCJ_Module {
149
  // Log
150
  $the_log = '';
151
  $the_log .= '<p style="font-style:italic;color:gray;">' . sprintf( __( 'Now: %s', 'woocommerce-jetpack' ), date( 'Y-m-d H:i:s' ) ) . '</p>';
152
- $the_log .= '<pre>' . get_option( 'wcj_log', '' ) . '</pre>';
 
 
 
 
153
  // Final output
154
  $html = '';
155
  $html .= '<div class="wrap">';
2
  /**
3
  * Booster for WooCommerce - Module - Admin Tools
4
  *
5
+ * @version 3.3.0
6
  * @author Algoritmika Ltd.
7
  */
8
 
15
  /**
16
  * Constructor.
17
  *
18
+ * @version 3.3.0
19
  */
20
  function __construct() {
21
 
54
  if ( 'yes' === get_option( 'wcj_admin_tools_show_product_meta_enabled', 'no' ) ) {
55
  add_action( 'add_meta_boxes', array( $this, 'add_product_meta_meta_box' ) );
56
  }
57
+ // Variable Product Pricing
58
+ if ( 'yes' === get_option( 'wcj_admin_tools_variable_product_pricing_table_enabled', 'no' ) ) {
59
+ add_action( 'admin_head', array( $this, 'make_original_variable_product_pricing_readonly' ) );
60
+ add_action( 'add_meta_boxes', array( $this, 'maybe_add_variable_product_pricing_meta_box' ) );
61
+ add_action( 'save_post_product', array( $this, 'save_meta_box' ), PHP_INT_MAX, 2 );
62
+ }
63
+ }
64
+ }
65
+
66
+ /**
67
+ * make_original_variable_product_pricing_readonly.
68
+ *
69
+ * @version 3.3.0
70
+ * @since 3.3.0
71
+ * @todo this is not really making fields readonly (e.g. field is still editable via keyboard tab button)
72
+ */
73
+ function make_original_variable_product_pricing_readonly() {
74
+ echo '<style>
75
+ div.variable_pricing input.wc_input_price {
76
+ pointer-events: none;
77
+ }
78
+ </style>';
79
+ }
80
+
81
+ /**
82
+ * maybe_add_variable_product_pricing_meta_box.
83
+ *
84
+ * @version 3.3.0
85
+ * @since 3.3.0
86
+ */
87
+ function maybe_add_variable_product_pricing_meta_box() {
88
+ if ( ( $_product = wc_get_product() ) && $_product->is_type( 'variable' ) ) {
89
+ parent::add_meta_box();
90
  }
91
  }
92
 
165
  /**
166
  * create_admin_tools_tool.
167
  *
168
+ * @version 3.3.0
169
  */
170
  function create_admin_tools_tool() {
171
  // Delete log
182
  // Log
183
  $the_log = '';
184
  $the_log .= '<p style="font-style:italic;color:gray;">' . sprintf( __( 'Now: %s', 'woocommerce-jetpack' ), date( 'Y-m-d H:i:s' ) ) . '</p>';
185
+ if ( '' != ( $log = get_option( 'wcj_log', '' ) ) ) {
186
+ $the_log .= '<pre style="color:green;background-color:black;padding:5px;">' . $log . '</pre>';
187
+ } else {
188
+ $the_log .= '<p style="font-style:italic;color:gray;">' . __( 'Log is empty.', 'woocommerce-jetpack' ) . '</p>';
189
+ }
190
  // Final output
191
  $html = '';
192
  $html .= '<div class="wrap">';
includes/class-wcj-breadcrumbs.php CHANGED
@@ -32,7 +32,7 @@ class WCJ_Breadcrumbs extends WCJ_Module {
32
 
33
  if ( $this->is_enabled() ) {
34
  // Hide Breadcrumbs
35
- if ( 'yes' === apply_filters( 'booster_get_option', 'no', get_option( 'wcj_breadcrumbs_hide', 'no' ) ) ) {
36
  add_filter( 'woocommerce_get_breadcrumb', '__return_false', PHP_INT_MAX );
37
  add_action( 'wp_head', array( $this, 'hide_breadcrumbs_with_css' ) );
38
  add_action( 'wp_loaded', array( $this, 'hide_breadcrumbs_by_removing_action' ), PHP_INT_MAX );
32
 
33
  if ( $this->is_enabled() ) {
34
  // Hide Breadcrumbs
35
+ if ( 'yes' === apply_filters( 'booster_option', 'no', get_option( 'wcj_breadcrumbs_hide', 'no' ) ) ) {
36
  add_filter( 'woocommerce_get_breadcrumb', '__return_false', PHP_INT_MAX );
37
  add_action( 'wp_head', array( $this, 'hide_breadcrumbs_with_css' ) );
38
  add_action( 'wp_loaded', array( $this, 'hide_breadcrumbs_by_removing_action' ), PHP_INT_MAX );
includes/class-wcj-call-for-price.php CHANGED
@@ -152,15 +152,15 @@ class WCJ_Call_For_Price extends WCJ_module {
152
  */
153
  function on_empty_price( $price, $_product ) {
154
  if ( '' !== get_option( 'wcj_call_for_price_text_variation' ) && $_product->is_type( 'variation' ) ) {
155
- return do_shortcode( apply_filters( 'booster_get_option', '<strong>Call for price</strong>', get_option( 'wcj_call_for_price_text_variation' ) ) );
156
  } elseif ( '' !== get_option( 'wcj_call_for_price_text' ) && is_single( get_the_ID() ) ) {
157
- return do_shortcode( apply_filters( 'booster_get_option', '<strong>Call for price</strong>', get_option( 'wcj_call_for_price_text' ) ) );
158
  } elseif ( '' !== get_option( 'wcj_call_for_price_text_on_related' ) && is_single() && ! is_single( get_the_ID() ) ) {
159
- return do_shortcode( apply_filters( 'booster_get_option', '<strong>Call for price</strong>', get_option( 'wcj_call_for_price_text_on_related' ) ) );
160
  } elseif ( '' !== get_option( 'wcj_call_for_price_text_on_archive' ) && is_archive() ) {
161
- return do_shortcode( apply_filters( 'booster_get_option', '<strong>Call for price</strong>', get_option( 'wcj_call_for_price_text_on_archive' ) ) );
162
  } elseif ( '' !== get_option( 'wcj_call_for_price_text_on_home' ) && is_front_page() ) {
163
- return do_shortcode( apply_filters( 'booster_get_option', '<strong>Call for price</strong>', get_option( 'wcj_call_for_price_text_on_home' ) ) );
164
  } else {
165
  return $price;
166
  }
152
  */
153
  function on_empty_price( $price, $_product ) {
154
  if ( '' !== get_option( 'wcj_call_for_price_text_variation' ) && $_product->is_type( 'variation' ) ) {
155
+ return do_shortcode( apply_filters( 'booster_option', '<strong>Call for price</strong>', get_option( 'wcj_call_for_price_text_variation' ) ) );
156
  } elseif ( '' !== get_option( 'wcj_call_for_price_text' ) && is_single( get_the_ID() ) ) {
157
+ return do_shortcode( apply_filters( 'booster_option', '<strong>Call for price</strong>', get_option( 'wcj_call_for_price_text' ) ) );
158
  } elseif ( '' !== get_option( 'wcj_call_for_price_text_on_related' ) && is_single() && ! is_single( get_the_ID() ) ) {
159
+ return do_shortcode( apply_filters( 'booster_option', '<strong>Call for price</strong>', get_option( 'wcj_call_for_price_text_on_related' ) ) );
160
  } elseif ( '' !== get_option( 'wcj_call_for_price_text_on_archive' ) && is_archive() ) {
161
+ return do_shortcode( apply_filters( 'booster_option', '<strong>Call for price</strong>', get_option( 'wcj_call_for_price_text_on_archive' ) ) );
162
  } elseif ( '' !== get_option( 'wcj_call_for_price_text_on_home' ) && is_front_page() ) {
163
+ return do_shortcode( apply_filters( 'booster_option', '<strong>Call for price</strong>', get_option( 'wcj_call_for_price_text_on_home' ) ) );
164
  } else {
165
  return $price;
166
  }
includes/class-wcj-cart.php CHANGED
@@ -29,7 +29,7 @@ class WCJ_Cart extends WCJ_Module {
29
  // Cart items table custom info
30
  add_filter( 'woocommerce_cart_item_name', array( $this, 'add_custom_info_to_cart_item_name' ), PHP_INT_MAX, 3 );
31
  // Cart custom info
32
- $total_number = apply_filters( 'booster_get_option', 1, get_option( 'wcj_cart_custom_info_total_number', 1 ) );
33
  for ( $i = 1; $i <= $total_number; $i++) {
34
  add_action(
35
  get_option( 'wcj_cart_custom_info_hook_' . $i, 'woocommerce_after_cart_totals' ),
@@ -66,7 +66,7 @@ class WCJ_Cart extends WCJ_Module {
66
  function add_cart_custom_info() {
67
  $current_filter = current_filter();
68
  $current_filter_priority = wcj_current_filter_priority();
69
- $total_number = apply_filters( 'booster_get_option', 1, get_option( 'wcj_cart_custom_info_total_number', 1 ) );
70
  for ( $i = 1; $i <= $total_number; $i++ ) {
71
  if (
72
  '' != get_option( 'wcj_cart_custom_info_content_' . $i ) &&
29
  // Cart items table custom info
30
  add_filter( 'woocommerce_cart_item_name', array( $this, 'add_custom_info_to_cart_item_name' ), PHP_INT_MAX, 3 );
31
  // Cart custom info
32
+ $total_number = apply_filters( 'booster_option', 1, get_option( 'wcj_cart_custom_info_total_number', 1 ) );
33
  for ( $i = 1; $i <= $total_number; $i++) {
34
  add_action(
35
  get_option( 'wcj_cart_custom_info_hook_' . $i, 'woocommerce_after_cart_totals' ),
66
  function add_cart_custom_info() {
67
  $current_filter = current_filter();
68
  $current_filter_priority = wcj_current_filter_priority();
69
+ $total_number = apply_filters( 'booster_option', 1, get_option( 'wcj_cart_custom_info_total_number', 1 ) );
70
  for ( $i = 1; $i <= $total_number; $i++ ) {
71
  if (
72
  '' != get_option( 'wcj_cart_custom_info_content_' . $i ) &&
includes/class-wcj-checkout-core-fields.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Module - Checkout Core Fields
4
  *
5
- * @version 3.1.0
6
  * @author Algoritmika Ltd.
7
  */
8
 
@@ -68,19 +68,39 @@ class WCJ_Checkout_Core_Fields extends WCJ_Module {
68
  /**
69
  * maybe_override_fields.
70
  *
71
- * @version 3.1.0
72
  * @since 3.1.0
 
 
73
  */
74
  function maybe_override_fields( $fields, $override_with_section ) {
75
  $options_to_override = array(
76
- 'label' => '',
77
- 'placeholder' => '',
78
- 'priority' => 0,
 
 
 
 
 
 
 
 
 
 
 
 
 
 
79
  );
80
  foreach ( $fields as $field_key => $field_values ) {
81
  $field = $override_with_section . '_' . $field_key;
82
- foreach ( $options_to_override as $option => $default_value ) {
83
- if ( $default_value != ( $value = get_option( 'wcj_checkout_fields_' . $field . '_' . $option, $default_value ) ) ) {
 
 
 
 
84
  $fields[ $field_key ][ $option ] = $value;
85
  }
86
  }
@@ -147,7 +167,7 @@ class WCJ_Checkout_Core_Fields extends WCJ_Module {
147
  $checkout_fields[ $section ][ $field ]['class'] = array( $class );
148
  }
149
  // priority
150
- if ( 0 != ( $priority = apply_filters( 'booster_get_option', 0, get_option( 'wcj_checkout_fields_' . $field . '_' . 'priority', 0 ) ) ) ) {
151
  $checkout_fields[ $section ][ $field ]['priority'] = $priority;
152
  }
153
  }
2
  /**
3
  * Booster for WooCommerce - Module - Checkout Core Fields
4
  *
5
+ * @version 3.3.0
6
  * @author Algoritmika Ltd.
7
  */
8
 
68
  /**
69
  * maybe_override_fields.
70
  *
71
+ * @version 3.3.0
72
  * @since 3.1.0
73
+ * @todo (maybe) add option to choose `$options_to_override`
74
+ * @todo (maybe) add to `$options_to_override`: enabled; class;
75
  */
76
  function maybe_override_fields( $fields, $override_with_section ) {
77
  $options_to_override = array(
78
+ 'label' => array(
79
+ 'default' => '',
80
+ ),
81
+ 'placeholder' => array(
82
+ 'default' => '',
83
+ ),
84
+ 'priority' => array(
85
+ 'default' => 0,
86
+ ),
87
+ 'required' => array(
88
+ 'default' => 'default',
89
+ 'option_id' => 'is_required',
90
+ 'values' => array(
91
+ 'yes' => true,
92
+ 'no' => false,
93
+ ),
94
+ ),
95
  );
96
  foreach ( $fields as $field_key => $field_values ) {
97
  $field = $override_with_section . '_' . $field_key;
98
+ foreach ( $options_to_override as $option => $option_data ) {
99
+ $default_value = $option_data['default'];
100
+ $option_id = ( isset( $option_data['option_id'] ) ? $option_data['option_id'] : $option );
101
+ $option_id = 'wcj_checkout_fields_' . $field . '_' . $option_id;
102
+ if ( $default_value != ( $value = get_option( $option_id, $default_value ) ) ) {
103
+ $value = ( isset( $option_data['values'][ $value ] ) ? $option_data['values'][ $value ] : $value );
104
  $fields[ $field_key ][ $option ] = $value;
105
  }
106
  }
167
  $checkout_fields[ $section ][ $field ]['class'] = array( $class );
168
  }
169
  // priority
170
+ if ( 0 != ( $priority = apply_filters( 'booster_option', 0, get_option( 'wcj_checkout_fields_' . $field . '_' . 'priority', 0 ) ) ) ) {
171
  $checkout_fields[ $section ][ $field ]['priority'] = $priority;
172
  }
173
  }
includes/class-wcj-checkout-custom-fields.php CHANGED
@@ -50,7 +50,7 @@ class WCJ_Checkout_Custom_Fields extends WCJ_Module {
50
  add_filter( 'woocommerce_form_field_' . 'text', array( $this, 'woocommerce_form_field_type_number' ), PHP_INT_MAX, 4 );
51
 
52
  add_filter( 'woocommerce_customer_meta_fields', array( $this, 'add_checkout_custom_fields_customer_meta_fields' ) );
53
- for ( $i = 1; $i <= apply_filters( 'booster_get_option', 1, get_option( 'wcj_checkout_custom_fields_total_number', 1 ) ); $i++ ) {
54
  if ( 'yes' === get_option( 'wcj_checkout_custom_field_enabled_' . $i ) ) {
55
  $the_section = get_option( 'wcj_checkout_custom_field_section_' . $i );
56
  $the_key = 'wcj_checkout_field_' . $i;
@@ -73,7 +73,7 @@ class WCJ_Checkout_Custom_Fields extends WCJ_Module {
73
  function maybe_enqueue_scripts( $fields ) {
74
  if ( is_checkout() ) {
75
  $select2_fields = array();
76
- for ( $i = 1; $i <= apply_filters( 'booster_get_option', 1, get_option( 'wcj_checkout_custom_fields_total_number', 1 ) ); $i++ ) {
77
  if ( 'yes' === get_option( 'wcj_checkout_custom_field_enabled_' . $i, 'no' ) ) {
78
  if ( 'select' === get_option( 'wcj_checkout_custom_field_type_' . $i, 'text' ) ) {
79
  if ( 'yes' === get_option( 'wcj_checkout_custom_field_select_select2_' . $i, 'no' ) ) {
@@ -108,7 +108,7 @@ class WCJ_Checkout_Custom_Fields extends WCJ_Module {
108
  * @since 2.4.5
109
  */
110
  function add_checkout_custom_fields_customer_meta_fields( $fields ) {
111
- for ( $i = 1; $i <= apply_filters( 'booster_get_option', 1, get_option( 'wcj_checkout_custom_fields_total_number', 1 ) ); $i++ ) {
112
  if ( 'yes' === get_option( 'wcj_checkout_custom_field_enabled_' . $i ) ) {
113
  if ( 'no' === get_option( 'wcj_checkout_custom_field_customer_meta_fields_' . $i, 'yes' ) ) {
114
  continue;
@@ -185,7 +185,7 @@ class WCJ_Checkout_Custom_Fields extends WCJ_Module {
185
  * add_custom_fields_to_store_exporter.
186
  */
187
  function add_custom_fields_to_store_exporter( $fields ) {
188
- for ( $i = 1; $i <= apply_filters( 'booster_get_option', 1, get_option( 'wcj_checkout_custom_fields_total_number', 1 ) ); $i++ ) {
189
  if ( 'yes' === get_option( 'wcj_checkout_custom_field_enabled_' . $i ) ) {
190
  $the_section = get_option( 'wcj_checkout_custom_field_section_' . $i );
191
  $the_key = 'wcj_checkout_field_' . $i;
@@ -202,7 +202,7 @@ class WCJ_Checkout_Custom_Fields extends WCJ_Module {
202
  * add_custom_shipping_fields_to_formatted_address.
203
  */
204
  /* function add_custom_shipping_fields_to_formatted_address( $fields, $order ) {
205
- for ( $i = 1; $i <= apply_filters( 'booster_get_option', 1, get_option( 'wcj_checkout_custom_fields_total_number', 1 ) ); $i++ ) {
206
  //if ( 'yes' === get_option( 'wcj_checkout_custom_field_enabled_' . $i ) ) {
207
  $the_section = get_option( 'wcj_checkout_custom_field_section_' . $i );
208
  if ( 'shipping' === $the_section ) {
@@ -220,7 +220,7 @@ class WCJ_Checkout_Custom_Fields extends WCJ_Module {
220
  * @version 2.4.7
221
  */
222
  function update_custom_checkout_fields_order_meta( $order_id ) {
223
- for ( $i = 1; $i <= apply_filters( 'booster_get_option', 1, get_option( 'wcj_checkout_custom_fields_total_number', 1 ) ); $i++ ) {
224
  if ( 'yes' === get_option( 'wcj_checkout_custom_field_enabled_' . $i ) ) {
225
  $the_section = get_option( 'wcj_checkout_custom_field_section_' . $i );
226
  $the_type = get_option( 'wcj_checkout_custom_field_type_' . $i );
@@ -362,7 +362,7 @@ class WCJ_Checkout_Custom_Fields extends WCJ_Module {
362
  * @version 2.4.7
363
  */
364
  function add_woocommerce_admin_fields( $fields, $section ) {
365
- for ( $i = 1; $i <= apply_filters( 'booster_get_option', 1, get_option( 'wcj_checkout_custom_fields_total_number', 1 ) ); $i++ ) {
366
  if ( 'yes' === get_option( 'wcj_checkout_custom_field_enabled_' . $i ) ) {
367
  $the_section = get_option( 'wcj_checkout_custom_field_section_' . $i );
368
  if ( $section != $the_section ) {
@@ -558,7 +558,7 @@ class WCJ_Checkout_Custom_Fields extends WCJ_Module {
558
  */
559
  function add_custom_checkout_fields( $fields ) {
560
 
561
- for ( $i = 1; $i <= apply_filters( 'booster_get_option', 1, get_option( 'wcj_checkout_custom_fields_total_number', 1 ) ); $i++ ) {
562
 
563
  if ( 'yes' === get_option( 'wcj_checkout_custom_field_enabled_' . $i ) ) {
564
 
50
  add_filter( 'woocommerce_form_field_' . 'text', array( $this, 'woocommerce_form_field_type_number' ), PHP_INT_MAX, 4 );
51
 
52
  add_filter( 'woocommerce_customer_meta_fields', array( $this, 'add_checkout_custom_fields_customer_meta_fields' ) );
53
+ for ( $i = 1; $i <= apply_filters( 'booster_option', 1, get_option( 'wcj_checkout_custom_fields_total_number', 1 ) ); $i++ ) {
54
  if ( 'yes' === get_option( 'wcj_checkout_custom_field_enabled_' . $i ) ) {
55
  $the_section = get_option( 'wcj_checkout_custom_field_section_' . $i );
56
  $the_key = 'wcj_checkout_field_' . $i;
73
  function maybe_enqueue_scripts( $fields ) {
74
  if ( is_checkout() ) {
75
  $select2_fields = array();
76
+ for ( $i = 1; $i <= apply_filters( 'booster_option', 1, get_option( 'wcj_checkout_custom_fields_total_number', 1 ) ); $i++ ) {
77
  if ( 'yes' === get_option( 'wcj_checkout_custom_field_enabled_' . $i, 'no' ) ) {
78
  if ( 'select' === get_option( 'wcj_checkout_custom_field_type_' . $i, 'text' ) ) {
79
  if ( 'yes' === get_option( 'wcj_checkout_custom_field_select_select2_' . $i, 'no' ) ) {
108
  * @since 2.4.5
109
  */
110
  function add_checkout_custom_fields_customer_meta_fields( $fields ) {
111
+ for ( $i = 1; $i <= apply_filters( 'booster_option', 1, get_option( 'wcj_checkout_custom_fields_total_number', 1 ) ); $i++ ) {
112
  if ( 'yes' === get_option( 'wcj_checkout_custom_field_enabled_' . $i ) ) {
113
  if ( 'no' === get_option( 'wcj_checkout_custom_field_customer_meta_fields_' . $i, 'yes' ) ) {
114
  continue;
185
  * add_custom_fields_to_store_exporter.
186
  */
187
  function add_custom_fields_to_store_exporter( $fields ) {
188
+ for ( $i = 1; $i <= apply_filters( 'booster_option', 1, get_option( 'wcj_checkout_custom_fields_total_number', 1 ) ); $i++ ) {
189
  if ( 'yes' === get_option( 'wcj_checkout_custom_field_enabled_' . $i ) ) {
190
  $the_section = get_option( 'wcj_checkout_custom_field_section_' . $i );
191
  $the_key = 'wcj_checkout_field_' . $i;
202
  * add_custom_shipping_fields_to_formatted_address.
203
  */
204
  /* function add_custom_shipping_fields_to_formatted_address( $fields, $order ) {
205
+ for ( $i = 1; $i <= apply_filters( 'booster_option', 1, get_option( 'wcj_checkout_custom_fields_total_number', 1 ) ); $i++ ) {
206
  //if ( 'yes' === get_option( 'wcj_checkout_custom_field_enabled_' . $i ) ) {
207
  $the_section = get_option( 'wcj_checkout_custom_field_section_' . $i );
208
  if ( 'shipping' === $the_section ) {
220
  * @version 2.4.7
221
  */
222
  function update_custom_checkout_fields_order_meta( $order_id ) {
223
+ for ( $i = 1; $i <= apply_filters( 'booster_option', 1, get_option( 'wcj_checkout_custom_fields_total_number', 1 ) ); $i++ ) {
224
  if ( 'yes' === get_option( 'wcj_checkout_custom_field_enabled_' . $i ) ) {
225
  $the_section = get_option( 'wcj_checkout_custom_field_section_' . $i );
226
  $the_type = get_option( 'wcj_checkout_custom_field_type_' . $i );
362
  * @version 2.4.7
363
  */
364
  function add_woocommerce_admin_fields( $fields, $section ) {
365
+ for ( $i = 1; $i <= apply_filters( 'booster_option', 1, get_option( 'wcj_checkout_custom_fields_total_number', 1 ) ); $i++ ) {
366
  if ( 'yes' === get_option( 'wcj_checkout_custom_field_enabled_' . $i ) ) {
367
  $the_section = get_option( 'wcj_checkout_custom_field_section_' . $i );
368
  if ( $section != $the_section ) {
558
  */
559
  function add_custom_checkout_fields( $fields ) {
560
 
561
+ for ( $i = 1; $i <= apply_filters( 'booster_option', 1, get_option( 'wcj_checkout_custom_fields_total_number', 1 ) ); $i++ ) {
562
 
563
  if ( 'yes' === get_option( 'wcj_checkout_custom_field_enabled_' . $i ) ) {
564
 
includes/class-wcj-checkout-custom-info.php CHANGED
@@ -27,7 +27,7 @@ class WCJ_Checkout_Custom_Info extends WCJ_Module {
27
  parent::__construct();
28
 
29
  if ( $this->is_enabled() ) {
30
- for ( $i = 1; $i <= apply_filters( 'booster_get_option', 1, get_option( 'wcj_checkout_custom_info_total_number', 1 ) ); $i++) {
31
  add_action(
32
  get_option( 'wcj_checkout_custom_info_hook_' . $i, 'woocommerce_checkout_after_order_review' ),
33
  array( $this, 'add_checkout_custom_info' ),
@@ -45,7 +45,7 @@ class WCJ_Checkout_Custom_Info extends WCJ_Module {
45
  function add_checkout_custom_info() {
46
  $current_filter = current_filter();
47
  $current_filter_priority = wcj_current_filter_priority();
48
- $total_number = apply_filters( 'booster_get_option', 1, get_option( 'wcj_checkout_custom_info_total_number', 1 ) );
49
  for ( $i = 1; $i <= $total_number; $i++ ) {
50
  if (
51
  '' != get_option( 'wcj_checkout_custom_info_content_' . $i ) &&
27
  parent::__construct();
28
 
29
  if ( $this->is_enabled() ) {
30
+ for ( $i = 1; $i <= apply_filters( 'booster_option', 1, get_option( 'wcj_checkout_custom_info_total_number', 1 ) ); $i++) {
31
  add_action(
32
  get_option( 'wcj_checkout_custom_info_hook_' . $i, 'woocommerce_checkout_after_order_review' ),
33
  array( $this, 'add_checkout_custom_info' ),
45
  function add_checkout_custom_info() {
46
  $current_filter = current_filter();
47
  $current_filter_priority = wcj_current_filter_priority();
48
+ $total_number = apply_filters( 'booster_option', 1, get_option( 'wcj_checkout_custom_info_total_number', 1 ) );
49
  for ( $i = 1; $i <= $total_number; $i++ ) {
50
  if (
51
  '' != get_option( 'wcj_checkout_custom_info_content_' . $i ) &&
includes/class-wcj-checkout-customization.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Module - Checkout Customization
4
  *
5
- * @version 3.1.0
6
  * @since 2.7.0
7
  * @author Algoritmika Ltd.
8
  */
@@ -16,7 +16,7 @@ class WCJ_Checkout_Customization extends WCJ_Module {
16
  /**
17
  * Constructor.
18
  *
19
- * @version 3.1.0
20
  * @since 2.7.0
21
  * @todo "Disable Fields on Checkout for Logged Users" - billing and shipping country ('select' type)
22
  * @todo "Disable Fields on Checkout for Logged Users" - other core fields (e.g. account fields)
@@ -66,9 +66,23 @@ class WCJ_Checkout_Customization extends WCJ_Module {
66
  if ( 'yes' === get_option( 'wcj_checkout_customization_order_received_message_enabled', 'no' ) ) {
67
  add_filter( 'woocommerce_thankyou_order_received_text', array( $this, 'customize_order_received_message' ), PHP_INT_MAX, 2 );
68
  }
 
 
 
 
69
  }
70
  }
71
 
 
 
 
 
 
 
 
 
 
 
72
  /**
73
  * customize_order_received_message.
74
  *
2
  /**
3
  * Booster for WooCommerce - Module - Checkout Customization
4
  *
5
+ * @version 3.3.0
6
  * @since 2.7.0
7
  * @author Algoritmika Ltd.
8
  */
16
  /**
17
  * Constructor.
18
  *
19
+ * @version 3.3.0
20
  * @since 2.7.0
21
  * @todo "Disable Fields on Checkout for Logged Users" - billing and shipping country ('select' type)
22
  * @todo "Disable Fields on Checkout for Logged Users" - other core fields (e.g. account fields)
66
  if ( 'yes' === get_option( 'wcj_checkout_customization_order_received_message_enabled', 'no' ) ) {
67
  add_filter( 'woocommerce_thankyou_order_received_text', array( $this, 'customize_order_received_message' ), PHP_INT_MAX, 2 );
68
  }
69
+ // Custom checkout login message
70
+ if ( 'yes' === get_option( 'wcj_checkout_customization_checkout_login_message_enabled', 'no' ) ) {
71
+ add_filter( 'woocommerce_checkout_login_message', array( $this, 'checkout_login_message' ), PHP_INT_MAX );
72
+ }
73
  }
74
  }
75
 
76
+ /**
77
+ * checkout_login_message.
78
+ *
79
+ * @version 3.3.0
80
+ * @since 3.3.0
81
+ */
82
+ function checkout_login_message( $message ) {
83
+ return get_option( 'wcj_checkout_customization_checkout_login_message', __( 'Returning customer?', 'woocommerce' ) );
84
+ }
85
+
86
  /**
87
  * customize_order_received_message.
88
  *
includes/class-wcj-checkout-files-upload.php CHANGED
@@ -31,7 +31,7 @@ class WCJ_Checkout_Files_Upload extends WCJ_Module {
31
  if ( $this->is_enabled() ) {
32
  add_action( 'add_meta_boxes', array( $this, 'add_file_admin_order_meta_box' ) );
33
  add_action( 'init', array( $this, 'process_checkout_files_upload' ) );
34
- $total_number = apply_filters( 'booster_get_option', 1, get_option( 'wcj_checkout_files_upload_total_number', 1 ) );
35
  for ( $i = 1; $i <= $total_number; $i++ ) {
36
  if ( 'disable' != ( $the_hook = get_option( 'wcj_checkout_files_upload_hook_' . $i, 'woocommerce_before_checkout_form' ) ) ) {
37
  add_action( $the_hook, array( $this, 'add_files_upload_form_to_checkout_frontend' ), get_option( 'wcj_checkout_files_upload_hook_priority_' . $i, 10 ) );
@@ -96,7 +96,7 @@ class WCJ_Checkout_Files_Upload extends WCJ_Module {
96
  * @since 2.4.5
97
  */
98
  function validate_on_checkout( $posted ) {
99
- $total_number = apply_filters( 'booster_get_option', 1, get_option( 'wcj_checkout_files_upload_total_number', 1 ) );
100
  for ( $i = 1; $i <= $total_number; $i++ ) {
101
  if (
102
  'yes' === get_option( 'wcj_checkout_files_upload_enabled_' . $i, 'yes' ) &&
@@ -211,7 +211,7 @@ class WCJ_Checkout_Files_Upload extends WCJ_Module {
211
  if ( ! file_exists( $upload_dir ) ) {
212
  mkdir( $upload_dir, 0755, true );
213
  }
214
- $total_number = apply_filters( 'booster_get_option', 1, get_option( 'wcj_checkout_files_upload_total_number', 1 ) );
215
  for ( $i = 1; $i <= $total_number; $i++ ) {
216
  if ( isset( $_SESSION[ 'wcj_checkout_files_upload_' . $i ] ) ) {
217
  $file_name = $_SESSION[ 'wcj_checkout_files_upload_' . $i ]['name'];
@@ -243,7 +243,7 @@ class WCJ_Checkout_Files_Upload extends WCJ_Module {
243
  session_start();
244
  }
245
  // Remove file
246
- $total_number = apply_filters( 'booster_get_option', 1, get_option( 'wcj_checkout_files_upload_total_number', 1 ) );
247
  for ( $i = 1; $i <= $total_number; $i++ ) {
248
  if ( isset( $_POST[ 'wcj_remove_checkout_file_' . $i ] ) ) {
249
  if ( isset( $_POST[ 'wcj_checkout_files_upload_order_id_' . $i ] ) ) {
@@ -556,7 +556,7 @@ class WCJ_Checkout_Files_Upload extends WCJ_Module {
556
  */
557
  function add_files_upload_form_to_thankyou_and_myaccount_page( $order_id ) {
558
  $html = '';
559
- $total_number = apply_filters( 'booster_get_option', 1, get_option( 'wcj_checkout_files_upload_total_number', 1 ) );
560
  $current_filter = current_filter();
561
  for ( $i = 1; $i <= $total_number; $i++ ) {
562
  if ( 'yes' === get_option( 'wcj_checkout_files_upload_enabled_' . $i, 'yes' ) && $this->is_visible( $i, $order_id ) ) {
@@ -590,7 +590,7 @@ class WCJ_Checkout_Files_Upload extends WCJ_Module {
590
  */
591
  function add_files_upload_form_to_checkout_frontend_all( $is_direct_call = false ) {
592
  $html = '';
593
- $total_number = apply_filters( 'booster_get_option', 1, get_option( 'wcj_checkout_files_upload_total_number', 1 ) );
594
  if ( ! $is_direct_call ) {
595
  $current_filter = current_filter();
596
  $current_filter_priority = wcj_current_filter_priority();
31
  if ( $this->is_enabled() ) {
32
  add_action( 'add_meta_boxes', array( $this, 'add_file_admin_order_meta_box' ) );
33
  add_action( 'init', array( $this, 'process_checkout_files_upload' ) );
34
+ $total_number = apply_filters( 'booster_option', 1, get_option( 'wcj_checkout_files_upload_total_number', 1 ) );
35
  for ( $i = 1; $i <= $total_number; $i++ ) {
36
  if ( 'disable' != ( $the_hook = get_option( 'wcj_checkout_files_upload_hook_' . $i, 'woocommerce_before_checkout_form' ) ) ) {
37
  add_action( $the_hook, array( $this, 'add_files_upload_form_to_checkout_frontend' ), get_option( 'wcj_checkout_files_upload_hook_priority_' . $i, 10 ) );
96
  * @since 2.4.5
97
  */
98
  function validate_on_checkout( $posted ) {
99
+ $total_number = apply_filters( 'booster_option', 1, get_option( 'wcj_checkout_files_upload_total_number', 1 ) );
100
  for ( $i = 1; $i <= $total_number; $i++ ) {
101
  if (
102
  'yes' === get_option( 'wcj_checkout_files_upload_enabled_' . $i, 'yes' ) &&
211
  if ( ! file_exists( $upload_dir ) ) {
212
  mkdir( $upload_dir, 0755, true );
213
  }
214
+ $total_number = apply_filters( 'booster_option', 1, get_option( 'wcj_checkout_files_upload_total_number', 1 ) );
215
  for ( $i = 1; $i <= $total_number; $i++ ) {
216
  if ( isset( $_SESSION[ 'wcj_checkout_files_upload_' . $i ] ) ) {
217
  $file_name = $_SESSION[ 'wcj_checkout_files_upload_' . $i ]['name'];
243
  session_start();
244
  }
245
  // Remove file
246
+ $total_number = apply_filters( 'booster_option', 1, get_option( 'wcj_checkout_files_upload_total_number', 1 ) );
247
  for ( $i = 1; $i <= $total_number; $i++ ) {
248
  if ( isset( $_POST[ 'wcj_remove_checkout_file_' . $i ] ) ) {
249
  if ( isset( $_POST[ 'wcj_checkout_files_upload_order_id_' . $i ] ) ) {
556
  */
557
  function add_files_upload_form_to_thankyou_and_myaccount_page( $order_id ) {
558
  $html = '';
559
+ $total_number = apply_filters( 'booster_option', 1, get_option( 'wcj_checkout_files_upload_total_number', 1 ) );
560
  $current_filter = current_filter();
561
  for ( $i = 1; $i <= $total_number; $i++ ) {
562
  if ( 'yes' === get_option( 'wcj_checkout_files_upload_enabled_' . $i, 'yes' ) && $this->is_visible( $i, $order_id ) ) {
590
  */
591
  function add_files_upload_form_to_checkout_frontend_all( $is_direct_call = false ) {
592
  $html = '';
593
+ $total_number = apply_filters( 'booster_option', 1, get_option( 'wcj_checkout_files_upload_total_number', 1 ) );
594
  if ( ! $is_direct_call ) {
595
  $current_filter = current_filter();
596
  $current_filter_priority = wcj_current_filter_priority();
includes/class-wcj-coupon-code-generator.php CHANGED
@@ -80,7 +80,7 @@ class WCJ_Coupon_Code_Generator extends WCJ_Module {
80
  $str = time();
81
  }
82
  if ( '' === $algorithm ) {
83
- $algorithm = apply_filters( 'booster_get_option', 'crc32', get_option( 'wcj_coupons_code_generator_algorithm', 'crc32' ) );
84
  }
85
  switch ( $algorithm ) {
86
  case 'random_letters_and_numbers':
@@ -103,7 +103,7 @@ class WCJ_Coupon_Code_Generator extends WCJ_Module {
103
  break;
104
  }
105
  if ( '' === $length ) {
106
- $length = apply_filters( 'booster_get_option', 0, get_option( 'wcj_coupons_code_generator_length', 0 ) );
107
  }
108
  if ( $length > 0 && strlen( $code ) > $length ) {
109
  $code = substr( $code, 0, $length );
80
  $str = time();
81
  }
82
  if ( '' === $algorithm ) {
83
+ $algorithm = apply_filters( 'booster_option', 'crc32', get_option( 'wcj_coupons_code_generator_algorithm', 'crc32' ) );
84
  }
85
  switch ( $algorithm ) {
86
  case 'random_letters_and_numbers':
103
  break;
104
  }
105
  if ( '' === $length ) {
106
+ $length = apply_filters( 'booster_option', 0, get_option( 'wcj_coupons_code_generator_length', 0 ) );
107
  }
108
  if ( $length > 0 && strlen( $code ) > $length ) {
109
  $code = substr( $code, 0, $length );
includes/class-wcj-currencies.php CHANGED
@@ -71,9 +71,9 @@ class WCJ_Currencies extends WCJ_Module {
71
  'id' => 'wcj_currency_' . get_woocommerce_currency(),
72
  'type' => 'text',
73
  'default' => get_woocommerce_currency_symbol(),
74
- 'desc' => apply_filters( 'booster_get_message', '', 'desc' ),
75
  'css' => 'width: 50px;',
76
- 'custom_attributes' => apply_filters( 'booster_get_message', '', 'readonly' ),
77
  );
78
  }
79
  $updated_settings[] = $section;
71
  'id' => 'wcj_currency_' . get_woocommerce_currency(),
72
  'type' => 'text',
73
  'default' => get_woocommerce_currency_symbol(),
74
+ 'desc' => apply_filters( 'booster_message', '', 'desc' ),
75
  'css' => 'width: 50px;',
76
+ 'custom_attributes' => apply_filters( 'booster_message', '', 'readonly' ),
77
  );
78
  }
79
  $updated_settings[] = $section;
includes/class-wcj-currency-exchange-rates.php CHANGED
@@ -91,7 +91,7 @@ class WCJ_Currency_Exchange_Rates extends WCJ_Module {
91
  $currencies[] = $additional_currency;
92
  }
93
  // Additional currencies (via custom currencies section)
94
- $total_number = apply_filters( 'booster_get_option', 1, get_option( 'wcj_currency_exchange_custom_currencies_total_number', 1 ) );
95
  for ( $i = 1; $i <= $total_number; $i++ ) {
96
  if ( 'disabled' != ( $additional_currency = get_option( 'wcj_currency_exchange_custom_currencies_' . $i, 'disabled' ) ) ) {
97
  $currencies[] = $additional_currency;
@@ -99,8 +99,8 @@ class WCJ_Currency_Exchange_Rates extends WCJ_Module {
99
  }
100
  if ( wcj_is_module_enabled( 'price_by_country' ) ) {
101
  // Currency Pairs - Price by Country
102
- if ( 'manual' != apply_filters( 'booster_get_option', 'manual', get_option( 'wcj_price_by_country_auto_exchange_rates', 'manual' ) ) ) {
103
- for ( $i = 1; $i <= apply_filters( 'booster_get_option', 1, get_option( 'wcj_price_by_country_total_groups_number', 1 ) ); $i++ ) {
104
  $currency_to = get_option( 'wcj_price_by_country_exchange_rate_currency_group_' . $i );
105
  $currencies[] = $currency_to;
106
  }
@@ -108,8 +108,8 @@ class WCJ_Currency_Exchange_Rates extends WCJ_Module {
108
  }
109
  if ( wcj_is_module_enabled( 'multicurrency' ) ) {
110
  // Currency Pairs - Multicurrency
111
- if ( 'manual' != apply_filters( 'booster_get_option', 'manual', get_option( 'wcj_multicurrency_exchange_rate_update_auto', 'manual' ) ) ) {
112
- for ( $i = 1; $i <= apply_filters( 'booster_get_option', 2, get_option( 'wcj_multicurrency_total_number', 2 ) ); $i++ ) {
113
  $currency_to = get_option( 'wcj_multicurrency_currency_' . $i );
114
  $currencies[] = $currency_to;
115
  }
@@ -117,8 +117,8 @@ class WCJ_Currency_Exchange_Rates extends WCJ_Module {
117
  }
118
  if ( wcj_is_module_enabled( 'multicurrency_base_price' ) ) {
119
  // Currency Pairs - Multicurrency Product Base Price
120
- if ( 'manual' != apply_filters( 'booster_get_option', 'manual', get_option( 'wcj_multicurrency_base_price_exchange_rate_update', 'manual' ) ) ) {
121
- for ( $i = 1; $i <= apply_filters( 'booster_get_option', 1, get_option( 'wcj_multicurrency_base_price_total_number', 1 ) ); $i++ ) {
122
  $currency_to = get_option( 'wcj_multicurrency_base_price_currency_' . $i );
123
  $currencies[] = $currency_to;
124
  }
@@ -126,15 +126,15 @@ class WCJ_Currency_Exchange_Rates extends WCJ_Module {
126
  }
127
  if ( wcj_is_module_enabled( 'currency_per_product' ) ) {
128
  // Currency Pairs - Currency per Product
129
- if ( 'manual' != apply_filters( 'booster_get_option', 'manual', get_option( 'wcj_currency_per_product_exchange_rate_update', 'manual' ) ) ) {
130
- for ( $i = 1; $i <= apply_filters( 'booster_get_option', 1, get_option( 'wcj_currency_per_product_total_number', 1 ) ); $i++ ) {
131
  $currency_to = get_option( 'wcj_currency_per_product_currency_' . $i );
132
  $currencies[] = $currency_to;
133
  }
134
  }
135
  }
136
  if ( wcj_is_module_enabled( 'payment_gateways_currency' ) ) {
137
- if ( 'manual' != apply_filters( 'booster_get_option', 'manual', get_option( 'wcj_gateways_currency_exchange_rate_update_auto', 'manual' ) ) ) {
138
  // Currency Pairs - Gateway Currency
139
  global $woocommerce;
140
  $available_gateways = $woocommerce->payment_gateways->payment_gateways();
91
  $currencies[] = $additional_currency;
92
  }
93
  // Additional currencies (via custom currencies section)
94
+ $total_number = apply_filters( 'booster_option', 1, get_option( 'wcj_currency_exchange_custom_currencies_total_number', 1 ) );
95
  for ( $i = 1; $i <= $total_number; $i++ ) {
96
  if ( 'disabled' != ( $additional_currency = get_option( 'wcj_currency_exchange_custom_currencies_' . $i, 'disabled' ) ) ) {
97
  $currencies[] = $additional_currency;
99
  }
100
  if ( wcj_is_module_enabled( 'price_by_country' ) ) {
101
  // Currency Pairs - Price by Country
102
+ if ( 'manual' != apply_filters( 'booster_option', 'manual', get_option( 'wcj_price_by_country_auto_exchange_rates', 'manual' ) ) ) {
103
+ for ( $i = 1; $i <= apply_filters( 'booster_option', 1, get_option( 'wcj_price_by_country_total_groups_number', 1 ) ); $i++ ) {
104
  $currency_to = get_option( 'wcj_price_by_country_exchange_rate_currency_group_' . $i );
105
  $currencies[] = $currency_to;
106
  }
108
  }
109
  if ( wcj_is_module_enabled( 'multicurrency' ) ) {
110
  // Currency Pairs - Multicurrency
111
+ if ( 'manual' != apply_filters( 'booster_option', 'manual', get_option( 'wcj_multicurrency_exchange_rate_update_auto', 'manual' ) ) ) {
112
+ for ( $i = 1; $i <= apply_filters( 'booster_option', 2, get_option( 'wcj_multicurrency_total_number', 2 ) ); $i++ ) {
113
  $currency_to = get_option( 'wcj_multicurrency_currency_' . $i );
114
  $currencies[] = $currency_to;
115
  }
117
  }
118
  if ( wcj_is_module_enabled( 'multicurrency_base_price' ) ) {
119
  // Currency Pairs - Multicurrency Product Base Price
120
+ if ( 'manual' != apply_filters( 'booster_option', 'manual', get_option( 'wcj_multicurrency_base_price_exchange_rate_update', 'manual' ) ) ) {
121
+ for ( $i = 1; $i <= apply_filters( 'booster_option', 1, get_option( 'wcj_multicurrency_base_price_total_number', 1 ) ); $i++ ) {
122
  $currency_to = get_option( 'wcj_multicurrency_base_price_currency_' . $i );
123
  $currencies[] = $currency_to;
124
  }
126
  }
127
  if ( wcj_is_module_enabled( 'currency_per_product' ) ) {
128
  // Currency Pairs - Currency per Product
129
+ if ( 'manual' != apply_filters( 'booster_option', 'manual', get_option( 'wcj_currency_per_product_exchange_rate_update', 'manual' ) ) ) {
130
+ for ( $i = 1; $i <= apply_filters( 'booster_option', 1, get_option( 'wcj_currency_per_product_total_number', 1 ) ); $i++ ) {
131
  $currency_to = get_option( 'wcj_currency_per_product_currency_' . $i );
132
  $currencies[] = $currency_to;
133
  }
134
  }
135
  }
136
  if ( wcj_is_module_enabled( 'payment_gateways_currency' ) ) {
137
+ if ( 'manual' != apply_filters( 'booster_option', 'manual', get_option( 'wcj_gateways_currency_exchange_rate_update_auto', 'manual' ) ) ) {
138
  // Currency Pairs - Gateway Currency
139
  global $woocommerce;
140
  $available_gateways = $woocommerce->payment_gateways->payment_gateways();
includes/class-wcj-currency-per-product.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Module - Currency per Product
4
  *
5
- * @version 3.2.4
6
  * @since 2.5.2
7
  * @author Algoritmika Ltd.
8
  */
@@ -16,7 +16,7 @@ class WCJ_Currency_Per_Product extends WCJ_Module {
16
  /**
17
  * Constructor.
18
  *
19
- * @version 2.8.0
20
  * @since 2.5.2
21
  * @todo (maybe) add `$this->price_hooks_priority`
22
  */
@@ -30,6 +30,8 @@ class WCJ_Currency_Per_Product extends WCJ_Module {
30
 
31
  if ( $this->is_enabled() ) {
32
 
 
 
33
  add_action( 'add_meta_boxes', array( $this, 'add_meta_box' ) );
34
  add_action( 'save_post_product', array( $this, 'save_meta_box' ), PHP_INT_MAX, 2 );
35
 
@@ -117,7 +119,7 @@ class WCJ_Currency_Per_Product extends WCJ_Module {
117
  if ( $do_check_by_product_tags ) {
118
  $_product_tags = wcj_get_the_terms( $product_id, 'product_tag' );
119
  }
120
- $total_number = apply_filters( 'booster_get_option', 1, get_option( 'wcj_currency_per_product_total_number', 1 ) );
121
  for ( $i = 1; $i <= $total_number; $i++ ) {
122
  if ( $do_check_by_users ) {
123
  $users = get_option( 'wcj_currency_per_product_users_' . $i, '' );
@@ -245,7 +247,7 @@ class WCJ_Currency_Per_Product extends WCJ_Module {
245
  */
246
  function get_currency_exchange_rate( $currency_code ) {
247
  $currency_exchange_rate = 1;
248
- $total_number = apply_filters( 'booster_get_option', 1, get_option( 'wcj_currency_per_product_total_number', 1 ) );
249
  for ( $i = 1; $i <= $total_number; $i++ ) {
250
  if ( $currency_code === get_option( 'wcj_currency_per_product_currency_' . $i ) ) {
251
  $currency_exchange_rate = 1 / get_option( 'wcj_currency_per_product_exchange_rate_' . $i );
@@ -255,10 +257,40 @@ class WCJ_Currency_Per_Product extends WCJ_Module {
255
  return $currency_exchange_rate;
256
  }
257
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
258
  /**
259
  * change_price.
260
  *
261
- * @version 2.7.0
262
  * @since 2.5.2
263
  */
264
  function change_price( $price, $_product ) {
@@ -270,25 +302,35 @@ class WCJ_Currency_Per_Product extends WCJ_Module {
270
  return $price;
271
  case 'convert_first_product':
272
  case 'convert_last_product':
273
- $shop_currency = get_option('woocommerce_currency');
274
  if ( false != ( $_currency = $this->get_cart_checkout_currency() ) && $_currency != $shop_currency ) {
275
  if ( $_product->wcj_currency_per_product === $_currency ) {
276
  return $price;
277
  } else {
 
 
 
278
  $exchange_rate_product = $this->get_currency_exchange_rate( $_product->wcj_currency_per_product );
279
  $exchange_rate_cart_checkout = $this->get_currency_exchange_rate( $_currency );
280
  $exchange_rate = $exchange_rate_product / $exchange_rate_cart_checkout;
281
- return $price * $exchange_rate;
282
  }
283
  } elseif ( $_product->wcj_currency_per_product === $shop_currency ) {
284
  return $price;
285
  } else {
 
 
 
286
  $exchange_rate = $this->get_currency_exchange_rate( $_product->wcj_currency_per_product );
287
- return $price * $exchange_rate;
288
  }
289
  default: // case 'convert_shop_default':
 
 
 
 
290
  $exchange_rate = $this->get_currency_exchange_rate( $_product->wcj_currency_per_product );
291
- return $price * $exchange_rate;
292
  }
293
  }
294
  return $price;
@@ -297,12 +339,15 @@ class WCJ_Currency_Per_Product extends WCJ_Module {
297
  /**
298
  * get_cart_item_from_session.
299
  *
300
- * @version 2.5.2
301
  * @since 2.5.2
302
  */
303
  function get_cart_item_from_session( $item, $values, $key ) {
304
  if ( array_key_exists( 'wcj_currency_per_product', $values ) ) {
305
  $item['data']->wcj_currency_per_product = $values['wcj_currency_per_product'];
 
 
 
306
  }
307
  return $item;
308
  }
@@ -324,12 +369,16 @@ class WCJ_Currency_Per_Product extends WCJ_Module {
324
  /**
325
  * add_cart_item.
326
  *
327
- * @version 2.5.2
328
  * @since 2.5.2
 
329
  */
330
  function add_cart_item( $cart_item_data, $cart_item_key ) {
331
  if ( isset( $cart_item_data['wcj_currency_per_product'] ) ) {
332
  $cart_item_data['data']->wcj_currency_per_product = $cart_item_data['wcj_currency_per_product'];
 
 
 
333
  }
334
  return $cart_item_data;
335
  }
2
  /**
3
  * Booster for WooCommerce - Module - Currency per Product
4
  *
5
+ * @version 3.3.0
6
  * @since 2.5.2
7
  * @author Algoritmika Ltd.
8
  */
16
  /**
17
  * Constructor.
18
  *
19
+ * @version 3.3.0
20
  * @since 2.5.2
21
  * @todo (maybe) add `$this->price_hooks_priority`
22
  */
30
 
31
  if ( $this->is_enabled() ) {
32
 
33
+ $this->do_save_converted_prices = ( 'yes' === get_option( 'wcj_currency_per_product_save_prices', 'no' ) );
34
+
35
  add_action( 'add_meta_boxes', array( $this, 'add_meta_box' ) );
36
  add_action( 'save_post_product', array( $this, 'save_meta_box' ), PHP_INT_MAX, 2 );
37
 
119
  if ( $do_check_by_product_tags ) {
120
  $_product_tags = wcj_get_the_terms( $product_id, 'product_tag' );
121
  }
122
+ $total_number = apply_filters( 'booster_option', 1, get_option( 'wcj_currency_per_product_total_number', 1 ) );
123
  for ( $i = 1; $i <= $total_number; $i++ ) {
124
  if ( $do_check_by_users ) {
125
  $users = get_option( 'wcj_currency_per_product_users_' . $i, '' );
247
  */
248
  function get_currency_exchange_rate( $currency_code ) {
249
  $currency_exchange_rate = 1;
250
+ $total_number = apply_filters( 'booster_option', 1, get_option( 'wcj_currency_per_product_total_number', 1 ) );
251
  for ( $i = 1; $i <= $total_number; $i++ ) {
252
  if ( $currency_code === get_option( 'wcj_currency_per_product_currency_' . $i ) ) {
253
  $currency_exchange_rate = 1 / get_option( 'wcj_currency_per_product_exchange_rate_' . $i );
257
  return $currency_exchange_rate;
258
  }
259
 
260
+ /**
261
+ * maybe_return_saved_converted_price.
262
+ *
263
+ * @version 3.3.0
264
+ * @since 3.3.0
265
+ */
266
+ function maybe_return_saved_converted_price( $_product, $_currency ) {
267
+ if ( $this->do_save_converted_prices ) {
268
+ $product_id = ( isset( $_product->wcj_currency_per_product_item_key ) ? $_product->wcj_currency_per_product_item_key : wcj_get_product_id( $_product ) );
269
+ if ( isset( $this->saved_product_prices[ $product_id ][ $_product->wcj_currency_per_product ][ $_currency ] ) ) {
270
+ return $this->saved_product_prices[ $product_id ][ $_product->wcj_currency_per_product ][ $_currency ];
271
+ }
272
+ }
273
+ return false;
274
+ }
275
+
276
+ /**
277
+ * maybe_save_converted_price.
278
+ *
279
+ * @version 3.3.0
280
+ * @since 3.3.0
281
+ */
282
+ function maybe_save_converted_price( $price, $_product, $_currency ) {
283
+ if ( $this->do_save_converted_prices ) {
284
+ $product_id = ( isset( $_product->wcj_currency_per_product_item_key ) ? $_product->wcj_currency_per_product_item_key : wcj_get_product_id( $_product ) );
285
+ $this->saved_product_prices[ $product_id ][ $_product->wcj_currency_per_product ][ $_currency ] = $price;
286
+ }
287
+ return $price;
288
+ }
289
+
290
  /**
291
  * change_price.
292
  *
293
+ * @version 3.3.0
294
  * @since 2.5.2
295
  */
296
  function change_price( $price, $_product ) {
302
  return $price;
303
  case 'convert_first_product':
304
  case 'convert_last_product':
305
+ $shop_currency = get_option( 'woocommerce_currency' );
306
  if ( false != ( $_currency = $this->get_cart_checkout_currency() ) && $_currency != $shop_currency ) {
307
  if ( $_product->wcj_currency_per_product === $_currency ) {
308
  return $price;
309
  } else {
310
+ if ( false !== ( $saved_price = $this->maybe_return_saved_converted_price( $_product, $_currency ) ) ) {
311
+ return $saved_price;
312
+ }
313
  $exchange_rate_product = $this->get_currency_exchange_rate( $_product->wcj_currency_per_product );
314
  $exchange_rate_cart_checkout = $this->get_currency_exchange_rate( $_currency );
315
  $exchange_rate = $exchange_rate_product / $exchange_rate_cart_checkout;
316
+ return $this->maybe_save_converted_price( $price * $exchange_rate, $_product, $_currency );
317
  }
318
  } elseif ( $_product->wcj_currency_per_product === $shop_currency ) {
319
  return $price;
320
  } else {
321
+ if ( false !== ( $saved_price = $this->maybe_return_saved_converted_price( $_product, $shop_currency ) ) ) {
322
+ return $saved_price;
323
+ }
324
  $exchange_rate = $this->get_currency_exchange_rate( $_product->wcj_currency_per_product );
325
+ return $this->maybe_save_converted_price( $price * $exchange_rate, $_product, $shop_currency );
326
  }
327
  default: // case 'convert_shop_default':
328
+ $shop_currency = get_option( 'woocommerce_currency' );
329
+ if ( false !== ( $saved_price = $this->maybe_return_saved_converted_price( $_product, $shop_currency ) ) ) {
330
+ return $saved_price;
331
+ }
332
  $exchange_rate = $this->get_currency_exchange_rate( $_product->wcj_currency_per_product );
333
+ return $this->maybe_save_converted_price( $price * $exchange_rate, $_product, $shop_currency );
334
  }
335
  }
336
  return $price;
339
  /**
340
  * get_cart_item_from_session.
341
  *
342
+ * @version 3.3.0
343
  * @since 2.5.2
344
  */
345
  function get_cart_item_from_session( $item, $values, $key ) {
346
  if ( array_key_exists( 'wcj_currency_per_product', $values ) ) {
347
  $item['data']->wcj_currency_per_product = $values['wcj_currency_per_product'];
348
+ if ( $this->do_save_converted_prices ) {
349
+ $item['data']->wcj_currency_per_product_item_key = $key;
350
+ }
351
  }
352
  return $item;
353
  }
369
  /**
370
  * add_cart_item.
371
  *
372
+ * @version 3.3.0
373
  * @since 2.5.2
374
+ * @todo `wcj_currency_per_product_item_key` seems to be not working here
375
  */
376
  function add_cart_item( $cart_item_data, $cart_item_key ) {
377
  if ( isset( $cart_item_data['wcj_currency_per_product'] ) ) {
378
  $cart_item_data['data']->wcj_currency_per_product = $cart_item_data['wcj_currency_per_product'];
379
+ if ( $this->do_save_converted_prices ) {
380
+ $cart_item_data['data']->wcj_currency_per_product_item_key = $cart_item_key;
381
+ }
382
  }
383
  return $cart_item_data;
384
  }
includes/class-wcj-emails-verification.php CHANGED
@@ -119,18 +119,18 @@ class WCJ_Email_Verification extends WCJ_Module {
119
  $user_info = get_userdata( $user_id );
120
  $code = md5( time() );
121
  $url = add_query_arg( 'wcj_verify_email', base64_encode( json_encode( array( 'id' => $user_id, 'code' => $code ) ) ), wc_get_page_permalink( 'myaccount' ) );
122
- $email_content = do_shortcode( apply_filters( 'booster_get_option',
123
  __( 'Please click the following link to verify your email:<br><br><a href="%verification_url%">%verification_url%</a>', 'woocommerce-jetpack' ),
124
  get_option( 'wcj_emails_verification_email_content',
125
  __( 'Please click the following link to verify your email:<br><br><a href="%verification_url%">%verification_url%</a>', 'woocommerce-jetpack' ) ) ) );
126
  $email_content = str_replace( '%verification_url%', $url, $email_content );
127
- $email_subject = do_shortcode( apply_filters( 'booster_get_option',
128
  __( 'Please activate your account', 'woocommerce-jetpack' ),
129
  get_option( 'wcj_emails_verification_email_subject',
130
  __( 'Please activate your account', 'woocommerce-jetpack' ) ) ) );
131
  update_user_meta( $user_id, 'wcj_is_activated', '0' );
132
  update_user_meta( $user_id, 'wcj_activation_code', $code );
133
- if ( 'wc' === apply_filters( 'booster_get_option', 'plain', get_option( 'wcj_emails_verification_email_template', 'plain' ) ) ) {
134
  $email_content = wcj_wrap_in_wc_email_template( $email_content,
135
  get_option( 'wcj_emails_verification_email_template_wc_heading', __( 'Activate your account', 'woocommerce-jetpack' ) ) );
136
  }
119
  $user_info = get_userdata( $user_id );
120
  $code = md5( time() );
121
  $url = add_query_arg( 'wcj_verify_email', base64_encode( json_encode( array( 'id' => $user_id, 'code' => $code ) ) ), wc_get_page_permalink( 'myaccount' ) );
122
+ $email_content = do_shortcode( apply_filters( 'booster_option',
123
  __( 'Please click the following link to verify your email:<br><br><a href="%verification_url%">%verification_url%</a>', 'woocommerce-jetpack' ),
124
  get_option( 'wcj_emails_verification_email_content',
125
  __( 'Please click the following link to verify your email:<br><br><a href="%verification_url%">%verification_url%</a>', 'woocommerce-jetpack' ) ) ) );
126
  $email_content = str_replace( '%verification_url%', $url, $email_content );
127
+ $email_subject = do_shortcode( apply_filters( 'booster_option',
128
  __( 'Please activate your account', 'woocommerce-jetpack' ),
129
  get_option( 'wcj_emails_verification_email_subject',
130
  __( 'Please activate your account', 'woocommerce-jetpack' ) ) ) );
131
  update_user_meta( $user_id, 'wcj_is_activated', '0' );
132
  update_user_meta( $user_id, 'wcj_activation_code', $code );
133
+ if ( 'wc' === apply_filters( 'booster_option', 'plain', get_option( 'wcj_emails_verification_email_template', 'plain' ) ) ) {
134
  $email_content = wcj_wrap_in_wc_email_template( $email_content,
135
  get_option( 'wcj_emails_verification_email_template_wc_heading', __( 'Activate your account', 'woocommerce-jetpack' ) ) );
136
  }
includes/class-wcj-emails.php CHANGED
@@ -31,7 +31,7 @@ class WCJ_Emails extends WCJ_Module {
31
  add_filter( 'woocommerce_resend_order_emails_available', array( $this, 'add_custom_emails_to_wc_resend_order_emails' ) );
32
  if ( ! WCJ_IS_WC_VERSION_BELOW_3_2_0 ) {
33
  add_filter( 'woocommerce_order_actions', array( $this, 'add_custom_emails_order_actions' ), PHP_INT_MAX, 1 );
34
- for ( $i = 1; $i <= apply_filters( 'booster_get_option', 1, get_option( 'wcj_emails_custom_emails_total_number', 1 ) ); $i++ ) {
35
  add_action( 'woocommerce_order_action_' . 'wcj_send_email_custom' . '_' . $i,
36
  array( $this, 'do_custom_emails_order_actions' ), PHP_INT_MAX, 1 );
37
  }
@@ -70,7 +70,7 @@ class WCJ_Emails extends WCJ_Module {
70
  * @todo (maybe) add "Add Custom Email(s) to Order Actions" option (in WC >= 3.2.0); same to `woocommerce_order_action_`
71
  */
72
  function add_custom_emails_order_actions( $actions ) {
73
- for ( $i = 1; $i <= apply_filters( 'booster_get_option', 1, get_option( 'wcj_emails_custom_emails_total_number', 1 ) ); $i++ ) {
74
  $actions[ 'wcj_send_email_custom' . '_' . $i ] = sprintf( apply_filters( 'wcj_emails_custom_emails_order_action_text',
75
  __( 'Booster: Send Email: %s', 'woocommerce-jetpack' ), $i ),
76
  get_option( 'wcj_emails_custom_emails_admin_title_' . $i, __( 'Custom', 'woocommerce-jetpack' ) . ' #' . $i )
@@ -106,7 +106,7 @@ class WCJ_Emails extends WCJ_Module {
106
  * @since 2.3.9
107
  */
108
  function add_custom_emails_to_wc_resend_order_emails( $emails ) {
109
- for ( $i = 1; $i <= apply_filters( 'booster_get_option', 1, get_option( 'wcj_emails_custom_emails_total_number', 1 ) ); $i++ ) {
110
  $emails[] = 'wcj_custom' . '_' . $i;
111
  }
112
  return $emails;
@@ -122,7 +122,7 @@ class WCJ_Emails extends WCJ_Module {
122
  if ( ! class_exists( 'WC_Email_WCJ_Custom' ) ) {
123
  require_once( 'emails/class-wc-email-wcj-custom.php' );
124
  }
125
- for ( $i = 1; $i <= apply_filters( 'booster_get_option', 1, get_option( 'wcj_emails_custom_emails_total_number', 1 ) ); $i++ ) {
126
  $emails[ 'WC_Email_WCJ_Custom_' . $i ] = new WC_Email_WCJ_Custom( $i );
127
  }
128
  return $emails;
31
  add_filter( 'woocommerce_resend_order_emails_available', array( $this, 'add_custom_emails_to_wc_resend_order_emails' ) );
32
  if ( ! WCJ_IS_WC_VERSION_BELOW_3_2_0 ) {
33
  add_filter( 'woocommerce_order_actions', array( $this, 'add_custom_emails_order_actions' ), PHP_INT_MAX, 1 );
34
+ for ( $i = 1; $i <= apply_filters( 'booster_option', 1, get_option( 'wcj_emails_custom_emails_total_number', 1 ) ); $i++ ) {
35
  add_action( 'woocommerce_order_action_' . 'wcj_send_email_custom' . '_' . $i,
36
  array( $this, 'do_custom_emails_order_actions' ), PHP_INT_MAX, 1 );
37
  }
70
  * @todo (maybe) add "Add Custom Email(s) to Order Actions" option (in WC >= 3.2.0); same to `woocommerce_order_action_`
71
  */
72
  function add_custom_emails_order_actions( $actions ) {
73
+ for ( $i = 1; $i <= apply_filters( 'booster_option', 1, get_option( 'wcj_emails_custom_emails_total_number', 1 ) ); $i++ ) {
74
  $actions[ 'wcj_send_email_custom' . '_' . $i ] = sprintf( apply_filters( 'wcj_emails_custom_emails_order_action_text',
75
  __( 'Booster: Send Email: %s', 'woocommerce-jetpack' ), $i ),
76
  get_option( 'wcj_emails_custom_emails_admin_title_' . $i, __( 'Custom', 'woocommerce-jetpack' ) . ' #' . $i )
106
  * @since 2.3.9
107
  */
108
  function add_custom_emails_to_wc_resend_order_emails( $emails ) {
109
+ for ( $i = 1; $i <= apply_filters( 'booster_option', 1, get_option( 'wcj_emails_custom_emails_total_number', 1 ) ); $i++ ) {
110
  $emails[] = 'wcj_custom' . '_' . $i;
111
  }
112
  return $emails;
122
  if ( ! class_exists( 'WC_Email_WCJ_Custom' ) ) {
123
  require_once( 'emails/class-wc-email-wcj-custom.php' );
124
  }
125
+ for ( $i = 1; $i <= apply_filters( 'booster_option', 1, get_option( 'wcj_emails_custom_emails_total_number', 1 ) ); $i++ ) {
126
  $emails[ 'WC_Email_WCJ_Custom_' . $i ] = new WC_Email_WCJ_Custom( $i );
127
  }
128
  return $emails;
includes/class-wcj-empty-cart-button.php CHANGED
@@ -29,7 +29,7 @@ class WCJ_Empty_Cart_Button extends WCJ_Module {
29
 
30
  if ( $this->is_enabled() ) {
31
  add_action( 'init', array( $this, 'maybe_empty_cart' ) );
32
- if ( 'disable' != ( $empty_cart_cart_position = apply_filters( 'booster_get_option', 'woocommerce_after_cart',
33
  get_option( 'wcj_empty_cart_position', 'woocommerce_after_cart' ) ) )
34
  ) {
35
  add_action( $empty_cart_cart_position, array( $this, 'add_empty_cart_link' ) );
29
 
30
  if ( $this->is_enabled() ) {
31
  add_action( 'init', array( $this, 'maybe_empty_cart' ) );
32
+ if ( 'disable' != ( $empty_cart_cart_position = apply_filters( 'booster_option', 'woocommerce_after_cart',
33
  get_option( 'wcj_empty_cart_position', 'woocommerce_after_cart' ) ) )
34
  ) {
35
  add_action( $empty_cart_cart_position, array( $this, 'add_empty_cart_link' ) );
includes/class-wcj-eu-vat-number.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Module - EU VAT Number
4
  *
5
- * @version 3.2.4
6
  * @since 2.3.9
7
  * @author Algoritmika Ltd.
8
  */
@@ -16,7 +16,7 @@ class WCJ_EU_VAT_Number extends WCJ_Module {
16
  /**
17
  * Constructor.
18
  *
19
- * @version 2.8.0
20
  */
21
  function __construct() {
22
 
@@ -34,10 +34,6 @@ class WCJ_EU_VAT_Number extends WCJ_Module {
34
  ) );
35
 
36
  if ( $this->is_enabled() ) {
37
- /* if ( ! session_id() ) {
38
- session_start();
39
- } */
40
- // add_action( 'init', 'session_start' );
41
  add_action( 'init', array( $this, 'start_session' ) );
42
  add_filter( 'woocommerce_checkout_fields', array( $this, 'add_eu_vat_number_checkout_field_to_frontend' ), PHP_INT_MAX );
43
  add_filter( 'woocommerce_admin_billing_fields', array( $this, 'add_billing_eu_vat_number_field_to_admin_order_display' ), PHP_INT_MAX );
@@ -67,10 +63,56 @@ class WCJ_EU_VAT_Number extends WCJ_Module {
67
  // EU VAT number summary on order edit page
68
  if ( 'yes' === get_option( 'wcj_eu_vat_number_add_order_edit_metabox', 'no' ) ) {
69
  add_action( 'add_meta_boxes', array( $this, 'add_meta_box' ) );
 
 
70
  }
 
 
 
71
  }
72
  }
73
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
74
  /**
75
  * add_meta_box.
76
  *
@@ -94,7 +136,7 @@ class WCJ_EU_VAT_Number extends WCJ_Module {
94
  /**
95
  * create_meta_box.
96
  *
97
- * @version 2.7.0
98
  * @since 2.6.0
99
  */
100
  function create_meta_box() {
@@ -157,6 +199,8 @@ class WCJ_EU_VAT_Number extends WCJ_Module {
157
  ), */
158
  );
159
  echo wcj_get_table_html( $table_data, array( 'table_class' => 'widefat striped', 'table_heading_type' => 'vertical' ) );
 
 
160
  }
161
 
162
  /**
@@ -312,7 +356,7 @@ class WCJ_EU_VAT_Number extends WCJ_Module {
312
  if ( isset( $_POST['wcj_eu_vat_number_to_check'] ) && '' != $_POST['wcj_eu_vat_number_to_check'] ) {
313
  $eu_vat_number_to_check = substr( $_POST['wcj_eu_vat_number_to_check'], 2 );
314
  $eu_vat_number_country_to_check = substr( $_POST['wcj_eu_vat_number_to_check'], 0, 2 );
315
- if ( 'yes' === apply_filters( 'booster_get_option', 'no', get_option( 'wcj_eu_vat_number_check_ip_location_country', 'no' ) ) ) {
316
  $location = WC_Geolocation::geolocate_ip();
317
  if ( empty( $location['country'] ) ) {
318
  $location = wc_format_country_state_string( apply_filters( 'woocommerce_customer_default_location', get_option( 'woocommerce_default_country' ) ) );
@@ -355,7 +399,7 @@ class WCJ_EU_VAT_Number extends WCJ_Module {
355
  isset( $_SESSION['wcj_is_eu_vat_number_valid'] ) && true === $_SESSION['wcj_is_eu_vat_number_valid'] && isset( $_SESSION['wcj_eu_vat_number_to_check'] )
356
  ) {
357
  $preserve_base_country_check_passed = true;
358
- if ( 'yes' === apply_filters( 'booster_get_option', 'no', get_option( 'wcj_eu_vat_number_preserve_in_base_country', 'no' ) ) ) {
359
  $location = wc_get_base_location();
360
  if ( empty( $location['country'] ) ) {
361
  $location = wc_format_country_state_string( apply_filters( 'woocommerce_customer_default_location', get_option( 'woocommerce_default_country' ) ) );
2
  /**
3
  * Booster for WooCommerce - Module - EU VAT Number
4
  *
5
+ * @version 3.3.0
6
  * @since 2.3.9
7
  * @author Algoritmika Ltd.
8
  */
16
  /**
17
  * Constructor.
18
  *
19
+ * @version 3.3.0
20
  */
21
  function __construct() {
22
 
34
  ) );
35
 
36
  if ( $this->is_enabled() ) {
 
 
 
 
37
  add_action( 'init', array( $this, 'start_session' ) );
38
  add_filter( 'woocommerce_checkout_fields', array( $this, 'add_eu_vat_number_checkout_field_to_frontend' ), PHP_INT_MAX );
39
  add_filter( 'woocommerce_admin_billing_fields', array( $this, 'add_billing_eu_vat_number_field_to_admin_order_display' ), PHP_INT_MAX );
63
  // EU VAT number summary on order edit page
64
  if ( 'yes' === get_option( 'wcj_eu_vat_number_add_order_edit_metabox', 'no' ) ) {
65
  add_action( 'add_meta_boxes', array( $this, 'add_meta_box' ) );
66
+ // "Validate VAT and remove taxes" button
67
+ add_action( 'admin_init', array( $this, 'admin_validate_vat_and_maybe_remove_taxes' ), PHP_INT_MAX );
68
  }
69
+
70
+ // Admin order edit - "Load billing address" button
71
+ add_filter( 'woocommerce_ajax_get_customer_details', array( $this, 'add_billing_eu_vat_number_to_ajax_get_customer_details' ), PHP_INT_MAX, 3 );
72
  }
73
  }
74
 
75
+ /**
76
+ * admin_validate_vat_and_maybe_remove_taxes.
77
+ *
78
+ * @version 3.3.0
79
+ * @since 3.3.0
80
+ */
81
+ function admin_validate_vat_and_maybe_remove_taxes() {
82
+ if ( isset( $_GET['validate_vat_and_maybe_remove_taxes'] ) ) {
83
+ $order_id = $_GET['validate_vat_and_maybe_remove_taxes'];
84
+ $order = wc_get_order( $order_id );
85
+ if ( $order ) {
86
+ $vat_id = get_post_meta( $order_id, '_billing_eu_vat_number', true );
87
+ if ( '' != $vat_id && strlen( $vat_id ) > 2 ) {
88
+ if ( wcj_validate_vat( substr( $vat_id, 0, 2 ), substr( $vat_id, 2 ) ) ) {
89
+ foreach ( $order->get_items( array( 'line_item', 'fee' ) ) as $item_id => $item ) {
90
+ $item->set_taxes( false );
91
+ }
92
+ foreach ( $order->get_shipping_methods() as $item_id => $item ) {
93
+ $item->set_taxes( false );
94
+ }
95
+ $order->update_taxes();
96
+ $order->calculate_totals( false );
97
+ }
98
+ }
99
+ }
100
+ wp_safe_redirect( remove_query_arg( 'validate_vat_and_maybe_remove_taxes' ) );
101
+ exit;
102
+ }
103
+ }
104
+
105
+ /**
106
+ * add_billing_eu_vat_number_to_ajax_get_customer_details.
107
+ *
108
+ * @version 3.3.0
109
+ * @since 3.3.0
110
+ */
111
+ function add_billing_eu_vat_number_to_ajax_get_customer_details( $data, $customer, $user_id ) {
112
+ $data['billing']['eu_vat_number'] = get_user_meta( $user_id, 'billing_eu_vat_number', true );
113
+ return $data;
114
+ }
115
+
116
  /**
117
  * add_meta_box.
118
  *
136
  /**
137
  * create_meta_box.
138
  *
139
+ * @version 3.3.0
140
  * @since 2.6.0
141
  */
142
  function create_meta_box() {
199
  ), */
200
  );
201
  echo wcj_get_table_html( $table_data, array( 'table_class' => 'widefat striped', 'table_heading_type' => 'vertical' ) );
202
+ echo '<p>' . '<a href="' . add_query_arg( 'validate_vat_and_maybe_remove_taxes', $order_id ) . '">' .
203
+ __( 'Validate VAT and remove taxes', 'woocommerce-jetpack' ) . '</a>' . '</p>';
204
  }
205
 
206
  /**
356
  if ( isset( $_POST['wcj_eu_vat_number_to_check'] ) && '' != $_POST['wcj_eu_vat_number_to_check'] ) {
357
  $eu_vat_number_to_check = substr( $_POST['wcj_eu_vat_number_to_check'], 2 );
358
  $eu_vat_number_country_to_check = substr( $_POST['wcj_eu_vat_number_to_check'], 0, 2 );
359
+ if ( 'yes' === apply_filters( 'booster_option', 'no', get_option( 'wcj_eu_vat_number_check_ip_location_country', 'no' ) ) ) {
360
  $location = WC_Geolocation::geolocate_ip();
361
  if ( empty( $location['country'] ) ) {
362
  $location = wc_format_country_state_string( apply_filters( 'woocommerce_customer_default_location', get_option( 'woocommerce_default_country' ) ) );
399
  isset( $_SESSION['wcj_is_eu_vat_number_valid'] ) && true === $_SESSION['wcj_is_eu_vat_number_valid'] && isset( $_SESSION['wcj_eu_vat_number_to_check'] )
400
  ) {
401
  $preserve_base_country_check_passed = true;
402
+ if ( 'yes' === apply_filters( 'booster_option', 'no', get_option( 'wcj_eu_vat_number_preserve_in_base_country', 'no' ) ) ) {
403
  $location = wc_get_base_location();
404
  if ( empty( $location['country'] ) ) {
405
  $location = wc_format_country_state_string( apply_filters( 'woocommerce_customer_default_location', get_option( 'woocommerce_default_country' ) ) );
includes/class-wcj-free-price.php CHANGED
@@ -151,7 +151,7 @@ class WCJ_Free_Price extends WCJ_Module {
151
  * @since 2.5.9
152
  */
153
  function modify_free_price_variable( $price, $_product ) {
154
- return do_shortcode( apply_filters( 'booster_get_option', __( 'Free!', 'woocommerce' ), get_option( 'wcj_free_price_variable_' . $this->get_view_id( wcj_get_product_id_or_variation_parent_id( $_product ) ), __( 'Free!', 'woocommerce' ) ) ) );
155
  }
156
 
157
  /**
@@ -161,7 +161,7 @@ class WCJ_Free_Price extends WCJ_Module {
161
  * @since 2.5.9
162
  */
163
  function modify_free_price_variation( $price, $_product ) {
164
- return do_shortcode( apply_filters( 'booster_get_option', __( 'Free!', 'woocommerce' ), get_option( 'wcj_free_price_variable_variation', __( 'Free!', 'woocommerce' ) ) ) );
165
  }
166
 
167
  }
151
  * @since 2.5.9
152
  */
153
  function modify_free_price_variable( $price, $_product ) {
154
+ return do_shortcode( apply_filters( 'booster_option', __( 'Free!', 'woocommerce' ), get_option( 'wcj_free_price_variable_' . $this->get_view_id( wcj_get_product_id_or_variation_parent_id( $_product ) ), __( 'Free!', 'woocommerce' ) ) ) );
155
  }
156
 
157
  /**
161
  * @since 2.5.9
162
  */
163
  function modify_free_price_variation( $price, $_product ) {
164
+ return do_shortcode( apply_filters( 'booster_option', __( 'Free!', 'woocommerce' ), get_option( 'wcj_free_price_variable_variation', __( 'Free!', 'woocommerce' ) ) ) );
165
  }
166
 
167
  }
includes/class-wcj-global-discount.php CHANGED
@@ -158,7 +158,7 @@ class WCJ_Global_Discount extends WCJ_Module {
158
  if ( 'price' === $price_type && '' === $price ) {
159
  return $price; // no changes
160
  }
161
- $total_number = apply_filters( 'booster_get_option', 1, get_option( 'wcj_global_discount_groups_total_number', 1 ) );
162
  for ( $i = 1; $i <= $total_number; $i++ ) {
163
  if ( ! $this->check_if_applicable( $_product, $i ) ) {
164
  continue; // no changes by current discount group
@@ -185,7 +185,7 @@ class WCJ_Global_Discount extends WCJ_Module {
185
  */
186
  function get_variation_prices_hash( $price_hash, $_product, $display ) {
187
  $wcj_global_discount_price_hash = array();
188
- $total_number = apply_filters( 'booster_get_option', 1, get_option( 'wcj_global_discount_groups_total_number', 1 ) );
189
  $wcj_global_discount_price_hash['total_number'] = $total_number;
190
  for ( $i = 1; $i <= $total_number; $i++ ) {
191
  $wcj_global_discount_price_hash[ 'enabled_' . $i ] = get_option( 'wcj_global_discount_sale_enabled_' . $i, 'yes' );
158
  if ( 'price' === $price_type && '' === $price ) {
159
  return $price; // no changes
160
  }
161
+ $total_number = apply_filters( 'booster_option', 1, get_option( 'wcj_global_discount_groups_total_number', 1 ) );
162
  for ( $i = 1; $i <= $total_number; $i++ ) {
163
  if ( ! $this->check_if_applicable( $_product, $i ) ) {
164
  continue; // no changes by current discount group
185
  */
186
  function get_variation_prices_hash( $price_hash, $_product, $display ) {
187
  $wcj_global_discount_price_hash = array();
188
+ $total_number = apply_filters( 'booster_option', 1, get_option( 'wcj_global_discount_groups_total_number', 1 ) );
189
  $wcj_global_discount_price_hash['total_number'] = $total_number;
190
  for ( $i = 1; $i <= $total_number; $i++ ) {
191
  $wcj_global_discount_price_hash[ 'enabled_' . $i ] = get_option( 'wcj_global_discount_sale_enabled_' . $i, 'yes' );
includes/class-wcj-left-to-free-shipping.php CHANGED
@@ -35,14 +35,14 @@ class WCJ_Left_To_Free_Shipping extends WCJ_Module {
35
  get_option( 'wcj_shipping_left_to_free_info_priority_cart', 10 )
36
  );
37
  }
38
- if ( 'yes' === apply_filters( 'booster_get_option', 'no', get_option( 'wcj_shipping_left_to_free_info_enabled_mini_cart', 'no' ) ) ) {
39
  add_action(
40
  get_option( 'wcj_shipping_left_to_free_info_position_mini_cart', 'woocommerce_after_mini_cart' ),
41
  array( $this, 'show_left_to_free_shipping_info_mini_cart' ),
42
  get_option( 'wcj_shipping_left_to_free_info_priority_mini_cart', 10 )
43
  );
44
  }
45
- if ( 'yes' === apply_filters( 'booster_get_option', 'no', get_option( 'wcj_shipping_left_to_free_info_enabled_checkout', 'no' ) ) ) {
46
  add_action(
47
  get_option( 'wcj_shipping_left_to_free_info_position_checkout', 'woocommerce_checkout_after_order_review' ),
48
  array( $this, 'show_left_to_free_shipping_info_checkout' ),
35
  get_option( 'wcj_shipping_left_to_free_info_priority_cart', 10 )
36
  );
37
  }
38
+ if ( 'yes' === apply_filters( 'booster_option', 'no', get_option( 'wcj_shipping_left_to_free_info_enabled_mini_cart', 'no' ) ) ) {
39
  add_action(
40
  get_option( 'wcj_shipping_left_to_free_info_position_mini_cart', 'woocommerce_after_mini_cart' ),
41
  array( $this, 'show_left_to_free_shipping_info_mini_cart' ),
42
  get_option( 'wcj_shipping_left_to_free_info_priority_mini_cart', 10 )
43
  );
44
  }
45
+ if ( 'yes' === apply_filters( 'booster_option', 'no', get_option( 'wcj_shipping_left_to_free_info_enabled_checkout', 'no' ) ) ) {
46
  add_action(
47
  get_option( 'wcj_shipping_left_to_free_info_position_checkout', 'woocommerce_checkout_after_order_review' ),
48
  array( $this, 'show_left_to_free_shipping_info_checkout' ),
includes/class-wcj-mini-cart.php CHANGED
@@ -27,7 +27,7 @@ class WCJ_Mini_Cart extends WCJ_Module {
27
  parent::__construct();
28
 
29
  if ( $this->is_enabled() ) {
30
- $total_number = apply_filters( 'booster_get_option', 1, get_option( 'wcj_mini_cart_custom_info_total_number', 1 ) );
31
  for ( $i = 1; $i <= $total_number; $i++ ) {
32
  add_action(
33
  get_option( 'wcj_mini_cart_custom_info_hook_' . $i, 'woocommerce_after_mini_cart' ),
@@ -46,7 +46,7 @@ class WCJ_Mini_Cart extends WCJ_Module {
46
  function add_mini_cart_custom_info() {
47
  $current_filter = current_filter();
48
  $current_filter_priority = wcj_current_filter_priority();
49
- $total_number = apply_filters( 'booster_get_option', 1, get_option( 'wcj_mini_cart_custom_info_total_number', 1 ) );
50
  for ( $i = 1; $i <= $total_number; $i++ ) {
51
  if (
52
  '' != get_option( 'wcj_mini_cart_custom_info_content_' . $i ) &&
27
  parent::__construct();
28
 
29
  if ( $this->is_enabled() ) {
30
+ $total_number = apply_filters( 'booster_option', 1, get_option( 'wcj_mini_cart_custom_info_total_number', 1 ) );
31
  for ( $i = 1; $i <= $total_number; $i++ ) {
32
  add_action(
33
  get_option( 'wcj_mini_cart_custom_info_hook_' . $i, 'woocommerce_after_mini_cart' ),
46
  function add_mini_cart_custom_info() {
47
  $current_filter = current_filter();
48
  $current_filter_priority = wcj_current_filter_priority();
49
+ $total_number = apply_filters( 'booster_option', 1, get_option( 'wcj_mini_cart_custom_info_total_number', 1 ) );
50
  for ( $i = 1; $i <= $total_number; $i++ ) {
51
  if (
52
  '' != get_option( 'wcj_mini_cart_custom_info_content_' . $i ) &&
includes/class-wcj-modules-by-user-roles.php ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Booster for WooCommerce - Module - Modules By User Roles
4
+ *
5
+ * @version 3.3.0
6
+ * @since 3.3.0
7
+ * @author Algoritmika Ltd.
8
+ */
9
+
10
+ if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
11
+
12
+ if ( ! class_exists( 'WCJ_Modules_By_User_Roles' ) ) :
13
+
14
+ class WCJ_Modules_By_User_Roles extends WCJ_Module {
15
+
16
+ /**
17
+ * Constructor.
18
+ *
19
+ * @version 3.3.0
20
+ * @since 3.3.0
21
+ */
22
+ function __construct() {
23
+
24
+ $this->id = 'modules_by_user_roles';
25
+ $this->short_desc = __( 'Modules By User Roles', 'woocommerce-jetpack' );
26
+ $this->desc = __( 'Enable/disable Booster for WooCommerce modules by user roles.', 'woocommerce-jetpack' );
27
+ $this->link_slug = 'woocommerce-booster-modules-by-user-roles';
28
+ parent::__construct();
29
+
30
+ }
31
+ }
32
+
33
+ endif;
34
+
35
+ return new WCJ_Modules_By_User_Roles();
includes/class-wcj-more-button-labels.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Module - More Button Labels
4
  *
5
- * @version 2.8.0
6
  * @since 2.2.0
7
  * @author Algoritmika Ltd.
8
  */
@@ -16,7 +16,7 @@ class WCJ_More_Button_Labels extends WCJ_Module {
16
  /**
17
  * Constructor.
18
  *
19
- * @version 2.7.0
20
  */
21
  function __construct() {
22
 
@@ -28,6 +28,23 @@ class WCJ_More_Button_Labels extends WCJ_Module {
28
 
29
  if ( $this->is_enabled() ) {
30
  add_filter( 'woocommerce_order_button_text', array( $this, 'set_order_button_text' ), PHP_INT_MAX );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
31
  }
32
  }
33
 
2
  /**
3
  * Booster for WooCommerce - Module - More Button Labels
4
  *
5
+ * @version 3.3.0
6
  * @since 2.2.0
7
  * @author Algoritmika Ltd.
8
  */
16
  /**
17
  * Constructor.
18
  *
19
+ * @version 3.3.0
20
  */
21
  function __construct() {
22
 
28
 
29
  if ( $this->is_enabled() ) {
30
  add_filter( 'woocommerce_order_button_text', array( $this, 'set_order_button_text' ), PHP_INT_MAX );
31
+ if ( 'yes' === get_option( 'wcj_checkout_place_order_button_override', 'no' ) ) {
32
+ add_action( 'init', array( $this, 'override_order_button_text' ), PHP_INT_MAX );
33
+ }
34
+ }
35
+ }
36
+
37
+ /**
38
+ * override_order_button_text.
39
+ *
40
+ * @version 3.3.0
41
+ * @since 3.3.0
42
+ */
43
+ function override_order_button_text() {
44
+ if ( function_exists( 'WC' ) && method_exists( WC(), 'payment_gateways' ) && isset( WC()->payment_gateways()->payment_gateways ) ) {
45
+ foreach ( WC()->payment_gateways()->payment_gateways as &$payment_gateway ) {
46
+ $payment_gateway->order_button_text = '';
47
+ }
48
  }
49
  }
50
 
includes/class-wcj-multicurrency-product-base-price.php CHANGED
@@ -52,7 +52,7 @@ class WCJ_Multicurrency_Base_Price extends WCJ_Module {
52
  function get_currency_exchange_rate( $currency_code ) {
53
  /*
54
  $currency_exchange_rate = 1;
55
- $total_number = apply_filters( 'booster_get_option', 1, get_option( 'wcj_multicurrency_base_price_total_number', 1 ) );
56
  for ( $i = 1; $i <= $total_number; $i++ ) {
57
  if ( $currency_code === get_option( 'wcj_multicurrency_base_price_currency_' . $i ) ) {
58
  $currency_exchange_rate = get_option( 'wcj_multicurrency_base_price_exchange_rate_' . $i );
52
  function get_currency_exchange_rate( $currency_code ) {
53
  /*
54
  $currency_exchange_rate = 1;
55
+ $total_number = apply_filters( 'booster_option', 1, get_option( 'wcj_multicurrency_base_price_total_number', 1 ) );
56
  for ( $i = 1; $i <= $total_number; $i++ ) {
57
  if ( $currency_code === get_option( 'wcj_multicurrency_base_price_currency_' . $i ) ) {
58
  $currency_exchange_rate = get_option( 'wcj_multicurrency_base_price_exchange_rate_' . $i );
includes/class-wcj-multicurrency.php CHANGED
@@ -179,7 +179,7 @@ class WCJ_Multicurrency extends WCJ_Module {
179
  */
180
  function get_currency_exchange_rate( $currency_code ) {
181
  $currency_exchange_rate = 1;
182
- $total_number = apply_filters( 'booster_get_option', 2, get_option( 'wcj_multicurrency_total_number', 2 ) );
183
  for ( $i = 1; $i <= $total_number; $i++ ) {
184
  if ( $currency_code === get_option( 'wcj_multicurrency_currency_' . $i ) ) {
185
  $currency_exchange_rate = get_option( 'wcj_multicurrency_exchange_rate_' . $i );
179
  */
180
  function get_currency_exchange_rate( $currency_code ) {
181
  $currency_exchange_rate = 1;
182
+ $total_number = apply_filters( 'booster_option', 2, get_option( 'wcj_multicurrency_total_number', 2 ) );
183
  for ( $i = 1; $i <= $total_number; $i++ ) {
184
  if ( $currency_code === get_option( 'wcj_multicurrency_currency_' . $i ) ) {
185
  $currency_exchange_rate = get_option( 'wcj_multicurrency_exchange_rate_' . $i );
includes/class-wcj-offer-price.php CHANGED
@@ -46,7 +46,7 @@ class WCJ_Offer_Price extends WCJ_Module {
46
  get_option( 'wcj_offer_price_button_position_priority', 31 )
47
  );
48
  }
49
- if ( 'disable' != ( $_hook = apply_filters( 'booster_get_option', 'disable', get_option( 'wcj_offer_price_button_position_archives', 'disable' ) ) ) ) {
50
  add_action(
51
  $_hook,
52
  array( $this, 'add_offer_price_button' ),
@@ -56,7 +56,7 @@ class WCJ_Offer_Price extends WCJ_Module {
56
  add_action( 'woocommerce_before_main_content', array( $this, 'add_offer_price_form' ) );
57
  add_action( 'wp_enqueue_scripts', array( $this, 'enqueue_scripts' ) );
58
  add_action( 'init', array( $this, 'offer_price' ) );
59
- if ( 'per_product' === apply_filters( 'booster_get_option', 'all_products', get_option( 'wcj_offer_price_enabled_type', 'all_products' ) ) ) {
60
  add_action( 'add_meta_boxes', array( $this, 'add_meta_box' ) );
61
  add_action( 'save_post_product', array( $this, 'save_meta_box' ), PHP_INT_MAX, 2 );
62
  }
@@ -171,7 +171,7 @@ class WCJ_Offer_Price extends WCJ_Module {
171
  * @since 2.9.0
172
  */
173
  function is_offer_price_enabled_for_product( $product_id ) {
174
- switch ( apply_filters( 'booster_get_option', 'all_products', get_option( 'wcj_offer_price_enabled_type', 'all_products' ) ) ) {
175
  case 'all_products':
176
  return true;
177
  case 'empty_prices':
@@ -190,7 +190,7 @@ class WCJ_Offer_Price extends WCJ_Module {
190
  * @todo (maybe) rethink `str_replace( '\'', '"', ... )`
191
  */
192
  function get_wcj_data_array( $product_id ) {
193
- $is_per_product_enabled = ( 'per_product' === apply_filters( 'booster_get_option', 'all_products', get_option( 'wcj_offer_price_enabled_type', 'all_products' ) ) );
194
  // Price input - price step
195
  $price_step = ( ! $is_per_product_enabled || '' === ( $price_step_per_product = get_post_meta( $product_id, '_' . 'wcj_offer_price_price_step', true ) ) ?
196
  get_option( 'wcj_offer_price_price_step', get_option( 'woocommerce_price_num_decimals' ) ) :
46
  get_option( 'wcj_offer_price_button_position_priority', 31 )
47
  );
48
  }
49
+ if ( 'disable' != ( $_hook = apply_filters( 'booster_option', 'disable', get_option( 'wcj_offer_price_button_position_archives', 'disable' ) ) ) ) {
50
  add_action(
51
  $_hook,
52
  array( $this, 'add_offer_price_button' ),
56
  add_action( 'woocommerce_before_main_content', array( $this, 'add_offer_price_form' ) );
57
  add_action( 'wp_enqueue_scripts', array( $this, 'enqueue_scripts' ) );
58
  add_action( 'init', array( $this, 'offer_price' ) );
59
+ if ( 'per_product' === apply_filters( 'booster_option', 'all_products', get_option( 'wcj_offer_price_enabled_type', 'all_products' ) ) ) {
60
  add_action( 'add_meta_boxes', array( $this, 'add_meta_box' ) );
61
  add_action( 'save_post_product', array( $this, 'save_meta_box' ), PHP_INT_MAX, 2 );
62
  }
171
  * @since 2.9.0
172
  */
173
  function is_offer_price_enabled_for_product( $product_id ) {
174
+ switch ( apply_filters( 'booster_option', 'all_products', get_option( 'wcj_offer_price_enabled_type', 'all_products' ) ) ) {
175
  case 'all_products':
176
  return true;
177
  case 'empty_prices':
190
  * @todo (maybe) rethink `str_replace( '\'', '"', ... )`
191
  */
192
  function get_wcj_data_array( $product_id ) {
193
+ $is_per_product_enabled = ( 'per_product' === apply_filters( 'booster_option', 'all_products', get_option( 'wcj_offer_price_enabled_type', 'all_products' ) ) );
194
  // Price input - price step
195
  $price_step = ( ! $is_per_product_enabled || '' === ( $price_step_per_product = get_post_meta( $product_id, '_' . 'wcj_offer_price_price_step', true ) ) ?
196
  get_option( 'wcj_offer_price_price_step', get_option( 'woocommerce_price_num_decimals' ) ) :
includes/class-wcj-order-custom-statuses.php CHANGED
@@ -52,17 +52,17 @@ class WCJ_Order_Custom_Statuses extends WCJ_Module {
52
  add_action( 'admin_footer', array( $this, 'bulk_admin_footer' ), 11 );
53
  }
54
 
55
- if ( 'yes' === apply_filters( 'booster_get_option', 'no', get_option( 'wcj_orders_custom_statuses_add_to_order_list_actions', 'no' ) ) ) {
56
  add_filter( 'woocommerce_admin_order_actions', array( $this, 'add_custom_status_actions_buttons' ), PHP_INT_MAX, 2 );
57
  add_action( 'admin_head', array( $this, 'add_custom_status_actions_buttons_css' ) );
58
  }
59
 
60
- if ( 'hide' != apply_filters( 'booster_get_option', 'hide', get_option( 'wcj_orders_custom_statuses_processing_and_completed_actions', 'hide' ) ) ) {
61
  add_filter( 'woocommerce_admin_order_actions', array( $this, 'add_custom_status_to_processing_and_completed_actions' ), PHP_INT_MAX, 2 );
62
  }
63
 
64
  // Is order editable
65
- if ( 'yes' === apply_filters( 'booster_get_option', 'no', get_option( 'wcj_orders_custom_statuses_is_order_editable', 'no' ) ) ) {
66
  add_filter( 'wc_order_is_editable', array( $this, 'add_custom_order_statuses_to_order_editable' ), PHP_INT_MAX, 2 );
67
  }
68
 
@@ -121,7 +121,7 @@ class WCJ_Order_Custom_Statuses extends WCJ_Module {
121
  }
122
  global $post;
123
  $default_actions = array();
124
- $show = apply_filters( 'booster_get_option', 'hide', get_option( 'wcj_orders_custom_statuses_processing_and_completed_actions', 'hide' ) );
125
  if (
126
  ( 'show_both' === $show || 'show_processing' === $show ) &&
127
  $_order->has_status( array_merge( array( 'pending', 'on-hold' ), $custom_order_statuses_without_wc_prefix ) )
@@ -201,7 +201,7 @@ class WCJ_Order_Custom_Statuses extends WCJ_Module {
201
  $custom_order_statuses = $this->get_custom_order_statuses( true );
202
  foreach ( $custom_order_statuses as $slug => $label ) {
203
  $icon_data = $this->get_status_icon_data( $slug );
204
- $color_style = ( 'yes' === apply_filters( 'booster_get_option', 'no', get_option( 'wcj_orders_custom_statuses_add_to_order_list_actions_colored', 'no' ) ) ) ?
205
  ' color: ' . $icon_data['color'] . ' !important;' : '';
206
  echo '<style>.view.' . $slug . '::after { font-family: WooCommerce !important;' . $color_style .
207
  ' content: "\\' . $icon_data['content'] . '" !important; }</style>';
52
  add_action( 'admin_footer', array( $this, 'bulk_admin_footer' ), 11 );
53
  }
54
 
55
+ if ( 'yes' === apply_filters( 'booster_option', 'no', get_option( 'wcj_orders_custom_statuses_add_to_order_list_actions', 'no' ) ) ) {
56
  add_filter( 'woocommerce_admin_order_actions', array( $this, 'add_custom_status_actions_buttons' ), PHP_INT_MAX, 2 );
57
  add_action( 'admin_head', array( $this, 'add_custom_status_actions_buttons_css' ) );
58
  }
59
 
60
+ if ( 'hide' != apply_filters( 'booster_option', 'hide', get_option( 'wcj_orders_custom_statuses_processing_and_completed_actions', 'hide' ) ) ) {
61
  add_filter( 'woocommerce_admin_order_actions', array( $this, 'add_custom_status_to_processing_and_completed_actions' ), PHP_INT_MAX, 2 );
62
  }
63
 
64
  // Is order editable
65
+ if ( 'yes' === apply_filters( 'booster_option', 'no', get_option( 'wcj_orders_custom_statuses_is_order_editable', 'no' ) ) ) {
66
  add_filter( 'wc_order_is_editable', array( $this, 'add_custom_order_statuses_to_order_editable' ), PHP_INT_MAX, 2 );
67
  }
68
 
121
  }
122
  global $post;
123
  $default_actions = array();
124
+ $show = apply_filters( 'booster_option', 'hide', get_option( 'wcj_orders_custom_statuses_processing_and_completed_actions', 'hide' ) );
125
  if (
126
  ( 'show_both' === $show || 'show_processing' === $show ) &&
127
  $_order->has_status( array_merge( array( 'pending', 'on-hold' ), $custom_order_statuses_without_wc_prefix ) )
201
  $custom_order_statuses = $this->get_custom_order_statuses( true );
202
  foreach ( $custom_order_statuses as $slug => $label ) {
203
  $icon_data = $this->get_status_icon_data( $slug );
204
+ $color_style = ( 'yes' === apply_filters( 'booster_option', 'no', get_option( 'wcj_orders_custom_statuses_add_to_order_list_actions_colored', 'no' ) ) ) ?
205
  ' color: ' . $icon_data['color'] . ' !important;' : '';
206
  echo '<style>.view.' . $slug . '::after { font-family: WooCommerce !important;' . $color_style .
207
  ' content: "\\' . $icon_data['content'] . '" !important; }</style>';
includes/class-wcj-order-min-amount.php CHANGED
@@ -126,7 +126,7 @@ class WCJ_Order_Min_Amount extends WCJ_Module {
126
  if ( 'yes' === get_option( 'wcj_order_minimum_amount_cart_notice_enabled', 'no' ) ) {
127
  $notice_function = get_option( 'wcj_order_minimum_amount_cart_notice_function', 'wc_print_notice' );
128
  $notice_function(
129
- sprintf( apply_filters( 'booster_get_option', 'You must have an order with a minimum of %s to place your order, your current order total is %s.', get_option( 'wcj_order_minimum_amount_cart_notice_message' ) ),
130
  wc_price( $minimum ),
131
  wc_price( $cart_total )
132
  ),
@@ -135,7 +135,7 @@ class WCJ_Order_Min_Amount extends WCJ_Module {
135
  }
136
  } else {
137
  wc_add_notice(
138
- sprintf( apply_filters( 'booster_get_option', 'You must have an order with a minimum of %s to place your order, your current order total is %s.', get_option( 'wcj_order_minimum_amount_error_message' ) ),
139
  wc_price( $minimum ),
140
  wc_price( $cart_total )
141
  ),
126
  if ( 'yes' === get_option( 'wcj_order_minimum_amount_cart_notice_enabled', 'no' ) ) {
127
  $notice_function = get_option( 'wcj_order_minimum_amount_cart_notice_function', 'wc_print_notice' );
128
  $notice_function(
129
+ sprintf( apply_filters( 'booster_option', 'You must have an order with a minimum of %s to place your order, your current order total is %s.', get_option( 'wcj_order_minimum_amount_cart_notice_message' ) ),
130
  wc_price( $minimum ),
131
  wc_price( $cart_total )
132
  ),
135
  }
136
  } else {
137
  wc_add_notice(
138
+ sprintf( apply_filters( 'booster_option', 'You must have an order with a minimum of %s to place your order, your current order total is %s.', get_option( 'wcj_order_minimum_amount_error_message' ) ),
139
  wc_price( $minimum ),
140
  wc_price( $cart_total )
141
  ),
includes/class-wcj-order-numbers.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Module - Order Numbers
4
  *
5
- * @version 3.2.3
6
  * @author Algoritmika Ltd.
7
  */
8
 
@@ -16,6 +16,7 @@ class WCJ_Order_Numbers extends WCJ_Module {
16
  * Constructor.
17
  *
18
  * @version 3.2.3
 
19
  * @todo (maybe) rename "Orders Renumerate" to "Renumerate orders"
20
  * @todo (maybe) use `woocommerce_new_order` hook instead of `wp_insert_post`
21
  */
@@ -151,7 +152,7 @@ class WCJ_Order_Numbers extends WCJ_Module {
151
  $order_number_meta = $order_id;
152
  }
153
  $order_timestamp = strtotime( ( WCJ_IS_WC_VERSION_BELOW_3 ? $order->post->post_date : $order->get_date_created() ) );
154
- $order_number = apply_filters( 'booster_get_option',
155
  sprintf( '%s%s', do_shortcode( get_option( 'wcj_order_number_prefix', '' ) ), $order_number_meta ),
156
  sprintf( '%s%s%0' . get_option( 'wcj_order_number_min_width', 0 ) . 's%s%s',
157
  do_shortcode( get_option( 'wcj_order_number_prefix', '' ) ),
@@ -167,13 +168,20 @@ class WCJ_Order_Numbers extends WCJ_Module {
167
  /**
168
  * Add Renumerate Orders tool to WooCommerce menu (the content).
169
  *
170
- * @version 3.1.0
 
 
171
  */
172
  function create_renumerate_orders_tool() {
173
  $result_message = '';
174
  if ( isset( $_POST['renumerate_orders'] ) ) {
175
  $this->renumerate_orders();
176
  $result_message = '<p><div class="updated"><p><strong>' . __( 'Orders successfully renumerated!', 'woocommerce-jetpack' ) . '</strong></p></div></p>';
 
 
 
 
 
177
  }
178
  $html = '';
179
  $html .= '<div class="wrap">';
@@ -200,10 +208,52 @@ class WCJ_Order_Numbers extends WCJ_Module {
200
  $this->add_order_number_meta( $order_id, false );
201
  }
202
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
203
  /**
204
  * Add/update order_number meta to order.
205
  *
206
- * @version 3.1.0
207
  */
208
  function add_order_number_meta( $order_id, $do_overwrite ) {
209
  if ( 'shop_order' !== get_post_type( $order_id ) || 'auto-draft' === get_post_status( $order_id ) ) {
@@ -216,7 +266,7 @@ class WCJ_Order_Numbers extends WCJ_Module {
216
  $wp_options_table = $wpdb->prefix . 'options';
217
  $result_select = $wpdb->get_row( "SELECT * FROM $wp_options_table WHERE option_name = 'wcj_order_number_counter'" );
218
  if ( NULL != $result_select ) {
219
- $current_order_number = $result_select->option_value;
220
  $result_update = $wpdb->update( $wp_options_table, array( 'option_value' => ( $current_order_number + 1 ) ), array( 'option_name' => 'wcj_order_number_counter' ) );
221
  if ( NULL != $result_update ) {
222
  $wpdb->query( 'COMMIT' ); // all ok
@@ -230,9 +280,11 @@ class WCJ_Order_Numbers extends WCJ_Module {
230
  } else {
231
  if ( 'hash_crc32' === get_option( 'wcj_order_number_sequential_enabled', 'yes' ) ) {
232
  $current_order_number = sprintf( "%u", crc32( $order_id ) );
233
- } else { // sequential
234
- $current_order_number = get_option( 'wcj_order_number_counter', 1 );
235
  update_option( 'wcj_order_number_counter', ( $current_order_number + 1 ) );
 
 
236
  }
237
  update_post_meta( $order_id, '_wcj_order_number', $current_order_number );
238
  }
@@ -242,12 +294,15 @@ class WCJ_Order_Numbers extends WCJ_Module {
242
  /**
243
  * Renumerate orders function.
244
  *
245
- * @version 3.2.0
246
  * @todo renumerate in date range only
247
  * @todo (maybe) selectable `post_status`
248
  * @todo (maybe) set default value for `wcj_order_numbers_renumerate_tool_orderby` to `ID` (instead of `date`)
249
  */
250
  function renumerate_orders() {
 
 
 
251
  $offset = 0;
252
  $block_size = 512;
253
  while( true ) {
2
  /**
3
  * Booster for WooCommerce - Module - Order Numbers
4
  *
5
+ * @version 3.3.0
6
  * @author Algoritmika Ltd.
7
  */
8
 
16
  * Constructor.
17
  *
18
  * @version 3.2.3
19
+ * @todo (maybe) add option (order meta box) to set number directly
20
  * @todo (maybe) rename "Orders Renumerate" to "Renumerate orders"
21
  * @todo (maybe) use `woocommerce_new_order` hook instead of `wp_insert_post`
22
  */
152
  $order_number_meta = $order_id;
153
  }
154
  $order_timestamp = strtotime( ( WCJ_IS_WC_VERSION_BELOW_3 ? $order->post->post_date : $order->get_date_created() ) );
155
+ $order_number = apply_filters( 'booster_option',
156
  sprintf( '%s%s', do_shortcode( get_option( 'wcj_order_number_prefix', '' ) ), $order_number_meta ),
157
  sprintf( '%s%s%0' . get_option( 'wcj_order_number_min_width', 0 ) . 's%s%s',
158
  do_shortcode( get_option( 'wcj_order_number_prefix', '' ) ),
168
  /**
169
  * Add Renumerate Orders tool to WooCommerce menu (the content).
170
  *
171
+ * @version 3.3.0
172
+ * @todo restyle
173
+ * @todo add more result info (e.g. number of regenerated orders etc.)
174
  */
175
  function create_renumerate_orders_tool() {
176
  $result_message = '';
177
  if ( isset( $_POST['renumerate_orders'] ) ) {
178
  $this->renumerate_orders();
179
  $result_message = '<p><div class="updated"><p><strong>' . __( 'Orders successfully renumerated!', 'woocommerce-jetpack' ) . '</strong></p></div></p>';
180
+ } else {
181
+ if ( 'yes' === get_option( 'wcj_order_number_sequential_enabled', 'yes' ) ) {
182
+ $result_message .= '<p>' . sprintf( __( 'Sequential number generation is enabled. Next order number will be %s.', 'woocommerce-jetpack' ),
183
+ '<code>' . get_option( 'wcj_order_number_counter', 1 ) . '</code>' ) . '</p>';
184
+ }
185
  }
186
  $html = '';
187
  $html .= '<div class="wrap">';
208
  $this->add_order_number_meta( $order_id, false );
209
  }
210
 
211
+ /**
212
+ * maybe_reset_sequential_counter.
213
+ *
214
+ * @version 3.3.0
215
+ * @since 3.3.0
216
+ * @todo use transactions on `wcj_order_number_use_mysql_transaction_enabled`
217
+ */
218
+ function maybe_reset_sequential_counter( $current_order_number, $order_id ) {
219
+ if ( 'no' != ( $reset_period = get_option( 'wcj_order_number_counter_reset_enabled', 'no' ) ) ) {
220
+ $previous_order_date = get_option( 'wcj_order_number_counter_previous_order_date', 0 );
221
+ $current_order_date = strtotime( wcj_get_order_date( wc_get_order( $order_id ) ) );
222
+ update_option( 'wcj_order_number_counter_previous_order_date', $current_order_date );
223
+ if ( 0 != $previous_order_date ) {
224
+ $do_reset = false;
225
+ switch ( $reset_period ) {
226
+ case 'daily':
227
+ $do_reset = (
228
+ date( 'Y', $current_order_date ) != date( 'Y', $previous_order_date ) ||
229
+ date( 'm', $current_order_date ) != date( 'm', $previous_order_date ) ||
230
+ date( 'd', $current_order_date ) != date( 'd', $previous_order_date )
231
+ );
232
+ break;
233
+ case 'monthly':
234
+ $do_reset = (
235
+ date( 'Y', $current_order_date ) != date( 'Y', $previous_order_date ) ||
236
+ date( 'm', $current_order_date ) != date( 'm', $previous_order_date )
237
+ );
238
+ break;
239
+ case 'yearly':
240
+ $do_reset = (
241
+ date( 'Y', $current_order_date ) != date( 'Y', $previous_order_date )
242
+ );
243
+ break;
244
+ }
245
+ if ( $do_reset ) {
246
+ return 1;
247
+ }
248
+ }
249
+ }
250
+ return $current_order_number;
251
+ }
252
+
253
  /**
254
  * Add/update order_number meta to order.
255
  *
256
+ * @version 3.3.0
257
  */
258
  function add_order_number_meta( $order_id, $do_overwrite ) {
259
  if ( 'shop_order' !== get_post_type( $order_id ) || 'auto-draft' === get_post_status( $order_id ) ) {
266
  $wp_options_table = $wpdb->prefix . 'options';
267
  $result_select = $wpdb->get_row( "SELECT * FROM $wp_options_table WHERE option_name = 'wcj_order_number_counter'" );
268
  if ( NULL != $result_select ) {
269
+ $current_order_number = $this->maybe_reset_sequential_counter( $result_select->option_value, $order_id );
270
  $result_update = $wpdb->update( $wp_options_table, array( 'option_value' => ( $current_order_number + 1 ) ), array( 'option_name' => 'wcj_order_number_counter' ) );
271
  if ( NULL != $result_update ) {
272
  $wpdb->query( 'COMMIT' ); // all ok
280
  } else {
281
  if ( 'hash_crc32' === get_option( 'wcj_order_number_sequential_enabled', 'yes' ) ) {
282
  $current_order_number = sprintf( "%u", crc32( $order_id ) );
283
+ } elseif ( 'yes' === get_option( 'wcj_order_number_sequential_enabled', 'yes' ) ) {
284
+ $current_order_number = $this->maybe_reset_sequential_counter( get_option( 'wcj_order_number_counter', 1 ), $order_id );
285
  update_option( 'wcj_order_number_counter', ( $current_order_number + 1 ) );
286
+ } else { // 'no' === get_option( 'wcj_order_number_sequential_enabled', 'yes' ) // order ID
287
+ $current_order_number = '';
288
  }
289
  update_post_meta( $order_id, '_wcj_order_number', $current_order_number );
290
  }
294
  /**
295
  * Renumerate orders function.
296
  *
297
+ * @version 3.3.0
298
  * @todo renumerate in date range only
299
  * @todo (maybe) selectable `post_status`
300
  * @todo (maybe) set default value for `wcj_order_numbers_renumerate_tool_orderby` to `ID` (instead of `date`)
301
  */
302
  function renumerate_orders() {
303
+ if ( 'yes' === get_option( 'wcj_order_number_sequential_enabled', 'yes' ) && 'no' != get_option( 'wcj_order_number_counter_reset_enabled', 'no' ) ) {
304
+ update_option( 'wcj_order_number_counter_previous_order_date', 0 );
305
+ }
306
  $offset = 0;
307
  $block_size = 512;
308
  while( true ) {
includes/class-wcj-order-quantities.php CHANGED
@@ -39,8 +39,8 @@ class WCJ_Order_Quantities extends WCJ_Module {
39
  add_action( 'wp', array( $this, 'stop_from_seeing_checkout' ), PHP_INT_MAX );
40
  }
41
  if (
42
- 'yes' === apply_filters( 'booster_get_option', 'no', get_option( 'wcj_order_quantities_min_per_item_quantity_per_product', 'no' ) ) ||
43
- 'yes' === apply_filters( 'booster_get_option', 'no', get_option( 'wcj_order_quantities_max_per_item_quantity_per_product', 'no' ) )
44
  ) {
45
  add_action( 'add_meta_boxes', array( $this, 'add_meta_box' ) );
46
  add_action( 'save_post_product', array( $this, 'save_meta_box' ), PHP_INT_MAX, 2 );
@@ -97,11 +97,11 @@ class WCJ_Order_Quantities extends WCJ_Module {
97
  return $default_qty;
98
  }
99
  if (
100
- 'yes' === apply_filters( 'booster_get_option', 'no', get_option( 'wcj_order_quantities_' . $min_or_max . '_per_item_quantity_per_product', 'no' ) ) &&
101
  0 != ( $max_or_max_per_item_quantity_per_product = get_post_meta( wcj_get_product_id( $_product ), '_' . 'wcj_order_quantities_' . $min_or_max, true ) )
102
  ) {
103
  return $max_or_max_per_item_quantity_per_product;
104
- } elseif ( 0 != ( $max_or_max_per_item_quantity = apply_filters( 'booster_get_option', 0, get_option( 'wcj_order_quantities_' . $min_or_max . '_per_item_quantity', 0 ) ) ) ) {
105
  return $max_or_max_per_item_quantity;
106
  } else {
107
  return $default_qty;
@@ -271,7 +271,7 @@ class WCJ_Order_Quantities extends WCJ_Module {
271
  }
272
  }
273
  }
274
- if ( apply_filters( 'booster_get_option', 'no', get_option( 'wcj_order_quantities_' . $min_or_max . '_per_item_quantity_per_product', 'no' ) ) ) {
275
  foreach ( $cart_item_quantities as $_product_id => $cart_item_quantity ) {
276
  if ( 0 != ( $max_or_max_per_item_quantity = get_post_meta( $_product_id, '_' . 'wcj_order_quantities_' . $min_or_max, true ) ) ) {
277
  if (
@@ -287,10 +287,10 @@ class WCJ_Order_Quantities extends WCJ_Module {
287
  }
288
  }
289
  }
290
- if ( 0 != ( $max_or_max_per_item_quantity = apply_filters( 'booster_get_option', 0, get_option( 'wcj_order_quantities_' . $min_or_max . '_per_item_quantity', 0 ) ) ) ) {
291
  foreach ( $cart_item_quantities as $_product_id => $cart_item_quantity ) {
292
  if (
293
- 'yes' === apply_filters( 'booster_get_option', 'no', get_option( 'wcj_order_quantities_' . $min_or_max . '_per_item_quantity_per_product', 'no' ) ) &&
294
  0 != get_post_meta( $_product_id, '_' . 'wcj_order_quantities_' . $min_or_max, true )
295
  ) {
296
  continue;
39
  add_action( 'wp', array( $this, 'stop_from_seeing_checkout' ), PHP_INT_MAX );
40
  }
41
  if (
42
+ 'yes' === apply_filters( 'booster_option', 'no', get_option( 'wcj_order_quantities_min_per_item_quantity_per_product', 'no' ) ) ||
43
+ 'yes' === apply_filters( 'booster_option', 'no', get_option( 'wcj_order_quantities_max_per_item_quantity_per_product', 'no' ) )
44
  ) {
45
  add_action( 'add_meta_boxes', array( $this, 'add_meta_box' ) );
46
  add_action( 'save_post_product', array( $this, 'save_meta_box' ), PHP_INT_MAX, 2 );
97
  return $default_qty;
98
  }
99
  if (
100
+ 'yes' === apply_filters( 'booster_option', 'no', get_option( 'wcj_order_quantities_' . $min_or_max . '_per_item_quantity_per_product', 'no' ) ) &&
101
  0 != ( $max_or_max_per_item_quantity_per_product = get_post_meta( wcj_get_product_id( $_product ), '_' . 'wcj_order_quantities_' . $min_or_max, true ) )
102
  ) {
103
  return $max_or_max_per_item_quantity_per_product;
104
+ } elseif ( 0 != ( $max_or_max_per_item_quantity = apply_filters( 'booster_option', 0, get_option( 'wcj_order_quantities_' . $min_or_max . '_per_item_quantity', 0 ) ) ) ) {
105
  return $max_or_max_per_item_quantity;
106
  } else {
107
  return $default_qty;
271
  }
272
  }
273
  }
274
+ if ( apply_filters( 'booster_option', 'no', get_option( 'wcj_order_quantities_' . $min_or_max . '_per_item_quantity_per_product', 'no' ) ) ) {
275
  foreach ( $cart_item_quantities as $_product_id => $cart_item_quantity ) {
276
  if ( 0 != ( $max_or_max_per_item_quantity = get_post_meta( $_product_id, '_' . 'wcj_order_quantities_' . $min_or_max, true ) ) ) {
277
  if (
287
  }
288
  }
289
  }
290
+ if ( 0 != ( $max_or_max_per_item_quantity = apply_filters( 'booster_option', 0, get_option( 'wcj_order_quantities_' . $min_or_max . '_per_item_quantity', 0 ) ) ) ) {
291
  foreach ( $cart_item_quantities as $_product_id => $cart_item_quantity ) {
292
  if (
293
+ 'yes' === apply_filters( 'booster_option', 'no', get_option( 'wcj_order_quantities_' . $min_or_max . '_per_item_quantity_per_product', 'no' ) ) &&
294
  0 != get_post_meta( $_product_id, '_' . 'wcj_order_quantities_' . $min_or_max, true )
295
  ) {
296
  continue;
includes/class-wcj-orders.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Module - Orders
4
  *
5
- * @version 3.2.4
6
  * @author Algoritmika Ltd.
7
  */
8
 
@@ -15,7 +15,7 @@ class WCJ_Orders extends WCJ_Module {
15
  /**
16
  * Constructor.
17
  *
18
- * @version 3.2.4
19
  * @todo Bulk Regenerate Download Permissions - copy "cron" to plugin
20
  * @todo Bulk Regenerate Download Permissions - maybe move "bulk actions" to free
21
  * @todo Bulk Regenerate Download Permissions - maybe as new module
@@ -48,7 +48,7 @@ class WCJ_Orders extends WCJ_Module {
48
  }
49
 
50
  // Bulk Regenerate Download Permissions
51
- if ( 'yes' === apply_filters( 'booster_get_option', 'no', get_option( 'wcj_order_bulk_regenerate_download_permissions_enabled', 'no' ) ) ) {
52
  // Actions
53
  if ( 'yes' === get_option( 'wcj_order_bulk_regenerate_download_permissions_actions', 'no' ) ) {
54
  add_filter( 'bulk_actions-edit-shop_order', array( $this, 'register_bulk_actions_regenerate_download_permissions' ), PHP_INT_MAX );
@@ -59,7 +59,7 @@ class WCJ_Orders extends WCJ_Module {
59
  // Admin notices
60
  add_filter( 'admin_notices', array( $this, 'admin_notice_regenerate_download_permissions' ) );
61
  // All orders - Cron
62
- if ( 'disabled' != apply_filters( 'booster_get_option', 'disabled', get_option( 'wcj_order_bulk_regenerate_download_permissions_all_orders_cron', 'disabled' ) ) ) {
63
  add_action( 'init', array( $this, 'schedule_bulk_regenerate_download_permissions_all_orders_cron' ) );
64
  add_action( 'admin_init', array( $this, 'schedule_bulk_regenerate_download_permissions_all_orders_cron' ) );
65
  add_filter( 'cron_schedules', 'wcj_crons_add_custom_intervals' );
@@ -67,6 +67,51 @@ class WCJ_Orders extends WCJ_Module {
67
  }
68
  }
69
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
70
  }
71
  }
72
 
@@ -79,7 +124,7 @@ class WCJ_Orders extends WCJ_Module {
79
  function schedule_bulk_regenerate_download_permissions_all_orders_cron() {
80
  wcj_crons_schedule_the_events(
81
  'wcj_bulk_regenerate_download_permissions_all_orders_cron',
82
- apply_filters( 'booster_get_option', 'disabled', get_option( 'wcj_order_bulk_regenerate_download_permissions_all_orders_cron', 'disabled' ) )
83
  );
84
  }
85
 
@@ -187,6 +232,7 @@ class WCJ_Orders extends WCJ_Module {
187
  *
188
  * @version 2.7.0
189
  * @since 2.5.6
 
190
  */
191
  function change_order_currency( $order_currency, $_order ) {
192
  return ( '' != ( $wcj_order_currency = get_post_meta( wcj_get_order_id( $_order ), '_' . 'wcj_order_currency', true ) ) ) ? $wcj_order_currency : $order_currency;
2
  /**
3
  * Booster for WooCommerce - Module - Orders
4
  *
5
+ * @version 3.3.0
6
  * @author Algoritmika Ltd.
7
  */
8
 
15
  /**
16
  * Constructor.
17
  *
18
+ * @version 3.3.0
19
  * @todo Bulk Regenerate Download Permissions - copy "cron" to plugin
20
  * @todo Bulk Regenerate Download Permissions - maybe move "bulk actions" to free
21
  * @todo Bulk Regenerate Download Permissions - maybe as new module
48
  }
49
 
50
  // Bulk Regenerate Download Permissions
51
+ if ( 'yes' === apply_filters( 'booster_option', 'no', get_option( 'wcj_order_bulk_regenerate_download_permissions_enabled', 'no' ) ) ) {
52
  // Actions
53
  if ( 'yes' === get_option( 'wcj_order_bulk_regenerate_download_permissions_actions', 'no' ) ) {
54
  add_filter( 'bulk_actions-edit-shop_order', array( $this, 'register_bulk_actions_regenerate_download_permissions' ), PHP_INT_MAX );
59
  // Admin notices
60
  add_filter( 'admin_notices', array( $this, 'admin_notice_regenerate_download_permissions' ) );
61
  // All orders - Cron
62
+ if ( 'disabled' != apply_filters( 'booster_option', 'disabled', get_option( 'wcj_order_bulk_regenerate_download_permissions_all_orders_cron', 'disabled' ) ) ) {
63
  add_action( 'init', array( $this, 'schedule_bulk_regenerate_download_permissions_all_orders_cron' ) );
64
  add_action( 'admin_init', array( $this, 'schedule_bulk_regenerate_download_permissions_all_orders_cron' ) );
65
  add_filter( 'cron_schedules', 'wcj_crons_add_custom_intervals' );
67
  }
68
  }
69
 
70
+ // Country by IP
71
+ if ( 'yes' === get_option( 'wcj_orders_country_by_ip_enabled', 'no' ) ) {
72
+ add_action( 'add_meta_boxes', array( $this, 'add_country_by_ip_meta_box' ) );
73
+ }
74
+
75
+ }
76
+ }
77
+
78
+ /**
79
+ * add_country_by_ip_meta_box.
80
+ *
81
+ * @version 3.3.0
82
+ * @since 3.3.0
83
+ */
84
+ function add_country_by_ip_meta_box() {
85
+ add_meta_box(
86
+ 'wc-jetpack-' . $this->id . '-country-by-ip',
87
+ __( 'Booster', 'woocommerce-jetpack' ) . ': ' . __( 'Country by IP', 'woocommerce-jetpack' ),
88
+ array( $this, 'create_country_by_ip_meta_box' ),
89
+ 'shop_order',
90
+ 'side',
91
+ 'low'
92
+ );
93
+ }
94
+
95
+ /**
96
+ * create_country_by_ip_meta_box.
97
+ *
98
+ * @version 3.3.0
99
+ * @since 3.3.0
100
+ */
101
+ function create_country_by_ip_meta_box() {
102
+ if (
103
+ class_exists( 'WC_Geolocation' ) &&
104
+ ( $order = wc_get_order() ) &&
105
+ ( $customer_ip = $order->get_customer_ip_address() ) &&
106
+ ( $location = WC_Geolocation::geolocate_ip( $customer_ip ) ) &&
107
+ isset( $location['country'] ) && '' != $location['country']
108
+ ) {
109
+ echo wcj_get_country_flag_by_code( $location['country'] ) . ' ' .
110
+ wcj_get_country_name_by_code( $location['country'] ) .
111
+ ' (' . $location['country'] . ')' .
112
+ ' [' . $customer_ip . ']';
113
+ } else {
114
+ echo '<em>' . __( 'No data.', 'woocommerce-jetpack' ) . '</em>';
115
  }
116
  }
117
 
124
  function schedule_bulk_regenerate_download_permissions_all_orders_cron() {
125
  wcj_crons_schedule_the_events(
126
  'wcj_bulk_regenerate_download_permissions_all_orders_cron',
127
+ apply_filters( 'booster_option', 'disabled', get_option( 'wcj_order_bulk_regenerate_download_permissions_all_orders_cron', 'disabled' ) )
128
  );
129
  }
130
 
232
  *
233
  * @version 2.7.0
234
  * @since 2.5.6
235
+ * @todo (maybe) move meta box to `side`
236
  */
237
  function change_order_currency( $order_currency, $_order ) {
238
  return ( '' != ( $wcj_order_currency = get_post_meta( wcj_get_order_id( $_order ), '_' . 'wcj_order_currency', true ) ) ) ? $wcj_order_currency : $order_currency;
includes/class-wcj-payment-gateways-by-country.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Module - Payment Gateways by Country
4
  *
5
- * @version 2.8.0
6
  * @since 2.4.1
7
  * @author Algoritmika Ltd.
8
  */
@@ -34,11 +34,13 @@ class WCJ_Payment_Gateways_By_Country extends WCJ_Module {
34
  /**
35
  * available_payment_gateways.
36
  *
37
- * @version 2.8.0
 
38
  */
39
  function available_payment_gateways( $_available_gateways ) {
40
  if ( isset( WC()->customer ) ) {
41
  $customer_country = wcj_customer_get_country();
 
42
  foreach ( $_available_gateways as $key => $gateway ) {
43
  $include_countries = get_option( 'wcj_gateways_countries_include_' . $key, '' );
44
  if ( ! empty( $include_countries ) && ! in_array( $customer_country, $include_countries ) ) {
@@ -50,7 +52,6 @@ class WCJ_Payment_Gateways_By_Country extends WCJ_Module {
50
  unset( $_available_gateways[ $key ] );
51
  continue;
52
  }
53
- $customer_state = ( WCJ_IS_WC_VERSION_BELOW_3 ) ? WC()->customer->get_state() : WC()->customer->get_billing_state();
54
  $include_states = get_option( 'wcj_gateways_states_include_' . $key, '' );
55
  if ( ! empty( $include_states ) && ! in_array( $customer_state, $include_states ) ) {
56
  unset( $_available_gateways[ $key ] );
2
  /**
3
  * Booster for WooCommerce - Module - Payment Gateways by Country
4
  *
5
+ * @version 3.3.0
6
  * @since 2.4.1
7
  * @author Algoritmika Ltd.
8
  */
34
  /**
35
  * available_payment_gateways.
36
  *
37
+ * @version 3.3.0
38
+ * @todo (maybe) add option to detect customer's country by IP (instead of `wcj_customer_get_country()`); probably won't work with states though...
39
  */
40
  function available_payment_gateways( $_available_gateways ) {
41
  if ( isset( WC()->customer ) ) {
42
  $customer_country = wcj_customer_get_country();
43
+ $customer_state = ( WCJ_IS_WC_VERSION_BELOW_3 ) ? WC()->customer->get_state() : WC()->customer->get_billing_state();
44
  foreach ( $_available_gateways as $key => $gateway ) {
45
  $include_countries = get_option( 'wcj_gateways_countries_include_' . $key, '' );
46
  if ( ! empty( $include_countries ) && ! in_array( $customer_country, $include_countries ) ) {
52
  unset( $_available_gateways[ $key ] );
53
  continue;
54
  }
 
55
  $include_states = get_option( 'wcj_gateways_states_include_' . $key, '' );
56
  if ( ! empty( $include_states ) && ! in_array( $customer_state, $include_states ) ) {
57
  unset( $_available_gateways[ $key ] );
includes/class-wcj-payment-gateways-fees.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Module - Gateways Fees and Discounts
4
  *
5
- * @version 2.9.0
6
  * @since 2.2.2
7
  * @author Algoritmika Ltd.
8
  */
@@ -45,14 +45,21 @@ class WCJ_Payment_Gateways_Fees extends WCJ_Module {
45
  }
46
 
47
  /**
48
- * gateways_fees.
49
  *
50
- * @version 2.8.2
 
51
  */
52
- function gateways_fees() {
53
- global $woocommerce;
54
- $is_paypal_express = ( isset( $_GET['wc-api'] ) && 'WC_Gateway_PayPal_Express_AngellEYE' === $_GET['wc-api'] ) ? true : false;
55
- if ( ! $is_paypal_express ) {
 
 
 
 
 
 
56
  $current_gateway = $woocommerce->session->chosen_payment_method;
57
  $available_gateways = WC()->payment_gateways->get_available_payment_gateways();
58
  if ( ! array_key_exists( $current_gateway, $available_gateways ) ) {
@@ -62,9 +69,19 @@ class WCJ_Payment_Gateways_Fees extends WCJ_Module {
62
  $current_gateway = isset( $current_gateway->id ) ? $current_gateway->id : '';
63
  }
64
  }
65
- } else {
66
- $current_gateway = 'paypal_express';
67
  }
 
 
 
 
 
 
 
 
 
 
68
  if ( '' != $current_gateway ) {
69
  $fee_text = get_option( 'wcj_gateways_fees_text_' . $current_gateway );
70
  $min_cart_amount = get_option( 'wcj_gateways_fees_min_cart_amount_' . $current_gateway );
2
  /**
3
  * Booster for WooCommerce - Module - Gateways Fees and Discounts
4
  *
5
+ * @version 3.3.0
6
  * @since 2.2.2
7
  * @author Algoritmika Ltd.
8
  */
45
  }
46
 
47
  /**
48
+ * get_current_gateway.
49
  *
50
+ * @version 3.3.0
51
+ * @since 3.3.0
52
  */
53
+ function get_current_gateway() {
54
+ if ( isset( $_GET['wc-api'] ) && 'WC_Gateway_PayPal_Express_AngellEYE' === $_GET['wc-api'] ) {
55
+ return 'paypal_express'; // PayPal for WooCommerce (By Angell EYE)
56
+ } elseif (
57
+ ( isset( $_GET['wc-ajax'] ) && 'wc_ppec_generate_cart' === $_GET['wc-ajax'] ) ||
58
+ ( isset( $_GET['startcheckout'] ) && 'true' === $_GET['startcheckout'] )
59
+ ) {
60
+ return 'ppec_paypal'; // WooCommerce PayPal Express Checkout Payment Gateway (By WooCommerce)
61
+ } else {
62
+ /* global $woocommerce;
63
  $current_gateway = $woocommerce->session->chosen_payment_method;
64
  $available_gateways = WC()->payment_gateways->get_available_payment_gateways();
65
  if ( ! array_key_exists( $current_gateway, $available_gateways ) ) {
69
  $current_gateway = isset( $current_gateway->id ) ? $current_gateway->id : '';
70
  }
71
  }
72
+ return $current_gateway; */
73
+ return WC()->session->chosen_payment_method;
74
  }
75
+ }
76
+
77
+ /**
78
+ * gateways_fees.
79
+ *
80
+ * @version 3.3.0
81
+ */
82
+ function gateways_fees() {
83
+ global $woocommerce;
84
+ $current_gateway = $this->get_current_gateway();
85
  if ( '' != $current_gateway ) {
86
  $fee_text = get_option( 'wcj_gateways_fees_text_' . $current_gateway );
87
  $min_cart_amount = get_option( 'wcj_gateways_fees_min_cart_amount_' . $current_gateway );
includes/class-wcj-payment-gateways-icons.php CHANGED
@@ -47,7 +47,7 @@ class WCJ_Payment_Gateways_Icons extends WCJ_Module {
47
  * @version 2.3.1
48
  */
49
  function set_icon( $icon, $key ) {
50
- $default_gateways = apply_filters( 'booster_get_option', array( 'cod', 'cheque', 'bacs', 'mijireh_checkout', 'paypal' ), array() );
51
  if ( ! empty( $default_gateways ) && ! in_array( $key, $default_gateways ) ) {
52
  return $icon;
53
  }
47
  * @version 2.3.1
48
  */
49
  function set_icon( $icon, $key ) {
50
+ $default_gateways = apply_filters( 'booster_option', array( 'cod', 'cheque', 'bacs', 'mijireh_checkout', 'paypal' ), array() );
51
  if ( ! empty( $default_gateways ) && ! in_array( $key, $default_gateways ) ) {
52
  return $icon;
53
  }
includes/class-wcj-payment-gateways-per-category.php CHANGED
@@ -110,7 +110,7 @@ class WCJ_Payment_Gateways_Per_Category extends WCJ_Module {
110
  }
111
 
112
  // Including by products
113
- $products_in = wcj_maybe_convert_string_to_array( apply_filters( 'booster_get_option', array(), get_option( 'wcj_gateways_per_products_' . $gateway_id ) ) );
114
  if ( ! empty( $products_in ) ) {
115
  $do_skip = true;
116
  foreach ( WC()->cart->get_cart() as $cart_item_key => $values ) {
@@ -130,7 +130,7 @@ class WCJ_Payment_Gateways_Per_Category extends WCJ_Module {
130
  }
131
 
132
  // Excluding by products
133
- $products_excl = wcj_maybe_convert_string_to_array( apply_filters( 'booster_get_option', array(), get_option( 'wcj_gateways_per_products_excl_' . $gateway_id ) ) );
134
  if ( ! empty( $products_excl ) ) {
135
  $do_skip = false;
136
  foreach ( WC()->cart->get_cart() as $cart_item_key => $values ) {
110
  }
111
 
112
  // Including by products
113
+ $products_in = wcj_maybe_convert_string_to_array( apply_filters( 'booster_option', array(), get_option( 'wcj_gateways_per_products_' . $gateway_id ) ) );
114
  if ( ! empty( $products_in ) ) {
115
  $do_skip = true;
116
  foreach ( WC()->cart->get_cart() as $cart_item_key => $values ) {
130
  }
131
 
132
  // Excluding by products
133
+ $products_excl = wcj_maybe_convert_string_to_array( apply_filters( 'booster_option', array(), get_option( 'wcj_gateways_per_products_excl_' . $gateway_id ) ) );
134
  if ( ! empty( $products_excl ) ) {
135
  $do_skip = false;
136
  foreach ( WC()->cart->get_cart() as $cart_item_key => $values ) {
includes/class-wcj-payment-gateways.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Module - Custom Gateways
4
  *
5
- * @version 3.0.1
6
  * @author Algoritmika Ltd.
7
  */
8
 
@@ -15,7 +15,7 @@ class WCJ_Payment_Gateways extends WCJ_Module {
15
  /**
16
  * Constructor.
17
  *
18
- * @version 3.0.1
19
  */
20
  function __construct() {
21
 
@@ -30,6 +30,22 @@ class WCJ_Payment_Gateways extends WCJ_Module {
30
  add_action( 'woocommerce_after_checkout_validation', array( $this, 'check_required_wcj_input_fields' ), PHP_INT_MAX, 2 );
31
  add_action( 'woocommerce_checkout_update_order_meta', array( $this, 'update_custom_payment_gateways_fields_order_meta' ), PHP_INT_MAX, 2 );
32
  add_action( 'add_meta_boxes', array( $this, 'add_custom_payment_gateways_fields_admin_order_meta_box' ) );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
33
  }
34
  }
35
 
@@ -84,7 +100,7 @@ class WCJ_Payment_Gateways extends WCJ_Module {
84
  /**
85
  * create_custom_payment_gateways_fields_admin_order_meta_box.
86
  *
87
- * @version 2.5.2
88
  * @since 2.5.2
89
  */
90
  function create_custom_payment_gateways_fields_admin_order_meta_box() {
@@ -96,6 +112,10 @@ class WCJ_Payment_Gateways extends WCJ_Module {
96
  $table_data[] = array( $name, $value );
97
  }
98
  $html .= wcj_get_table_html( $table_data, array( 'table_class' => 'widefat striped', 'table_heading_type' => 'vertical', ) );
 
 
 
 
99
  echo $html;
100
  }
101
 
2
  /**
3
  * Booster for WooCommerce - Module - Custom Gateways
4
  *
5
+ * @version 3.3.0
6
  * @author Algoritmika Ltd.
7
  */
8
 
15
  /**
16
  * Constructor.
17
  *
18
+ * @version 3.3.0
19
  */
20
  function __construct() {
21
 
30
  add_action( 'woocommerce_after_checkout_validation', array( $this, 'check_required_wcj_input_fields' ), PHP_INT_MAX, 2 );
31
  add_action( 'woocommerce_checkout_update_order_meta', array( $this, 'update_custom_payment_gateways_fields_order_meta' ), PHP_INT_MAX, 2 );
32
  add_action( 'add_meta_boxes', array( $this, 'add_custom_payment_gateways_fields_admin_order_meta_box' ) );
33
+ add_action( 'admin_init', array( $this, 'maybe_delete_payment_gateway_input_fields' ) );
34
+ }
35
+ }
36
+
37
+ /**
38
+ * maybe_delete_payment_gateway_input_fields.
39
+ *
40
+ * @version 3.3.0
41
+ * @since 3.3.0
42
+ */
43
+ function maybe_delete_payment_gateway_input_fields() {
44
+ if ( isset( $_GET['wcj_delete_payment_gateway_input_fields'] ) ) {
45
+ $order_id = $_GET['wcj_delete_payment_gateway_input_fields'];
46
+ delete_post_meta( $order_id, '_wcj_custom_payment_gateway_input_fields' );
47
+ wp_safe_redirect( remove_query_arg( 'wcj_delete_payment_gateway_input_fields' ) );
48
+ exit;
49
  }
50
  }
51
 
100
  /**
101
  * create_custom_payment_gateways_fields_admin_order_meta_box.
102
  *
103
+ * @version 3.3.0
104
  * @since 2.5.2
105
  */
106
  function create_custom_payment_gateways_fields_admin_order_meta_box() {
112
  $table_data[] = array( $name, $value );
113
  }
114
  $html .= wcj_get_table_html( $table_data, array( 'table_class' => 'widefat striped', 'table_heading_type' => 'vertical', ) );
115
+ if ( 'yes' === get_option( 'wcj_custom_payment_gateways_input_fields_delete_button', 'no' ) ) {
116
+ $html .= '<p><a style="color:#a00;" href="' . add_query_arg( 'wcj_delete_payment_gateway_input_fields', $order_id ) . '"' . wcj_get_js_confirmation() . '>' .
117
+ __( 'Delete', 'woocommerce-jetpack' ) . '</a></p>';
118
+ }
119
  echo $html;
120
  }
121
 
includes/class-wcj-pdf-invoicing.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Module - PDF Invoicing
4
  *
5
- * @version 3.2.0
6
  * @author Algoritmika Ltd.
7
  */
8
 
@@ -68,7 +68,7 @@ class WCJ_PDF_Invoicing extends WCJ_Module {
68
  }
69
 
70
  /**
71
- * Add extra bulk action options to generate/download documents
72
  *
73
  * Using Javascript until WordPress core fixes: http://core.trac.wordpress.org/ticket/16031
74
  *
2
  /**
3
  * Booster for WooCommerce - Module - PDF Invoicing
4
  *
5
+ * @version 3.3.0
6
  * @author Algoritmika Ltd.
7
  */
8
 
68
  }
69
 
70
  /**
71
+ * Add extra bulk action options to generate/download documents.
72
  *
73
  * Using Javascript until WordPress core fixes: http://core.trac.wordpress.org/ticket/16031
74
  *
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 2.8.0
6
  * @author Algoritmika Ltd.
7
  */
8
 
@@ -15,7 +15,8 @@ class WCJ_Price_By_Country extends WCJ_Module {
15
  /**
16
  * Constructor.
17
  *
18
- * @version 2.8.0
 
19
  */
20
  function __construct() {
21
 
@@ -51,7 +52,12 @@ class WCJ_Price_By_Country extends WCJ_Module {
51
  // Backend
52
  include_once( 'reports/class-wcj-currency-reports.php' );
53
  if ( 'yes' === get_option( 'wcj_price_by_country_local_enabled', 'yes' ) ) {
54
- include_once( 'price-by-country/class-wcj-price-by-country-local.php' );
 
 
 
 
 
55
  }
56
 
57
  // Reset Price Filter
2
  /**
3
  * Booster for WooCommerce - Module - Prices and Currencies by Country
4
  *
5
+ * @version 3.3.0
6
  * @author Algoritmika Ltd.
7
  */
8
 
15
  /**
16
  * Constructor.
17
  *
18
+ * @version 3.3.0
19
+ * @todo cleanup
20
  */
21
  function __construct() {
22
 
52
  // Backend
53
  include_once( 'reports/class-wcj-currency-reports.php' );
54
  if ( 'yes' === get_option( 'wcj_price_by_country_local_enabled', 'yes' ) ) {
55
+ if ( 'inline' === get_option( 'wcj_price_by_country_local_options_style', 'inline' ) ) {
56
+ include_once( 'price-by-country/class-wcj-price-by-country-local.php' );
57
+ } else {
58
+ add_action( 'add_meta_boxes', array( $this, 'add_meta_box' ) );
59
+ add_action( 'save_post_product', array( $this, 'save_meta_box' ), PHP_INT_MAX, 2 );
60
+ }
61
  }
62
 
63
  // Reset Price Filter
includes/class-wcj-price-by-user-role.php CHANGED
@@ -64,7 +64,7 @@ class WCJ_Price_By_User_Role extends WCJ_Module {
64
  * @since 2.5.0
65
  */
66
  function save_meta_box_value( $option_value, $option_name, $module_id ) {
67
- if ( true === apply_filters( 'booster_get_option', false, true ) ) {
68
  return $option_value;
69
  }
70
  if ( 'no' === $option_value ) {
@@ -239,7 +239,7 @@ class WCJ_Price_By_User_Role extends WCJ_Module {
239
  }
240
 
241
  // By category
242
- $categories = apply_filters( 'booster_get_option', '', get_option( 'wcj_price_by_user_role_categories', '' ) );
243
  if ( ! empty( $categories ) ) {
244
  $product_categories = get_the_terms( wcj_get_product_id_or_variation_parent_id( $_product ), 'product_cat' );
245
  if ( ! empty( $product_categories ) ) {
@@ -278,7 +278,7 @@ class WCJ_Price_By_User_Role extends WCJ_Module {
278
  */
279
  function get_variation_prices_hash( $price_hash, $_product, $display ) {
280
  $user_role = wcj_get_current_user_first_role();
281
- $categories = apply_filters( 'booster_get_option', '', get_option( 'wcj_price_by_user_role_categories', '' ) );
282
  $price_hash['wcj_user_role'] = array(
283
  $user_role,
284
  get_option( 'wcj_price_by_user_role_' . $user_role, 1 ),
64
  * @since 2.5.0
65
  */
66
  function save_meta_box_value( $option_value, $option_name, $module_id ) {
67
+ if ( true === apply_filters( 'booster_option', false, true ) ) {
68
  return $option_value;
69
  }
70
  if ( 'no' === $option_value ) {
239
  }
240
 
241
  // By category
242
+ $categories = apply_filters( 'booster_option', '', get_option( 'wcj_price_by_user_role_categories', '' ) );
243
  if ( ! empty( $categories ) ) {
244
  $product_categories = get_the_terms( wcj_get_product_id_or_variation_parent_id( $_product ), 'product_cat' );
245
  if ( ! empty( $product_categories ) ) {
278
  */
279
  function get_variation_prices_hash( $price_hash, $_product, $display ) {
280
  $user_role = wcj_get_current_user_first_role();
281
+ $categories = apply_filters( 'booster_option', '', get_option( 'wcj_price_by_user_role_categories', '' ) );
282
  $price_hash['wcj_user_role'] = array(
283
  $user_role,
284
  get_option( 'wcj_price_by_user_role_' . $user_role, 1 ),
includes/class-wcj-price-formats.php CHANGED
@@ -46,7 +46,7 @@ class WCJ_Price_Formats extends WCJ_Module {
46
  * @since 2.5.2
47
  */
48
  function price_format( $args ) {
49
- for ( $i = 1; $i <= apply_filters( 'booster_get_option', 1, get_option( 'wcj_price_formats_total_number', 1 ) ); $i++ ) {
50
  if ( get_woocommerce_currency() === get_option( 'wcj_price_formats_currency_' . $i ) ) {
51
  if ( defined( 'ICL_LANGUAGE_CODE' ) && '' != ( $wpml_language = get_option( 'wcj_price_formats_wpml_language_' . $i, '' ) ) ) {
52
  $wpml_language = explode( ',', trim( str_replace( ' ', '', $wpml_language ), ',' ) );
46
  * @since 2.5.2
47
  */
48
  function price_format( $args ) {
49
+ for ( $i = 1; $i <= apply_filters( 'booster_option', 1, get_option( 'wcj_price_formats_total_number', 1 ) ); $i++ ) {
50
  if ( get_woocommerce_currency() === get_option( 'wcj_price_formats_currency_' . $i ) ) {
51
  if ( defined( 'ICL_LANGUAGE_CODE' ) && '' != ( $wpml_language = get_option( 'wcj_price_formats_wpml_language_' . $i, '' ) ) ) {
52
  $wpml_language = explode( ',', trim( str_replace( ' ', '', $wpml_language ), ',' ) );
includes/class-wcj-price-labels.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Module - Custom Price Labels
4
  *
5
- * @version 3.2.3
6
  * @author Algoritmika Ltd.
7
  */
8
 
@@ -162,7 +162,7 @@ class WCJ_Price_Labels extends WCJ_Module {
162
  $option_name = $this->custom_tab_group_name . $custom_tab_section . $custom_tab_section_variation;
163
  if ( $custom_tab_section_variation == '_text' ) {
164
  if ( $custom_tab_section != '_instead' ) {
165
- $disabled_if_no_plus = apply_filters( 'booster_get_message', '', 'readonly_string' );
166
  } else {
167
  $disabled_if_no_plus = '';
168
  }
@@ -177,7 +177,7 @@ class WCJ_Price_Labels extends WCJ_Module {
177
  echo '<li><h5>Variable products</h5></li>';
178
  }
179
  if ( '_instead' != $custom_tab_section ) {
180
- $disabled_if_no_plus = apply_filters( 'booster_get_message', '', 'disabled_string' );
181
  } else {
182
  $disabled_if_no_plus = '';
183
  }
@@ -192,7 +192,7 @@ class WCJ_Price_Labels extends WCJ_Module {
192
  echo '<tr>';
193
  foreach ( $this->custom_tab_sections as $custom_tab_section ) {
194
  if ( '_instead' != $custom_tab_section )
195
- $disabled_if_no_plus = apply_filters( 'booster_get_message', '', 'desc_above' );
196
  else
197
  $disabled_if_no_plus = '';
198
  echo '<td style="width:25%;">' . $disabled_if_no_plus . '</td>';
@@ -213,13 +213,13 @@ class WCJ_Price_Labels extends WCJ_Module {
213
  $price = $custom_label;
214
  break;
215
  case '_before':
216
- $price = apply_filters( 'booster_get_option', $price, $custom_label . $price );
217
  break;
218
  case '_between':
219
- $price = apply_filters( 'booster_get_option', $price, str_replace( '</del> <ins>', '</del>' . $custom_label . '<ins>', $price ) );
220
  break;
221
  case '_after':
222
- $price = apply_filters( 'booster_get_option', $price, $price . $custom_label );
223
  break;
224
  }
225
  return str_replace( 'From: ', '', $price );
@@ -228,7 +228,7 @@ class WCJ_Price_Labels extends WCJ_Module {
228
  /*
229
  * custom_price - front end.
230
  *
231
- * @version 3.2.3
232
  * @todo rewrite this with less filters (e.g. `woocommerce_get_price_html` only) - at least for `! WCJ_IS_WC_VERSION_BELOW_3`
233
  */
234
  function custom_price( $price, $product ) {
@@ -319,7 +319,7 @@ class WCJ_Price_Labels extends WCJ_Module {
319
  }
320
  if ( $do_apply_global ) {
321
  // Global price labels - Add text before price
322
- $text_to_add_before = apply_filters( 'booster_get_option', '', get_option( 'wcj_global_price_labels_add_before_text' ) );
323
  if ( '' != $text_to_add_before ) {
324
  if ( apply_filters( 'wcj_price_labels_check_on_applying_label', true, $price, $text_to_add_before ) ) {
325
  $price = $text_to_add_before . $price;
@@ -335,16 +335,16 @@ class WCJ_Price_Labels extends WCJ_Module {
335
  // Global price labels - Between regular and sale prices
336
  $text_to_add_between_regular_and_sale = get_option( 'wcj_global_price_labels_between_regular_and_sale_text' );
337
  if ( '' != $text_to_add_between_regular_and_sale ) {
338
- $price = apply_filters( 'booster_get_option', $price, str_replace( '</del> <ins>', '</del>' . $text_to_add_between_regular_and_sale . '<ins>', $price ) );
339
  }
340
  // Global price labels - Remove text from price
341
- $text_to_remove = apply_filters( 'booster_get_option', '', get_option( 'wcj_global_price_labels_remove_text' ) );
342
  if ( '' != $text_to_remove ) {
343
  $price = str_replace( $text_to_remove, '', $price );
344
  }
345
  // Global price labels - Replace in price
346
- $text_to_replace = apply_filters( 'booster_get_option', '', get_option( 'wcj_global_price_labels_replace_text' ) );
347
- $text_to_replace_with = apply_filters( 'booster_get_option', '', get_option( 'wcj_global_price_labels_replace_with_text' ) );
348
  if ( '' != $text_to_replace && '' != $text_to_replace_with ) {
349
  $price = str_replace( $text_to_replace, $text_to_replace_with, $price );
350
  }
@@ -399,13 +399,13 @@ class WCJ_Price_Labels extends WCJ_Module {
399
  }
400
  }
401
 
402
- // For debug
403
- // return do_shortcode( $price . $current_filter_name . ( WCJ_IS_WC_VERSION_BELOW_3 ? $product->product_type : $product->get_type() ) . $labels_array['variation_variable'] . $labels_array['variation_variation'] );
404
-
405
- global $wcj_product_id_for_shortcode;
406
- $wcj_product_id_for_shortcode = wcj_get_product_id( $product );
407
  $result = do_shortcode( $price );
408
- $wcj_product_id_for_shortcode = 0;
 
 
409
  return $result;
410
  }
411
 
2
  /**
3
  * Booster for WooCommerce - Module - Custom Price Labels
4
  *
5
+ * @version 3.3.0
6
  * @author Algoritmika Ltd.
7
  */
8
 
162
  $option_name = $this->custom_tab_group_name . $custom_tab_section . $custom_tab_section_variation;
163
  if ( $custom_tab_section_variation == '_text' ) {
164
  if ( $custom_tab_section != '_instead' ) {
165
+ $disabled_if_no_plus = apply_filters( 'booster_message', '', 'readonly_string' );
166
  } else {
167
  $disabled_if_no_plus = '';
168
  }
177
  echo '<li><h5>Variable products</h5></li>';
178
  }
179
  if ( '_instead' != $custom_tab_section ) {
180
+ $disabled_if_no_plus = apply_filters( 'booster_message', '', 'disabled_string' );
181
  } else {
182
  $disabled_if_no_plus = '';
183
  }
192
  echo '<tr>';
193
  foreach ( $this->custom_tab_sections as $custom_tab_section ) {
194
  if ( '_instead' != $custom_tab_section )
195
+ $disabled_if_no_plus = apply_filters( 'booster_message', '', 'desc_above' );
196
  else
197
  $disabled_if_no_plus = '';
198
  echo '<td style="width:25%;">' . $disabled_if_no_plus . '</td>';
213
  $price = $custom_label;
214
  break;
215
  case '_before':
216
+ $price = apply_filters( 'booster_option', $price, $custom_label . $price );
217
  break;
218
  case '_between':
219
+ $price = apply_filters( 'booster_option', $price, str_replace( '</del> <ins>', '</del>' . $custom_label . '<ins>', $price ) );
220
  break;
221
  case '_after':
222
+ $price = apply_filters( 'booster_option', $price, $price . $custom_label );
223
  break;
224
  }
225
  return str_replace( 'From: ', '', $price );
228
  /*
229
  * custom_price - front end.
230
  *
231
+ * @version 3.3.0
232
  * @todo rewrite this with less filters (e.g. `woocommerce_get_price_html` only) - at least for `! WCJ_IS_WC_VERSION_BELOW_3`
233
  */
234
  function custom_price( $price, $product ) {
319
  }
320
  if ( $do_apply_global ) {
321
  // Global price labels - Add text before price
322
+ $text_to_add_before = apply_filters( 'booster_option', '', get_option( 'wcj_global_price_labels_add_before_text' ) );
323
  if ( '' != $text_to_add_before ) {
324
  if ( apply_filters( 'wcj_price_labels_check_on_applying_label', true, $price, $text_to_add_before ) ) {
325
  $price = $text_to_add_before . $price;
335
  // Global price labels - Between regular and sale prices
336
  $text_to_add_between_regular_and_sale = get_option( 'wcj_global_price_labels_between_regular_and_sale_text' );
337
  if ( '' != $text_to_add_between_regular_and_sale ) {
338
+ $price = apply_filters( 'booster_option', $price, str_replace( '</del> <ins>', '</del>' . $text_to_add_between_regular_and_sale . '<ins>', $price ) );
339
  }
340
  // Global price labels - Remove text from price
341
+ $text_to_remove = apply_filters( 'booster_option', '', get_option( 'wcj_global_price_labels_remove_text' ) );
342
  if ( '' != $text_to_remove ) {
343
  $price = str_replace( $text_to_remove, '', $price );
344
  }
345
  // Global price labels - Replace in price
346
+ $text_to_replace = apply_filters( 'booster_option', '', get_option( 'wcj_global_price_labels_replace_text' ) );
347
+ $text_to_replace_with = apply_filters( 'booster_option', '', get_option( 'wcj_global_price_labels_replace_with_text' ) );
348
  if ( '' != $text_to_replace && '' != $text_to_replace_with ) {
349
  $price = str_replace( $text_to_replace, $text_to_replace_with, $price );
350
  }
399
  }
400
  }
401
 
402
+ // Apply shortcodes
403
+ WCJ()->shortcodes['products']->passed_product = $product;
404
+ WCJ()->shortcodes['products_crowdfunding']->passed_product = $product;
 
 
405
  $result = do_shortcode( $price );
406
+ unset( WCJ()->shortcodes['products']->passed_product );
407
+ unset( WCJ()->shortcodes['products_crowdfunding']->passed_product );
408
+
409
  return $result;
410
  }
411
 
includes/class-wcj-product-add-to-cart.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Module - Product Add To Cart
4
  *
5
- * @version 3.2.4
6
  * @since 2.2.0
7
  * @author Algoritmika Ltd.
8
  */
@@ -16,17 +16,18 @@ class WCJ_Product_Add_To_Cart extends WCJ_Module {
16
  /**
17
  * Constructor.
18
  *
19
- * @version 3.2.4
 
 
20
  */
21
  function __construct() {
22
 
23
  $this->id = 'product_add_to_cart';
24
- $this->short_desc = __( 'Product Add to Cart', 'woocommerce-jetpack' );
25
  $this->desc = __( 'Set any local url to redirect to on WooCommerce Add to Cart.', 'woocommerce-jetpack' )
26
  . ' ' . __( 'Automatically add to cart on product visit.', 'woocommerce-jetpack' )
27
  . ' ' . __( 'Display radio buttons instead of drop box for variable products.', 'woocommerce-jetpack' )
28
  . ' ' . __( 'Disable quantity input.', 'woocommerce-jetpack' )
29
- . ' ' . __( 'Disable add to cart button on per product basis.', 'woocommerce-jetpack' )
30
  . ' ' . __( 'Open external products on add to cart in new window.', 'woocommerce-jetpack' )
31
  . ' ' . __( 'Replace Add to Cart button on archives with button from single product pages.', 'woocommerce-jetpack' )
32
  . ' ' . __( 'Customize Add to Cart messages.', 'woocommerce-jetpack' );
@@ -37,10 +38,9 @@ class WCJ_Product_Add_To_Cart extends WCJ_Module {
37
 
38
  // Metaboxes
39
  if (
40
- 'yes' === get_option( 'wcj_add_to_cart_button_per_product_enabled', 'no' ) ||
41
  'yes' === get_option( 'wcj_add_to_cart_button_custom_loop_url_per_product_enabled', 'no' ) ||
42
  'yes' === get_option( 'wcj_add_to_cart_button_ajax_per_product_enabled', 'no' ) ||
43
- 'yes' === apply_filters( 'booster_get_option', 'no', get_option( 'wcj_add_to_cart_redirect_per_product_enabled', 'no' ) ) ||
44
  'per_product' === get_option( 'wcj_add_to_cart_on_visit_enabled', 'no' )
45
  ) {
46
  add_action( 'add_meta_boxes', array( $this, 'add_meta_box' ) );
@@ -49,14 +49,14 @@ class WCJ_Product_Add_To_Cart extends WCJ_Module {
49
 
50
  // Customize "Continue shopping" or "View cart" messages
51
  if (
52
- 'yes' === apply_filters( 'booster_get_option', 'no', get_option( 'wcj_product_add_to_cart_message_continue_shopping_enabled', 'no' ) ) ||
53
- 'yes' === apply_filters( 'booster_get_option', 'no', get_option( 'wcj_product_add_to_cart_message_view_cart_enabled', 'no' ) )
54
  ) {
55
  add_filter( 'wc_add_to_cart_message_html', array( $this, 'change_add_to_cart_message_html' ), PHP_INT_MAX, 2 );
56
  }
57
 
58
  // Local Redirect
59
- if ( 'yes' === get_option( 'wcj_add_to_cart_redirect_enabled', 'no' ) || 'yes' === apply_filters( 'booster_get_option', 'no', get_option( 'wcj_add_to_cart_redirect_per_product_enabled', 'no' ) ) ) {
60
  add_filter( 'woocommerce_add_to_cart_redirect', array( $this, 'maybe_redirect_to_url' ), PHP_INT_MAX );
61
  }
62
 
@@ -66,7 +66,7 @@ class WCJ_Product_Add_To_Cart extends WCJ_Module {
66
  }
67
 
68
  // Variable Add to Cart Template
69
- if ( 'yes' === apply_filters( 'booster_get_option', 'wcj', get_option( 'wcj_add_to_cart_variable_as_radio_enabled', 'no' ) ) ) {
70
  add_action( 'wp_enqueue_scripts', array( $this, 'enqueue_variable_add_to_cart_scripts' ) );
71
  add_filter( 'wc_get_template', array( $this, 'change_variable_add_to_cart_template' ), PHP_INT_MAX, 5 );
72
  }
@@ -87,20 +87,6 @@ class WCJ_Product_Add_To_Cart extends WCJ_Module {
87
  add_filter( 'woocommerce_is_sold_individually', '__return_true', PHP_INT_MAX );
88
  }
89
 
90
- // Button - Disabling - Archives
91
- if ( 'yes' === get_option( 'wcj_add_to_cart_button_disable_archives', 'no' ) ) {
92
- add_action( 'init', array( $this, 'add_to_cart_button_disable_archives' ), PHP_INT_MAX );
93
- }
94
- // Button - Disabling - Single Product
95
- if ( 'yes' === get_option( 'wcj_add_to_cart_button_disable_single', 'no' ) ) {
96
- add_action( 'init', array( $this, 'add_to_cart_button_disable_single' ), PHP_INT_MAX );
97
- }
98
- // Button per product - Disabling
99
- if ( 'yes' === get_option( 'wcj_add_to_cart_button_per_product_enabled', 'no' ) ) {
100
- add_action( 'woocommerce_before_add_to_cart_button', array( $this, 'add_to_cart_button_disable_start' ), PHP_INT_MAX, 0 );
101
- add_action( 'woocommerce_after_add_to_cart_button', array( $this, 'add_to_cart_button_disable_end' ), PHP_INT_MAX, 0 );
102
- add_filter( 'woocommerce_loop_add_to_cart_link', array( $this, 'add_to_cart_button_loop_disable' ), PHP_INT_MAX, 2 );
103
- }
104
  // Button per product Custom URL
105
  if ( 'yes' === get_option( 'wcj_add_to_cart_button_custom_loop_url_per_product_enabled', 'no' ) ) {
106
  add_filter( 'woocommerce_product_add_to_cart_url', array( $this, 'custom_add_to_cart_loop_url' ), PHP_INT_MAX, 2 );
@@ -118,9 +104,53 @@ class WCJ_Product_Add_To_Cart extends WCJ_Module {
118
  if ( 'yes' === get_option( 'wcj_add_to_cart_button_external_open_new_window_loop', 'no' ) ) {
119
  add_filter( 'woocommerce_loop_add_to_cart_link', array( $this, 'replace_external_with_custom_add_to_cart_in_loop' ), PHP_INT_MAX );
120
  }
 
 
 
 
 
 
 
 
 
 
 
 
121
  }
122
  }
123
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
124
  /**
125
  * change_add_to_cart_message_html.
126
  *
@@ -128,14 +158,14 @@ class WCJ_Product_Add_To_Cart extends WCJ_Module {
128
  * @since 2.8.0
129
  * @see `wc_add_to_cart_message()` in `wc-cart-functions.php`
130
  * @todo (maybe) product specific messages: foreach ( $products as $product_id => $qty ) ...
131
- * @todo (maybe) if ( IS_WCJ_VERSION_BELOW_3 ) apply_filters( 'wc_add_to_cart_message' ) with 2 params: $message, $product_id
132
  */
133
  function change_add_to_cart_message_html( $message, $products ) {
134
 
135
- if ( 'yes' === get_option( 'woocommerce_cart_redirect_after_add' ) && 'no' === apply_filters( 'booster_get_option', 'no', get_option( 'wcj_product_add_to_cart_message_continue_shopping_enabled', 'no' ) ) ) {
136
  return $message;
137
  }
138
- if ( 'yes' !== get_option( 'woocommerce_cart_redirect_after_add' ) && 'no' === apply_filters( 'booster_get_option', 'no', get_option( 'wcj_product_add_to_cart_message_view_cart_enabled', 'no' ) ) ) {
139
  return $message;
140
  }
141
 
@@ -160,26 +190,6 @@ class WCJ_Product_Add_To_Cart extends WCJ_Module {
160
  return $message;
161
  }
162
 
163
- /**
164
- * add_to_cart_button_disable_single.
165
- *
166
- * @version 2.6.0
167
- * @since 2.6.0
168
- */
169
- function add_to_cart_button_disable_single() {
170
- remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30 );
171
- }
172
-
173
- /**
174
- * add_to_cart_button_disable_archives.
175
- *
176
- * @version 2.6.0
177
- * @since 2.6.0
178
- */
179
- function add_to_cart_button_disable_archives() {
180
- remove_action( 'woocommerce_after_shop_loop_item', 'woocommerce_template_loop_add_to_cart', 10 );
181
- }
182
-
183
  /**
184
  * add_to_cart_variable_replace_loop_w_single.
185
  *
@@ -278,43 +288,6 @@ class WCJ_Product_Add_To_Cart extends WCJ_Module {
278
  return $url;
279
  }
280
 
281
- /**
282
- * add_to_cart_button_loop_disable.
283
- *
284
- * @version 2.5.2
285
- * @since 2.5.2
286
- */
287
- function add_to_cart_button_loop_disable( $link, $_product ) {
288
- if ( 0 != get_the_ID() && 'yes' === get_post_meta( get_the_ID(), '_' . 'wcj_add_to_cart_button_loop_disable', true ) ) {
289
- return '';
290
- }
291
- return $link;
292
- }
293
-
294
- /**
295
- * add_to_cart_button_disable_end.
296
- *
297
- * @version 2.5.2
298
- * @since 2.5.2
299
- */
300
- function add_to_cart_button_disable_end() {
301
- if ( 0 != get_the_ID() && 'yes' === get_post_meta( get_the_ID(), '_' . 'wcj_add_to_cart_button_disable', true ) ) {
302
- ob_end_clean();
303
- }
304
- }
305
-
306
- /**
307
- * add_to_cart_button_disable_start.
308
- *
309
- * @version 2.5.2
310
- * @since 2.5.2
311
- */
312
- function add_to_cart_button_disable_start() {
313
- if ( 0 != get_the_ID() && 'yes' === get_post_meta( get_the_ID(), '_' . 'wcj_add_to_cart_button_disable', true ) ) {
314
- ob_start();
315
- }
316
- }
317
-
318
  /**
319
  * enqueue_disable_quantity_add_to_cart_script.
320
  *
@@ -360,7 +333,7 @@ class WCJ_Product_Add_To_Cart extends WCJ_Module {
360
  * @version 2.9.0
361
  */
362
  function maybe_redirect_to_url( $url, $product_id = false ) {
363
- if ( 'yes' === apply_filters( 'booster_get_option', 'no', get_option( 'wcj_add_to_cart_redirect_per_product_enabled', 'no' ) ) && ( $product_id || isset( $_REQUEST['add-to-cart'] ) ) ) {
364
  if ( ! $product_id ) {
365
  $product_id = apply_filters( 'woocommerce_add_to_cart_product_id', absint( $_REQUEST['add-to-cart'] ) );
366
  }
@@ -415,7 +388,7 @@ class WCJ_Product_Add_To_Cart extends WCJ_Module {
415
  // Maybe perform add to cart redirect
416
  if ( false !== $was_added_to_cart && (
417
  'yes' === get_option( 'wcj_add_to_cart_redirect_enabled', 'no' ) ||
418
- 'yes' === apply_filters( 'booster_get_option', 'no', get_option( 'wcj_add_to_cart_redirect_per_product_enabled', 'no' ) )
419
  ) ) {
420
  if ( $redirect_url = $this->maybe_redirect_to_url( false, $product_id ) ) {
421
  if ( wp_safe_redirect( $redirect_url ) ) {
2
  /**
3
  * Booster for WooCommerce - Module - Product Add To Cart
4
  *
5
+ * @version 3.3.0
6
  * @since 2.2.0
7
  * @author Algoritmika Ltd.
8
  */
16
  /**
17
  * Constructor.
18
  *
19
+ * @version 3.3.0
20
+ * @todo (maybe) move "Display radio buttons instead of drop box for variable products" to new module
21
+ * @todo (maybe) rename to "Add to Cart Button (Options)"
22
  */
23
  function __construct() {
24
 
25
  $this->id = 'product_add_to_cart';
26
+ $this->short_desc = __( 'Add to Cart', 'woocommerce-jetpack' );
27
  $this->desc = __( 'Set any local url to redirect to on WooCommerce Add to Cart.', 'woocommerce-jetpack' )
28
  . ' ' . __( 'Automatically add to cart on product visit.', 'woocommerce-jetpack' )
29
  . ' ' . __( 'Display radio buttons instead of drop box for variable products.', 'woocommerce-jetpack' )
30
  . ' ' . __( 'Disable quantity input.', 'woocommerce-jetpack' )
 
31
  . ' ' . __( 'Open external products on add to cart in new window.', 'woocommerce-jetpack' )
32
  . ' ' . __( 'Replace Add to Cart button on archives with button from single product pages.', 'woocommerce-jetpack' )
33
  . ' ' . __( 'Customize Add to Cart messages.', 'woocommerce-jetpack' );
38
 
39
  // Metaboxes
40
  if (
 
41
  'yes' === get_option( 'wcj_add_to_cart_button_custom_loop_url_per_product_enabled', 'no' ) ||
42
  'yes' === get_option( 'wcj_add_to_cart_button_ajax_per_product_enabled', 'no' ) ||
43
+ 'yes' === apply_filters( 'booster_option', 'no', get_option( 'wcj_add_to_cart_redirect_per_product_enabled', 'no' ) ) ||
44
  'per_product' === get_option( 'wcj_add_to_cart_on_visit_enabled', 'no' )
45
  ) {
46
  add_action( 'add_meta_boxes', array( $this, 'add_meta_box' ) );
49
 
50
  // Customize "Continue shopping" or "View cart" messages
51
  if (
52
+ 'yes' === apply_filters( 'booster_option', 'no', get_option( 'wcj_product_add_to_cart_message_continue_shopping_enabled', 'no' ) ) ||
53
+ 'yes' === apply_filters( 'booster_option', 'no', get_option( 'wcj_product_add_to_cart_message_view_cart_enabled', 'no' ) )
54
  ) {
55
  add_filter( 'wc_add_to_cart_message_html', array( $this, 'change_add_to_cart_message_html' ), PHP_INT_MAX, 2 );
56
  }
57
 
58
  // Local Redirect
59
+ if ( 'yes' === get_option( 'wcj_add_to_cart_redirect_enabled', 'no' ) || 'yes' === apply_filters( 'booster_option', 'no', get_option( 'wcj_add_to_cart_redirect_per_product_enabled', 'no' ) ) ) {
60
  add_filter( 'woocommerce_add_to_cart_redirect', array( $this, 'maybe_redirect_to_url' ), PHP_INT_MAX );
61
  }
62
 
66
  }
67
 
68
  // Variable Add to Cart Template
69
+ if ( 'yes' === apply_filters( 'booster_option', 'wcj', get_option( 'wcj_add_to_cart_variable_as_radio_enabled', 'no' ) ) ) {
70
  add_action( 'wp_enqueue_scripts', array( $this, 'enqueue_variable_add_to_cart_scripts' ) );
71
  add_filter( 'wc_get_template', array( $this, 'change_variable_add_to_cart_template' ), PHP_INT_MAX, 5 );
72
  }
87
  add_filter( 'woocommerce_is_sold_individually', '__return_true', PHP_INT_MAX );
88
  }
89
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
90
  // Button per product Custom URL
91
  if ( 'yes' === get_option( 'wcj_add_to_cart_button_custom_loop_url_per_product_enabled', 'no' ) ) {
92
  add_filter( 'woocommerce_product_add_to_cart_url', array( $this, 'custom_add_to_cart_loop_url' ), PHP_INT_MAX, 2 );
104
  if ( 'yes' === get_option( 'wcj_add_to_cart_button_external_open_new_window_loop', 'no' ) ) {
105
  add_filter( 'woocommerce_loop_add_to_cart_link', array( $this, 'replace_external_with_custom_add_to_cart_in_loop' ), PHP_INT_MAX );
106
  }
107
+
108
+ // Reposition Add to Cart button
109
+ if ( 'yes' === get_option( 'wcj_product_add_to_cart_button_position_enabled', 'no' ) ) {
110
+ // Single product pages
111
+ if ( 'yes' === get_option( 'wcj_product_add_to_cart_button_position_single_enabled', 'no' ) ) {
112
+ add_action( 'init', array( $this, 'reposition_add_to_cart_button_single' ), PHP_INT_MAX );
113
+ }
114
+ // Archives
115
+ if ( 'yes' === get_option( 'wcj_product_add_to_cart_button_position_loop_enabled', 'no' ) ) {
116
+ add_action( 'init', array( $this, 'reposition_add_to_cart_button_loop' ), PHP_INT_MAX );
117
+ }
118
+ }
119
  }
120
  }
121
 
122
+ /**
123
+ * reposition_add_to_cart_button_loop.
124
+ *
125
+ * @version 3.3.0
126
+ * @since 3.3.0
127
+ * @todo (maybe) add option to duplicate the button (i.e. not replace)
128
+ */
129
+ function reposition_add_to_cart_button_loop() {
130
+ remove_action( 'woocommerce_after_shop_loop_item', 'woocommerce_template_loop_add_to_cart', 10 );
131
+ add_action(
132
+ get_option( 'wcj_product_add_to_cart_button_position_hook_loop', 'woocommerce_after_shop_loop_item' ),
133
+ 'woocommerce_template_loop_add_to_cart',
134
+ get_option( 'wcj_product_add_to_cart_button_position_loop', 10 )
135
+ );
136
+ }
137
+
138
+ /**
139
+ * reposition_add_to_cart_button_single.
140
+ *
141
+ * @version 3.3.0
142
+ * @since 3.3.0
143
+ * @todo (maybe) add option to duplicate the button (i.e. not replace)
144
+ */
145
+ function reposition_add_to_cart_button_single() {
146
+ remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30 );
147
+ add_action(
148
+ get_option( 'wcj_product_add_to_cart_button_position_hook_single', 'woocommerce_single_product_summary' ),
149
+ 'woocommerce_template_single_add_to_cart',
150
+ get_option( 'wcj_product_add_to_cart_button_position_single', 30 )
151
+ );
152
+ }
153
+
154
  /**
155
  * change_add_to_cart_message_html.
156
  *
158
  * @since 2.8.0
159
  * @see `wc_add_to_cart_message()` in `wc-cart-functions.php`
160
  * @todo (maybe) product specific messages: foreach ( $products as $product_id => $qty ) ...
161
+ * @todo (maybe) if ( WCJ_IS_WC_VERSION_BELOW_3 ) apply_filters( 'wc_add_to_cart_message' ) with 2 params: $message, $product_id
162
  */
163
  function change_add_to_cart_message_html( $message, $products ) {
164
 
165
+ if ( 'yes' === get_option( 'woocommerce_cart_redirect_after_add' ) && 'no' === apply_filters( 'booster_option', 'no', get_option( 'wcj_product_add_to_cart_message_continue_shopping_enabled', 'no' ) ) ) {
166
  return $message;
167
  }
168
+ if ( 'yes' !== get_option( 'woocommerce_cart_redirect_after_add' ) && 'no' === apply_filters( 'booster_option', 'no', get_option( 'wcj_product_add_to_cart_message_view_cart_enabled', 'no' ) ) ) {
169
  return $message;
170
  }
171
 
190
  return $message;
191
  }
192
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
193
  /**
194
  * add_to_cart_variable_replace_loop_w_single.
195
  *
288
  return $url;
289
  }
290
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
291
  /**
292
  * enqueue_disable_quantity_add_to_cart_script.
293
  *
333
  * @version 2.9.0
334
  */
335
  function maybe_redirect_to_url( $url, $product_id = false ) {
336
+ if ( 'yes' === apply_filters( 'booster_option', 'no', get_option( 'wcj_add_to_cart_redirect_per_product_enabled', 'no' ) ) && ( $product_id || isset( $_REQUEST['add-to-cart'] ) ) ) {
337
  if ( ! $product_id ) {
338
  $product_id = apply_filters( 'woocommerce_add_to_cart_product_id', absint( $_REQUEST['add-to-cart'] ) );
339
  }
388
  // Maybe perform add to cart redirect
389
  if ( false !== $was_added_to_cart && (
390
  'yes' === get_option( 'wcj_add_to_cart_redirect_enabled', 'no' ) ||
391
+ 'yes' === apply_filters( 'booster_option', 'no', get_option( 'wcj_add_to_cart_redirect_per_product_enabled', 'no' ) )
392
  ) ) {
393
  if ( $redirect_url = $this->maybe_redirect_to_url( false, $product_id ) ) {
394
  if ( wp_safe_redirect( $redirect_url ) ) {
includes/class-wcj-product-addons.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Module - Product Addons
4
  *
5
- * @version 3.2.4
6
  * @since 2.5.3
7
  * @author Algoritmika Ltd.
8
  * @todo admin order view (names);
@@ -17,7 +17,7 @@ class WCJ_Product_Addons extends WCJ_Module {
17
  /**
18
  * Constructor.
19
  *
20
- * @version 3.2.4
21
  * @since 2.5.3
22
  * @todo (maybe) add "in progress" ajax message
23
  * @todo (maybe) for variable products - show addons only if variation is selected (e.g. move to addons from `woocommerce_before_add_to_cart_button` to variation description)
@@ -66,6 +66,68 @@ class WCJ_Product_Addons extends WCJ_Module {
66
  add_filter( 'woocommerce_hidden_order_itemmeta', array( $this, 'hide_addons_in_admin_order' ), PHP_INT_MAX );
67
  }
68
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
69
  }
70
  }
71
 
@@ -214,7 +276,7 @@ class WCJ_Product_Addons extends WCJ_Module {
214
  /**
215
  * get_product_addons.
216
  *
217
- * @version 3.0.0
218
  * @since 2.5.3
219
  * @todo (maybe) `checkbox_key` is mislabelled, should be `key` (or maybe `value_key`)
220
  */
@@ -222,12 +284,15 @@ class WCJ_Product_Addons extends WCJ_Module {
222
  $addons = array();
223
  // All Products
224
  if ( 'yes' === get_option( 'wcj_product_addons_all_products_enabled', 'no' ) ) {
225
- $total_number = apply_filters( 'booster_get_option', 1, get_option( 'wcj_product_addons_all_products_total_number', 1 ) );
226
  for ( $i = 1; $i <= $total_number; $i++ ) {
227
  if ( 'yes' === get_option( 'wcj_product_addons_all_products_enabled_' . $i, 'yes' ) ) {
228
  if ( ! $this->is_global_addon_visible( $i, $product_id ) ) {
229
  continue;
230
  }
 
 
 
231
  $addons[] = array(
232
  // 'scope' => 'all_products',
233
  // 'index' => $i,
@@ -242,6 +307,7 @@ class WCJ_Product_Addons extends WCJ_Module {
242
  'type' => get_option( 'wcj_product_addons_all_products_type_' . $i, 'checkbox' ),
243
  'default' => get_option( 'wcj_product_addons_all_products_default_' . $i, '' ),
244
  'is_required' => get_option( 'wcj_product_addons_all_products_required_' . $i, 'no' ),
 
245
  );
246
  }
247
  }
@@ -252,6 +318,9 @@ class WCJ_Product_Addons extends WCJ_Module {
252
  $total_number = get_post_meta( $product_id, '_' . 'wcj_product_addons_per_product_total_number', true );
253
  for ( $i = 1; $i <= $total_number; $i++ ) {
254
  if ( 'yes' === get_post_meta( $product_id, '_' . 'wcj_product_addons_per_product_enabled_' . $i, true ) ) {
 
 
 
255
  $addons[] = array(
256
  // 'scope' => 'per_product',
257
  // 'index' => $i,
@@ -266,6 +335,7 @@ class WCJ_Product_Addons extends WCJ_Module {
266
  'type' => get_post_meta( $product_id, '_' . 'wcj_product_addons_per_product_type_' . $i, true ),
267
  'default' => get_post_meta( $product_id, '_' . 'wcj_product_addons_per_product_default_' . $i, true ),
268
  'is_required' => get_post_meta( $product_id, '_' . 'wcj_product_addons_per_product_required_' . $i, true ),
 
269
  );
270
  }
271
  }
2
  /**
3
  * Booster for WooCommerce - Module - Product Addons
4
  *
5
+ * @version 3.3.0
6
  * @since 2.5.3
7
  * @author Algoritmika Ltd.
8
  * @todo admin order view (names);
17
  /**
18
  * Constructor.
19
  *
20
+ * @version 3.3.0
21
  * @since 2.5.3
22
  * @todo (maybe) add "in progress" ajax message
23
  * @todo (maybe) for variable products - show addons only if variation is selected (e.g. move to addons from `woocommerce_before_add_to_cart_button` to variation description)
66
  add_filter( 'woocommerce_hidden_order_itemmeta', array( $this, 'hide_addons_in_admin_order' ), PHP_INT_MAX );
67
  }
68
  }
69
+ // Addons quantity
70
+ $qty_triggers = get_option( 'wcj_product_addons_qty_decrease_triggers', '' );
71
+ if ( ! empty( $qty_triggers ) ) {
72
+ if ( in_array( 'woocommerce_new_order', $qty_triggers ) ) {
73
+ $qty_triggers = array_merge( $qty_triggers, array(
74
+ 'woocommerce_api_create_order',
75
+ 'woocommerce_cli_create_order',
76
+ 'kco_before_confirm_order',
77
+ 'woocommerce_checkout_order_processed',
78
+ ) );
79
+ }
80
+ foreach ( $qty_triggers as $qty_trigger ) {
81
+ add_action( $qty_trigger, array( $this, 'maybe_reduce_addons_qty' ) );
82
+ }
83
+ }
84
+ }
85
+ }
86
+
87
+ /**
88
+ * maybe_reduce_addons_qty.
89
+ *
90
+ * @version 3.3.0
91
+ * @since 3.3.0
92
+ * @todo (maybe) $order->add_order_note
93
+ */
94
+ function maybe_reduce_addons_qty( $order_id ) {
95
+ if ( $order = wc_get_order( $order_id ) ) {
96
+ if ( 'yes' !== get_post_meta( $order_id, '_' . 'wcj_product_addons_qty_reduced', true ) ) {
97
+ if ( sizeof( $order->get_items() ) > 0 ) {
98
+ foreach ( $order->get_items() as $item ) {
99
+ if ( $item->is_type( 'line_item' ) && ( $product = $item->get_product() ) ) {
100
+ $product_id = wcj_get_product_id_or_variation_parent_id( $product );
101
+ $product_qty = $item->get_quantity();
102
+ $global_addon_key = '_wcj_product_all_products_addons_label_';
103
+ $global_addon_key_length = strlen( $global_addon_key );
104
+ $local_addon_key = '_wcj_product_per_product_addons_label_';
105
+ $local_addon_key_length = strlen( $local_addon_key );
106
+ foreach ( $item->get_meta_data() as $meta_data ) {
107
+ $meta = $meta_data->get_data();
108
+ if ( $global_addon_key === substr( $meta['key'], 0, $global_addon_key_length ) ) {
109
+ $i = substr( $meta['key'], $global_addon_key_length );
110
+ $qty_key = 'wcj_product_addons_all_products_qty_' . $i;
111
+ $old_qty = get_option( $qty_key, '' );
112
+ if ( '' !== $old_qty ) {
113
+ $new_qty = $old_qty - $product_qty;
114
+ update_option( $qty_key, $new_qty );
115
+ }
116
+ } elseif ( $local_addon_key === substr( $meta['key'], 0, $local_addon_key_length ) ) {
117
+ $i = substr( $meta['key'], $local_addon_key_length );
118
+ $qty_key = '_' . 'wcj_product_addons_per_product_qty_' . $i;
119
+ $old_qty = get_post_meta( $product_id, $qty_key, true );
120
+ if ( '' !== $old_qty ) {
121
+ $new_qty = $old_qty - $product_qty;
122
+ update_post_meta( $product_id, $qty_key, $new_qty );
123
+ }
124
+ }
125
+ }
126
+ }
127
+ }
128
+ update_post_meta( $order_id, '_' . 'wcj_product_addons_qty_reduced', 'yes' );
129
+ }
130
+ }
131
  }
132
  }
133
 
276
  /**
277
  * get_product_addons.
278
  *
279
+ * @version 3.3.0
280
  * @since 2.5.3
281
  * @todo (maybe) `checkbox_key` is mislabelled, should be `key` (or maybe `value_key`)
282
  */
284
  $addons = array();
285
  // All Products
286
  if ( 'yes' === get_option( 'wcj_product_addons_all_products_enabled', 'no' ) ) {
287
+ $total_number = apply_filters( 'booster_option', 1, get_option( 'wcj_product_addons_all_products_total_number', 1 ) );
288
  for ( $i = 1; $i <= $total_number; $i++ ) {
289
  if ( 'yes' === get_option( 'wcj_product_addons_all_products_enabled_' . $i, 'yes' ) ) {
290
  if ( ! $this->is_global_addon_visible( $i, $product_id ) ) {
291
  continue;
292
  }
293
+ if ( '0' === ( $qty = get_option( 'wcj_product_addons_all_products_qty_' . $i, '' ) ) || $qty < 0 ) {
294
+ continue;
295
+ }
296
  $addons[] = array(
297
  // 'scope' => 'all_products',
298
  // 'index' => $i,
307
  'type' => get_option( 'wcj_product_addons_all_products_type_' . $i, 'checkbox' ),
308
  'default' => get_option( 'wcj_product_addons_all_products_default_' . $i, '' ),
309
  'is_required' => get_option( 'wcj_product_addons_all_products_required_' . $i, 'no' ),
310
+ 'qty' => $qty,
311
  );
312
  }
313
  }
318
  $total_number = get_post_meta( $product_id, '_' . 'wcj_product_addons_per_product_total_number', true );
319
  for ( $i = 1; $i <= $total_number; $i++ ) {
320
  if ( 'yes' === get_post_meta( $product_id, '_' . 'wcj_product_addons_per_product_enabled_' . $i, true ) ) {
321
+ if ( '0' === ( $qty = get_post_meta( $product_id, '_' . 'wcj_product_addons_per_product_qty_' . $i, true ) ) || $qty < 0 ) {
322
+ continue;
323
+ }
324
  $addons[] = array(
325
  // 'scope' => 'per_product',
326
  // 'index' => $i,
335
  'type' => get_post_meta( $product_id, '_' . 'wcj_product_addons_per_product_type_' . $i, true ),
336
  'default' => get_post_meta( $product_id, '_' . 'wcj_product_addons_per_product_default_' . $i, true ),
337
  'is_required' => get_post_meta( $product_id, '_' . 'wcj_product_addons_per_product_required_' . $i, true ),
338
+ 'qty' => $qty,
339
  );
340
  }
341
  }
includes/class-wcj-product-bookings.php CHANGED
@@ -343,7 +343,7 @@ class WCJ_Product_Bookings extends WCJ_Module {
343
  * @since 2.5.0
344
  */
345
  function save_meta_box_value( $option_value, $option_name, $module_id ) {
346
- if ( true === apply_filters( 'booster_get_option', false, true ) ) {
347
  return $option_value;
348
  }
349
  if ( 'no' === $option_value ) {
343
  * @since 2.5.0
344
  */
345
  function save_meta_box_value( $option_value, $option_name, $module_id ) {
346
+ if ( true === apply_filters( 'booster_option', false, true ) ) {
347
  return $option_value;
348
  }
349
  if ( 'no' === $option_value ) {
includes/class-wcj-product-bulk-meta-editor.php CHANGED
@@ -55,7 +55,7 @@ class WCJ_Product_Bulk_Meta_Editor extends WCJ_Module {
55
  // Actions
56
  $result = $this->perform_actions();
57
  // Preparing products data
58
- $_products = wcj_get_products( array(), 'any', 512, ( 'yes' === apply_filters( 'booster_get_option', 'no', get_option( 'wcj_product_bulk_meta_editor_add_variations', 'no' ) ) ) );
59
  $selected_products = isset( $_POST['wcj_product_bulk_meta_editor_products'] ) ? $_POST['wcj_product_bulk_meta_editor_products'] : array();
60
  // Output
61
  echo $this->get_tool_html( $result['meta_name'], $result['result_message'], $_products, $selected_products, $result['set_meta'] );
55
  // Actions
56
  $result = $this->perform_actions();
57
  // Preparing products data
58
+ $_products = wcj_get_products( array(), 'any', 512, ( 'yes' === apply_filters( 'booster_option', 'no', get_option( 'wcj_product_bulk_meta_editor_add_variations', 'no' ) ) ) );
59
  $selected_products = isset( $_POST['wcj_product_bulk_meta_editor_products'] ) ? $_POST['wcj_product_bulk_meta_editor_products'] : array();
60
  // Output
61
  echo $this->get_tool_html( $result['meta_name'], $result['result_message'], $_products, $selected_products, $result['set_meta'] );
includes/class-wcj-product-bulk-price-converter.php CHANGED
@@ -45,7 +45,7 @@ class WCJ_Bulk_Price_Converter extends WCJ_Module {
45
  if ( '' != $the_price && 0 != $the_price ) {
46
  $precision = get_option( 'woocommerce_price_num_decimals', 2 );
47
  $the_modified_price = round( $the_price * $multiply_price_by, $precision );
48
- if ( isset( $_POST['make_pretty_prices_threshold'] ) && apply_filters( 'booster_get_option', 0, $_POST['make_pretty_prices_threshold'] ) > 0 ) {
49
  $the_modified_price = $this->make_pretty_price( $the_modified_price );
50
  }
51
  if ( $the_modified_price < 0 ) {
@@ -163,7 +163,7 @@ class WCJ_Bulk_Price_Converter extends WCJ_Module {
163
  // 'orderby' => 'date',
164
  // 'order' => 'ASC',
165
  );
166
- if ( isset( $_POST['wcj_product_cat'] ) && 'wcj_any' != $_POST['wcj_product_cat'] && 'any' != apply_filters( 'booster_get_option', 'any', '' ) ) {
167
  $args['tax_query'] = array(
168
  array(
169
  'taxonomy' => 'product_cat',
@@ -256,22 +256,22 @@ class WCJ_Bulk_Price_Converter extends WCJ_Module {
256
  if ( '' != $select_options_html ) {
257
  $data_table[] = array(
258
  __( 'Products category', 'woocommerce-jetpack' ),
259
- '<select name="wcj_product_cat" ' . apply_filters( 'booster_get_option', 'disabled', '' ) . '>' .
260
  '<option value="wcj_any">' . __( 'Any', 'woocommerce-jetpack' ) . '</option>' .
261
  $select_options_html .
262
  '<option value="wcj_none"' . selected( 'wcj_none', $selected_option, false ) . '>' . __( 'None', 'woocommerce-jetpack' ) . '</option>' .
263
  '</select>',
264
- apply_filters( 'booster_get_message', '', 'desc' ),
265
  );
266
  }
267
  $make_pretty_prices_threshold = isset( $_POST['make_pretty_prices_threshold'] ) ? $_POST['make_pretty_prices_threshold'] : 0;
268
  $data_table[] = array(
269
  __( '"Pretty prices" threshold', 'woocommerce-jetpack' ),
270
  '<input class="" type="number" step="0.000001" min="0" name="make_pretty_prices_threshold" id="make_pretty_prices_threshold" value="' .
271
- $make_pretty_prices_threshold . '"' . apply_filters( 'booster_get_option', 'disabled', '' ) . '>',
272
- ( '' == apply_filters( 'booster_get_message', '', 'desc' ) ) ?
273
  '<em>' . __( 'Leave zero to disable', 'woocommerce-jetpack' ) . '</em>' :
274
- apply_filters( 'booster_get_message', '', 'desc' ),
275
  );
276
  $data_table[] = array(
277
  '<input class="button-primary" type="submit" name="bulk_change_prices_preview" id="bulk_change_prices_preview" value="' .
45
  if ( '' != $the_price && 0 != $the_price ) {
46
  $precision = get_option( 'woocommerce_price_num_decimals', 2 );
47
  $the_modified_price = round( $the_price * $multiply_price_by, $precision );
48
+ if ( isset( $_POST['make_pretty_prices_threshold'] ) && apply_filters( 'booster_option', 0, $_POST['make_pretty_prices_threshold'] ) > 0 ) {
49
  $the_modified_price = $this->make_pretty_price( $the_modified_price );
50
  }
51
  if ( $the_modified_price < 0 ) {
163
  // 'orderby' => 'date',
164
  // 'order' => 'ASC',
165
  );
166
+ if ( isset( $_POST['wcj_product_cat'] ) && 'wcj_any' != $_POST['wcj_product_cat'] && 'any' != apply_filters( 'booster_option', 'any', '' ) ) {
167
  $args['tax_query'] = array(
168
  array(
169
  'taxonomy' => 'product_cat',
256
  if ( '' != $select_options_html ) {
257
  $data_table[] = array(
258
  __( 'Products category', 'woocommerce-jetpack' ),
259
+ '<select name="wcj_product_cat" ' . apply_filters( 'booster_option', 'disabled', '' ) . '>' .
260
  '<option value="wcj_any">' . __( 'Any', 'woocommerce-jetpack' ) . '</option>' .
261
  $select_options_html .
262
  '<option value="wcj_none"' . selected( 'wcj_none', $selected_option, false ) . '>' . __( 'None', 'woocommerce-jetpack' ) . '</option>' .
263
  '</select>',
264
+ apply_filters( 'booster_message', '', 'desc' ),
265
  );
266
  }
267
  $make_pretty_prices_threshold = isset( $_POST['make_pretty_prices_threshold'] ) ? $_POST['make_pretty_prices_threshold'] : 0;
268
  $data_table[] = array(
269
  __( '"Pretty prices" threshold', 'woocommerce-jetpack' ),
270
  '<input class="" type="number" step="0.000001" min="0" name="make_pretty_prices_threshold" id="make_pretty_prices_threshold" value="' .
271
+ $make_pretty_prices_threshold . '"' . apply_filters( 'booster_option', 'disabled', '' ) . '>',
272
+ ( '' == apply_filters( 'booster_message', '', 'desc' ) ) ?
273
  '<em>' . __( 'Leave zero to disable', 'woocommerce-jetpack' ) . '</em>' :
274
+ apply_filters( 'booster_message', '', 'desc' ),
275
  );
276
  $data_table[] = array(
277
  '<input class="button-primary" type="submit" name="bulk_change_prices_preview" id="bulk_change_prices_preview" value="' .
includes/class-wcj-product-by-country.php CHANGED
@@ -43,7 +43,7 @@ class WCJ_Product_By_Country extends WCJ_Module {
43
  if ( 'yes' === get_option( 'wcj_product_by_country_query', 'no' ) ) {
44
  add_action( 'pre_get_posts', array( $this, 'product_by_country_pre_get_posts' ) );
45
  }
46
- if ( 'manual' === apply_filters( 'booster_get_option', 'by_ip', get_option( 'wcj_product_by_country_selection_method', 'by_ip' ) ) ) {
47
  add_action( 'init', array( $this, 'save_country_in_session' ), PHP_INT_MAX ) ;
48
  }
49
  }
@@ -75,14 +75,14 @@ class WCJ_Product_By_Country extends WCJ_Module {
75
  function render_product_column( $column ) {
76
  if ( 'wcj_product_by_country_visible_countries' === $column ) {
77
  $result = '';
78
- if ( 'invisible' != apply_filters( 'booster_get_option', 'visible', get_option( 'wcj_product_by_country_visibility_method', 'visible' ) ) ) {
79
  if ( $countries = get_post_meta( get_the_ID(), '_' . 'wcj_product_by_country_visible', true ) ) {
80
  if ( is_array( $countries ) ) {
81
  $result .= '<span style="color:green;">' . implode( ', ', $countries ) . '</span>';
82
  }
83
  }
84
  }
85
- if ( 'visible' != apply_filters( 'booster_get_option', 'visible', get_option( 'wcj_product_by_country_visibility_method', 'visible' ) ) ) {
86
  if ( $countries = get_post_meta( get_the_ID(), '_' . 'wcj_product_by_country_invisible', true ) ) {
87
  if ( is_array( $countries ) ) {
88
  if ( '' != $result ) {
@@ -148,7 +148,7 @@ class WCJ_Product_By_Country extends WCJ_Module {
148
  * @since 3.1.0
149
  */
150
  function is_product_visible_in_country( $product_id, $country ) {
151
- if ( 'invisible' != apply_filters( 'booster_get_option', 'visible', get_option( 'wcj_product_by_country_visibility_method', 'visible' ) ) ) {
152
  $countries = get_post_meta( $product_id, '_' . 'wcj_product_by_country_visible', true );
153
  if ( ! empty( $countries ) && is_array( $countries ) ) {
154
  if ( in_array( 'EU', $countries ) ) {
@@ -159,7 +159,7 @@ class WCJ_Product_By_Country extends WCJ_Module {
159
  }
160
  }
161
  }
162
- if ( 'visible' != apply_filters( 'booster_get_option', 'visible', get_option( 'wcj_product_by_country_visibility_method', 'visible' ) ) ) {
163
  $countries = get_post_meta( $product_id, '_' . 'wcj_product_by_country_invisible', true );
164
  if ( ! empty( $countries ) && is_array( $countries ) ) {
165
  if ( in_array( 'EU', $countries ) ) {
@@ -193,7 +193,7 @@ class WCJ_Product_By_Country extends WCJ_Module {
193
  * @since 3.1.0
194
  */
195
  function get_country() {
196
- if ( 'manual' === apply_filters( 'booster_get_option', 'by_ip', get_option( 'wcj_product_by_country_selection_method', 'by_ip' ) ) ) {
197
  if ( '' == wcj_session_get( 'wcj_selected_country' ) ) {
198
  $country = wcj_get_country_by_ip();
199
  wcj_session_set( 'wcj_selected_country', $country );
43
  if ( 'yes' === get_option( 'wcj_product_by_country_query', 'no' ) ) {
44
  add_action( 'pre_get_posts', array( $this, 'product_by_country_pre_get_posts' ) );
45
  }
46
+ if ( 'manual' === apply_filters( 'booster_option', 'by_ip', get_option( 'wcj_product_by_country_selection_method', 'by_ip' ) ) ) {
47
  add_action( 'init', array( $this, 'save_country_in_session' ), PHP_INT_MAX ) ;
48
  }
49
  }
75
  function render_product_column( $column ) {
76
  if ( 'wcj_product_by_country_visible_countries' === $column ) {
77
  $result = '';
78
+ if ( 'invisible' != apply_filters( 'booster_option', 'visible', get_option( 'wcj_product_by_country_visibility_method', 'visible' ) ) ) {
79
  if ( $countries = get_post_meta( get_the_ID(), '_' . 'wcj_product_by_country_visible', true ) ) {
80
  if ( is_array( $countries ) ) {
81
  $result .= '<span style="color:green;">' . implode( ', ', $countries ) . '</span>';
82
  }
83
  }
84
  }
85
+ if ( 'visible' != apply_filters( 'booster_option', 'visible', get_option( 'wcj_product_by_country_visibility_method', 'visible' ) ) ) {
86
  if ( $countries = get_post_meta( get_the_ID(), '_' . 'wcj_product_by_country_invisible', true ) ) {
87
  if ( is_array( $countries ) ) {
88
  if ( '' != $result ) {
148
  * @since 3.1.0
149
  */
150
  function is_product_visible_in_country( $product_id, $country ) {
151
+ if ( 'invisible' != apply_filters( 'booster_option', 'visible', get_option( 'wcj_product_by_country_visibility_method', 'visible' ) ) ) {
152
  $countries = get_post_meta( $product_id, '_' . 'wcj_product_by_country_visible', true );
153
  if ( ! empty( $countries ) && is_array( $countries ) ) {
154
  if ( in_array( 'EU', $countries ) ) {
159
  }
160
  }
161
  }
162
+ if ( 'visible' != apply_filters( 'booster_option', 'visible', get_option( 'wcj_product_by_country_visibility_method', 'visible' ) ) ) {
163
  $countries = get_post_meta( $product_id, '_' . 'wcj_product_by_country_invisible', true );
164
  if ( ! empty( $countries ) && is_array( $countries ) ) {
165
  if ( in_array( 'EU', $countries ) ) {
193
  * @since 3.1.0
194
  */
195
  function get_country() {
196
+ if ( 'manual' === apply_filters( 'booster_option', 'by_ip', get_option( 'wcj_product_by_country_selection_method', 'by_ip' ) ) ) {
197
  if ( '' == wcj_session_get( 'wcj_selected_country' ) ) {
198
  $country = wcj_get_country_by_ip();
199
  wcj_session_set( 'wcj_selected_country', $country );
includes/class-wcj-product-by-date.php CHANGED
@@ -92,10 +92,10 @@ class WCJ_Product_By_Date extends WCJ_Module {
92
  '%product_title%' => $_product->get_title(),
93
  );
94
  $message = ( ( '-' === $_date ) ?
95
- apply_filters( 'booster_get_option', __( '<p style="color:red;">%product_title% is not available this month.</p>', 'woocommerce-jetpack' ),
96
  get_option( 'wcj_product_by_date_unavailable_message_month_off',
97
  __( '<p style="color:red;">%product_title% is not available this month.</p>', 'woocommerce-jetpack' ) ) ) :
98
- apply_filters( 'booster_get_option', __( '<p style="color:red;">%product_title% is available only on %date_this_month% this month.</p>', 'woocommerce-jetpack' ),
99
  get_option( 'wcj_product_by_date_unavailable_message',
100
  __( '<p style="color:red;">%product_title% is available only on %date_this_month% this month.</p>', 'woocommerce-jetpack' ) ) )
101
  );
92
  '%product_title%' => $_product->get_title(),
93
  );
94
  $message = ( ( '-' === $_date ) ?
95
+ apply_filters( 'booster_option', __( '<p style="color:red;">%product_title% is not available this month.</p>', 'woocommerce-jetpack' ),
96
  get_option( 'wcj_product_by_date_unavailable_message_month_off',
97
  __( '<p style="color:red;">%product_title% is not available this month.</p>', 'woocommerce-jetpack' ) ) ) :
98
+ apply_filters( 'booster_option', __( '<p style="color:red;">%product_title% is available only on %date_this_month% this month.</p>', 'woocommerce-jetpack' ),
99
  get_option( 'wcj_product_by_date_unavailable_message',
100
  __( '<p style="color:red;">%product_title% is available only on %date_this_month% this month.</p>', 'woocommerce-jetpack' ) ) )
101
  );
includes/class-wcj-product-by-time.php CHANGED
@@ -88,10 +88,10 @@ class WCJ_Product_By_Time extends WCJ_Module {
88
  '%product_title%' => $_product->get_title(),
89
  );
90
  $message = ( ( '-' === $_time ) ?
91
- apply_filters( 'booster_get_option', __( '<p style="color:red;">%product_title% is not available today.</p>', 'woocommerce-jetpack' ),
92
  get_option( 'wcj_product_by_time_unavailable_message_day_off',
93
  __( '<p style="color:red;">%product_title% is not available today.</p>', 'woocommerce-jetpack' ) ) ) :
94
- apply_filters( 'booster_get_option', __( '<p style="color:red;">%product_title% is available only at %time_today% today.</p>', 'woocommerce-jetpack' ),
95
  get_option( 'wcj_product_by_time_unavailable_message',
96
  __( '<p style="color:red;">%product_title% is available only at %time_today% today.</p>', 'woocommerce-jetpack' ) ) )
97
  );
88
  '%product_title%' => $_product->get_title(),
89
  );
90
  $message = ( ( '-' === $_time ) ?
91
+ apply_filters( 'booster_option', __( '<p style="color:red;">%product_title% is not available today.</p>', 'woocommerce-jetpack' ),
92
  get_option( 'wcj_product_by_time_unavailable_message_day_off',
93
  __( '<p style="color:red;">%product_title% is not available today.</p>', 'woocommerce-jetpack' ) ) ) :
94
+ apply_filters( 'booster_option', __( '<p style="color:red;">%product_title% is available only at %time_today% today.</p>', 'woocommerce-jetpack' ),
95
  get_option( 'wcj_product_by_time_unavailable_message',
96
  __( '<p style="color:red;">%product_title% is available only at %time_today% today.</p>', 'woocommerce-jetpack' ) ) )
97
  );
includes/class-wcj-product-custom-info.php CHANGED
@@ -30,7 +30,7 @@ class WCJ_Product_Custom_info extends WCJ_Module {
30
  $single_or_archive_array = array( 'single', 'archive' );
31
  foreach ( $single_or_archive_array as $single_or_archive ) {
32
  $default_hook = ( 'single' === $single_or_archive ) ? 'woocommerce_after_single_product_summary' : 'woocommerce_after_shop_loop_item_title';
33
- for ( $i = 1; $i <= apply_filters( 'booster_get_option', 1, get_option( 'wcj_product_custom_info_total_number_' . $single_or_archive, 1 ) ); $i++ ) {
34
  add_action(
35
  get_option( 'wcj_product_custom_info_hook_' . $single_or_archive . '_' . $i, $default_hook ),
36
  array( $this, 'add_product_custom_info' ),
@@ -103,7 +103,7 @@ class WCJ_Product_Custom_info extends WCJ_Module {
103
  $single_or_archive_array = array( 'single', 'archive' );
104
  foreach ( $single_or_archive_array as $single_or_archive ) {
105
  $default_hook = ( 'single' === $single_or_archive ) ? 'woocommerce_after_single_product_summary' : 'woocommerce_after_shop_loop_item_title';
106
- for ( $i = 1; $i <= apply_filters( 'booster_get_option', 1, get_option( 'wcj_product_custom_info_total_number_' . $single_or_archive, 1 ) ); $i++ ) {
107
  if ( $this->is_visible( $product_id, $current_filter, $current_filter_priority, $default_hook, $single_or_archive, $i ) ) {
108
  echo do_shortcode( get_option( 'wcj_product_custom_info_content_' . $single_or_archive . '_' . $i ) );
109
  }
30
  $single_or_archive_array = array( 'single', 'archive' );
31
  foreach ( $single_or_archive_array as $single_or_archive ) {
32
  $default_hook = ( 'single' === $single_or_archive ) ? 'woocommerce_after_single_product_summary' : 'woocommerce_after_shop_loop_item_title';
33
+ for ( $i = 1; $i <= apply_filters( 'booster_option', 1, get_option( 'wcj_product_custom_info_total_number_' . $single_or_archive, 1 ) ); $i++ ) {
34
  add_action(
35
  get_option( 'wcj_product_custom_info_hook_' . $single_or_archive . '_' . $i, $default_hook ),
36
  array( $this, 'add_product_custom_info' ),
103
  $single_or_archive_array = array( 'single', 'archive' );
104
  foreach ( $single_or_archive_array as $single_or_archive ) {
105
  $default_hook = ( 'single' === $single_or_archive ) ? 'woocommerce_after_single_product_summary' : 'woocommerce_after_shop_loop_item_title';
106
+ for ( $i = 1; $i <= apply_filters( 'booster_option', 1, get_option( 'wcj_product_custom_info_total_number_' . $single_or_archive, 1 ) ); $i++ ) {
107
  if ( $this->is_visible( $product_id, $current_filter, $current_filter_priority, $default_hook, $single_or_archive, $i ) ) {
108
  echo do_shortcode( get_option( 'wcj_product_custom_info_content_' . $single_or_archive . '_' . $i ) );
109
  }
includes/class-wcj-product-info.php CHANGED
@@ -194,7 +194,7 @@ class WCJ_Product_Info extends WCJ_Module {
194
  */
195
  function add_more_product_info( $single_or_archive ) {
196
  //$single_or_archive = 'archive';
197
- for ( $i = 1; $i <= apply_filters( 'booster_get_option', 4, get_option( 'wcj_more_product_info_on_' . $single_or_archive . '_fields_total', 4 ) ); $i++ ) {
198
  $field_id = 'wcj_more_product_info_on_' . $single_or_archive . '_' . $i ;
199
  $the_product_info = get_option( $field_id );
200
  $the_product_info = $this->search_and_replace_deprecated_shortcodes( $the_product_info );
@@ -280,8 +280,8 @@ class WCJ_Product_Info extends WCJ_Module {
280
  'id' => 'wcj_more_product_info_on_' . $single_or_archive . '_fields_total',
281
  'default' => 4,
282
  'type' => 'number',
283
- 'desc' => apply_filters( 'booster_get_message', '', 'desc' ),
284
- 'custom_attributes' => apply_filters( 'booster_get_message', '', 'readonly' ),
285
  ),
286
  ) );
287
  $this->admin_add_product_info_fields( $settings, $single_or_archive );
@@ -293,7 +293,7 @@ class WCJ_Product_Info extends WCJ_Module {
293
  * @version 2.4.0
294
  */
295
  function admin_add_product_info_fields( &$settings, $single_or_archive ) {
296
- for ( $i = 1; $i <= apply_filters( 'booster_get_option', 4, get_option( 'wcj_more_product_info_on_' . $single_or_archive . '_fields_total', 4 ) ); $i++ ) {
297
  $field_id = 'wcj_more_product_info_on_' . $single_or_archive . '_' . $i ;
298
  $default_value = '';
299
  switch ( $i ) {
194
  */
195
  function add_more_product_info( $single_or_archive ) {
196
  //$single_or_archive = 'archive';
197
+ for ( $i = 1; $i <= apply_filters( 'booster_option', 4, get_option( 'wcj_more_product_info_on_' . $single_or_archive . '_fields_total', 4 ) ); $i++ ) {
198
  $field_id = 'wcj_more_product_info_on_' . $single_or_archive . '_' . $i ;
199
  $the_product_info = get_option( $field_id );
200
  $the_product_info = $this->search_and_replace_deprecated_shortcodes( $the_product_info );
280
  'id' => 'wcj_more_product_info_on_' . $single_or_archive . '_fields_total',
281
  'default' => 4,
282
  'type' => 'number',
283
+ 'desc' => apply_filters( 'booster_message', '', 'desc' ),
284
+ 'custom_attributes' => apply_filters( 'booster_message', '', 'readonly' ),
285
  ),
286
  ) );
287
  $this->admin_add_product_info_fields( $settings, $single_or_archive );
293
  * @version 2.4.0
294
  */
295
  function admin_add_product_info_fields( &$settings, $single_or_archive ) {
296
+ for ( $i = 1; $i <= apply_filters( 'booster_option', 4, get_option( 'wcj_more_product_info_on_' . $single_or_archive . '_fields_total', 4 ) ); $i++ ) {
297
  $field_id = 'wcj_more_product_info_on_' . $single_or_archive . '_' . $i ;
298
  $default_value = '';
299
  switch ( $i ) {
includes/class-wcj-product-listings.php CHANGED
@@ -71,7 +71,7 @@ class WCJ_Product_Listings extends WCJ_Module {
71
  function remove_subcategory_count( $count_html ) {
72
  if (
73
  ( is_shop() && 'yes' === get_option( 'wcj_product_listings_hide_cats_count_on_shop' ) ) ||
74
- ( ! is_shop() && 'yes' === apply_filters( 'booster_get_option', 'wcj', get_option( 'wcj_product_listings_hide_cats_count_on_archive' ) ) )
75
  ) {
76
  return '';
77
  }
71
  function remove_subcategory_count( $count_html ) {
72
  if (
73
  ( is_shop() && 'yes' === get_option( 'wcj_product_listings_hide_cats_count_on_shop' ) ) ||
74
+ ( ! is_shop() && 'yes' === apply_filters( 'booster_option', 'wcj', get_option( 'wcj_product_listings_hide_cats_count_on_archive' ) ) )
75
  ) {
76
  return '';
77
  }
includes/class-wcj-product-open-pricing.php CHANGED
@@ -134,7 +134,7 @@ class WCJ_Product_Open_Pricing extends WCJ_Module {
134
  * @since 2.4.8
135
  */
136
  function save_meta_box_value( $option_value, $option_name, $module_id ) {
137
- if ( true === apply_filters( 'booster_get_option', false, true ) ) {
138
  return $option_value;
139
  }
140
  if ( 'no' === $option_value ) {
134
  * @since 2.4.8
135
  */
136
  function save_meta_box_value( $option_value, $option_name, $module_id ) {
137
+ if ( true === apply_filters( 'booster_option', false, true ) ) {
138
  return $option_value;
139
  }
140
  if ( 'no' === $option_value ) {
includes/class-wcj-product-price-by-formula.php CHANGED
@@ -141,7 +141,7 @@ class WCJ_Product_Price_by_Formula extends WCJ_Module {
141
  * @since 2.5.0
142
  */
143
  function save_meta_box_value( $option_value, $option_name, $module_id ) {
144
- if ( true === apply_filters( 'booster_get_option', false, true ) ) {
145
  return $option_value;
146
  }
147
  if ( 'no' === $option_value ) {
@@ -202,7 +202,7 @@ class WCJ_Product_Price_by_Formula extends WCJ_Module {
202
  */
203
  function is_price_by_formula_product( $_product ) {
204
  return (
205
- 'yes' === apply_filters( 'booster_get_option', 'no', get_option( 'wcj_product_price_by_formula_enable_for_all_products', 'no' ) ) ||
206
  'yes' === get_post_meta( wcj_get_product_id_or_variation_parent_id( $_product ), '_' . 'wcj_product_price_by_formula_enabled', true )
207
  );
208
  }
141
  * @since 2.5.0
142
  */
143
  function save_meta_box_value( $option_value, $option_name, $module_id ) {
144
+ if ( true === apply_filters( 'booster_option', false, true ) ) {
145
  return $option_value;
146
  }
147
  if ( 'no' === $option_value ) {
202
  */
203
  function is_price_by_formula_product( $_product ) {
204
  return (
205
+ 'yes' === apply_filters( 'booster_option', 'no', get_option( 'wcj_product_price_by_formula_enable_for_all_products', 'no' ) ) ||
206
  'yes' === get_post_meta( wcj_get_product_id_or_variation_parent_id( $_product ), '_' . 'wcj_product_price_by_formula_enabled', true )
207
  );
208
  }
includes/class-wcj-product-tabs.php CHANGED
@@ -92,19 +92,19 @@ class WCJ_Product_Tabs extends WCJ_Module {
92
 
93
  // Priority and Title
94
  if ( isset( $tabs['description'] ) ) {
95
- $tabs['description']['priority'] = apply_filters( 'booster_get_option', 10, get_option( 'wcj_product_info_product_tabs_description_priority', 10 ) );
96
  if ( '' != ( $title = get_option( 'wcj_product_info_product_tabs_description_title', '' ) ) ) {
97
  $tabs['description']['title'] = $title;
98
  }
99
  }
100
  if ( isset( $tabs['additional_information'] ) ) {
101
- $tabs['additional_information']['priority'] = apply_filters( 'booster_get_option', 20, get_option( 'wcj_product_info_product_tabs_additional_information_priority', 20 ) );
102
  if ( '' != ( $title = get_option( 'wcj_product_info_product_tabs_additional_information_title', '' ) ) ) {
103
  $tabs['additional_information']['title'] = $title;
104
  }
105
  }
106
  if ( isset( $tabs['reviews'] ) ) {
107
- $tabs['reviews']['priority'] = apply_filters( 'booster_get_option', 30, get_option( 'wcj_product_info_product_tabs_reviews_priority', 30 ) );
108
  if ( '' != ( $title = get_option( 'wcj_product_info_product_tabs_reviews_title', '' ) ) ) {
109
  $tabs['reviews']['title'] = $title;
110
  }
@@ -124,11 +124,11 @@ class WCJ_Product_Tabs extends WCJ_Module {
124
  function add_custom_product_tabs( $scope, $tabs, $product_id ) {
125
  switch ( $scope ) {
126
  case 'global':
127
- $total_custom_tabs = apply_filters( 'booster_get_option', 1, get_option( 'wcj_custom_product_tabs_global_total_number', 1 ) );
128
  break;
129
  default: // 'local'
130
  if ( ! ( $total_custom_tabs = get_post_meta( $product_id, '_' . 'wcj_custom_product_tabs_local_total_number', true ) ) ) {
131
- $total_custom_tabs = apply_filters( 'booster_get_option', 1, get_option( 'wcj_custom_product_tabs_local_total_number_default', 1 ) );
132
  }
133
  break;
134
  }
@@ -437,7 +437,7 @@ class WCJ_Product_Tabs extends WCJ_Module {
437
  function maybe_add_js_links() {
438
  $current_post_id = get_the_ID();
439
  // Global tabs
440
- for ( $i = 1; $i <= apply_filters( 'booster_get_option', 1, get_option( 'wcj_custom_product_tabs_global_total_number', 1 ) ); $i++ ) {
441
  if ( $this->is_global_tab_visible( $i, $current_post_id ) ) {
442
  $key = 'global_' . $i;
443
  if ( '' != get_option( 'wcj_custom_product_tabs_title_' . $key, '' ) && '' != ( $link = get_option( 'wcj_custom_product_tabs_link_' . $key, '' ) ) ) {
@@ -450,7 +450,7 @@ class WCJ_Product_Tabs extends WCJ_Module {
450
  return;
451
  }
452
  if ( ! ( $total_custom_tabs = get_post_meta( $current_post_id, '_' . 'wcj_custom_product_tabs_local_total_number', true ) ) ) {
453
- $total_custom_tabs = apply_filters( 'booster_get_option', 1, get_option( 'wcj_custom_product_tabs_local_total_number_default', 1 ) );
454
  }
455
  for ( $i = 1; $i <= $total_custom_tabs; $i++ ) {
456
  if ( $this->is_local_tab_visible( $i, $current_post_id ) ) {
@@ -505,7 +505,7 @@ class WCJ_Product_Tabs extends WCJ_Module {
505
  'wcj_custom_product_tabs_link_local_',
506
  'wcj_custom_product_tabs_link_new_tab_local_',
507
  );
508
- $default_total_custom_tabs = apply_filters( 'booster_get_option', 1, get_option( 'wcj_custom_product_tabs_local_total_number_default', 1 ) );
509
  $total_custom_tabs_before_saving = get_post_meta( $post_id, '_' . 'wcj_custom_product_tabs_local_total_number', true );
510
  $total_custom_tabs_before_saving = ( '' != $total_custom_tabs_before_saving ) ? $total_custom_tabs_before_saving : $default_total_custom_tabs;
511
  for ( $i = 1; $i <= $total_custom_tabs_before_saving; $i++ ) {
@@ -548,11 +548,11 @@ class WCJ_Product_Tabs extends WCJ_Module {
548
  $current_post_id = get_the_ID();
549
  $option_name = 'wcj_custom_product_tabs_local_total_number';
550
  if ( ! ( $total_custom_tabs = get_post_meta( $current_post_id, '_' . $option_name, true ) ) )
551
- $total_custom_tabs = apply_filters( 'booster_get_option', 1, get_option( 'wcj_custom_product_tabs_local_total_number_default', 1 ) );
552
  $html = '';
553
 
554
- $is_disabled = apply_filters( 'booster_get_message', '', 'readonly_string' );
555
- $is_disabled_message = apply_filters( 'booster_get_message', '', 'desc' );
556
 
557
  $html .= '<table>';
558
  $html .= '<tr>';
92
 
93
  // Priority and Title
94
  if ( isset( $tabs['description'] ) ) {
95
+ $tabs['description']['priority'] = apply_filters( 'booster_option', 10, get_option( 'wcj_product_info_product_tabs_description_priority', 10 ) );
96
  if ( '' != ( $title = get_option( 'wcj_product_info_product_tabs_description_title', '' ) ) ) {
97
  $tabs['description']['title'] = $title;
98
  }
99
  }
100
  if ( isset( $tabs['additional_information'] ) ) {
101
+ $tabs['additional_information']['priority'] = apply_filters( 'booster_option', 20, get_option( 'wcj_product_info_product_tabs_additional_information_priority', 20 ) );
102
  if ( '' != ( $title = get_option( 'wcj_product_info_product_tabs_additional_information_title', '' ) ) ) {
103
  $tabs['additional_information']['title'] = $title;
104
  }
105
  }
106
  if ( isset( $tabs['reviews'] ) ) {
107
+ $tabs['reviews']['priority'] = apply_filters( 'booster_option', 30, get_option( 'wcj_product_info_product_tabs_reviews_priority', 30 ) );
108
  if ( '' != ( $title = get_option( 'wcj_product_info_product_tabs_reviews_title', '' ) ) ) {
109
  $tabs['reviews']['title'] = $title;
110
  }
124
  function add_custom_product_tabs( $scope, $tabs, $product_id ) {
125
  switch ( $scope ) {
126
  case 'global':
127
+ $total_custom_tabs = apply_filters( 'booster_option', 1, get_option( 'wcj_custom_product_tabs_global_total_number', 1 ) );
128
  break;
129
  default: // 'local'
130
  if ( ! ( $total_custom_tabs = get_post_meta( $product_id, '_' . 'wcj_custom_product_tabs_local_total_number', true ) ) ) {
131
+ $total_custom_tabs = apply_filters( 'booster_option', 1, get_option( 'wcj_custom_product_tabs_local_total_number_default', 1 ) );
132
  }
133
  break;
134
  }
437
  function maybe_add_js_links() {
438
  $current_post_id = get_the_ID();
439
  // Global tabs
440
+ for ( $i = 1; $i <= apply_filters( 'booster_option', 1, get_option( 'wcj_custom_product_tabs_global_total_number', 1 ) ); $i++ ) {
441
  if ( $this->is_global_tab_visible( $i, $current_post_id ) ) {
442
  $key = 'global_' . $i;
443
  if ( '' != get_option( 'wcj_custom_product_tabs_title_' . $key, '' ) && '' != ( $link = get_option( 'wcj_custom_product_tabs_link_' . $key, '' ) ) ) {
450
  return;
451
  }
452
  if ( ! ( $total_custom_tabs = get_post_meta( $current_post_id, '_' . 'wcj_custom_product_tabs_local_total_number', true ) ) ) {
453
+ $total_custom_tabs = apply_filters( 'booster_option', 1, get_option( 'wcj_custom_product_tabs_local_total_number_default', 1 ) );
454
  }
455
  for ( $i = 1; $i <= $total_custom_tabs; $i++ ) {
456
  if ( $this->is_local_tab_visible( $i, $current_post_id ) ) {
505
  'wcj_custom_product_tabs_link_local_',
506
  'wcj_custom_product_tabs_link_new_tab_local_',
507
  );
508
+ $default_total_custom_tabs = apply_filters( 'booster_option', 1, get_option( 'wcj_custom_product_tabs_local_total_number_default', 1 ) );
509
  $total_custom_tabs_before_saving = get_post_meta( $post_id, '_' . 'wcj_custom_product_tabs_local_total_number', true );
510
  $total_custom_tabs_before_saving = ( '' != $total_custom_tabs_before_saving ) ? $total_custom_tabs_before_saving : $default_total_custom_tabs;
511
  for ( $i = 1; $i <= $total_custom_tabs_before_saving; $i++ ) {
548
  $current_post_id = get_the_ID();
549
  $option_name = 'wcj_custom_product_tabs_local_total_number';
550
  if ( ! ( $total_custom_tabs = get_post_meta( $current_post_id, '_' . $option_name, true ) ) )
551
+ $total_custom_tabs = apply_filters( 'booster_option', 1, get_option( 'wcj_custom_product_tabs_local_total_number_default', 1 ) );
552
  $html = '';
553
 
554
+ $is_disabled = apply_filters( 'booster_message', '', 'readonly_string' );
555
+ $is_disabled_message = apply_filters( 'booster_message', '', 'desc' );
556
 
557
  $html .= '<table>';
558
  $html .= '<tr>';
includes/class-wcj-products-per-page.php CHANGED
@@ -67,7 +67,7 @@ class WCJ_Products_Per_Page extends WCJ_Module {
67
  $products_total = $wp_query->found_posts;
68
 
69
  $select_form = '<select name="wcj_products_per_page" id="wcj_products_per_page" class="sortby rounded_corners_class" onchange="this.form.submit()">';
70
- $products_per_page_select_options = apply_filters( 'booster_get_option',
71
  '10|10' . PHP_EOL . '25|25' . PHP_EOL . '50|50' . PHP_EOL . '100|100' . PHP_EOL . 'All|-1',
72
  get_option( 'wcj_products_per_page_select_options', '10|10' . PHP_EOL . '25|25' . PHP_EOL . '50|50' . PHP_EOL . '100|100' . PHP_EOL . 'All|-1' ) );
73
  $products_per_page_select_options = explode( PHP_EOL, $products_per_page_select_options );
67
  $products_total = $wp_query->found_posts;
68
 
69
  $select_form = '<select name="wcj_products_per_page" id="wcj_products_per_page" class="sortby rounded_corners_class" onchange="this.form.submit()">';
70
+ $products_per_page_select_options = apply_filters( 'booster_option',
71
  '10|10' . PHP_EOL . '25|25' . PHP_EOL . '50|50' . PHP_EOL . '100|100' . PHP_EOL . 'All|-1',
72
  get_option( 'wcj_products_per_page_select_options', '10|10' . PHP_EOL . '25|25' . PHP_EOL . '50|50' . PHP_EOL . '100|100' . PHP_EOL . 'All|-1' ) );
73
  $products_per_page_select_options = explode( PHP_EOL, $products_per_page_select_options );
includes/class-wcj-products-xml.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Module - Products XML
4
  *
5
- * @version 3.2.4
6
  * @since 2.5.7
7
  * @author Algoritmika Ltd.
8
  * @todo create all files at once (manually and synchronize update)
@@ -17,7 +17,7 @@ class WCJ_Products_XML extends WCJ_Module {
17
  /**
18
  * Constructor.
19
  *
20
- * @version 3.2.4
21
  * @since 2.5.7
22
  */
23
  function __construct() {
@@ -32,8 +32,9 @@ class WCJ_Products_XML extends WCJ_Module {
32
  add_action( 'init', array( $this, 'schedule_the_events' ) );
33
  add_action( 'admin_init', array( $this, 'schedule_the_events' ) );
34
  add_action( 'admin_init', array( $this, 'wcj_create_products_xml' ) );
 
35
  add_filter( 'cron_schedules', array( $this, 'cron_add_custom_intervals' ) );
36
- $total_number = apply_filters( 'booster_get_option', 1, get_option( 'wcj_products_xml_total_files', 1 ) );
37
  for ( $i = 1; $i <= $total_number; $i++ ) {
38
  add_action( 'wcj_create_products_xml_hook_' . $i, array( $this, 'create_products_xml_cron' ), PHP_INT_MAX, 2 );
39
  }
@@ -54,11 +55,11 @@ class WCJ_Products_XML extends WCJ_Module {
54
  'daily',
55
  'weekly',
56
  );
57
- $total_number = apply_filters( 'booster_get_option', 1, get_option( 'wcj_products_xml_total_files', 1 ) );
58
  for ( $i = 1; $i <= $total_number; $i++ ) {
59
  $event_hook = 'wcj_create_products_xml_hook_' . $i;
60
  if ( 'yes' === get_option( 'wcj_products_xml_enabled_' . $i, 'yes' ) ) {
61
- $selected_interval = apply_filters( 'booster_get_option', 'weekly', get_option( 'wcj_create_products_xml_period_' . $i, 'weekly' ) );
62
  foreach ( $update_intervals as $interval ) {
63
  $event_timestamp = wp_next_scheduled( $event_hook, array( $interval, $i ) );
64
  if ( $selected_interval === $interval ) {
@@ -101,39 +102,39 @@ class WCJ_Products_XML extends WCJ_Module {
101
  }
102
 
103
  /**
104
- * admin_notice__success.
105
- *
106
- * @version 2.5.7
107
- * @since 2.5.7
108
- */
109
- function admin_notice__success() {
110
- echo '<div class="notice notice-success is-dismissible"><p>' . __( 'Products XML file created successfully.', 'woocommerce-jetpack' ) . '</p></div>';
111
- }
112
-
113
- /**
114
- * admin_notice__error.
115
  *
116
- * @version 2.5.7
117
  * @since 2.5.7
118
  */
119
- function admin_notice__error() {
120
- echo '<div class="notice notice-error"><p>' . __( 'An error has occurred while creating products XML file.', 'woocommerce-jetpack' ) . '</p></div>';
 
 
 
 
 
 
 
 
 
121
  }
122
 
123
  /**
124
  * wcj_create_products_xml.
125
  *
126
- * @version 2.6.0
127
  * @since 2.5.7
128
  */
129
  function wcj_create_products_xml() {
130
  if ( isset( $_GET['wcj_create_products_xml'] ) ) {
131
  $file_num = $_GET['wcj_create_products_xml'];
132
  $result = $this->create_products_xml( $file_num );
133
- add_action( 'admin_notices', array( $this, ( ( false !== $result ) ? 'admin_notice__success' : 'admin_notice__error' ) ) );
134
  if ( false !== $result ) {
135
  update_option( 'wcj_products_time_file_created_' . $file_num, current_time( 'timestamp' ) );
136
  }
 
 
137
  }
138
  }
139
 
@@ -156,6 +157,7 @@ class WCJ_Products_XML extends WCJ_Module {
156
  *
157
  * @version 3.2.4
158
  * @since 2.5.7
 
159
  */
160
  function create_products_xml( $file_num ) {
161
  $xml_items = '';
@@ -253,7 +255,7 @@ class WCJ_Products_XML extends WCJ_Module {
253
  }
254
  while ( $loop->have_posts() ) {
255
  $loop->the_post();
256
- $xml_items .= str_replace( '&', '&amp;', html_entity_decode( do_shortcode( $xml_item_template ) ) ); // todo
257
  }
258
  $offset += $block_size;
259
  }
2
  /**
3
  * Booster for WooCommerce - Module - Products XML
4
  *
5
+ * @version 3.3.0
6
  * @since 2.5.7
7
  * @author Algoritmika Ltd.
8
  * @todo create all files at once (manually and synchronize update)
17
  /**
18
  * Constructor.
19
  *
20
+ * @version 3.3.0
21
  * @since 2.5.7
22
  */
23
  function __construct() {
32
  add_action( 'init', array( $this, 'schedule_the_events' ) );
33
  add_action( 'admin_init', array( $this, 'schedule_the_events' ) );
34
  add_action( 'admin_init', array( $this, 'wcj_create_products_xml' ) );
35
+ add_action( 'admin_notices', array( $this, 'admin_notices' ) );
36
  add_filter( 'cron_schedules', array( $this, 'cron_add_custom_intervals' ) );
37
+ $total_number = apply_filters( 'booster_option', 1, get_option( 'wcj_products_xml_total_files', 1 ) );
38
  for ( $i = 1; $i <= $total_number; $i++ ) {
39
  add_action( 'wcj_create_products_xml_hook_' . $i, array( $this, 'create_products_xml_cron' ), PHP_INT_MAX, 2 );
40
  }
55
  'daily',
56
  'weekly',
57
  );
58
+ $total_number = apply_filters( 'booster_option', 1, get_option( 'wcj_products_xml_total_files', 1 ) );
59
  for ( $i = 1; $i <= $total_number; $i++ ) {
60
  $event_hook = 'wcj_create_products_xml_hook_' . $i;
61
  if ( 'yes' === get_option( 'wcj_products_xml_enabled_' . $i, 'yes' ) ) {
62
+ $selected_interval = apply_filters( 'booster_option', 'weekly', get_option( 'wcj_create_products_xml_period_' . $i, 'weekly' ) );
63
  foreach ( $update_intervals as $interval ) {
64
  $event_timestamp = wp_next_scheduled( $event_hook, array( $interval, $i ) );
65
  if ( $selected_interval === $interval ) {
102
  }
103
 
104
  /**
105
+ * admin_notices.
 
 
 
 
 
 
 
 
 
 
106
  *
107
+ * @version 3.3.0
108
  * @since 2.5.7
109
  */
110
+ function admin_notices() {
111
+ if ( isset( $_GET['wcj_create_products_xml_result'] ) ) {
112
+ if ( 0 == $_GET['wcj_create_products_xml_result'] ) {
113
+ $class = 'notice notice-error';
114
+ $message = __( 'An error has occurred while creating products XML file.', 'woocommerce-jetpack' );
115
+ } else {
116
+ $class = 'notice notice-success is-dismissible';
117
+ $message = sprintf( __( 'Products XML file #%s created successfully.', 'woocommerce-jetpack' ), $_GET['wcj_create_products_xml_result'] );
118
+ }
119
+ echo '<div class="' . $class . '"><p>' . $message . '</p></div>';
120
+ }
121
  }
122
 
123
  /**
124
  * wcj_create_products_xml.
125
  *
126
+ * @version 3.3.0
127
  * @since 2.5.7
128
  */
129
  function wcj_create_products_xml() {
130
  if ( isset( $_GET['wcj_create_products_xml'] ) ) {
131
  $file_num = $_GET['wcj_create_products_xml'];
132
  $result = $this->create_products_xml( $file_num );
 
133
  if ( false !== $result ) {
134
  update_option( 'wcj_products_time_file_created_' . $file_num, current_time( 'timestamp' ) );
135
  }
136
+ wp_safe_redirect( add_query_arg( 'wcj_create_products_xml_result', ( false === $result ? 0 : $file_num ), remove_query_arg( 'wcj_create_products_xml' ) ) );
137
+ exit;
138
  }
139
  }
140
 
157
  *
158
  * @version 3.2.4
159
  * @since 2.5.7
160
+ * @todo check the `str_replace` and `html_entity_decode` part
161
  */
162
  function create_products_xml( $file_num ) {
163
  $xml_items = '';
255
  }
256
  while ( $loop->have_posts() ) {
257
  $loop->the_post();
258
+ $xml_items .= str_replace( '&', '&amp;', html_entity_decode( do_shortcode( $xml_item_template ) ) );
259
  }
260
  $offset += $block_size;
261
  }
includes/class-wcj-purchase-data.php CHANGED
@@ -20,6 +20,7 @@ class WCJ_Purchase_Data extends WCJ_Module {
20
  * @todo (maybe) pre-calculate profit for orders
21
  * @todo (maybe) "Apply costs to orders that do not have costs set"
22
  * @todo (maybe) "Apply costs to all orders, overriding previous costs"
 
23
  */
24
  function __construct() {
25
 
@@ -53,8 +54,8 @@ class WCJ_Purchase_Data extends WCJ_Module {
53
 
54
  // Products columns
55
  if (
56
- 'yes' === apply_filters( 'booster_get_option', 'no', get_option( 'wcj_purchase_data_custom_products_columns_purchase_cost', 'no' ) ) ||
57
- 'yes' === apply_filters( 'booster_get_option', 'no', get_option( 'wcj_purchase_data_custom_products_columns_profit', 'no' ) )
58
  ) {
59
  add_filter( 'manage_edit-product_columns', array( $this, 'add_product_columns' ), PHP_INT_MAX );
60
  add_action( 'manage_product_posts_custom_column', array( $this, 'render_product_columns' ), PHP_INT_MAX );
@@ -110,10 +111,10 @@ class WCJ_Purchase_Data extends WCJ_Module {
110
  * @todo (maybe) output columns immediately after standard "Price"
111
  */
112
  function add_product_columns( $columns ) {
113
- if ( 'yes' === apply_filters( 'booster_get_option', 'no', get_option( 'wcj_purchase_data_custom_products_columns_purchase_cost', 'no' ) ) ) {
114
  $columns['purchase_cost'] = __( 'Cost', 'woocommerce-jetpack' );
115
  }
116
- if ( 'yes' === apply_filters( 'booster_get_option', 'no', get_option( 'wcj_purchase_data_custom_products_columns_profit', 'no' ) ) ) {
117
  $columns['profit'] = __( 'Profit', 'woocommerce-jetpack' );
118
  }
119
  return $columns;
@@ -161,7 +162,8 @@ class WCJ_Purchase_Data extends WCJ_Module {
161
  * @param string $column
162
  * @version 2.7.0
163
  * @since 2.2.4
164
- * @todo forecasted profit
 
165
  */
166
  function render_order_columns( $column ) {
167
  if ( 'profit' === $column || 'purchase_cost' === $column ) {
@@ -171,12 +173,10 @@ class WCJ_Purchase_Data extends WCJ_Module {
171
  $is_forecasted = false;
172
  foreach ( $the_order->get_items() as $item_id => $item ) {
173
  $value = 0;
174
- $product_id = ( isset( $item['variation_id'] ) && 0 != $item['variation_id'] && 'no' === get_option( 'wcj_purchase_data_variable_as_simple_enabled', 'no' ) )
175
- ? $item['variation_id']
176
- : $item['product_id'];
177
  if ( 0 != ( $purchase_price = wc_get_product_purchase_price( $product_id ) ) ) {
178
  if ( 'profit' === $column ) {
179
- // $line_total = ( 'yes' === get_option('woocommerce_prices_include_tax') ) ? ( $item['line_total'] + $item['line_tax'] ) : $item['line_total'];
180
  $_order_prices_include_tax = ( WCJ_IS_WC_VERSION_BELOW_3 ? $the_order->prices_include_tax : $the_order->get_prices_include_tax() );
181
  $line_total = ( $_order_prices_include_tax ) ? ( $item['line_total'] + $item['line_tax'] ) : $item['line_total'];
182
  $value = $line_total - $purchase_price * $item['qty'];
@@ -184,16 +184,19 @@ class WCJ_Purchase_Data extends WCJ_Module {
184
  $value = $purchase_price * $item['qty'];
185
  }
186
  } else {
187
- // $value = ( $item['line_total'] + $item['line_tax'] ) * $average_profit_margin;
188
  $is_forecasted = true;
189
  }
190
  $total += $value;
191
  }
192
  }
193
  if ( 0 != $total ) {
194
- if ( ! $is_forecasted ) echo '<span style="color:green;">';
 
 
195
  echo wc_price( $total );
196
- if ( ! $is_forecasted ) echo '</span>';
 
 
197
  }
198
  }
199
  }
@@ -203,7 +206,7 @@ class WCJ_Purchase_Data extends WCJ_Module {
203
  *
204
  * @version 2.7.0
205
  * @since 2.4.5
206
- * @todo min_profit
207
  */
208
  function create_meta_box() {
209
 
@@ -234,11 +237,6 @@ class WCJ_Purchase_Data extends WCJ_Module {
234
  $table_data[] = array( __( 'Buying', 'woocommerce-jetpack' ), wc_price( $purchase_price ) );
235
  $table_data[] = array( __( 'Profit', 'woocommerce-jetpack' ), wc_price( $the_profit )
236
  . sprintf( ' (%0.2f %%)', ( $the_profit / $purchase_price * 100 ) ) );
237
- // . sprintf( ' (%0.2f %%)', ( $the_profit / $the_price * 100 ) ) );
238
- /* $the_min_profit = $purchase_price * 0.25;
239
- $the_min_price = $purchase_price * 1.25;
240
- $html .= __( 'Min Profit', 'woocommerce-jetpack' );
241
- $html .= wc_price( $the_min_profit ) . ' ' . __( 'at', 'woocommerce-jetpack' ) . ' ' . wc_price( $the_min_price ); */
242
  $html = '';
243
  $html .= '<h5>' . __( 'Report', 'woocommerce-jetpack' ) . $desc . '</h5>';
244
  $html .= wcj_get_table_html( $table_data, array(
@@ -253,13 +251,6 @@ class WCJ_Purchase_Data extends WCJ_Module {
253
  }
254
  }
255
 
256
- /**
257
- * calculate_all_products_profit.
258
- *
259
- * @todo
260
- */
261
- /* function calculate_all_products_profit() { } */
262
-
263
  }
264
 
265
  endif;
20
  * @todo (maybe) pre-calculate profit for orders
21
  * @todo (maybe) "Apply costs to orders that do not have costs set"
22
  * @todo (maybe) "Apply costs to all orders, overriding previous costs"
23
+ * @todo (maybe) `calculate_all_products_profit()`
24
  */
25
  function __construct() {
26
 
54
 
55
  // Products columns
56
  if (
57
+ 'yes' === apply_filters( 'booster_option', 'no', get_option( 'wcj_purchase_data_custom_products_columns_purchase_cost', 'no' ) ) ||
58
+ 'yes' === apply_filters( 'booster_option', 'no', get_option( 'wcj_purchase_data_custom_products_columns_profit', 'no' ) )
59
  ) {
60
  add_filter( 'manage_edit-product_columns', array( $this, 'add_product_columns' ), PHP_INT_MAX );
61
  add_action( 'manage_product_posts_custom_column', array( $this, 'render_product_columns' ), PHP_INT_MAX );
111
  * @todo (maybe) output columns immediately after standard "Price"
112
  */
113
  function add_product_columns( $columns ) {
114
+ if ( 'yes' === apply_filters( 'booster_option', 'no', get_option( 'wcj_purchase_data_custom_products_columns_purchase_cost', 'no' ) ) ) {
115
  $columns['purchase_cost'] = __( 'Cost', 'woocommerce-jetpack' );
116
  }
117
+ if ( 'yes' === apply_filters( 'booster_option', 'no', get_option( 'wcj_purchase_data_custom_products_columns_profit', 'no' ) ) ) {
118
  $columns['profit'] = __( 'Profit', 'woocommerce-jetpack' );
119
  }
120
  return $columns;
162
  * @param string $column
163
  * @version 2.7.0
164
  * @since 2.2.4
165
+ * @todo forecasted profit `$value = $line_total * $average_profit_margin`
166
+ * @todo (maybe) use `[wcj_order_profit]` and `[wcj_order_items_cost]`
167
  */
168
  function render_order_columns( $column ) {
169
  if ( 'profit' === $column || 'purchase_cost' === $column ) {
173
  $is_forecasted = false;
174
  foreach ( $the_order->get_items() as $item_id => $item ) {
175
  $value = 0;
176
+ $product_id = ( isset( $item['variation_id'] ) && 0 != $item['variation_id'] && 'no' === get_option( 'wcj_purchase_data_variable_as_simple_enabled', 'no' )
177
+ ? $item['variation_id'] : $item['product_id'] );
 
178
  if ( 0 != ( $purchase_price = wc_get_product_purchase_price( $product_id ) ) ) {
179
  if ( 'profit' === $column ) {
 
180
  $_order_prices_include_tax = ( WCJ_IS_WC_VERSION_BELOW_3 ? $the_order->prices_include_tax : $the_order->get_prices_include_tax() );
181
  $line_total = ( $_order_prices_include_tax ) ? ( $item['line_total'] + $item['line_tax'] ) : $item['line_total'];
182
  $value = $line_total - $purchase_price * $item['qty'];
184
  $value = $purchase_price * $item['qty'];
185
  }
186
  } else {
 
187
  $is_forecasted = true;
188
  }
189
  $total += $value;
190
  }
191
  }
192
  if ( 0 != $total ) {
193
+ if ( ! $is_forecasted ) {
194
+ echo '<span style="color:green;">';
195
+ }
196
  echo wc_price( $total );
197
+ if ( ! $is_forecasted ) {
198
+ echo '</span>';
199
+ }
200
  }
201
  }
202
  }
206
  *
207
  * @version 2.7.0
208
  * @since 2.4.5
209
+ * @todo (maybe) min_profit
210
  */
211
  function create_meta_box() {
212
 
237
  $table_data[] = array( __( 'Buying', 'woocommerce-jetpack' ), wc_price( $purchase_price ) );
238
  $table_data[] = array( __( 'Profit', 'woocommerce-jetpack' ), wc_price( $the_profit )
239
  . sprintf( ' (%0.2f %%)', ( $the_profit / $purchase_price * 100 ) ) );
 
 
 
 
 
240
  $html = '';
241
  $html .= '<h5>' . __( 'Report', 'woocommerce-jetpack' ) . $desc . '</h5>';
242
  $html .= wcj_get_table_html( $table_data, array(
251
  }
252
  }
253
 
 
 
 
 
 
 
 
254
  }
255
 
256
  endif;
includes/class-wcj-related-products.php CHANGED
@@ -50,7 +50,7 @@ class WCJ_Related_Products extends WCJ_Module {
50
  if ( $this->is_enabled() ) {
51
 
52
  // Related per Product
53
- if ( 'yes' === apply_filters( 'booster_get_option', 'no', get_option( 'wcj_product_info_related_products_per_product', 'no' ) ) ) {
54
  add_action( 'add_meta_boxes', array( $this, 'add_meta_box' ) );
55
  add_action( 'save_post_product', array( $this, 'save_meta_box' ), PHP_INT_MAX, 2 );
56
  }
@@ -181,7 +181,7 @@ class WCJ_Related_Products extends WCJ_Module {
181
  function get_related_products_ids_wc3( $product_id ) {
182
  $include_ids = array();
183
  // Change Related Products
184
- if ( 'yes' === apply_filters( 'booster_get_option', 'no', get_option( 'wcj_product_info_related_products_per_product', 'no' ) ) && 'yes' === get_post_meta( get_the_ID(), '_' . 'wcj_product_info_related_products_enabled', true ) ) {
185
  // Relate per Product (Manual)
186
  $related_per_product = get_post_meta( get_the_ID(), '_' . 'wcj_product_info_related_products_ids', true );
187
  if ( '' != $related_per_product ) {
@@ -329,7 +329,7 @@ class WCJ_Related_Products extends WCJ_Module {
329
  if ( 'yes' === get_option( 'wcj_product_info_related_products_by_attribute_enabled', 'no' ) ) {
330
  $do_fix = true;
331
  } elseif (
332
- 'yes' === apply_filters( 'booster_get_option', 'no', get_option( 'wcj_product_info_related_products_per_product', 'no' ) ) &&
333
  'yes' === get_post_meta( $product_id, '_' . 'wcj_product_info_related_products_enabled', true ) &&
334
  '' != get_post_meta( $product_id, '_' . 'wcj_product_info_related_products_ids', true )
335
  ) {
@@ -414,7 +414,7 @@ class WCJ_Related_Products extends WCJ_Module {
414
  $args['order'] = get_option( 'wcj_product_info_related_products_order', 'desc' );
415
  }
416
  // Change Related Products
417
- if ( 'yes' === apply_filters( 'booster_get_option', 'no', get_option( 'wcj_product_info_related_products_per_product', 'no' ) ) && 'yes' === get_post_meta( get_the_ID(), '_' . 'wcj_product_info_related_products_enabled', true ) ) {
418
  // Relate per Product (Manual)
419
  $related_per_product = get_post_meta( get_the_ID(), '_' . 'wcj_product_info_related_products_ids', true );
420
  if ( '' != $related_per_product ) {
50
  if ( $this->is_enabled() ) {
51
 
52
  // Related per Product
53
+ if ( 'yes' === apply_filters( 'booster_option', 'no', get_option( 'wcj_product_info_related_products_per_product', 'no' ) ) ) {
54
  add_action( 'add_meta_boxes', array( $this, 'add_meta_box' ) );
55
  add_action( 'save_post_product', array( $this, 'save_meta_box' ), PHP_INT_MAX, 2 );
56
  }
181
  function get_related_products_ids_wc3( $product_id ) {
182
  $include_ids = array();
183
  // Change Related Products
184
+ if ( 'yes' === apply_filters( 'booster_option', 'no', get_option( 'wcj_product_info_related_products_per_product', 'no' ) ) && 'yes' === get_post_meta( get_the_ID(), '_' . 'wcj_product_info_related_products_enabled', true ) ) {
185
  // Relate per Product (Manual)
186
  $related_per_product = get_post_meta( get_the_ID(), '_' . 'wcj_product_info_related_products_ids', true );
187
  if ( '' != $related_per_product ) {
329
  if ( 'yes' === get_option( 'wcj_product_info_related_products_by_attribute_enabled', 'no' ) ) {
330
  $do_fix = true;
331
  } elseif (
332
+ 'yes' === apply_filters( 'booster_option', 'no', get_option( 'wcj_product_info_related_products_per_product', 'no' ) ) &&
333
  'yes' === get_post_meta( $product_id, '_' . 'wcj_product_info_related_products_enabled', true ) &&
334
  '' != get_post_meta( $product_id, '_' . 'wcj_product_info_related_products_ids', true )
335
  ) {
414
  $args['order'] = get_option( 'wcj_product_info_related_products_order', 'desc' );
415
  }
416
  // Change Related Products
417
+ if ( 'yes' === apply_filters( 'booster_option', 'no', get_option( 'wcj_product_info_related_products_per_product', 'no' ) ) && 'yes' === get_post_meta( get_the_ID(), '_' . 'wcj_product_info_related_products_enabled', true ) ) {
418
  // Relate per Product (Manual)
419
  $related_per_product = get_post_meta( get_the_ID(), '_' . 'wcj_product_info_related_products_ids', true );
420
  if ( '' != $related_per_product ) {
includes/class-wcj-sale-flash.php CHANGED
@@ -32,9 +32,9 @@ class WCJ_Sale_Flash extends WCJ_Module {
32
 
33
  if ( $this->is_enabled() ) {
34
  $this->globally_enabled = ( 'yes' === get_option( 'wcj_product_images_sale_flash_enabled', 'no' ) );
35
- $this->per_product_enabled = ( 'yes' === apply_filters( 'booster_get_option', 'no', get_option( 'wcj_sale_flash_per_product_enabled', 'no' ) ) );
36
- $this->per_category_enabled = ( 'yes' === apply_filters( 'booster_get_option', 'no', get_option( 'wcj_sale_flash_per_' . 'product_cat' . '_enabled', 'no' ) ) );
37
- $this->per_tag_enabled = ( 'yes' === apply_filters( 'booster_get_option', 'no', get_option( 'wcj_sale_flash_per_' . 'product_tag' . '_enabled', 'no' ) ) );
38
  add_filter( 'woocommerce_sale_flash', array( $this, 'customize_sale_flash' ), PHP_INT_MAX, 3 );
39
  if ( $this->per_product_enabled ) {
40
  add_action( 'add_meta_boxes', array( $this, 'add_meta_box' ) );
32
 
33
  if ( $this->is_enabled() ) {
34
  $this->globally_enabled = ( 'yes' === get_option( 'wcj_product_images_sale_flash_enabled', 'no' ) );
35
+ $this->per_product_enabled = ( 'yes' === apply_filters( 'booster_option', 'no', get_option( 'wcj_sale_flash_per_product_enabled', 'no' ) ) );
36
+ $this->per_category_enabled = ( 'yes' === apply_filters( 'booster_option', 'no', get_option( 'wcj_sale_flash_per_' . 'product_cat' . '_enabled', 'no' ) ) );
37
+ $this->per_tag_enabled = ( 'yes' === apply_filters( 'booster_option', 'no', get_option( 'wcj_sale_flash_per_' . 'product_tag' . '_enabled', 'no' ) ) );
38
  add_filter( 'woocommerce_sale_flash', array( $this, 'customize_sale_flash' ), PHP_INT_MAX, 3 );
39
  if ( $this->per_product_enabled ) {
40
  add_action( 'add_meta_boxes', array( $this, 'add_meta_box' ) );
includes/class-wcj-shipping-by-order-amount.php CHANGED
@@ -38,7 +38,7 @@ class WCJ_Shipping_By_Order_Amount extends WCJ_Module {
38
  *
39
  * @version 3.2.1
40
  * @since 3.2.1
41
- * @todo apply_filters( 'booster_get_option' )
42
  * @todo (maybe) add option to include or exclude taxes when calculating cart total
43
  */
44
  function available_shipping_methods( $rates, $package ) {
38
  *
39
  * @version 3.2.1
40
  * @since 3.2.1
41
+ * @todo apply_filters( 'booster_option' )
42
  * @todo (maybe) add option to include or exclude taxes when calculating cart total
43
  */
44
  function available_shipping_methods( $rates, $package ) {
includes/class-wcj-shipping-calculator.php CHANGED
@@ -29,7 +29,7 @@ class WCJ_Shipping_Calculator extends WCJ_Module {
29
  add_filter( 'woocommerce_shipping_calculator_enable_city' , array( $this, 'enable_city' ) );
30
  add_filter( 'woocommerce_shipping_calculator_enable_postcode', array( $this, 'enable_postcode' ) );
31
  add_action( 'wp_head', array( $this, 'add_custom_styles' ) );
32
- if ( 'yes' === apply_filters( 'booster_get_option', 'no', get_option( 'wcj_shipping_calculator_labels_enabled', 'no' ) ) ) {
33
  add_action( 'wp_enqueue_scripts', array( $this, 'change_labels' ) );
34
  }
35
  }
29
  add_filter( 'woocommerce_shipping_calculator_enable_city' , array( $this, 'enable_city' ) );
30
  add_filter( 'woocommerce_shipping_calculator_enable_postcode', array( $this, 'enable_postcode' ) );
31
  add_action( 'wp_head', array( $this, 'add_custom_styles' ) );
32
+ if ( 'yes' === apply_filters( 'booster_option', 'no', get_option( 'wcj_shipping_calculator_labels_enabled', 'no' ) ) ) {
33
  add_action( 'wp_enqueue_scripts', array( $this, 'change_labels' ) );
34
  }
35
  }
includes/class-wcj-shipping-options.php CHANGED
@@ -18,6 +18,8 @@ class WCJ_Shipping_Options extends WCJ_Module {
18
  *
19
  * @version 3.2.4
20
  * @since 2.9.0
 
 
21
  */
22
  function __construct() {
23
 
@@ -67,7 +69,7 @@ class WCJ_Shipping_Options extends WCJ_Module {
67
  if ( empty( $free_shipping_granting_products ) ) {
68
  return $is_available;
69
  }
70
- $free_shipping_granting_products_type = apply_filters( 'booster_get_option', 'all', get_option( 'wcj_shipping_free_shipping_by_product_type', 'all' ) );
71
  $package_grants_free_shipping = false;
72
  foreach( $package['contents'] as $item ) {
73
  if ( in_array( $item['product_id'], $free_shipping_granting_products ) ) {
@@ -92,7 +94,7 @@ class WCJ_Shipping_Options extends WCJ_Module {
92
  * @since 2.5.6
93
  */
94
  function shipping_icon( $label, $method ) {
95
- $shipping_icons_visibility = apply_filters( 'booster_get_option', 'both', get_option( 'wcj_shipping_icons_visibility', 'both' ) );
96
  if ( 'checkout_only' === $shipping_icons_visibility && is_cart() ) {
97
  return $label;
98
  }
@@ -114,7 +116,7 @@ class WCJ_Shipping_Options extends WCJ_Module {
114
  * @since 2.5.6
115
  */
116
  function shipping_description( $label, $method ) {
117
- $shipping_descriptions_visibility = apply_filters( 'booster_get_option', 'both', get_option( 'wcj_shipping_descriptions_visibility', 'both' ) );
118
  if ( 'checkout_only' === $shipping_descriptions_visibility && is_cart() ) {
119
  return $label;
120
  }
@@ -141,12 +143,12 @@ class WCJ_Shipping_Options extends WCJ_Module {
141
  $free_shipping_rates[ $rate_key ] = $rate;
142
  } else {
143
  if (
144
- 'except_local_pickup' === apply_filters( 'booster_get_option', 'hide_all', get_option( 'wcj_shipping_hide_if_free_available_type', 'hide_all' ) ) &&
145
  false !== strpos( $rate_key, 'local_pickup' )
146
  ) {
147
  $free_shipping_rates[ $rate_key ] = $rate;
148
  } elseif (
149
- 'flat_rate_only' === apply_filters( 'booster_get_option', 'hide_all', get_option( 'wcj_shipping_hide_if_free_available_type', 'hide_all' ) ) &&
150
  false === strpos( $rate_key, 'flat_rate' )
151
  ) {
152
  $free_shipping_rates[ $rate_key ] = $rate;
@@ -185,8 +187,8 @@ class WCJ_Shipping_Options extends WCJ_Module {
185
  'except_local_pickup' => __( 'Hide all except "Local Pickup"', 'woocommerce-jetpack' ),
186
  'flat_rate_only' => __( 'Hide "Flat Rate" only', 'woocommerce-jetpack' ),
187
  ),
188
- 'desc' => apply_filters( 'booster_get_message', '', 'desc' ),
189
- 'custom_attributes' => apply_filters( 'booster_get_message', '', 'disabled' ),
190
  ),
191
  ) );
192
  }
18
  *
19
  * @version 3.2.4
20
  * @since 2.9.0
21
+ * @todo (maybe) move "Display radio buttons instead of drop box for variable products" to new module(s)
22
+ * @todo (maybe) remove (or at least mark ass deprecated) "Grant free shipping on per product basis" (offer to use "Shipping Methods by Products" module instead)
23
  */
24
  function __construct() {
25
 
69
  if ( empty( $free_shipping_granting_products ) ) {
70
  return $is_available;
71
  }
72
+ $free_shipping_granting_products_type = apply_filters( 'booster_option', 'all', get_option( 'wcj_shipping_free_shipping_by_product_type', 'all' ) );
73
  $package_grants_free_shipping = false;
74
  foreach( $package['contents'] as $item ) {
75
  if ( in_array( $item['product_id'], $free_shipping_granting_products ) ) {
94
  * @since 2.5.6
95
  */
96
  function shipping_icon( $label, $method ) {
97
+ $shipping_icons_visibility = apply_filters( 'booster_option', 'both', get_option( 'wcj_shipping_icons_visibility', 'both' ) );
98
  if ( 'checkout_only' === $shipping_icons_visibility && is_cart() ) {
99
  return $label;
100
  }
116
  * @since 2.5.6
117
  */
118
  function shipping_description( $label, $method ) {
119
+ $shipping_descriptions_visibility = apply_filters( 'booster_option', 'both', get_option( 'wcj_shipping_descriptions_visibility', 'both' ) );
120
  if ( 'checkout_only' === $shipping_descriptions_visibility && is_cart() ) {
121
  return $label;
122
  }
143
  $free_shipping_rates[ $rate_key ] = $rate;
144
  } else {
145
  if (
146
+ 'except_local_pickup' === apply_filters( 'booster_option', 'hide_all', get_option( 'wcj_shipping_hide_if_free_available_type', 'hide_all' ) ) &&
147
  false !== strpos( $rate_key, 'local_pickup' )
148
  ) {
149
  $free_shipping_rates[ $rate_key ] = $rate;
150
  } elseif (
151
+ 'flat_rate_only' === apply_filters( 'booster_option', 'hide_all', get_option( 'wcj_shipping_hide_if_free_available_type', 'hide_all' ) ) &&
152
  false === strpos( $rate_key, 'flat_rate' )
153
  ) {
154
  $free_shipping_rates[ $rate_key ] = $rate;
187
  'except_local_pickup' => __( 'Hide all except "Local Pickup"', 'woocommerce-jetpack' ),
188
  'flat_rate_only' => __( 'Hide "Flat Rate" only', 'woocommerce-jetpack' ),
189
  ),
190
+ 'desc' => apply_filters( 'booster_message', '', 'desc' ),
191
+ 'custom_attributes' => apply_filters( 'booster_message', '', 'disabled' ),
192
  ),
193
  ) );
194
  }
includes/class-wcj-sku.php CHANGED
@@ -115,12 +115,12 @@ class WCJ_SKU extends WCJ_Module {
115
  */
116
  function set_sku_with_variable( $product_id, $is_preview ) {
117
 
118
- /* if ( 'random' === apply_filters( 'booster_get_option', 'product_id', get_option( 'wcj_sku_number_generation', 'product_id' ) ) ) {
119
  $sku_number = rand();
120
  } */
121
- if ( 'sequential' === apply_filters( 'booster_get_option', 'product_id', get_option( 'wcj_sku_number_generation', 'product_id' ) ) ) {
122
  $sku_number = $this->get_sequential_counter( $product_id );
123
- } elseif ( 'hash_crc32' === apply_filters( 'booster_get_option', 'product_id', get_option( 'wcj_sku_number_generation', 'product_id' ) ) ) {
124
  $sku_number = sprintf( "%u", crc32( $product_id ) );
125
  } else { // if 'product_id'
126
  $sku_number = $product_id;
@@ -131,7 +131,7 @@ class WCJ_SKU extends WCJ_Module {
131
  $this->set_sku( $product_id, $sku_number, '', $is_preview, $product_id, $product );
132
 
133
  // Handling variable products
134
- $variation_handling = apply_filters( 'booster_get_option', 'as_variable', get_option( 'wcj_sku_variations_handling', 'as_variable' ) );
135
  if ( $product->is_type( 'variable' ) ) {
136
  $variations = $this->get_all_variations( $product );
137
  if ( 'as_variable' === $variation_handling ) {
@@ -140,9 +140,9 @@ class WCJ_SKU extends WCJ_Module {
140
  }
141
  } elseif ( 'as_variation' === $variation_handling ) {
142
  foreach ( $variations as $variation ) {
143
- if ( 'sequential' === apply_filters( 'booster_get_option', 'product_id', get_option( 'wcj_sku_number_generation', 'product_id' ) ) ) {
144
  $sku_number = $this->get_sequential_counter( $product_id );
145
- } elseif ( 'hash_crc32' === apply_filters( 'booster_get_option', 'product_id', get_option( 'wcj_sku_number_generation', 'product_id' ) ) ) {
146
  $sku_number = sprintf( "%u", crc32( $variation['variation_id'] ) );
147
  } else { // if 'product_id'
148
  $sku_number = $variation['variation_id'];
@@ -189,7 +189,7 @@ class WCJ_SKU extends WCJ_Module {
189
  $format_template = get_option( 'wcj_sku_template',
190
  '{category_prefix}{prefix}{sku_number}{suffix}{category_suffix}{variation_suffix}' );
191
  $replace_values = array(
192
- '{category_prefix}' => apply_filters( 'booster_get_option', '', $category_prefix ),
193
  // '{tag_prefix}' => $tag_prefix,
194
  '{prefix}' => get_option( 'wcj_sku_prefix', '' ),
195
  '{sku_number}' => sprintf( '%0' . get_option( 'wcj_sku_minimum_number_length', 0 ) . 's', $sku_number ),
@@ -221,8 +221,8 @@ class WCJ_SKU extends WCJ_Module {
221
  * @since 2.9.0
222
  */
223
  function maybe_get_sequential_counters() {
224
- if ( 'sequential' === apply_filters( 'booster_get_option', 'product_id', get_option( 'wcj_sku_number_generation', 'product_id' ) ) ) {
225
- $this->sequential_counter = apply_filters( 'booster_get_option', 1, get_option( 'wcj_sku_number_generation_sequential', 1 ) );
226
  if ( 'yes' === get_option( 'wcj_sku_number_generation_sequential_by_cat', 'no' ) ) {
227
  $this->product_categories = get_terms( 'product_cat', 'orderby=name&hide_empty=0' );
228
  if ( ! empty( $this->product_categories ) && ! is_wp_error( $this->product_categories ) ) {
@@ -241,7 +241,7 @@ class WCJ_SKU extends WCJ_Module {
241
  * @since 2.9.0
242
  */
243
  function maybe_save_sequential_counters( $is_preview = false ) {
244
- if ( 'sequential' === apply_filters( 'booster_get_option', 'product_id', get_option( 'wcj_sku_number_generation', 'product_id' ) ) && ! $is_preview ) {
245
  update_option( 'wcj_sku_number_generation_sequential', $this->sequential_counter );
246
  if ( 'yes' === get_option( 'wcj_sku_number_generation_sequential_by_cat', 'no' ) ) {
247
  if ( ! empty( $this->product_categories ) && ! is_wp_error( $this->product_categories ) ) {
115
  */
116
  function set_sku_with_variable( $product_id, $is_preview ) {
117
 
118
+ /* if ( 'random' === apply_filters( 'booster_option', 'product_id', get_option( 'wcj_sku_number_generation', 'product_id' ) ) ) {
119
  $sku_number = rand();
120
  } */
121
+ if ( 'sequential' === apply_filters( 'booster_option', 'product_id', get_option( 'wcj_sku_number_generation', 'product_id' ) ) ) {
122
  $sku_number = $this->get_sequential_counter( $product_id );
123
+ } elseif ( 'hash_crc32' === apply_filters( 'booster_option', 'product_id', get_option( 'wcj_sku_number_generation', 'product_id' ) ) ) {
124
  $sku_number = sprintf( "%u", crc32( $product_id ) );
125
  } else { // if 'product_id'
126
  $sku_number = $product_id;
131
  $this->set_sku( $product_id, $sku_number, '', $is_preview, $product_id, $product );
132
 
133
  // Handling variable products
134
+ $variation_handling = apply_filters( 'booster_option', 'as_variable', get_option( 'wcj_sku_variations_handling', 'as_variable' ) );
135
  if ( $product->is_type( 'variable' ) ) {
136
  $variations = $this->get_all_variations( $product );
137
  if ( 'as_variable' === $variation_handling ) {
140
  }
141
  } elseif ( 'as_variation' === $variation_handling ) {
142
  foreach ( $variations as $variation ) {
143
+ if ( 'sequential' === apply_filters( 'booster_option', 'product_id', get_option( 'wcj_sku_number_generation', 'product_id' ) ) ) {
144
  $sku_number = $this->get_sequential_counter( $product_id );
145
+ } elseif ( 'hash_crc32' === apply_filters( 'booster_option', 'product_id', get_option( 'wcj_sku_number_generation', 'product_id' ) ) ) {
146
  $sku_number = sprintf( "%u", crc32( $variation['variation_id'] ) );
147
  } else { // if 'product_id'
148
  $sku_number = $variation['variation_id'];
189
  $format_template = get_option( 'wcj_sku_template',
190
  '{category_prefix}{prefix}{sku_number}{suffix}{category_suffix}{variation_suffix}' );
191
  $replace_values = array(
192
+ '{category_prefix}' => apply_filters( 'booster_option', '', $category_prefix ),
193
  // '{tag_prefix}' => $tag_prefix,
194
  '{prefix}' => get_option( 'wcj_sku_prefix', '' ),
195
  '{sku_number}' => sprintf( '%0' . get_option( 'wcj_sku_minimum_number_length', 0 ) . 's', $sku_number ),
221
  * @since 2.9.0
222
  */
223
  function maybe_get_sequential_counters() {
224
+ if ( 'sequential' === apply_filters( 'booster_option', 'product_id', get_option( 'wcj_sku_number_generation', 'product_id' ) ) ) {
225
+ $this->sequential_counter = apply_filters( 'booster_option', 1, get_option( 'wcj_sku_number_generation_sequential', 1 ) );
226
  if ( 'yes' === get_option( 'wcj_sku_number_generation_sequential_by_cat', 'no' ) ) {
227
  $this->product_categories = get_terms( 'product_cat', 'orderby=name&hide_empty=0' );
228
  if ( ! empty( $this->product_categories ) && ! is_wp_error( $this->product_categories ) ) {
241
  * @since 2.9.0
242
  */
243
  function maybe_save_sequential_counters( $is_preview = false ) {
244
+ if ( 'sequential' === apply_filters( 'booster_option', 'product_id', get_option( 'wcj_sku_number_generation', 'product_id' ) ) && ! $is_preview ) {
245
  update_option( 'wcj_sku_number_generation_sequential', $this->sequential_counter );
246
  if ( 'yes' === get_option( 'wcj_sku_number_generation_sequential_by_cat', 'no' ) ) {
247
  if ( ! empty( $this->product_categories ) && ! is_wp_error( $this->product_categories ) ) {
includes/class-wcj-sorting.php CHANGED
@@ -28,7 +28,7 @@ class WCJ_Sorting extends WCJ_Module {
28
 
29
  if ( $this->is_enabled() ) {
30
 
31
- if ( 'yes' === apply_filters( 'booster_get_option', 'no', get_option( 'wcj_sorting_remove_all_enabled', 'no' ) ) ) {
32
  // Remove All Sorting
33
  add_action( 'wp_loaded', array( $this, 'remove_sorting' ), PHP_INT_MAX );
34
  add_filter( 'wc_get_template', array( $this, 'remove_sorting_template' ), PHP_INT_MAX, 5 );
@@ -43,7 +43,7 @@ class WCJ_Sorting extends WCJ_Module {
43
  }
44
 
45
  // Remove or Rename Default Sorting
46
- if ( 'yes' === apply_filters( 'booster_get_option', 'no', get_option( 'wcj_sorting_default_sorting_enabled', 'no' ) ) ) {
47
  add_filter( 'woocommerce_catalog_orderby', array( $this, 'remove_default_sortings' ), PHP_INT_MAX );
48
  add_filter( 'woocommerce_catalog_orderby', array( $this, 'rename_default_sortings' ), PHP_INT_MAX );
49
  add_filter( 'woocommerce_default_catalog_orderby_options', array( $this, 'remove_default_sortings' ), PHP_INT_MAX );
@@ -107,7 +107,7 @@ class WCJ_Sorting extends WCJ_Module {
107
  $default_sortings = $this->get_woocommerce_default_sortings();
108
  foreach ( $default_sortings as $sorting_key => $sorting_desc ) {
109
  $option_key = str_replace( '-', '_', $sorting_key );
110
- if ( 'yes' === apply_filters( 'booster_get_option', 'no', get_option( 'wcj_sorting_default_sorting_' . $option_key . '_disable', 'no' ) ) ) {
111
  unset( $sortby[ $sorting_key ] );
112
  }
113
  }
@@ -125,7 +125,7 @@ class WCJ_Sorting extends WCJ_Module {
125
  foreach ( $default_sortings as $sorting_key => $sorting_desc ) {
126
  $option_key = str_replace( '-', '_', $sorting_key );
127
  if ( isset( $sortby[ $sorting_key ] ) ) {
128
- $sortby[ $sorting_key ] = apply_filters( 'booster_get_option', $sorting_desc,
129
  get_option( 'wcj_sorting_default_sorting_' . $option_key, $sorting_desc ) );
130
  }
131
  }
@@ -242,13 +242,13 @@ class WCJ_Sorting extends WCJ_Module {
242
  $args['meta_key'] = '';
243
  break;
244
  case 'sku_asc':
245
- $args['orderby'] = ( 'no' === apply_filters( 'booster_get_option', 'no', get_option( 'wcj_sorting_by_sku_num_enabled', 'no' ) ) ) ?
246
  'meta_value' : 'meta_value_num';
247
  $args['order'] = 'asc';
248
  $args['meta_key'] = '_sku';
249
  break;
250
  case 'sku_desc':
251
- $args['orderby'] = ( 'no' === apply_filters( 'booster_get_option', 'no', get_option( 'wcj_sorting_by_sku_num_enabled', 'no' ) ) ) ?
252
  'meta_value' : 'meta_value_num';
253
  $args['order'] = 'desc';
254
  $args['meta_key'] = '_sku';
28
 
29
  if ( $this->is_enabled() ) {
30
 
31
+ if ( 'yes' === apply_filters( 'booster_option', 'no', get_option( 'wcj_sorting_remove_all_enabled', 'no' ) ) ) {
32
  // Remove All Sorting
33
  add_action( 'wp_loaded', array( $this, 'remove_sorting' ), PHP_INT_MAX );
34
  add_filter( 'wc_get_template', array( $this, 'remove_sorting_template' ), PHP_INT_MAX, 5 );
43
  }
44
 
45
  // Remove or Rename Default Sorting
46
+ if ( 'yes' === apply_filters( 'booster_option', 'no', get_option( 'wcj_sorting_default_sorting_enabled', 'no' ) ) ) {
47
  add_filter( 'woocommerce_catalog_orderby', array( $this, 'remove_default_sortings' ), PHP_INT_MAX );
48
  add_filter( 'woocommerce_catalog_orderby', array( $this, 'rename_default_sortings' ), PHP_INT_MAX );
49
  add_filter( 'woocommerce_default_catalog_orderby_options', array( $this, 'remove_default_sortings' ), PHP_INT_MAX );
107
  $default_sortings = $this->get_woocommerce_default_sortings();
108
  foreach ( $default_sortings as $sorting_key => $sorting_desc ) {
109
  $option_key = str_replace( '-', '_', $sorting_key );
110
+ if ( 'yes' === apply_filters( 'booster_option', 'no', get_option( 'wcj_sorting_default_sorting_' . $option_key . '_disable', 'no' ) ) ) {
111
  unset( $sortby[ $sorting_key ] );
112
  }
113
  }
125
  foreach ( $default_sortings as $sorting_key => $sorting_desc ) {
126
  $option_key = str_replace( '-', '_', $sorting_key );
127
  if ( isset( $sortby[ $sorting_key ] ) ) {
128
+ $sortby[ $sorting_key ] = apply_filters( 'booster_option', $sorting_desc,
129
  get_option( 'wcj_sorting_default_sorting_' . $option_key, $sorting_desc ) );
130
  }
131
  }
242
  $args['meta_key'] = '';
243
  break;
244
  case 'sku_asc':
245
+ $args['orderby'] = ( 'no' === apply_filters( 'booster_option', 'no', get_option( 'wcj_sorting_by_sku_num_enabled', 'no' ) ) ) ?
246
  'meta_value' : 'meta_value_num';
247
  $args['order'] = 'asc';
248
  $args['meta_key'] = '_sku';
249
  break;
250
  case 'sku_desc':
251
+ $args['orderby'] = ( 'no' === apply_filters( 'booster_option', 'no', get_option( 'wcj_sorting_by_sku_num_enabled', 'no' ) ) ) ?
252
  'meta_value' : 'meta_value_num';
253
  $args['order'] = 'desc';
254
  $args['meta_key'] = '_sku';
includes/class-wcj-track-users.php CHANGED
@@ -48,7 +48,7 @@ class WCJ_User_Tracking extends WCJ_Module {
48
  add_action( 'admin_init', array( $this, 'track_users_update_county_stats' ) );
49
  }
50
  // Order tracking
51
- if ( 'yes' === apply_filters( 'booster_get_option', 'no', get_option( 'wcj_track_users_save_order_http_referer_enabled', 'no' ) ) ) {
52
  add_action( 'woocommerce_new_order', array( $this, 'add_http_referer_to_order' ) );
53
  add_action( 'add_meta_boxes', array( $this, 'add_http_referer_order_meta_box' ) );
54
  }
48
  add_action( 'admin_init', array( $this, 'track_users_update_county_stats' ) );
49
  }
50
  // Order tracking
51
+ if ( 'yes' === apply_filters( 'booster_option', 'no', get_option( 'wcj_track_users_save_order_http_referer_enabled', 'no' ) ) ) {
52
  add_action( 'woocommerce_new_order', array( $this, 'add_http_referer_to_order' ) );
53
  add_action( 'add_meta_boxes', array( $this, 'add_http_referer_order_meta_box' ) );
54
  }
includes/class-wcj-url-coupons.php CHANGED
@@ -61,7 +61,7 @@ class WCJ_URL_Coupons extends WCJ_Module {
61
  * @since 2.9.1
62
  */
63
  function get_redirect_url( $arg_key ) {
64
- switch ( apply_filters( 'booster_get_option', 'no', get_option( 'wcj_url_coupons_redirect', 'no' ) ) ) {
65
  case 'cart':
66
  return wc_get_cart_url();
67
  case 'checkout':
@@ -81,7 +81,7 @@ class WCJ_URL_Coupons extends WCJ_Module {
81
  * @todo (maybe) check if coupon is valid
82
  */
83
  function maybe_add_products_to_cart( $coupon_code ) {
84
- if ( 'no' === apply_filters( 'booster_get_option', 'no', get_option( 'wcj_url_coupons_fixed_product_discount_add_products', 'no' ) ) ) {
85
  return false;
86
  }
87
  // Coupons are globally disabled.
61
  * @since 2.9.1
62
  */
63
  function get_redirect_url( $arg_key ) {
64
+ switch ( apply_filters( 'booster_option', 'no', get_option( 'wcj_url_coupons_redirect', 'no' ) ) ) {
65
  case 'cart':
66
  return wc_get_cart_url();
67
  case 'checkout':
81
  * @todo (maybe) check if coupon is valid
82
  */
83
  function maybe_add_products_to_cart( $coupon_code ) {
84
+ if ( 'no' === apply_filters( 'booster_option', 'no', get_option( 'wcj_url_coupons_fixed_product_discount_add_products', 'no' ) ) ) {
85
  return false;
86
  }
87
  // Coupons are globally disabled.
includes/class-wcj-wholesale-price.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Module - Wholesale Price
4
  *
5
- * @version 3.2.1
6
  * @since 2.2.0
7
  * @author Algoritmika Ltd.
8
  * @todo per variation
@@ -116,7 +116,7 @@ class WCJ_Wholesale_Price extends WCJ_Module {
116
  $max_qty_level = 1;
117
  $discount = 0;
118
  if ( wcj_is_product_wholesale_enabled_per_product( $product_id ) ) {
119
- for ( $i = 1; $i <= apply_filters( 'booster_get_option', 1, get_post_meta( $product_id, '_' . 'wcj_wholesale_price_levels_number' . $role_option_name_addon, true ) ); $i++ ) {
120
  $level_qty = get_post_meta( $product_id, '_' . 'wcj_wholesale_price_level_min_qty' . $role_option_name_addon . '_' . $i, true );
121
  if ( $quantity >= $level_qty && $level_qty >= $max_qty_level ) {
122
  $max_qty_level = $level_qty;
@@ -124,7 +124,7 @@ class WCJ_Wholesale_Price extends WCJ_Module {
124
  }
125
  }
126
  } else {
127
- for ( $i = 1; $i <= apply_filters( 'booster_get_option', 1, get_option( 'wcj_wholesale_price_levels_number' . $role_option_name_addon, 1 ) ); $i++ ) {
128
  $level_qty = get_option( 'wcj_wholesale_price_level_min_qty' . $role_option_name_addon . '_' . $i, PHP_INT_MAX );
129
  if ( $quantity >= $level_qty && $level_qty >= $max_qty_level ) {
130
  $max_qty_level = $level_qty;
@@ -173,8 +173,9 @@ class WCJ_Wholesale_Price extends WCJ_Module {
173
  /**
174
  * calculate_totals.
175
  *
176
- * @version 3.2.1
177
  * @since 2.5.0
 
178
  */
179
  function calculate_totals( $cart ) {
180
 
@@ -212,12 +213,13 @@ class WCJ_Wholesale_Price extends WCJ_Module {
212
  : $item['quantity'];
213
  if ( $the_quantity > 0 ) {
214
  $wholesale_price = $this->get_wholesale_price( $price, $the_quantity, wcj_get_product_id_or_variation_parent_id( $_product ) );
 
 
 
215
  if ( $wholesale_price != $price ) {
216
  // Setting wholesale price
217
- $precision = get_option( 'woocommerce_price_num_decimals', 2 );
218
- $wcj_wholesale_price = round( $wholesale_price, $precision );
219
- WC()->cart->cart_contents[ $item_key ]['data']->wcj_wholesale_price = $wcj_wholesale_price;
220
- WC()->cart->cart_contents[ $item_key ]['wcj_wholesale_price'] = $wcj_wholesale_price;
221
  WC()->cart->cart_contents[ $item_key ]['wcj_wholesale_price_old'] = $price_old;
222
  }
223
  }
2
  /**
3
  * Booster for WooCommerce - Module - Wholesale Price
4
  *
5
+ * @version 3.3.0
6
  * @since 2.2.0
7
  * @author Algoritmika Ltd.
8
  * @todo per variation
116
  $max_qty_level = 1;
117
  $discount = 0;
118
  if ( wcj_is_product_wholesale_enabled_per_product( $product_id ) ) {
119
+ for ( $i = 1; $i <= apply_filters( 'booster_option', 1, get_post_meta( $product_id, '_' . 'wcj_wholesale_price_levels_number' . $role_option_name_addon, true ) ); $i++ ) {
120
  $level_qty = get_post_meta( $product_id, '_' . 'wcj_wholesale_price_level_min_qty' . $role_option_name_addon . '_' . $i, true );
121
  if ( $quantity >= $level_qty && $level_qty >= $max_qty_level ) {
122
  $max_qty_level = $level_qty;
124
  }
125
  }
126
  } else {
127
+ for ( $i = 1; $i <= apply_filters( 'booster_option', 1, get_option( 'wcj_wholesale_price_levels_number' . $role_option_name_addon, 1 ) ); $i++ ) {
128
  $level_qty = get_option( 'wcj_wholesale_price_level_min_qty' . $role_option_name_addon . '_' . $i, PHP_INT_MAX );
129
  if ( $quantity >= $level_qty && $level_qty >= $max_qty_level ) {
130
  $max_qty_level = $level_qty;
173
  /**
174
  * calculate_totals.
175
  *
176
+ * @version 3.3.0
177
  * @since 2.5.0
178
+ * @todo `$price_old` must be price to display *in cart* (now it's *in shop*)
179
  */
180
  function calculate_totals( $cart ) {
181
 
213
  : $item['quantity'];
214
  if ( $the_quantity > 0 ) {
215
  $wholesale_price = $this->get_wholesale_price( $price, $the_quantity, wcj_get_product_id_or_variation_parent_id( $_product ) );
216
+ if ( 'yes' === get_option( 'wcj_wholesale_price_rounding_enabled', 'yes' ) ) {
217
+ $wholesale_price = round( $wholesale_price, get_option( 'woocommerce_price_num_decimals', 2 ) );
218
+ }
219
  if ( $wholesale_price != $price ) {
220
  // Setting wholesale price
221
+ WC()->cart->cart_contents[ $item_key ]['data']->wcj_wholesale_price = $wholesale_price;
222
+ WC()->cart->cart_contents[ $item_key ]['wcj_wholesale_price'] = $wholesale_price;
 
 
223
  WC()->cart->cart_contents[ $item_key ]['wcj_wholesale_price_old'] = $price_old;
224
  }
225
  }
includes/classes/class-wcj-module-shipping-by-condition.php CHANGED
@@ -33,7 +33,7 @@ class WCJ_Module_Shipping_By_Condition extends WCJ_Module {
33
  *
34
  * @version 3.2.1
35
  * @since 3.2.0
36
- * @todo apply_filters( 'booster_get_option' )
37
  */
38
  function available_shipping_methods( $rates, $package ) {
39
  foreach ( $rates as $rate_key => $rate ) {
33
  *
34
  * @version 3.2.1
35
  * @since 3.2.0
36
+ * @todo apply_filters( 'booster_option' )
37
  */
38
  function available_shipping_methods( $rates, $package ) {
39
  foreach ( $rates as $rate_key => $rate ) {
includes/classes/class-wcj-module.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce Module
4
  *
5
- * @version 3.2.1
6
  * @since 2.2.0
7
  * @author Algoritmika Ltd.
8
  */
@@ -43,7 +43,7 @@ if ( ! class_exists( 'WCJ_Module' ) ) :
43
  * @since 2.9.1
44
  */
45
  function save_meta_box_validate_value( $option_value, $option_name, $module_id ) {
46
- if ( true === apply_filters( 'booster_get_option', false, true ) ) {
47
  return $option_value;
48
  }
49
  if ( 'no' === $option_value ) {
@@ -165,7 +165,7 @@ if ( ! class_exists( 'WCJ_Module' ) ) :
165
  * @since 2.5.3
166
  */
167
  function save_meta_box_value( $option_value, $option_name, $module_id ) {
168
- if ( true === apply_filters( 'booster_get_option', false, true ) ) {
169
  return $option_value;
170
  }
171
  if ( 'no' === $option_value ) {
@@ -303,7 +303,7 @@ if ( ! class_exists( 'WCJ_Module' ) ) :
303
  /**
304
  * create_meta_box.
305
  *
306
- * @version 3.1.1
307
  * @todo `placeholder` for textarea
308
  * @todo `class` for all types (now only for select)
309
  * @todo `show_value` for all types (now only for multiple select)
@@ -317,7 +317,7 @@ if ( ! class_exists( 'WCJ_Module' ) ) :
317
  if ( $is_enabled ) {
318
  if ( 'title' === $option['type'] ) {
319
  $html .= '<tr>';
320
- $html .= '<th colspan="3" style="text-align:left;font-weight:bold;">' . $option['title'] . '</th>';
321
  $html .= '</tr>';
322
  } else {
323
  $custom_attributes = '';
@@ -390,7 +390,7 @@ if ( ! class_exists( 'WCJ_Module' ) ) :
390
  break;
391
  }
392
  $html .= '<tr>';
393
- $maybe_tooltip = ( isset( $option['tooltip'] ) && '' != $option['tooltip'] ) ? wc_help_tip( $option['tooltip'], true ) : '';
394
  $html .= '<th style="text-align:left;width:25%;font-weight:bold;">' . $option['title'] . $maybe_tooltip . '</th>';
395
  if ( isset( $option['desc'] ) && '' != $option['desc'] ) {
396
  $html .= '<td style="font-style:italic;width:25%;">' . $option['desc'] . '</td>';
@@ -408,11 +408,10 @@ if ( ! class_exists( 'WCJ_Module' ) ) :
408
  /**
409
  * is_enabled.
410
  *
411
- * @version 3.0.0
412
  */
413
  function is_enabled() {
414
- $the_id = ( 'module' === $this->type ) ? $this->id : $this->parent_id;
415
- return ( 'yes' === get_option( 'wcj_' . $the_id . '_enabled', 'no' ) );
416
  }
417
 
418
  /**
2
  /**
3
  * Booster for WooCommerce Module
4
  *
5
+ * @version 3.3.0
6
  * @since 2.2.0
7
  * @author Algoritmika Ltd.
8
  */
43
  * @since 2.9.1
44
  */
45
  function save_meta_box_validate_value( $option_value, $option_name, $module_id ) {
46
+ if ( true === apply_filters( 'booster_option', false, true ) ) {
47
  return $option_value;
48
  }
49
  if ( 'no' === $option_value ) {
165
  * @since 2.5.3
166
  */
167
  function save_meta_box_value( $option_value, $option_name, $module_id ) {
168
+ if ( true === apply_filters( 'booster_option', false, true ) ) {
169
  return $option_value;
170
  }
171
  if ( 'no' === $option_value ) {
303
  /**
304
  * create_meta_box.
305
  *
306
+ * @version 3.3.0
307
  * @todo `placeholder` for textarea
308
  * @todo `class` for all types (now only for select)
309
  * @todo `show_value` for all types (now only for multiple select)
317
  if ( $is_enabled ) {
318
  if ( 'title' === $option['type'] ) {
319
  $html .= '<tr>';
320
+ $html .= '<th colspan="3" style="' . ( isset( $option['css'] ) ? $option['css'] : 'text-align:left;font-weight:bold;' ) . '">' . $option['title'] . '</th>';
321
  $html .= '</tr>';
322
  } else {
323
  $custom_attributes = '';
390
  break;
391
  }
392
  $html .= '<tr>';
393
+ $maybe_tooltip = ( isset( $option['tooltip'] ) && '' != $option['tooltip'] ) ? '<span style="float:right;">' . wc_help_tip( $option['tooltip'], true ) . '</span>' : '';
394
  $html .= '<th style="text-align:left;width:25%;font-weight:bold;">' . $option['title'] . $maybe_tooltip . '</th>';
395
  if ( isset( $option['desc'] ) && '' != $option['desc'] ) {
396
  $html .= '<td style="font-style:italic;width:25%;">' . $option['desc'] . '</td>';
408
  /**
409
  * is_enabled.
410
  *
411
+ * @version 3.3.0
412
  */
413
  function is_enabled() {
414
+ return wcj_is_module_enabled( ( 'module' === $this->type ? $this->id : $this->parent_id ) );
 
415
  }
416
 
417
  /**
includes/core/class-wcj-admin.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Core - Admin
4
  *
5
- * @version 3.2.4
6
  * @since 3.2.4
7
  * @author Algoritmika Ltd.
8
  */
@@ -21,7 +21,7 @@ class WCJ_Admin {
21
  */
22
  function __construct() {
23
  if ( is_admin() ) {
24
- add_filter( 'booster_get_message', 'wcj_get_plus_message', 100, 3 );
25
  add_filter( 'woocommerce_get_settings_pages', array( $this, 'add_wcj_settings_tab' ), 1 );
26
  add_filter( 'plugin_action_links_' . plugin_basename( WCJ_PLUGIN_FILE ), array( $this, 'action_links' ) );
27
  add_action( 'admin_menu', array( $this, 'booster_menu' ), 100 );
@@ -35,16 +35,16 @@ class WCJ_Admin {
35
  /**
36
  * check_plus_version.
37
  *
38
- * @version 3.1.1
39
  * @since 2.5.9
 
40
  */
41
  function check_plus_version() {
42
  if ( ! is_admin() ) {
43
  return;
44
  }
45
  // Check if Plus is installed and activated
46
- $is_plus_active = false;
47
- $is_plus_v3_active = false;
48
  $active_plugins = apply_filters( 'active_plugins', get_option( 'active_plugins', array() ) );
49
  if ( is_multisite() ) {
50
  $active_plugins = array_merge( $active_plugins, array_keys( get_site_option( 'active_sitewide_plugins', array() ) ) );
@@ -53,33 +53,25 @@ class WCJ_Admin {
53
  $active_plugin = explode( '/', $active_plugin );
54
  if ( isset( $active_plugin[1] ) ) {
55
  if ( 'booster-plus-for-woocommerce.php' === $active_plugin[1] ) {
56
- $is_plus_v3_active = true;
57
- break;
58
  } elseif ( 'woocommerce-jetpack-plus.php' === $active_plugin[1] || 'woocommerce-booster-plus.php' === $active_plugin[1] ) {
59
- $is_plus_active = true;
60
  }
61
  }
62
  }
63
  // Check Plus version
64
- if ( ! $is_plus_v3_active && $is_plus_active ) {
65
- $plus_version = get_option( 'booster_plus_version', false );
66
- $required_plus_version = '1.1.0';
67
- $notice_type = ( version_compare( $plus_version, $required_plus_version, '<' ) ? 'error' : 'warning' );
68
- global $pagenow;
69
- if ( 'error' === $notice_type || 'plugins.php' === $pagenow ) {
70
- $class = 'notice notice-' . $notice_type;
71
- $message = ( 'error' === $notice_type ?
72
- sprintf(
73
- __( 'Please upgrade <strong>Booster Plus for WooCommerce</strong> plugin. Visit <a target="_blank" href="%s">your account page</a> on booster.io to download the latest Booster Plus version.', 'woocommerce-jetpack' ),
74
- 'https://booster.io/my-account/?utm_source=plus_update'
75
- ) :
76
- sprintf(
77
- __( 'There is new version of <strong>Booster Plus for WooCommerce</strong> plugin available. We recommend upgrading. Please visit <a target="_blank" href="%s">your account page</a> on booster.io to download the latest Booster Plus version.', 'woocommerce-jetpack' ),
78
- 'https://booster.io/my-account/?utm_source=plus_update'
79
- )
80
  );
81
- echo '<div class="' . $class . '"><p>' . $message . '</p></div>';
82
- }
83
  }
84
  }
85
 
@@ -120,7 +112,7 @@ class WCJ_Admin {
120
  /**
121
  * Show action links on the plugin screen
122
  *
123
- * @version 3.2.4
124
  * @param mixed $links
125
  * @return array
126
  */
@@ -129,7 +121,7 @@ class WCJ_Admin {
129
  '<a href="' . admin_url( 'admin.php?page=wc-settings&tab=jetpack' ) . '">' . __( 'Settings', 'woocommerce' ) . '</a>',
130
  '<a href="' . esc_url( 'https://booster.io/' ) . '">' . __( 'Docs', 'woocommerce-jetpack' ) . '</a>',
131
  );
132
- if ( 1 === apply_filters( 'booster_get_option', 1, '' ) ) {
133
  $custom_links[] = '<a href="' . esc_url( 'https://booster.io/plus/' ) . '">' . __( 'Unlock all', 'woocommerce-jetpack' ) . '</a>';
134
  }
135
  return array_merge( $custom_links, $links );
2
  /**
3
  * Booster for WooCommerce - Core - Admin
4
  *
5
+ * @version 3.3.0
6
  * @since 3.2.4
7
  * @author Algoritmika Ltd.
8
  */
21
  */
22
  function __construct() {
23
  if ( is_admin() ) {
24
+ add_filter( 'booster_message', 'wcj_get_plus_message', 100, 3 );
25
  add_filter( 'woocommerce_get_settings_pages', array( $this, 'add_wcj_settings_tab' ), 1 );
26
  add_filter( 'plugin_action_links_' . plugin_basename( WCJ_PLUGIN_FILE ), array( $this, 'action_links' ) );
27
  add_action( 'admin_menu', array( $this, 'booster_menu' ), 100 );
35
  /**
36
  * check_plus_version.
37
  *
38
+ * @version 3.3.0
39
  * @since 2.5.9
40
+ * @todo (maybe) expand "Please upgrade ..." message
41
  */
42
  function check_plus_version() {
43
  if ( ! is_admin() ) {
44
  return;
45
  }
46
  // Check if Plus is installed and activated
47
+ $is_deprecated_plus_active = false;
 
48
  $active_plugins = apply_filters( 'active_plugins', get_option( 'active_plugins', array() ) );
49
  if ( is_multisite() ) {
50
  $active_plugins = array_merge( $active_plugins, array_keys( get_site_option( 'active_sitewide_plugins', array() ) ) );
53
  $active_plugin = explode( '/', $active_plugin );
54
  if ( isset( $active_plugin[1] ) ) {
55
  if ( 'booster-plus-for-woocommerce.php' === $active_plugin[1] ) {
56
+ return;
 
57
  } elseif ( 'woocommerce-jetpack-plus.php' === $active_plugin[1] || 'woocommerce-booster-plus.php' === $active_plugin[1] ) {
58
+ $is_deprecated_plus_active = true;
59
  }
60
  }
61
  }
62
  // Check Plus version
63
+ if ( $is_deprecated_plus_active ) {
64
+ $class = 'notice notice-error';
65
+ $message = __( 'Please update <strong>Booster Plus for WooCommerce</strong> plugin.', 'woocommerce-jetpack' ) . ' ' .
66
+ sprintf(
67
+ __( 'Visit <a target="_blank" href="%s">your account page</a> on booster.io to download the latest Booster Plus version.', 'woocommerce-jetpack' ),
68
+ 'https://booster.io/my-account/?utm_source=plus_update'
69
+ ) . ' ' .
70
+ sprintf(
71
+ __( 'Click <a target="_blank" href="%s">here</a> for more info.', 'woocommerce-jetpack' ),
72
+ 'https://booster.io/booster-plus-for-woocommerce-update/'
 
 
 
 
 
 
73
  );
74
+ echo '<div class="' . $class . '"><p>' . $message . '</p></div>';
 
75
  }
76
  }
77
 
112
  /**
113
  * Show action links on the plugin screen
114
  *
115
+ * @version 3.3.0
116
  * @param mixed $links
117
  * @return array
118
  */
121
  '<a href="' . admin_url( 'admin.php?page=wc-settings&tab=jetpack' ) . '">' . __( 'Settings', 'woocommerce' ) . '</a>',
122
  '<a href="' . esc_url( 'https://booster.io/' ) . '">' . __( 'Docs', 'woocommerce-jetpack' ) . '</a>',
123
  );
124
+ if ( 'woocommerce-jetpack.php' === basename( WCJ_PLUGIN_FILE ) ) {
125
  $custom_links[] = '<a href="' . esc_url( 'https://booster.io/plus/' ) . '">' . __( 'Unlock all', 'woocommerce-jetpack' ) . '</a>';
126
  }
127
  return array_merge( $custom_links, $links );
includes/{constants → core}/wcj-constants.php RENAMED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce Constants
4
  *
5
- * @version 3.2.0
6
  * @since 2.7.0
7
  * @author Algoritmika Ltd.
8
  */
@@ -78,3 +78,14 @@ if ( ! defined( 'WCJ_SESSION_TYPE' ) ) {
78
  */
79
  define( 'WCJ_SESSION_TYPE', ( 'yes' === get_option( 'wcj_general_enabled', 'no' ) ? get_option( 'wcj_general_advanced_session_type', 'standard' ) : 'standard' ) );
80
  }
 
 
 
 
 
 
 
 
 
 
 
2
  /**
3
  * Booster for WooCommerce Constants
4
  *
5
+ * @version 3.3.0
6
  * @since 2.7.0
7
  * @author Algoritmika Ltd.
8
  */
78
  */
79
  define( 'WCJ_SESSION_TYPE', ( 'yes' === get_option( 'wcj_general_enabled', 'no' ) ? get_option( 'wcj_general_advanced_session_type', 'standard' ) : 'standard' ) );
80
  }
81
+
82
+ if ( ! defined( 'WCJ_VERSION_OPTION' ) ) {
83
+ /**
84
+ * Booster version option name.
85
+ *
86
+ * @version 3.3.0
87
+ * @since 3.3.0
88
+ * @todo (maybe) option should have `wcj_` prefix (however it will be deleted during "Reset", and "Booster was updated to v..." message will show up)
89
+ */
90
+ define( 'WCJ_VERSION_OPTION', ( 'woocommerce-jetpack.php' === basename( WCJ_PLUGIN_FILE ) ? 'booster_for_woocommerce_version' : 'booster_plus_for_woocommerce_version' ) );
91
+ }
includes/core/wcj-functions.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Functions
4
  *
5
- * @version 3.2.4
6
  * @since 3.2.4
7
  * @author Algoritmika Ltd.
8
  */
@@ -10,7 +10,7 @@
10
  if ( ! defined( 'ABSPATH' ) ) exit;
11
 
12
  $wcj_function_files = array(
13
- 'wcj-functions-core.php',
14
  'wcj-functions-debug.php',
15
  'wcj-functions-admin.php',
16
  'wcj-functions-general.php',
2
  /**
3
  * Booster for WooCommerce - Functions
4
  *
5
+ * @version 3.3.0
6
  * @since 3.2.4
7
  * @author Algoritmika Ltd.
8
  */
10
  if ( ! defined( 'ABSPATH' ) ) exit;
11
 
12
  $wcj_function_files = array(
13
+ 'wcj-functions-booster-core.php',
14
  'wcj-functions-debug.php',
15
  'wcj-functions-admin.php',
16
  'wcj-functions-general.php',
includes/core/wcj-loader.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Core - Loader
4
  *
5
- * @version 3.2.4
6
  * @since 3.2.4
7
  * @author Algoritmika Ltd.
8
  */
@@ -27,7 +27,7 @@ load_plugin_textdomain( 'woocommerce-jetpack', false, dirname( plugin_basename(
27
  // Include required core files used in admin and on the frontend
28
 
29
  // Constants
30
- require_once( WCJ_PLUGIN_PATH . '/includes/constants/wcj-constants.php' );
31
 
32
  // Functions
33
  require_once( 'wcj-functions.php' );
2
  /**
3
  * Booster for WooCommerce - Core - Loader
4
  *
5
+ * @version 3.3.0
6
  * @since 3.2.4
7
  * @author Algoritmika Ltd.
8
  */
27
  // Include required core files used in admin and on the frontend
28
 
29
  // Constants
30
+ require_once( 'wcj-constants.php' );
31
 
32
  // Functions
33
  require_once( 'wcj-functions.php' );
includes/core/wcj-modules.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Modules
4
  *
5
- * @version 3.2.4
6
  * @since 3.2.4
7
  * @author Algoritmika Ltd.
8
  */
@@ -22,6 +22,7 @@ $wcj_module_files = array(
22
  'class-wcj-product-custom-info.php',
23
  'class-wcj-product-info.php',
24
  'class-wcj-product-add-to-cart.php',
 
25
  'class-wcj-related-products.php',
26
  'class-wcj-sku.php',
27
  'class-wcj-stock.php',
@@ -109,6 +110,7 @@ $wcj_module_files = array(
109
  'class-wcj-old-slugs.php',
110
  'class-wcj-reports.php',
111
  'class-wcj-wpml.php',
 
112
  'pdf-invoices/submodules/class-wcj-pdf-invoicing-numbering.php',
113
  'pdf-invoices/submodules/class-wcj-pdf-invoicing-templates.php',
114
  'pdf-invoices/submodules/class-wcj-pdf-invoicing-styling.php',
@@ -117,6 +119,7 @@ $wcj_module_files = array(
117
  'pdf-invoices/submodules/class-wcj-pdf-invoicing-page.php',
118
  'pdf-invoices/submodules/class-wcj-pdf-invoicing-emails.php',
119
  'pdf-invoices/submodules/class-wcj-pdf-invoicing-display.php',
 
120
  );
121
 
122
  $this->modules = array();
2
  /**
3
  * Booster for WooCommerce - Modules
4
  *
5
+ * @version 3.3.0
6
  * @since 3.2.4
7
  * @author Algoritmika Ltd.
8
  */
22
  'class-wcj-product-custom-info.php',
23
  'class-wcj-product-info.php',
24
  'class-wcj-product-add-to-cart.php',
25
+ 'class-wcj-add-to-cart-button-visibility.php',
26
  'class-wcj-related-products.php',
27
  'class-wcj-sku.php',
28
  'class-wcj-stock.php',
110
  'class-wcj-old-slugs.php',
111
  'class-wcj-reports.php',
112
  'class-wcj-wpml.php',
113
+ 'class-wcj-modules-by-user-roles.php',
114
  'pdf-invoices/submodules/class-wcj-pdf-invoicing-numbering.php',
115
  'pdf-invoices/submodules/class-wcj-pdf-invoicing-templates.php',
116
  'pdf-invoices/submodules/class-wcj-pdf-invoicing-styling.php',
119
  'pdf-invoices/submodules/class-wcj-pdf-invoicing-page.php',
120
  'pdf-invoices/submodules/class-wcj-pdf-invoicing-emails.php',
121
  'pdf-invoices/submodules/class-wcj-pdf-invoicing-display.php',
122
+ 'pdf-invoices/submodules/class-wcj-pdf-invoicing-advanced.php',
123
  );
124
 
125
  $this->modules = array();
includes/core/wcj-options.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Core - Options
4
  *
5
- * @version 3.2.4
6
  * @since 3.2.4
7
  * @author Algoritmika Ltd.
8
  * @todo (maybe) this only loads Enable, Tools and Reset settings for each module
@@ -11,23 +11,13 @@
11
  if ( ! defined( 'ABSPATH' ) ) exit;
12
 
13
  if ( is_admin() ) {
14
- // Modules statuses
15
- $submodules_classes = array(
16
- 'WCJ_PDF_Invoicing_Display',
17
- 'WCJ_PDF_Invoicing_Emails',
18
- 'WCJ_PDF_Invoicing_Footer',
19
- 'WCJ_PDF_Invoicing_Header',
20
- 'WCJ_PDF_Invoicing_Numbering',
21
- 'WCJ_PDF_Invoicing_Page',
22
- 'WCJ_PDF_Invoicing_Styling',
23
- 'WCJ_PDF_Invoicing_Templates',
24
- );
25
  foreach ( $this->modules as $module ) {
26
- if ( ! in_array( get_class( $module ), $submodules_classes ) ) {
 
27
  $status_settings = $module->add_enable_module_setting( array() );
28
  $this->module_statuses[] = $status_settings[1];
29
  }
30
- if ( get_option( 'booster_for_woocommerce_version' ) === $this->version ) {
31
  continue;
32
  }
33
  $values = $module->get_settings();
@@ -43,8 +33,8 @@ if ( is_admin() ) {
43
  }
44
  }
45
  }
46
- if ( get_option( 'booster_for_woocommerce_version' ) !== $this->version ) {
47
- update_option( 'booster_for_woocommerce_version', $this->version );
48
  add_action( 'admin_notices', 'wcj_admin_notices_version_updated' );
49
  }
50
  }
2
  /**
3
  * Booster for WooCommerce - Core - Options
4
  *
5
+ * @version 3.3.0
6
  * @since 3.2.4
7
  * @author Algoritmika Ltd.
8
  * @todo (maybe) this only loads Enable, Tools and Reset settings for each module
11
  if ( ! defined( 'ABSPATH' ) ) exit;
12
 
13
  if ( is_admin() ) {
 
 
 
 
 
 
 
 
 
 
 
14
  foreach ( $this->modules as $module ) {
15
+ // Modules statuses
16
+ if ( '' == $module->parent_id ) { // i.e. not submodule
17
  $status_settings = $module->add_enable_module_setting( array() );
18
  $this->module_statuses[] = $status_settings[1];
19
  }
20
+ if ( get_option( WCJ_VERSION_OPTION ) === $this->version ) {
21
  continue;
22
  }
23
  $values = $module->get_settings();
33
  }
34
  }
35
  }
36
+ if ( get_option( WCJ_VERSION_OPTION ) !== $this->version ) {
37
+ update_option( WCJ_VERSION_OPTION, $this->version );
38
  add_action( 'admin_notices', 'wcj_admin_notices_version_updated' );
39
  }
40
  }
includes/core/wcj-shortcodes.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Shortcodes
4
  *
5
- * @version 3.2.4
6
  * @since 3.2.4
7
  * @author Algoritmika Ltd.
8
  */
@@ -14,19 +14,19 @@ if ( ! wcj_is_module_enabled( 'general' ) || ( wcj_is_module_enabled( 'general'
14
  include_once( WCJ_PLUGIN_PATH . '/includes/classes/class-wcj-shortcodes.php' );
15
 
16
  $wcj_shortcodes_files = array(
17
- 'class-wcj-shortcodes-general.php',
18
- 'class-wcj-shortcodes-invoices.php',
19
- 'class-wcj-shortcodes-orders.php',
20
- 'class-wcj-shortcodes-order-items.php',
21
- 'class-wcj-shortcodes-products.php',
22
- 'class-wcj-shortcodes-products-crowdfunding.php',
23
- 'class-wcj-shortcodes-products-add-form.php',
24
- 'class-wcj-shortcodes-input-field.php',
25
  );
26
 
27
  $wcj_shortcodes_dir = WCJ_PLUGIN_PATH . '/includes/shortcodes/';
28
- foreach ( $wcj_shortcodes_files as $wcj_shortcodes_file ) {
29
- include_once( $wcj_shortcodes_dir . $wcj_shortcodes_file );
30
  }
31
 
32
  }
2
  /**
3
  * Booster for WooCommerce - Shortcodes
4
  *
5
+ * @version 3.3.0
6
  * @since 3.2.4
7
  * @author Algoritmika Ltd.
8
  */
14
  include_once( WCJ_PLUGIN_PATH . '/includes/classes/class-wcj-shortcodes.php' );
15
 
16
  $wcj_shortcodes_files = array(
17
+ 'general' => 'class-wcj-shortcodes-general.php',
18
+ 'invoices' => 'class-wcj-shortcodes-invoices.php',
19
+ 'orders' => 'class-wcj-shortcodes-orders.php',
20
+ 'order_items' => 'class-wcj-shortcodes-order-items.php',
21
+ 'products' => 'class-wcj-shortcodes-products.php',
22
+ 'products_crowdfunding' => 'class-wcj-shortcodes-products-crowdfunding.php',
23
+ 'products_add_form' => 'class-wcj-shortcodes-products-add-form.php',
24
+ 'input_field' => 'class-wcj-shortcodes-input-field.php',
25
  );
26
 
27
  $wcj_shortcodes_dir = WCJ_PLUGIN_PATH . '/includes/shortcodes/';
28
+ foreach ( $wcj_shortcodes_files as $wcj_shortcodes_file_id => $wcj_shortcodes_file ) {
29
+ $this->shortcodes[ $wcj_shortcodes_file_id ] = include_once( $wcj_shortcodes_dir . $wcj_shortcodes_file );
30
  }
31
 
32
  }
includes/exchange-rates/class-wcj-exchange-rates-crons.php CHANGED
@@ -86,8 +86,8 @@ class WCJ_Exchange_Rates_Crons {
86
 
87
  if ( wcj_is_module_enabled( 'price_by_country' ) ) {
88
  // Currency Pairs - Preparation - Price by Country
89
- if ( 'manual' != apply_filters( 'booster_get_option', 'manual', get_option( 'wcj_price_by_country_auto_exchange_rates', 'manual' ) ) ) {
90
- for ( $i = 1; $i <= apply_filters( 'booster_get_option', 1, get_option( 'wcj_price_by_country_total_groups_number', 1 ) ); $i++ ) {
91
  $currency_to = get_option( 'wcj_price_by_country_exchange_rate_currency_group_' . $i );
92
  $currency_pairs = $this->get_currency_pair( $currency_pairs, $currency_to, 'wcj_price_by_country_exchange_rate_group_' . $i );
93
  }
@@ -96,8 +96,8 @@ class WCJ_Exchange_Rates_Crons {
96
 
97
  if ( wcj_is_module_enabled( 'multicurrency' ) ) {
98
  // Currency Pairs - Preparation - Multicurrency
99
- if ( 'manual' != apply_filters( 'booster_get_option', 'manual', get_option( 'wcj_multicurrency_exchange_rate_update_auto', 'manual' ) ) ) {
100
- for ( $i = 1; $i <= apply_filters( 'booster_get_option', 2, get_option( 'wcj_multicurrency_total_number', 2 ) ); $i++ ) {
101
  $currency_to = get_option( 'wcj_multicurrency_currency_' . $i );
102
  $currency_pairs = $this->get_currency_pair( $currency_pairs, $currency_to, 'wcj_multicurrency_exchange_rate_' . $i );
103
  }
@@ -106,8 +106,8 @@ class WCJ_Exchange_Rates_Crons {
106
 
107
  if ( wcj_is_module_enabled( 'multicurrency_base_price' ) ) {
108
  // Currency Pairs - Preparation - Multicurrency Product Base Price
109
- if ( 'manual' != apply_filters( 'booster_get_option', 'manual', get_option( 'wcj_multicurrency_base_price_exchange_rate_update', 'manual' ) ) ) {
110
- for ( $i = 1; $i <= apply_filters( 'booster_get_option', 1, get_option( 'wcj_multicurrency_base_price_total_number', 1 ) ); $i++ ) {
111
  $currency_to = get_option( 'wcj_multicurrency_base_price_currency_' . $i );
112
  $currency_pairs = $this->get_currency_pair( $currency_pairs, $currency_to, 'wcj_multicurrency_base_price_exchange_rate_' . $i );
113
  }
@@ -116,8 +116,8 @@ class WCJ_Exchange_Rates_Crons {
116
 
117
  if ( wcj_is_module_enabled( 'currency_per_product' ) ) {
118
  // Currency Pairs - Preparation - Currency per Product
119
- if ( 'manual' != apply_filters( 'booster_get_option', 'manual', get_option( 'wcj_currency_per_product_exchange_rate_update', 'manual' ) ) ) {
120
- for ( $i = 1; $i <= apply_filters( 'booster_get_option', 1, get_option( 'wcj_currency_per_product_total_number', 1 ) ); $i++ ) {
121
  $currency_to = get_option( 'wcj_currency_per_product_currency_' . $i );
122
  $currency_pairs = $this->get_currency_pair( $currency_pairs, $currency_to, 'wcj_currency_per_product_exchange_rate_' . $i );
123
  }
@@ -126,7 +126,7 @@ class WCJ_Exchange_Rates_Crons {
126
 
127
  if ( wcj_is_module_enabled( 'payment_gateways_currency' ) ) {
128
  // Currency Pairs - Preparation - Gateway Currency
129
- if ( 'manual' != apply_filters( 'booster_get_option', 'manual', get_option( 'wcj_gateways_currency_exchange_rate_update_auto', 'manual' ) ) ) {
130
  global $woocommerce;
131
  $available_gateways = $woocommerce->payment_gateways->payment_gateways();
132
  foreach ( $available_gateways as $key => $gateway ) {
@@ -145,7 +145,7 @@ class WCJ_Exchange_Rates_Crons {
145
  }
146
 
147
  // Additional currencies (via custom currencies section)
148
- $total_number = apply_filters( 'booster_get_option', 1, get_option( 'wcj_currency_exchange_custom_currencies_total_number', 1 ) );
149
  for ( $i = 1; $i <= $total_number; $i++ ) {
150
  if ( 'disabled' != ( $additional_currency = get_option( 'wcj_currency_exchange_custom_currencies_' . $i, 'disabled' ) ) ) {
151
  $currency_pairs = $this->get_currency_pair( $currency_pairs, $additional_currency, false );
86
 
87
  if ( wcj_is_module_enabled( 'price_by_country' ) ) {
88
  // Currency Pairs - Preparation - Price by Country
89
+ if ( 'manual' != apply_filters( 'booster_option', 'manual', get_option( 'wcj_price_by_country_auto_exchange_rates', 'manual' ) ) ) {
90
+ for ( $i = 1; $i <= apply_filters( 'booster_option', 1, get_option( 'wcj_price_by_country_total_groups_number', 1 ) ); $i++ ) {
91
  $currency_to = get_option( 'wcj_price_by_country_exchange_rate_currency_group_' . $i );
92
  $currency_pairs = $this->get_currency_pair( $currency_pairs, $currency_to, 'wcj_price_by_country_exchange_rate_group_' . $i );
93
  }
96
 
97
  if ( wcj_is_module_enabled( 'multicurrency' ) ) {
98
  // Currency Pairs - Preparation - Multicurrency
99
+ if ( 'manual' != apply_filters( 'booster_option', 'manual', get_option( 'wcj_multicurrency_exchange_rate_update_auto', 'manual' ) ) ) {
100
+ for ( $i = 1; $i <= apply_filters( 'booster_option', 2, get_option( 'wcj_multicurrency_total_number', 2 ) ); $i++ ) {
101
  $currency_to = get_option( 'wcj_multicurrency_currency_' . $i );
102
  $currency_pairs = $this->get_currency_pair( $currency_pairs, $currency_to, 'wcj_multicurrency_exchange_rate_' . $i );
103
  }
106
 
107
  if ( wcj_is_module_enabled( 'multicurrency_base_price' ) ) {
108
  // Currency Pairs - Preparation - Multicurrency Product Base Price
109
+ if ( 'manual' != apply_filters( 'booster_option', 'manual', get_option( 'wcj_multicurrency_base_price_exchange_rate_update', 'manual' ) ) ) {
110
+ for ( $i = 1; $i <= apply_filters( 'booster_option', 1, get_option( 'wcj_multicurrency_base_price_total_number', 1 ) ); $i++ ) {
111
  $currency_to = get_option( 'wcj_multicurrency_base_price_currency_' . $i );
112
  $currency_pairs = $this->get_currency_pair( $currency_pairs, $currency_to, 'wcj_multicurrency_base_price_exchange_rate_' . $i );
113
  }
116
 
117
  if ( wcj_is_module_enabled( 'currency_per_product' ) ) {
118
  // Currency Pairs - Preparation - Currency per Product
119
+ if ( 'manual' != apply_filters( 'booster_option', 'manual', get_option( 'wcj_currency_per_product_exchange_rate_update', 'manual' ) ) ) {
120
+ for ( $i = 1; $i <= apply_filters( 'booster_option', 1, get_option( 'wcj_currency_per_product_total_number', 1 ) ); $i++ ) {
121
  $currency_to = get_option( 'wcj_currency_per_product_currency_' . $i );
122
  $currency_pairs = $this->get_currency_pair( $currency_pairs, $currency_to, 'wcj_currency_per_product_exchange_rate_' . $i );
123
  }
126
 
127
  if ( wcj_is_module_enabled( 'payment_gateways_currency' ) ) {
128
  // Currency Pairs - Preparation - Gateway Currency
129
+ if ( 'manual' != apply_filters( 'booster_option', 'manual', get_option( 'wcj_gateways_currency_exchange_rate_update_auto', 'manual' ) ) ) {
130
  global $woocommerce;
131
  $available_gateways = $woocommerce->payment_gateways->payment_gateways();
132
  foreach ( $available_gateways as $key => $gateway ) {
145
  }
146
 
147
  // Additional currencies (via custom currencies section)
148
+ $total_number = apply_filters( 'booster_option', 1, get_option( 'wcj_currency_exchange_custom_currencies_total_number', 1 ) );
149
  for ( $i = 1; $i <= $total_number; $i++ ) {
150
  if ( 'disabled' != ( $additional_currency = get_option( 'wcj_currency_exchange_custom_currencies_' . $i, 'disabled' ) ) ) {
151
  $currency_pairs = $this->get_currency_pair( $currency_pairs, $additional_currency, false );
includes/export/class-wcj-exporter-orders.php CHANGED
@@ -201,7 +201,7 @@ class WCJ_Exporter_Orders {
201
  }
202
 
203
  // Additional Fields
204
- $total_number = apply_filters( 'booster_get_option', 1, get_option( 'wcj_export_orders_fields_additional_total_number', 1 ) );
205
  for ( $i = 1; $i <= $total_number; $i++ ) {
206
  if ( 'yes' === get_option( 'wcj_export_orders_fields_additional_enabled_' . $i, 'no' ) ) {
207
  $titles[] = get_option( 'wcj_export_orders_fields_additional_title_' . $i, '' );
@@ -272,7 +272,7 @@ class WCJ_Exporter_Orders {
272
  $row = $this->get_export_orders_row( $fields_ids, $order_id, $order, $items, $items_product_input_fields, null, null );
273
 
274
  // Additional Fields
275
- $total_number = apply_filters( 'booster_get_option', 1, get_option( 'wcj_export_orders_fields_additional_total_number', 1 ) );
276
  for ( $i = 1; $i <= $total_number; $i++ ) {
277
  if ( 'yes' === get_option( 'wcj_export_orders_fields_additional_enabled_' . $i, 'no' ) ) {
278
  if ( '' != ( $additional_field_value = get_option( 'wcj_export_orders_fields_additional_value_' . $i, '' ) ) ) {
@@ -315,7 +315,7 @@ class WCJ_Exporter_Orders {
315
  }
316
 
317
  // Additional Fields
318
- $total_number = apply_filters( 'booster_get_option', 1, get_option( 'wcj_export_orders_items_fields_additional_total_number', 1 ) );
319
  for ( $i = 1; $i <= $total_number; $i++ ) {
320
  if ( 'yes' === get_option( 'wcj_export_orders_items_fields_additional_enabled_' . $i, 'no' ) ) {
321
  $titles[] = get_option( 'wcj_export_orders_items_fields_additional_title_' . $i, '' );
@@ -355,7 +355,7 @@ class WCJ_Exporter_Orders {
355
  $row = $this->get_export_orders_row( $fields_ids, $order_id, $order, null, null, $item, $item_id );
356
 
357
  // Additional Fields
358
- $total_number = apply_filters( 'booster_get_option', 1, get_option( 'wcj_export_orders_items_fields_additional_total_number', 1 ) );
359
  for ( $i = 1; $i <= $total_number; $i++ ) {
360
  if ( 'yes' === get_option( 'wcj_export_orders_items_fields_additional_enabled_' . $i, 'no' ) ) {
361
  if ( '' != ( $additional_field_value = get_option( 'wcj_export_orders_items_fields_additional_value_' . $i, '' ) ) ) {
201
  }
202
 
203
  // Additional Fields
204
+ $total_number = apply_filters( 'booster_option', 1, get_option( 'wcj_export_orders_fields_additional_total_number', 1 ) );
205
  for ( $i = 1; $i <= $total_number; $i++ ) {
206
  if ( 'yes' === get_option( 'wcj_export_orders_fields_additional_enabled_' . $i, 'no' ) ) {
207
  $titles[] = get_option( 'wcj_export_orders_fields_additional_title_' . $i, '' );
272
  $row = $this->get_export_orders_row( $fields_ids, $order_id, $order, $items, $items_product_input_fields, null, null );
273
 
274
  // Additional Fields
275
+ $total_number = apply_filters( 'booster_option', 1, get_option( 'wcj_export_orders_fields_additional_total_number', 1 ) );
276
  for ( $i = 1; $i <= $total_number; $i++ ) {
277
  if ( 'yes' === get_option( 'wcj_export_orders_fields_additional_enabled_' . $i, 'no' ) ) {
278
  if ( '' != ( $additional_field_value = get_option( 'wcj_export_orders_fields_additional_value_' . $i, '' ) ) ) {
315
  }
316
 
317
  // Additional Fields
318
+ $total_number = apply_filters( 'booster_option', 1, get_option( 'wcj_export_orders_items_fields_additional_total_number', 1 ) );
319
  for ( $i = 1; $i <= $total_number; $i++ ) {
320
  if ( 'yes' === get_option( 'wcj_export_orders_items_fields_additional_enabled_' . $i, 'no' ) ) {
321
  $titles[] = get_option( 'wcj_export_orders_items_fields_additional_title_' . $i, '' );
355
  $row = $this->get_export_orders_row( $fields_ids, $order_id, $order, null, null, $item, $item_id );
356
 
357
  // Additional Fields
358
+ $total_number = apply_filters( 'booster_option', 1, get_option( 'wcj_export_orders_items_fields_additional_total_number', 1 ) );
359
  for ( $i = 1; $i <= $total_number; $i++ ) {
360
  if ( 'yes' === get_option( 'wcj_export_orders_items_fields_additional_enabled_' . $i, 'no' ) ) {
361
  if ( '' != ( $additional_field_value = get_option( 'wcj_export_orders_items_fields_additional_value_' . $i, '' ) ) ) {
includes/export/class-wcj-exporter-products.php CHANGED
@@ -72,7 +72,7 @@ class WCJ_Exporter_Products {
72
  }
73
 
74
  // Additional Fields
75
- $total_number = apply_filters( 'booster_get_option', 1, get_option( 'wcj_export_products_fields_additional_total_number', 1 ) );
76
  for ( $i = 1; $i <= $total_number; $i++ ) {
77
  if ( 'yes' === get_option( 'wcj_export_products_fields_additional_enabled_' . $i, 'no' ) ) {
78
  $titles[] = get_option( 'wcj_export_products_fields_additional_title_' . $i, '' );
@@ -261,7 +261,7 @@ class WCJ_Exporter_Products {
261
  }
262
 
263
  // Additional Fields
264
- $total_number = apply_filters( 'booster_get_option', 1, get_option( 'wcj_export_products_fields_additional_total_number', 1 ) );
265
  for ( $i = 1; $i <= $total_number; $i++ ) {
266
  if ( 'yes' === get_option( 'wcj_export_products_fields_additional_enabled_' . $i, 'no' ) ) {
267
  if ( '' != ( $additional_field_value = get_option( 'wcj_export_products_fields_additional_value_' . $i, '' ) ) ) {
72
  }
73
 
74
  // Additional Fields
75
+ $total_number = apply_filters( 'booster_option', 1, get_option( 'wcj_export_products_fields_additional_total_number', 1 ) );
76
  for ( $i = 1; $i <= $total_number; $i++ ) {
77
  if ( 'yes' === get_option( 'wcj_export_products_fields_additional_enabled_' . $i, 'no' ) ) {
78
  $titles[] = get_option( 'wcj_export_products_fields_additional_title_' . $i, '' );
261
  }
262
 
263
  // Additional Fields
264
+ $total_number = apply_filters( 'booster_option', 1, get_option( 'wcj_export_products_fields_additional_total_number', 1 ) );
265
  for ( $i = 1; $i <= $total_number; $i++ ) {
266
  if ( 'yes' === get_option( 'wcj_export_products_fields_additional_enabled_' . $i, 'no' ) ) {
267
  if ( '' != ( $additional_field_value = get_option( 'wcj_export_products_fields_additional_value_' . $i, '' ) ) ) {
includes/functions/wcj-functions-admin.php CHANGED
@@ -2,13 +2,76 @@
2
  /**
3
  * Booster for WooCommerce - Functions - Admin
4
  *
5
- * @version 3.2.4
6
  * @since 2.9.0
7
  * @author Algoritmika Ltd.
8
  */
9
 
10
  if ( ! defined( 'ABSPATH' ) ) exit;
11
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
12
  if ( ! function_exists( 'wcj_is_admin_product_edit_page' ) ) {
13
  /**
14
  * wcj_is_admin_product_edit_page.
@@ -28,11 +91,11 @@ if ( ! function_exists( 'wcj_admin_notices_version_updated' ) ) {
28
  /**
29
  * wcj_admin_notices_version_updated.
30
  *
31
- * @version 3.2.4
32
  * @since 2.8.0
33
  */
34
  function wcj_admin_notices_version_updated() {
35
- if ( get_option( 'booster_for_woocommerce_version' ) === WCJ()->version ) {
36
  $class = 'notice notice-success is-dismissible';
37
  $message = sprintf( __( '<strong>Booster for WooCommerce</strong> plugin was successfully updated to version <strong>%s</strong>.', 'woocommerce-jetpack' ), WCJ()->version );
38
  echo sprintf( '<div class="%1$s"><p>%2$s</p></div>', $class, $message );
2
  /**
3
  * Booster for WooCommerce - Functions - Admin
4
  *
5
+ * @version 3.3.0
6
  * @since 2.9.0
7
  * @author Algoritmika Ltd.
8
  */
9
 
10
  if ( ! defined( 'ABSPATH' ) ) exit;
11
 
12
+ if ( ! function_exists( 'wcj_get_module_settings_admin_url' ) ) {
13
+ /**
14
+ * wcj_get_module_settings_admin_url.
15
+ *
16
+ * @version 3.3.0
17
+ * @since 3.3.0
18
+ * @todo use this function where needed
19
+ */
20
+ function wcj_get_module_settings_admin_url( $module_id ) {
21
+ return admin_url( 'admin.php?page=wc-settings&tab=jetpack&wcj-cat=' . wcj_get_module_category( $module_id ) . '&section=' . $module_id );
22
+ }
23
+ }
24
+
25
+ if ( ! function_exists( 'wcj_get_module_category' ) ) {
26
+ /**
27
+ * wcj_get_module_category.
28
+ *
29
+ * @version 3.3.0
30
+ * @since 3.3.0
31
+ * @todo better solution for `global $wcj_modules_cats`
32
+ * @todo use this function where needed (e.g. in `class-wc-settings-jetpack.php`)
33
+ */
34
+ function wcj_get_module_category( $module_id ) {
35
+ global $wcj_modules_cats;
36
+ if ( ! isset( $wcj_modules_cats ) ) {
37
+ $wcj_modules_cats = include( WCJ_PLUGIN_PATH . '/includes/admin/wcj-modules-cats.php' );
38
+ }
39
+ foreach ( $wcj_modules_cats as $cat_id => $cat_data ) {
40
+ if ( ! empty( $cat_data['all_cat_ids'] ) && in_array( $module_id, $cat_data['all_cat_ids'] ) ) {
41
+ return $cat_id;
42
+ }
43
+ }
44
+ return '';
45
+ }
46
+ }
47
+
48
+ if ( ! function_exists( 'wcj_get_product_ids_for_meta_box_options' ) ) {
49
+ /**
50
+ * wcj_get_product_ids_for_meta_box_options.
51
+ *
52
+ * @version 3.3.0
53
+ * @since 3.3.0
54
+ * @todo use this function where needed
55
+ */
56
+ function wcj_get_product_ids_for_meta_box_options( $main_product_id ) {
57
+ $_product = wc_get_product( $main_product_id );
58
+ if ( ! $_product ) {
59
+ return array();
60
+ }
61
+ $products = array();
62
+ if ( $_product->is_type( 'variable' ) ) {
63
+ $available_variations = $_product->get_available_variations();
64
+ foreach ( $available_variations as $variation ) {
65
+ $variation_product = wc_get_product( $variation['variation_id'] );
66
+ $products[ $variation['variation_id'] ] = ' (' . wcj_get_product_formatted_variation( $variation_product, true ) . ')';
67
+ }
68
+ } else {
69
+ $products[ $main_product_id ] = '';
70
+ }
71
+ return $products;
72
+ }
73
+ }
74
+
75
  if ( ! function_exists( 'wcj_is_admin_product_edit_page' ) ) {
76
  /**
77
  * wcj_is_admin_product_edit_page.
91
  /**
92
  * wcj_admin_notices_version_updated.
93
  *
94
+ * @version 3.3.0
95
  * @since 2.8.0
96
  */
97
  function wcj_admin_notices_version_updated() {
98
+ if ( get_option( WCJ_VERSION_OPTION ) === WCJ()->version ) {
99
  $class = 'notice notice-success is-dismissible';
100
  $message = sprintf( __( '<strong>Booster for WooCommerce</strong> plugin was successfully updated to version <strong>%s</strong>.', 'woocommerce-jetpack' ), WCJ()->version );
101
  echo sprintf( '<div class="%1$s"><p>%2$s</p></div>', $class, $message );
includes/functions/wcj-functions-booster-core.php ADDED
@@ -0,0 +1,67 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Booster for WooCommerce - Functions - Booster Core
4
+ *
5
+ * @version 3.3.0
6
+ * @since 2.9.0
7
+ * @author Algoritmika Ltd.
8
+ */
9
+
10
+ if ( ! defined( 'ABSPATH' ) ) exit;
11
+
12
+ if ( ! function_exists( 'wcj_plugin_url' ) ) {
13
+ /**
14
+ * wcj_plugin_url.
15
+ *
16
+ * @version 2.3.0
17
+ * @todo (maybe) add `WCJ_PLUGIN_URL` constant instead
18
+ */
19
+ function wcj_plugin_url() {
20
+ return untrailingslashit( plugin_dir_url( realpath( dirname( __FILE__ ) . '/..' ) ) );
21
+ }
22
+ }
23
+
24
+ if ( ! function_exists( 'wcj_plugin_path' ) ) {
25
+ /**
26
+ * Get the plugin path.
27
+ *
28
+ * @return string
29
+ * @todo use `WCJ_PLUGIN_PATH` constant instead
30
+ */
31
+ function wcj_plugin_path() {
32
+ return untrailingslashit( realpath( plugin_dir_path( __FILE__ ) . '/../..' ) );
33
+ }
34
+ }
35
+
36
+ if ( ! function_exists( 'wcj_is_module_enabled' ) ) {
37
+ /*
38
+ * wcj_is_module_enabled.
39
+ *
40
+ * @version 3.3.0
41
+ * @since 2.4.0
42
+ * @return boolean
43
+ */
44
+ function wcj_is_module_enabled( $module_id ) {
45
+ if ( 'modules_by_user_roles' != $module_id && wcj_is_module_enabled( 'modules_by_user_roles' ) ) {
46
+ global $wcj_modules_by_user_roles_data;
47
+ if ( ! isset( $wcj_modules_by_user_roles_data ) ) {
48
+ if( ! function_exists( 'wp_get_current_user' ) ) {
49
+ require_once( ABSPATH . 'wp-includes/pluggable.php' );
50
+ }
51
+ $current_user = wp_get_current_user();
52
+ $wcj_modules_by_user_roles_data['role'] = ( isset( $current_user->roles ) && is_array( $current_user->roles ) && ! empty( $current_user->roles ) ?
53
+ reset( $current_user->roles ) : 'guest' );
54
+ $wcj_modules_by_user_roles_data['role'] = ( '' != $wcj_modules_by_user_roles_data['role'] ? $wcj_modules_by_user_roles_data['role'] : 'guest' );
55
+ $wcj_modules_by_user_roles_data['modules_incl'] = get_option( 'wcj_modules_by_user_roles_incl_' . $wcj_modules_by_user_roles_data['role'], '' );
56
+ $wcj_modules_by_user_roles_data['modules_excl'] = get_option( 'wcj_modules_by_user_roles_excl_' . $wcj_modules_by_user_roles_data['role'], '' );
57
+ }
58
+ if ( ! empty( $wcj_modules_by_user_roles_data['modules_incl'] ) && ! in_array( $module_id, $wcj_modules_by_user_roles_data['modules_incl'] ) ) {
59
+ return false;
60
+ }
61
+ if ( ! empty( $wcj_modules_by_user_roles_data['modules_excl'] ) && in_array( $module_id, $wcj_modules_by_user_roles_data['modules_excl'] ) ) {
62
+ return false;
63
+ }
64
+ }
65
+ return ( 'yes' === get_option( 'wcj_' . $module_id . '_enabled', 'no' ) );
66
+ }
67
+ }
includes/functions/wcj-functions-core.php CHANGED
@@ -2,45 +2,26 @@
2
  /**
3
  * Booster for WooCommerce - Functions - Core
4
  *
5
- * @version 2.9.0
6
- * @since 2.9.0
7
  * @author Algoritmika Ltd.
8
  */
9
 
10
  if ( ! defined( 'ABSPATH' ) ) exit;
11
 
12
- if ( ! function_exists( 'wcj_plugin_url' ) ) {
13
  /**
14
- * wcj_plugin_url.
15
  *
16
- * @version 2.3.0
 
 
 
17
  */
18
- function wcj_plugin_url() {
19
- return untrailingslashit( plugin_dir_url( realpath( dirname( __FILE__ ) . '/..' ) ) );
20
- }
21
- }
22
-
23
- if ( ! function_exists( 'wcj_plugin_path' ) ) {
24
- /**
25
- * Get the plugin path.
26
- *
27
- * @return string
28
- * @todo use `WCJ_PLUGIN_PATH` constant instead
29
- */
30
- function wcj_plugin_path() {
31
- return untrailingslashit( realpath( plugin_dir_path( __FILE__ ) . '/../..' ) );
32
- }
33
- }
34
-
35
- if ( ! function_exists( 'wcj_is_module_enabled' ) ) {
36
- /*
37
- * wcj_is_module_enabled.
38
- *
39
- * @version 2.9.0
40
- * @since 2.4.0
41
- * @return boolean
42
- */
43
- function wcj_is_module_enabled( $module_id ) {
44
- return ( 'yes' === get_option( 'wcj_' . $module_id . '_enabled', 'no' ) );
45
  }
46
  }
2
  /**
3
  * Booster for WooCommerce - Functions - Core
4
  *
5
+ * @version 3.3.0
6
+ * @since 3.3.0
7
  * @author Algoritmika Ltd.
8
  */
9
 
10
  if ( ! defined( 'ABSPATH' ) ) exit;
11
 
12
+ if ( ! function_exists( 'wcj_is_plugin_active' ) ) {
13
  /**
14
+ * wcj_is_plugin_active.
15
  *
16
+ * @version 2.8.0
17
+ * @since 2.8.0
18
+ * @return bool
19
+ * @todo (maybe) check `.php` file only (i.e. no folder)
20
  */
21
+ function wcj_is_plugin_active( $plugin ) {
22
+ return (
23
+ in_array( $plugin, apply_filters( 'active_plugins', get_option( 'active_plugins', array() ) ) ) ||
24
+ ( is_multisite() && array_key_exists( $plugin, get_site_option( 'active_sitewide_plugins', array() ) ) )
25
+ );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
26
  }
27
  }
includes/functions/wcj-functions-country.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Functions - Country
4
  *
5
- * @version 3.2.0
6
  * @author Algoritmika Ltd.
7
  */
8
 
@@ -400,7 +400,7 @@ if ( ! function_exists( 'wcj_get_currency_countries' ) ) {
400
  * 158 currencies.
401
  * Three-letter currency code (ISO 4217) => Two-letter countries codes (ISO 3166-1 alpha-2).
402
  *
403
- * @version 2.9.0
404
  * @since 2.9.0
405
  */
406
  function wcj_get_currency_countries() {
@@ -421,7 +421,7 @@ if ( ! function_exists( 'wcj_get_currency_countries' ) ) {
421
  'BHD' => array( 'BH' ),
422
  'BDT' => array( 'BD' ),
423
  'BBD' => array( 'BB' ),
424
- 'BYR' => array( 'BY' ),
425
  'BZD' => array( 'BZ' ),
426
  'XOF' => array( 'SN', 'BJ', 'BF', 'ML', 'NE', 'TG' ),
427
  'BMD' => array( 'BM' ),
2
  /**
3
  * Booster for WooCommerce - Functions - Country
4
  *
5
+ * @version 3.3.0
6
  * @author Algoritmika Ltd.
7
  */
8
 
400
  * 158 currencies.
401
  * Three-letter currency code (ISO 4217) => Two-letter countries codes (ISO 3166-1 alpha-2).
402
  *
403
+ * @version 3.3.0
404
  * @since 2.9.0
405
  */
406
  function wcj_get_currency_countries() {
421
  'BHD' => array( 'BH' ),
422
  'BDT' => array( 'BD' ),
423
  'BBD' => array( 'BB' ),
424
+ 'BYN' => array( 'BY' ),
425
  'BZD' => array( 'BZ' ),
426
  'XOF' => array( 'SN', 'BJ', 'BF', 'ML', 'NE', 'TG' ),
427
  'BMD' => array( 'BM' ),
includes/functions/wcj-functions-currencies.php CHANGED
@@ -2,13 +2,15 @@
2
  /**
3
  * Booster for WooCommerce - Functions - Currencies
4
  *
5
- * @version 3.2.4
6
  * @author Algoritmika Ltd.
7
  */
8
 
9
  if ( ! function_exists( 'wcj_get_currencies_array' ) ) {
10
  /**
11
  * wcj_get_currencies_array.
 
 
12
  */
13
  function wcj_get_currencies_array() {
14
  return array(
@@ -28,7 +30,7 @@ if ( ! function_exists( 'wcj_get_currencies_array' ) ) {
28
  array( 'code' => 'BGN', 'symbol' => '&#1083;&#1074;.', 'name' => __( 'Bulgarian Lev', 'woocommerce' ) ),
29
  array( 'code' => 'BHD', 'symbol' => 'BHD', 'name' => __( 'Bahraini dinar', 'woocommerce-jetpack' ) ),
30
  array( 'code' => 'BIF', 'symbol' => 'BIF', 'name' => __( 'Burundi franc', 'woocommerce-jetpack' ) ),
31
- array( 'code' => 'BYR', 'symbol' => 'BYR', 'name' => __( 'Belarusian ruble', 'woocommerce-jetpack' ) ),
32
  array( 'code' => 'BND', 'symbol' => 'BND', 'name' => __( 'Brunei dollar', 'woocommerce-jetpack' ) ),
33
  array( 'code' => 'BOB', 'symbol' => 'BOB', 'name' => __( 'Bolivian boliviano', 'woocommerce-jetpack' ) ),
34
  array( 'code' => 'BRL', 'symbol' => '&#82;&#36;', 'name' => __( 'Brazilian Real', 'woocommerce' ) ),
2
  /**
3
  * Booster for WooCommerce - Functions - Currencies
4
  *
5
+ * @version 3.3.0
6
  * @author Algoritmika Ltd.
7
  */
8
 
9
  if ( ! function_exists( 'wcj_get_currencies_array' ) ) {
10
  /**
11
  * wcj_get_currencies_array.
12
+ *
13
+ * @version 3.3.0
14
  */
15
  function wcj_get_currencies_array() {
16
  return array(
30
  array( 'code' => 'BGN', 'symbol' => '&#1083;&#1074;.', 'name' => __( 'Bulgarian Lev', 'woocommerce' ) ),
31
  array( 'code' => 'BHD', 'symbol' => 'BHD', 'name' => __( 'Bahraini dinar', 'woocommerce-jetpack' ) ),
32
  array( 'code' => 'BIF', 'symbol' => 'BIF', 'name' => __( 'Burundi franc', 'woocommerce-jetpack' ) ),
33
+ array( 'code' => 'BYN', 'symbol' => 'BYN', 'name' => __( 'Belarusian ruble', 'woocommerce-jetpack' ) ),
34
  array( 'code' => 'BND', 'symbol' => 'BND', 'name' => __( 'Brunei dollar', 'woocommerce-jetpack' ) ),
35
  array( 'code' => 'BOB', 'symbol' => 'BOB', 'name' => __( 'Bolivian boliviano', 'woocommerce-jetpack' ) ),
36
  array( 'code' => 'BRL', 'symbol' => '&#82;&#36;', 'name' => __( 'Brazilian Real', 'woocommerce' ) ),
includes/functions/wcj-functions-debug.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Functions - Debug
4
  *
5
- * @version 3.2.4
6
  * @author Algoritmika Ltd.
7
  */
8
 
@@ -17,15 +17,12 @@ if ( ! function_exists( 'wcj_log' ) ) {
17
  /**
18
  * wcj_log.
19
  *
20
- * @version 3.2.4
21
  */
22
  function wcj_log( $message = '' ) {
23
  if ( ! wcj_is_module_enabled( 'admin_tools' ) || ( 'no' === get_option( 'wcj_logging_enabled', 'no' ) && 'no' === get_option( 'wcj_wc_logging_enabled', 'no' ) ) ) {
24
  return;
25
  }
26
- if ( '' == $message ) {
27
- $message = 'CHECKPOINT';
28
- }
29
  if ( is_array( $message ) || is_object( $message ) ) {
30
  $message = print_r( $message, true );
31
  }
2
  /**
3
  * Booster for WooCommerce - Functions - Debug
4
  *
5
+ * @version 3.3.0
6
  * @author Algoritmika Ltd.
7
  */
8
 
17
  /**
18
  * wcj_log.
19
  *
20
+ * @version 3.3.0
21
  */
22
  function wcj_log( $message = '' ) {
23
  if ( ! wcj_is_module_enabled( 'admin_tools' ) || ( 'no' === get_option( 'wcj_logging_enabled', 'no' ) && 'no' === get_option( 'wcj_wc_logging_enabled', 'no' ) ) ) {
24
  return;
25
  }
 
 
 
26
  if ( is_array( $message ) || is_object( $message ) ) {
27
  $message = print_r( $message, true );
28
  }
includes/functions/wcj-functions-exchange-rates.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Functions - Exchange Rates
4
  *
5
- * @version 3.2.4
6
  * @since 2.7.0
7
  * @author Algoritmika Ltd.
8
  */
@@ -13,11 +13,14 @@ if ( ! function_exists( 'wcj_get_saved_exchange_rate' ) ) {
13
  /**
14
  * wcj_get_saved_exchange_rate.
15
  *
16
- * @version 3.2.4
17
  * @since 3.2.4
18
- * @todo `if ( $from == $to ) return 1`
19
  */
20
  function wcj_get_saved_exchange_rate( $from, $to ) {
 
 
 
21
  // Preparing `active_currencies` array
22
  if ( ! isset( WCJ()->modules['currency_exchange_rates']->active_currencies ) ) {
23
  $active_currencies_settings = WCJ()->modules['currency_exchange_rates']->get_all_currencies_exchange_rates_settings();
2
  /**
3
  * Booster for WooCommerce - Functions - Exchange Rates
4
  *
5
+ * @version 3.3.0
6
  * @since 2.7.0
7
  * @author Algoritmika Ltd.
8
  */
13
  /**
14
  * wcj_get_saved_exchange_rate.
15
  *
16
+ * @version 3.3.0
17
  * @since 3.2.4
18
+ * @todo (maybe) need to check if `currency_exchange_rates` module `is_enabled()`
19
  */
20
  function wcj_get_saved_exchange_rate( $from, $to ) {
21
+ if ( $from == $to ) {
22
+ return 1;
23
+ }
24
  // Preparing `active_currencies` array
25
  if ( ! isset( WCJ()->modules['currency_exchange_rates']->active_currencies ) ) {
26
  $active_currencies_settings = WCJ()->modules['currency_exchange_rates']->get_all_currencies_exchange_rates_settings();
includes/functions/wcj-functions-general.php CHANGED
@@ -2,13 +2,129 @@
2
  /**
3
  * Booster for WooCommerce - Functions
4
  *
5
- * @version 3.2.4
6
  * @author Algoritmika Ltd.
7
  * @todo add `wcj_add_actions()` and `wcj_add_filters()`
8
  */
9
 
10
  if ( ! defined( 'ABSPATH' ) ) exit;
11
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
12
  if ( ! function_exists( 'wcj_get_woocommerce_package_rates_module_filter_priority' ) ) {
13
  /**
14
  * wcj_get_woocommerce_package_rates_module_filter_priority.
@@ -350,11 +466,21 @@ if ( ! function_exists( 'wcj_get_left_to_free_shipping' ) ) {
350
  /*
351
  * wcj_get_left_to_free_shipping.
352
  *
353
- * @version 3.2.0
354
  * @since 2.4.4
355
  * @return string
356
  */
357
  function wcj_get_left_to_free_shipping( $content, $multiply_by = 1 ) {
 
 
 
 
 
 
 
 
 
 
358
  if ( '' == $content ) {
359
  $content = __( '%left_to_free% left to free shipping', 'woocommerce-jetpack' );
360
  }
2
  /**
3
  * Booster for WooCommerce - Functions
4
  *
5
+ * @version 3.3.0
6
  * @author Algoritmika Ltd.
7
  * @todo add `wcj_add_actions()` and `wcj_add_filters()`
8
  */
9
 
10
  if ( ! defined( 'ABSPATH' ) ) exit;
11
 
12
+ if ( ! function_exists( 'wcj_get_js_confirmation' ) ) {
13
+ /**
14
+ * wcj_get_js_confirmation.
15
+ *
16
+ * @version 3.3.0
17
+ * @since 3.3.0
18
+ * @todo use where needed
19
+ */
20
+ function wcj_get_js_confirmation() {
21
+ return ' onclick="return confirm(\'' . __( 'Are you sure?', 'woocommerce-jetpack' ) . '\')"';
22
+ }
23
+ }
24
+
25
+ if ( ! function_exists( 'wcj_tcpdf_barcode' ) ) {
26
+ /**
27
+ * wcj_tcpdf_barcode.
28
+ *
29
+ * @version 3.3.0
30
+ * @since 3.3.0
31
+ * @todo `color`
32
+ * @todo `align` (try 'T')
33
+ */
34
+ function wcj_tcpdf_barcode( $atts ) {
35
+ if ( '' === $atts['code'] ) {
36
+ return '';
37
+ }
38
+ if ( '' === $atts['type'] ) {
39
+ $atts['type'] = ( '1D' === $atts['dimension'] ? 'C39' : 'PDF417' );
40
+ }
41
+ if ( 0 === $atts['width'] ) {
42
+ $atts['width'] = ( '1D' === $atts['dimension'] ? 80 : 80 );
43
+ }
44
+ if ( 0 === $atts['height'] ) {
45
+ $atts['height'] = ( '1D' === $atts['dimension'] ? 30 : 80 );
46
+ }
47
+ if ( '1D' === $atts['dimension'] ) {
48
+ $params = array(
49
+ $atts['code'],
50
+ $atts['type'],
51
+ '', // x
52
+ '', // y
53
+ $atts['width'],
54
+ $atts['height'],
55
+ 0.4, // xres
56
+ array( // style
57
+ 'position' => 'S',
58
+ 'border' => false,
59
+ 'padding' => 4,
60
+ 'fgcolor' => array( 0, 0, 0 ),
61
+ 'bgcolor' => array( 255, 255, 255 ),
62
+ 'text' => false,
63
+ ),
64
+ 'N', // align
65
+ );
66
+ } else {
67
+ $params = array(
68
+ $atts['code'],
69
+ $atts['type'],
70
+ '', // x
71
+ '', // y
72
+ $atts['width'],
73
+ $atts['height'],
74
+ array( // style
75
+ 'border' => false,
76
+ 'vpadding' => 'auto',
77
+ 'hpadding' => 'auto',
78
+ 'fgcolor' => array( 0, 0, 0 ),
79
+ 'bgcolor' => array( 255, 255, 255 ),
80
+ 'module_width' => 1, // width of a single module in points
81
+ 'module_height' => 1, // height of a single module in points
82
+ ),
83
+ 'N', // align
84
+ false, // distort
85
+ );
86
+ }
87
+ require_once( WCJ_PLUGIN_PATH . '/includes/lib/tcpdf_min/include/tcpdf_static.php' );
88
+ $params = TCPDF_STATIC::serializeTCPDFtagParameters( $params );
89
+ $method = ( '1D' === $atts['dimension'] ? 'write1DBarcode' : 'write2DBarcode' );
90
+ return '<tcpdf method="' . $method . '" params="' . $params . '" />';
91
+ }
92
+ }
93
+
94
+ if ( ! function_exists( 'wcj_barcode' ) ) {
95
+ /**
96
+ * wcj_barcode.
97
+ *
98
+ * @version 3.3.0
99
+ * @since 3.3.0
100
+ * @todo (maybe) "Barcodes" module
101
+ * @todo (maybe) `getBarcodePNG()`
102
+ */
103
+ function wcj_barcode( $atts ) {
104
+ if ( '' === $atts['code'] ) {
105
+ return '';
106
+ }
107
+ if ( '' === $atts['type'] ) {
108
+ $atts['type'] = ( '1D' === $atts['dimension'] ? 'C39' : 'PDF417' );
109
+ }
110
+ if ( 0 === $atts['width'] ) {
111
+ $atts['width'] = ( '1D' === $atts['dimension'] ? 2 : 10 );
112
+ }
113
+ if ( 0 === $atts['height'] ) {
114
+ $atts['height'] = ( '1D' === $atts['dimension'] ? 30 : 10 );
115
+ }
116
+ if ( '1D' === $atts['dimension'] ) {
117
+ require_once( WCJ_PLUGIN_PATH . '/includes/lib/tcpdf_min/tcpdf_barcodes_1d.php' );
118
+ $barcode = new TCPDFBarcode( $atts['code'], $atts['type'] );
119
+ } else {
120
+ require_once( WCJ_PLUGIN_PATH . '/includes/lib/tcpdf_min/tcpdf_barcodes_2d.php' );
121
+ $barcode = new TCPDF2DBarcode( $atts['code'], $atts['type'] );
122
+ }
123
+ $barcode_array = $barcode->getBarcodeArray();
124
+ return ( ! empty( $barcode_array ) && is_array( $barcode_array ) ? $barcode->getBarcodeHTML( $atts['width'], $atts['height'], $atts['color'] ) : '' );
125
+ }
126
+ }
127
+
128
  if ( ! function_exists( 'wcj_get_woocommerce_package_rates_module_filter_priority' ) ) {
129
  /**
130
  * wcj_get_woocommerce_package_rates_module_filter_priority.
466
  /*
467
  * wcj_get_left_to_free_shipping.
468
  *
469
+ * @version 3.3.0
470
  * @since 2.4.4
471
  * @return string
472
  */
473
  function wcj_get_left_to_free_shipping( $content, $multiply_by = 1 ) {
474
+ if ( function_exists( 'WC' ) && ( WC()->shipping ) && ( $packages = WC()->shipping->get_packages() ) ) {
475
+ foreach ( $packages as $i => $package ) {
476
+ $available_shipping_methods = $package['rates'];
477
+ foreach ( $available_shipping_methods as $available_shipping_method ) {
478
+ if ( 'free_shipping' === $available_shipping_method->get_method_id() ) {
479
+ return do_shortcode( get_option( 'wcj_shipping_left_to_free_info_content_reached', __( 'You have Free delivery', 'woocommerce-jetpack' ) ) );
480
+ }
481
+ }
482
+ }
483
+ }
484
  if ( '' == $content ) {
485
  $content = __( '%left_to_free% left to free shipping', 'woocommerce-jetpack' );
486
  }
includes/functions/wcj-functions-html.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Functions - HTML Functions
4
  *
5
- * @version 2.8.0
6
  * @author Algoritmika Ltd.
7
  */
8
 
@@ -23,7 +23,7 @@ if ( ! function_exists( 'wcj_get_table_html' ) ) {
23
  'columns_classes' => array(),
24
  'columns_styles' => array(),
25
  );
26
- //wp_parse_args( $args, $defaults );
27
  $args = array_merge( $defaults, $args );
28
  extract( $args );
29
  $table_class = ( '' == $table_class ) ? '' : ' class="' . $table_class . '"';
@@ -54,6 +54,8 @@ if ( ! function_exists( 'wcj_get_table_html' ) ) {
54
  if ( ! function_exists( 'wcj_get_option_html' ) ) {
55
  /**
56
  * wcj_get_option_html.
 
 
57
  */
58
  function wcj_get_option_html( $option_type, $option_id, $option_value, $option_description, $option_class ) {
59
 
@@ -70,7 +72,7 @@ if ( ! function_exists( 'wcj_get_option_html' ) ) {
70
  $html .= '<textarea class="' . $option_class . '" id="' . $option_id . '" name="' . $option_id . '">' . $option_value . '</textarea>';
71
  break;
72
  case 'checkbox':
73
- $html .= '<input class="checkbox" type="checkbox" name="' . $option_id . '" id="' . $option_id . '" ' . $is_checked . ' />';
74
  break;
75
  case 'select':
76
  $html .= '<select class="' . $option_class . '" id="' . $option_id . '" name="' . $option_id . '">' . $option_value . '</select>';
@@ -95,7 +97,7 @@ if ( ! function_exists( 'wcj_empty_cart_button_html' ) ) {
95
  ' onclick="return confirm(\'' . get_option( 'wcj_empty_cart_confirmation_text', __( 'Are you sure?', 'woocommerce-jetpack' ) ) . '\')"' : '';
96
  return '<div style="' . get_option( 'wcj_empty_cart_div_style', 'float: right;' ) . '">' .
97
  '<form action="" method="post"><input type="submit" class="button" name="wcj_empty_cart" value="' .
98
- apply_filters( 'booster_get_option', 'Empty Cart', get_option( 'wcj_empty_cart_text', 'Empty Cart' ) ) . '"' . $confirmation_html . '>' .
99
  '</form>' .
100
  '</div>';
101
  }
2
  /**
3
  * Booster for WooCommerce - Functions - HTML Functions
4
  *
5
+ * @version 3.3.0
6
  * @author Algoritmika Ltd.
7
  */
8
 
23
  'columns_classes' => array(),
24
  'columns_styles' => array(),
25
  );
26
+ // wp_parse_args( $args, $defaults );
27
  $args = array_merge( $defaults, $args );
28
  extract( $args );
29
  $table_class = ( '' == $table_class ) ? '' : ' class="' . $table_class . '"';
54
  if ( ! function_exists( 'wcj_get_option_html' ) ) {
55
  /**
56
  * wcj_get_option_html.
57
+ *
58
+ * @version 3.3.0
59
  */
60
  function wcj_get_option_html( $option_type, $option_id, $option_value, $option_description, $option_class ) {
61
 
72
  $html .= '<textarea class="' . $option_class . '" id="' . $option_id . '" name="' . $option_id . '">' . $option_value . '</textarea>';
73
  break;
74
  case 'checkbox':
75
+ $html .= '<input class="checkbox" style="margin-right:5px !important;" type="checkbox" name="' . $option_id . '" id="' . $option_id . '" ' . $is_checked . ' />';
76
  break;
77
  case 'select':
78
  $html .= '<select class="' . $option_class . '" id="' . $option_id . '" name="' . $option_id . '">' . $option_value . '</select>';
97
  ' onclick="return confirm(\'' . get_option( 'wcj_empty_cart_confirmation_text', __( 'Are you sure?', 'woocommerce-jetpack' ) ) . '\')"' : '';
98
  return '<div style="' . get_option( 'wcj_empty_cart_div_style', 'float: right;' ) . '">' .
99
  '<form action="" method="post"><input type="submit" class="button" name="wcj_empty_cart" value="' .
100
+ apply_filters( 'booster_option', 'Empty Cart', get_option( 'wcj_empty_cart_text', 'Empty Cart' ) ) . '"' . $confirmation_html . '>' .
101
  '</form>' .
102
  '</div>';
103
  }
includes/functions/wcj-functions-invoicing.php CHANGED
@@ -286,7 +286,7 @@ if ( ! function_exists( 'wcj_get_enabled_invoice_types' ) ) {
286
  $invoice_types = wcj_get_invoice_types();
287
  $enabled_invoice_types = array();
288
  foreach ( $invoice_types as $k => $invoice_type ) {
289
- $z = ( 0 === $k ) ? wcj_get_invoice_create_on( $invoice_type['id'] ) : apply_filters( 'booster_get_option', '', wcj_get_invoice_create_on( $invoice_type['id'] ) );
290
  if ( empty( $z ) ) {
291
  continue;
292
  }
286
  $invoice_types = wcj_get_invoice_types();
287
  $enabled_invoice_types = array();
288
  foreach ( $invoice_types as $k => $invoice_type ) {
289
+ $z = ( 0 === $k ) ? wcj_get_invoice_create_on( $invoice_type['id'] ) : apply_filters( 'booster_option', '', wcj_get_invoice_create_on( $invoice_type['id'] ) );
290
  if ( empty( $z ) ) {
291
  continue;
292
  }
includes/functions/wcj-functions-price-currency.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Functions - Price and Currency
4
  *
5
- * @version 3.2.4
6
  * @since 2.7.0
7
  * @author Algoritmika Ltd.
8
  */
@@ -146,7 +146,7 @@ if ( ! function_exists( 'wcj_get_currency_exchange_rate_product_base_currency' )
146
  */
147
  function wcj_get_currency_exchange_rate_product_base_currency( $currency_code ) {
148
  $currency_exchange_rate = 1;
149
- $total_number = apply_filters( 'booster_get_option', 1, get_option( 'wcj_multicurrency_base_price_total_number', 1 ) );
150
  for ( $i = 1; $i <= $total_number; $i++ ) {
151
  if ( $currency_code === get_option( 'wcj_multicurrency_base_price_currency_' . $i ) ) {
152
  $currency_exchange_rate = get_option( 'wcj_multicurrency_base_price_exchange_rate_' . $i );
@@ -161,7 +161,7 @@ if ( ! function_exists( 'wcj_price_by_product_base_currency' ) ) {
161
  /**
162
  * wcj_price_by_product_base_currency.
163
  *
164
- * @version 3.1.2
165
  * @since 2.5.6
166
  */
167
  function wcj_price_by_product_base_currency( $price, $product_id ) {
@@ -180,7 +180,7 @@ if ( ! function_exists( 'wcj_price_by_product_base_currency' ) ) {
180
  }
181
  $multicurrency_base_price_currency = get_post_meta( $product_id, '_' . 'wcj_multicurrency_base_price_currency', true );
182
  if ( '' != $multicurrency_base_price_currency ) {
183
- if ( 1 != ( $currency_exchange_rate = wcj_get_currency_exchange_rate_product_base_currency( $multicurrency_base_price_currency ) ) ) {
184
  $_price = $price / $currency_exchange_rate;
185
  if ( 'yes' === get_option( 'wcj_multicurrency_base_price_round_enabled', 'no' ) ) {
186
  $_price = round( $_price, get_option( 'wcj_multicurrency_base_price_round_precision', get_option( 'woocommerce_price_num_decimals' ) ) );
@@ -317,7 +317,7 @@ if ( ! function_exists( 'wcj_update_products_price_by_country_for_single_product
317
  $_product = wc_get_product( $product_id );
318
  if ( $_product->is_type( 'variable' ) ) {
319
  $available_variations = $_product->get_available_variations();
320
- for ( $i = 1; $i <= apply_filters( 'booster_get_option', 1, get_option( 'wcj_price_by_country_total_groups_number', 1 ) ); $i++ ) {
321
  $min_variation_price = PHP_INT_MAX;
322
  $max_variation_price = 0;
323
  foreach ( $available_variations as $variation ) {
@@ -346,7 +346,7 @@ if ( ! function_exists( 'wcj_update_products_price_by_country_for_single_product
346
  if ( wcj_is_module_enabled( 'multicurrency_base_price' ) ) {
347
  $_old_price = wcj_price_by_product_base_currency( $_old_price, $product_id );
348
  }
349
- for ( $i = 1; $i <= apply_filters( 'booster_get_option', 1, get_option( 'wcj_price_by_country_total_groups_number', 1 ) ); $i++ ) {
350
  $price_by_country = wcj_price_by_country( $_old_price, $product_id, $i, WCJ_PRODUCT_GET_PRICE_FILTER );
351
  update_post_meta( $product_id, '_' . 'wcj_price_by_country_' . $i, $price_by_country );
352
  }
@@ -412,7 +412,7 @@ if ( ! function_exists( 'wcj_get_currency_by_country' ) ) {
412
  */
413
  function wcj_get_currency_by_country( $country_code ) {
414
  $currency_code = '';
415
- for ( $i = 1; $i <= apply_filters( 'booster_get_option', 1, get_option( 'wcj_price_by_country_total_groups_number', 1 ) ); $i++ ) {
416
  switch ( get_option( 'wcj_price_by_country_selection', 'comma_list' ) ) {
417
  case 'comma_list':
418
  $country_exchange_rate_group = get_option( 'wcj_price_by_country_exchange_rate_countries_group_' . $i );
@@ -446,7 +446,7 @@ if ( ! function_exists( 'wcj_get_currency_exchange_rate' ) ) {
446
  $currency_exchange_rate = 1;
447
  if ( wcj_is_module_enabled( $module ) ) {
448
  if ( 'multicurrency' === $module ) {
449
- $total_number = apply_filters( 'booster_get_option', 2, get_option( 'wcj_multicurrency_total_number', 2 ) );
450
  for ( $i = 1; $i <= $total_number; $i++ ) {
451
  if ( $currency_code === get_option( 'wcj_multicurrency_currency_' . $i ) ) {
452
  $currency_exchange_rate = get_option( 'wcj_multicurrency_exchange_rate_' . $i );
@@ -479,7 +479,7 @@ if ( ! function_exists( 'wc_get_product_purchase_price' ) ) {
479
  if ( 'yes' === get_option( 'wcj_purchase_price_affiliate_commission_enabled', 'no' ) ) {
480
  $purchase_price += (float) get_post_meta( $product_id, '_' . 'wcj_purchase_price_affiliate_commission', true );
481
  }
482
- $total_number = apply_filters( 'booster_get_option', 1, get_option( 'wcj_purchase_data_custom_price_fields_total_number', 1 ) );
483
  for ( $i = 1; $i <= $total_number; $i++ ) {
484
  if ( '' == get_option( 'wcj_purchase_data_custom_price_field_name_' . $i, '' ) ) {
485
  continue;
@@ -522,7 +522,7 @@ if ( ! function_exists( 'wcj_get_currencies_names_and_symbols' ) ) {
522
  }
523
  if ( wcj_is_module_enabled( 'currency' ) && ( 'all' === $scope || 'custom_only' === $scope ) ) {
524
  // Custom currencies
525
- $custom_currency_total_number = apply_filters( 'booster_get_option', 1, get_option( 'wcj_currency_custom_currency_total_number', 1 ) );
526
  for ( $i = 1; $i <= $custom_currency_total_number; $i++) {
527
  $custom_currency_code = get_option( 'wcj_currency_custom_currency_code_' . $i );
528
  $custom_currency_name = get_option( 'wcj_currency_custom_currency_name_' . $i );
@@ -557,7 +557,7 @@ if ( ! function_exists( 'wcj_get_currency_symbol' ) ) {
557
  $currencies = wcj_get_currencies_names_and_symbols( 'symbols', 'no_custom' );
558
  if ( isset( $currencies[ $currency_code ] ) ) {
559
  if ( wcj_is_module_enabled( 'currency' ) ) {
560
- $return = apply_filters( 'booster_get_option', $currencies[ $currency_code ], get_option( 'wcj_currency_' . $currency_code, $currencies[ $currency_code ] ) );
561
  } else {
562
  $return = $currencies[ $currency_code ];
563
  }
2
  /**
3
  * Booster for WooCommerce - Functions - Price and Currency
4
  *
5
+ * @version 3.3.0
6
  * @since 2.7.0
7
  * @author Algoritmika Ltd.
8
  */
146
  */
147
  function wcj_get_currency_exchange_rate_product_base_currency( $currency_code ) {
148
  $currency_exchange_rate = 1;
149
+ $total_number = apply_filters( 'booster_option', 1, get_option( 'wcj_multicurrency_base_price_total_number', 1 ) );
150
  for ( $i = 1; $i <= $total_number; $i++ ) {
151
  if ( $currency_code === get_option( 'wcj_multicurrency_base_price_currency_' . $i ) ) {
152
  $currency_exchange_rate = get_option( 'wcj_multicurrency_base_price_exchange_rate_' . $i );
161
  /**
162
  * wcj_price_by_product_base_currency.
163
  *
164
+ * @version 3.3.0
165
  * @since 2.5.6
166
  */
167
  function wcj_price_by_product_base_currency( $price, $product_id ) {
180
  }
181
  $multicurrency_base_price_currency = get_post_meta( $product_id, '_' . 'wcj_multicurrency_base_price_currency', true );
182
  if ( '' != $multicurrency_base_price_currency ) {
183
+ if ( 1 != ( $currency_exchange_rate = wcj_get_currency_exchange_rate_product_base_currency( $multicurrency_base_price_currency ) ) && 0 != $currency_exchange_rate ) {
184
  $_price = $price / $currency_exchange_rate;
185
  if ( 'yes' === get_option( 'wcj_multicurrency_base_price_round_enabled', 'no' ) ) {
186
  $_price = round( $_price, get_option( 'wcj_multicurrency_base_price_round_precision', get_option( 'woocommerce_price_num_decimals' ) ) );
317
  $_product = wc_get_product( $product_id );
318
  if ( $_product->is_type( 'variable' ) ) {
319
  $available_variations = $_product->get_available_variations();
320
+ for ( $i = 1; $i <= apply_filters( 'booster_option', 1, get_option( 'wcj_price_by_country_total_groups_number', 1 ) ); $i++ ) {
321
  $min_variation_price = PHP_INT_MAX;
322
  $max_variation_price = 0;
323
  foreach ( $available_variations as $variation ) {
346
  if ( wcj_is_module_enabled( 'multicurrency_base_price' ) ) {
347
  $_old_price = wcj_price_by_product_base_currency( $_old_price, $product_id );
348
  }
349
+ for ( $i = 1; $i <= apply_filters( 'booster_option', 1, get_option( 'wcj_price_by_country_total_groups_number', 1 ) ); $i++ ) {
350
  $price_by_country = wcj_price_by_country( $_old_price, $product_id, $i, WCJ_PRODUCT_GET_PRICE_FILTER );
351
  update_post_meta( $product_id, '_' . 'wcj_price_by_country_' . $i, $price_by_country );
352
  }
412
  */
413
  function wcj_get_currency_by_country( $country_code ) {
414
  $currency_code = '';
415
+ for ( $i = 1; $i <= apply_filters( 'booster_option', 1, get_option( 'wcj_price_by_country_total_groups_number', 1 ) ); $i++ ) {
416
  switch ( get_option( 'wcj_price_by_country_selection', 'comma_list' ) ) {
417
  case 'comma_list':
418
  $country_exchange_rate_group = get_option( 'wcj_price_by_country_exchange_rate_countries_group_' . $i );
446
  $currency_exchange_rate = 1;
447
  if ( wcj_is_module_enabled( $module ) ) {
448
  if ( 'multicurrency' === $module ) {
449
+ $total_number = apply_filters( 'booster_option', 2, get_option( 'wcj_multicurrency_total_number', 2 ) );
450
  for ( $i = 1; $i <= $total_number; $i++ ) {
451
  if ( $currency_code === get_option( 'wcj_multicurrency_currency_' . $i ) ) {
452
  $currency_exchange_rate = get_option( 'wcj_multicurrency_exchange_rate_' . $i );
479
  if ( 'yes' === get_option( 'wcj_purchase_price_affiliate_commission_enabled', 'no' ) ) {
480
  $purchase_price += (float) get_post_meta( $product_id, '_' . 'wcj_purchase_price_affiliate_commission', true );
481
  }
482
+ $total_number = apply_filters( 'booster_option', 1, get_option( 'wcj_purchase_data_custom_price_fields_total_number', 1 ) );
483
  for ( $i = 1; $i <= $total_number; $i++ ) {
484
  if ( '' == get_option( 'wcj_purchase_data_custom_price_field_name_' . $i, '' ) ) {
485
  continue;
522
  }
523
  if ( wcj_is_module_enabled( 'currency' ) && ( 'all' === $scope || 'custom_only' === $scope ) ) {
524
  // Custom currencies
525
+ $custom_currency_total_number = apply_filters( 'booster_option', 1, get_option( 'wcj_currency_custom_currency_total_number', 1 ) );
526
  for ( $i = 1; $i <= $custom_currency_total_number; $i++) {
527
  $custom_currency_code = get_option( 'wcj_currency_custom_currency_code_' . $i );
528
  $custom_currency_name = get_option( 'wcj_currency_custom_currency_name_' . $i );
557
  $currencies = wcj_get_currencies_names_and_symbols( 'symbols', 'no_custom' );
558
  if ( isset( $currencies[ $currency_code ] ) ) {
559
  if ( wcj_is_module_enabled( 'currency' ) ) {
560
+ $return = apply_filters( 'booster_option', $currencies[ $currency_code ], get_option( 'wcj_currency_' . $currency_code, $currencies[ $currency_code ] ) );
561
  } else {
562
  $return = $currencies[ $currency_code ];
563
  }
includes/functions/wcj-functions-products.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Functions - Products
4
  *
5
- * @version 3.2.2
6
  * @since 2.9.0
7
  * @author Algoritmika Ltd.
8
  */
@@ -354,14 +354,14 @@ if ( ! function_exists( 'wcj_is_product_wholesale_enabled_per_product' ) ) {
354
  /**
355
  * wcj_is_product_wholesale_enabled_per_product.
356
  *
357
- * @version 2.5.0
358
  * @since 2.5.0
359
  */
360
  function wcj_is_product_wholesale_enabled_per_product( $product_id ) {
361
  return (
362
  'yes' === get_option( 'wcj_wholesale_price_per_product_enable', 'yes' ) &&
363
  'yes' === get_post_meta( $product_id, '_' . 'wcj_wholesale_price_per_product_enabled', true )
364
- ) ? true : false;
365
  }
366
  }
367
 
@@ -369,7 +369,7 @@ if ( ! function_exists( 'wcj_is_product_wholesale_enabled' ) ) {
369
  /**
370
  * wcj_is_product_wholesale_enabled.
371
  *
372
- * @version 2.5.4
373
  */
374
  function wcj_is_product_wholesale_enabled( $product_id ) {
375
  if ( wcj_is_module_enabled( 'wholesale_price' ) ) {
@@ -378,25 +378,13 @@ if ( ! function_exists( 'wcj_is_product_wholesale_enabled' ) ) {
378
  } else {
379
  $products_to_include_passed = false;
380
  $products_to_include = get_option( 'wcj_wholesale_price_products_to_include', array() );
381
- if ( empty ( $products_to_include ) ) {
382
  $products_to_include_passed = true;
383
- } else {
384
- foreach ( $products_to_include as $id ) {
385
- if ( $product_id == $id ) {
386
- $products_to_include_passed = true;
387
- }
388
- }
389
  }
390
  $products_to_exclude_passed = false;
391
  $products_to_exclude = get_option( 'wcj_wholesale_price_products_to_exclude', array() );
392
- if ( empty ( $products_to_exclude ) ) {
393
  $products_to_exclude_passed = true;
394
- } else {
395
- foreach ( $products_to_exclude as $id ) {
396
- if ( $product_id == $id ) {
397
- $products_to_exclude_passed = false;
398
- }
399
- }
400
  }
401
  return ( $products_to_include_passed && $products_to_exclude_passed );
402
  }
2
  /**
3
  * Booster for WooCommerce - Functions - Products
4
  *
5
+ * @version 3.3.0
6
  * @since 2.9.0
7
  * @author Algoritmika Ltd.
8
  */
354
  /**
355
  * wcj_is_product_wholesale_enabled_per_product.
356
  *
357
+ * @version 3.3.0
358
  * @since 2.5.0
359
  */
360
  function wcj_is_product_wholesale_enabled_per_product( $product_id ) {
361
  return (
362
  'yes' === get_option( 'wcj_wholesale_price_per_product_enable', 'yes' ) &&
363
  'yes' === get_post_meta( $product_id, '_' . 'wcj_wholesale_price_per_product_enabled', true )
364
+ );
365
  }
366
  }
367
 
369
  /**
370
  * wcj_is_product_wholesale_enabled.
371
  *
372
+ * @version 3.3.0
373
  */
374
  function wcj_is_product_wholesale_enabled( $product_id ) {
375
  if ( wcj_is_module_enabled( 'wholesale_price' ) ) {
378
  } else {
379
  $products_to_include_passed = false;
380
  $products_to_include = get_option( 'wcj_wholesale_price_products_to_include', array() );
381
+ if ( empty( $products_to_include ) || in_array( $product_id, $products_to_include ) ) {
382
  $products_to_include_passed = true;
 
 
 
 
 
 
383
  }
384
  $products_to_exclude_passed = false;
385
  $products_to_exclude = get_option( 'wcj_wholesale_price_products_to_exclude', array() );
386
+ if ( empty( $products_to_exclude ) || ! in_array( $product_id, $products_to_exclude ) ) {
387
  $products_to_exclude_passed = true;
 
 
 
 
 
 
388
  }
389
  return ( $products_to_include_passed && $products_to_exclude_passed );
390
  }
includes/functions/wcj-functions-users.php CHANGED
@@ -75,7 +75,7 @@ if ( ! function_exists( 'wcj_is_booster_role_changer_enabled' ) ) {
75
  */
76
  function wcj_is_booster_role_changer_enabled() {
77
  return (
78
- 'yes' === apply_filters( 'booster_get_option', 'no', get_option( 'wcj_general_user_role_changer_enabled', 'no' ) ) &&
79
  wcj_is_user_logged_in() &&
80
  wcj_is_user_role( get_option( 'wcj_general_user_role_changer_enabled_for', array( 'administrator', 'shop_manager' ) ) )
81
  );
75
  */
76
  function wcj_is_booster_role_changer_enabled() {
77
  return (
78
+ 'yes' === apply_filters( 'booster_option', 'no', get_option( 'wcj_general_user_role_changer_enabled', 'no' ) ) &&
79
  wcj_is_user_logged_in() &&
80
  wcj_is_user_role( get_option( 'wcj_general_user_role_changer_enabled_for', array( 'administrator', 'shop_manager' ) ) )
81
  );
includes/gateways/class-wc-gateway-wcj-custom.php CHANGED
@@ -109,8 +109,8 @@ if ( ! function_exists( 'init_wc_gateway_wcj_custom_class' ) ) {
109
  'type' => 'number',
110
  'desc_tip' => __( 'If you want to set minimum order amount (excluding fees) to show this gateway on frontend, enter a number here. Set to 0 to disable.', 'woocommerce-jetpack' ),
111
  'default' => 0,
112
- 'description' => apply_filters( 'booster_get_message', '', 'desc' ),
113
- 'custom_attributes' => apply_filters( 'booster_get_message', '', 'disabled' ),
114
  ),
115
 
116
  'enable_for_methods' => array(
@@ -167,8 +167,8 @@ if ( ! function_exists( 'init_wc_gateway_wcj_custom_class' ) ) {
167
  );
168
 
169
  if ( 1 != $this->id_count ) {
170
- $this->form_fields['enabled']['description'] = apply_filters( 'booster_get_message', '', 'desc' );
171
- $this->form_fields['enabled']['custom_attributes'] = apply_filters( 'booster_get_message', '', 'disabled' );
172
  }
173
  }
174
 
@@ -193,7 +193,7 @@ if ( ! function_exists( 'init_wc_gateway_wcj_custom_class' ) ) {
193
  function is_available() {
194
 
195
  // Check min amount
196
- $min_amount = apply_filters( 'booster_get_option', 0, $this->min_amount );
197
  if ( $min_amount > 0 && isset( WC()->cart->total ) && '' != WC()->cart->total && isset( WC()->cart->fee_total ) ) {
198
  $total_excluding_fees = WC()->cart->total - WC()->cart->fee_total;
199
  if ( $total_excluding_fees < $min_amount )
@@ -389,7 +389,7 @@ if ( ! function_exists( 'init_wc_gateway_wcj_custom_class' ) ) {
389
  * @version 2.5.6
390
  */
391
  function add_wc_gateway_wcj_custom_classes( $methods ) {
392
- $the_number = apply_filters( 'booster_get_option', 1, get_option( 'wcj_custom_payment_gateways_number', 1 ) );
393
  for ( $i = 1; $i <= $the_number; $i++ ) {
394
  $the_method = new WC_Gateway_WCJ_Custom_Template();
395
  $the_method->init( $i );
109
  'type' => 'number',
110
  'desc_tip' => __( 'If you want to set minimum order amount (excluding fees) to show this gateway on frontend, enter a number here. Set to 0 to disable.', 'woocommerce-jetpack' ),
111
  'default' => 0,
112
+ 'description' => apply_filters( 'booster_message', '', 'desc' ),
113
+ 'custom_attributes' => apply_filters( 'booster_message', '', 'disabled' ),
114
  ),
115
 
116
  'enable_for_methods' => array(
167
  );
168
 
169
  if ( 1 != $this->id_count ) {
170
+ $this->form_fields['enabled']['description'] = apply_filters( 'booster_message', '', 'desc' );
171
+ $this->form_fields['enabled']['custom_attributes'] = apply_filters( 'booster_message', '', 'disabled' );
172
  }
173
  }
174
 
193
  function is_available() {
194
 
195
  // Check min amount
196
+ $min_amount = apply_filters( 'booster_option', 0, $this->min_amount );
197
  if ( $min_amount > 0 && isset( WC()->cart->total ) && '' != WC()->cart->total && isset( WC()->cart->fee_total ) ) {
198
  $total_excluding_fees = WC()->cart->total - WC()->cart->fee_total;
199
  if ( $total_excluding_fees < $min_amount )
389
  * @version 2.5.6
390
  */
391
  function add_wc_gateway_wcj_custom_classes( $methods ) {
392
+ $the_number = apply_filters( 'booster_option', 1, get_option( 'wcj_custom_payment_gateways_number', 1 ) );
393
  for ( $i = 1; $i <= $the_number; $i++ ) {
394
  $the_method = new WC_Gateway_WCJ_Custom_Template();
395
  $the_method->init( $i );
includes/input-fields/class-wcj-product-input-fields-core.php CHANGED
@@ -75,7 +75,7 @@ class WCJ_Product_Input_Fields_Core {
75
  return;
76
 
77
  // Save enabled, required, title etc.
78
- $default_total_input_fields = apply_filters( 'booster_get_option', 1, get_option( 'wcj_product_input_fields_local_total_number_default', 1 ) );
79
  $total_input_fields_before_saving = get_post_meta( $post_id, '_' . 'wcj_product_input_fields_local_total_number', true );
80
  $total_input_fields_before_saving = ( '' != $total_input_fields_before_saving ) ? $total_input_fields_before_saving : $default_total_input_fields;
81
  $options = $this->get_options();
@@ -128,15 +128,15 @@ class WCJ_Product_Input_Fields_Core {
128
  $current_post_id = get_the_ID();
129
  $option_name = 'wcj_' . $meta_box_id . '_local_total_number';
130
  // If none total number set - check for the default
131
- if ( ! ( $total_number = apply_filters( 'booster_get_option', 1, get_post_meta( $current_post_id, '_' . $option_name, true ) ) ) )
132
- $total_number = apply_filters( 'booster_get_option', 1, get_option( 'wcj_' . $meta_box_id . '_local_total_number_default', 1 ) );
133
 
134
  // Start html
135
  $html = '';
136
 
137
  // Total number
138
- $is_disabled = apply_filters( 'booster_get_message', '', 'readonly_string' );
139
- $is_disabled_message = apply_filters( 'booster_get_message', '', 'desc' );
140
  $html .= '<table>';
141
  $html .= '<tr>';
142
  $html .= '<th>';
@@ -258,7 +258,7 @@ class WCJ_Product_Input_Fields_Core {
258
  ) {
259
  foreach ( $order->get_items() as $item_key => $item ) {
260
  $product_id = $item['product_id'];
261
- $total_number = apply_filters( 'booster_get_option', 1, $this->get_value( 'wcj_' . 'product_input_fields' . '_' . $this->scope . '_total_number', $product_id, 1 ) );
262
  for ( $i = 1; $i <= $total_number; $i++ ) {
263
  $meta_key = 'wcj_product_input_fields_' . $this->scope . '_' . $i;
264
  if ( ! WCJ_IS_WC_VERSION_BELOW_3 ) {
@@ -287,7 +287,7 @@ class WCJ_Product_Input_Fields_Core {
287
  function hide_custom_input_fields_default_output_in_admin_order( $hidden_metas ) {
288
  $total_number = 0;
289
  if ( 'global' === $this->scope ) {
290
- $total_number = apply_filters( 'booster_get_option', 1, $this->get_value( 'wcj_' . 'product_input_fields' . '_' . $this->scope . '_total_number', 0, 1 ) );
291
  } else {
292
  $max_number_of_fields_for_local = 100;
293
  $total_number = $max_number_of_fields_for_local;
@@ -311,7 +311,7 @@ class WCJ_Product_Input_Fields_Core {
311
  }
312
  echo '<table cellspacing="0" class="display_meta">';
313
  $_product_id = wcj_get_product_id_or_variation_parent_id( $_product );
314
- $total_number = apply_filters( 'booster_get_option', 1, $this->get_value( 'wcj_' . 'product_input_fields' . '_' . $this->scope . '_total_number', $_product_id, 1 ) );
315
  for ( $i = 1; $i <= $total_number; $i++ ) {
316
 
317
  $the_nice_name = $this->get_value( 'wcj_product_input_fields_title_' . $this->scope . '_' . $i, $_product_id, '' );
@@ -353,7 +353,7 @@ class WCJ_Product_Input_Fields_Core {
353
  * @version 3.1.0
354
  */
355
  function validate_product_input_fields_on_add_to_cart( $passed, $product_id ) {
356
- $total_number = apply_filters( 'booster_get_option', 1, $this->get_value( 'wcj_' . 'product_input_fields' . '_' . $this->scope . '_total_number', $product_id, 1 ) );
357
  for ( $i = 1; $i <= $total_number; $i++ ) {
358
 
359
  if ( ! $this->is_enabled( $i, $product_id ) ) {
@@ -423,7 +423,7 @@ class WCJ_Product_Input_Fields_Core {
423
  }
424
  $_product_id = wcj_get_product_id_or_variation_parent_id( $product );
425
  $fields = array();
426
- $total_number = apply_filters( 'booster_get_option', 1, $this->get_value( 'wcj_' . 'product_input_fields' . '_' . $this->scope . '_total_number', $_product_id, 1 ) );
427
  for ( $i = 1; $i <= $total_number; $i++ ) {
428
 
429
  $type = $this->get_value( 'wcj_product_input_fields_type_' . $this->scope . '_' . $i, $_product_id, 'text' );
@@ -610,7 +610,7 @@ class WCJ_Product_Input_Fields_Core {
610
  * @version 3.1.0
611
  */
612
  function add_product_input_fields_to_cart_item_data( $cart_item_data, $product_id, $variation_id ) {
613
- $total_number = apply_filters( 'booster_get_option', 1, $this->get_value( 'wcj_' . 'product_input_fields' . '_' . $this->scope . '_total_number', $product_id, 1 ) );
614
  for ( $i = 1; $i <= $total_number; $i++ ) {
615
  if ( ! $this->is_enabled( $i, $product_id ) ) {
616
  continue;
@@ -637,7 +637,7 @@ class WCJ_Product_Input_Fields_Core {
637
  * get_cart_item_product_input_fields_from_session.
638
  */
639
  function get_cart_item_product_input_fields_from_session( $item, $values, $key ) {
640
- $total_number = apply_filters( 'booster_get_option', 1, $this->get_value( 'wcj_' . 'product_input_fields' . '_' . $this->scope . '_total_number', $item['product_id'], 1 ) );
641
  for ( $i = 1; $i <= $total_number; $i++ ) {
642
  if ( array_key_exists( 'wcj_product_input_fields_' . $this->scope . '_' . $i, $values ) )
643
  $item[ 'wcj_product_input_fields_' . $this->scope . '_' . $i ] = $values[ 'wcj_product_input_fields_' . $this->scope . '_' . $i ];
@@ -651,7 +651,7 @@ class WCJ_Product_Input_Fields_Core {
651
  * @version 3.1.0
652
  */
653
  function add_product_input_fields_to_order_item_name( $name, $item, $is_cart = false ) {
654
- $total_number = apply_filters( 'booster_get_option', 1, $this->get_value( 'wcj_' . 'product_input_fields' . '_' . $this->scope . '_total_number', $item['product_id'], 1 ) );
655
  if ( $total_number < 1 ) {
656
  return $name;
657
  }
@@ -715,7 +715,7 @@ class WCJ_Product_Input_Fields_Core {
715
  * @since 2.9.0
716
  */
717
  function add_product_input_fields_to_cart_item_display_data( $item_data, $item ) {
718
- $total_number = apply_filters( 'booster_get_option', 1, $this->get_value( 'wcj_' . 'product_input_fields' . '_' . $this->scope . '_total_number', $item['product_id'], 1 ) );
719
  if ( $total_number < 1 ) {
720
  return $item_data;
721
  }
@@ -760,7 +760,7 @@ class WCJ_Product_Input_Fields_Core {
760
  * @version 2.5.0
761
  */
762
  function add_product_input_fields_to_order_item_meta( $item_id, $values, $cart_item_key ) {
763
- $total_number = apply_filters( 'booster_get_option', 1, $this->get_value( 'wcj_' . 'product_input_fields' . '_' . $this->scope . '_total_number', $values['product_id'], 1 ) );
764
  for ( $i = 1; $i <= $total_number; $i++ ) {
765
  if ( array_key_exists( 'wcj_product_input_fields_' . $this->scope . '_' . $i , $values ) ) {
766
  $type = $this->get_value( 'wcj_product_input_fields_type_' . $this->scope . '_' . $i, $values['product_id'], '' );
75
  return;
76
 
77
  // Save enabled, required, title etc.
78
+ $default_total_input_fields = apply_filters( 'booster_option', 1, get_option( 'wcj_product_input_fields_local_total_number_default', 1 ) );
79
  $total_input_fields_before_saving = get_post_meta( $post_id, '_' . 'wcj_product_input_fields_local_total_number', true );
80
  $total_input_fields_before_saving = ( '' != $total_input_fields_before_saving ) ? $total_input_fields_before_saving : $default_total_input_fields;
81
  $options = $this->get_options();
128
  $current_post_id = get_the_ID();
129
  $option_name = 'wcj_' . $meta_box_id . '_local_total_number';
130
  // If none total number set - check for the default
131
+ if ( ! ( $total_number = apply_filters( 'booster_option', 1, get_post_meta( $current_post_id, '_' . $option_name, true ) ) ) )
132
+ $total_number = apply_filters( 'booster_option', 1, get_option( 'wcj_' . $meta_box_id . '_local_total_number_default', 1 ) );
133
 
134
  // Start html
135
  $html = '';
136
 
137
  // Total number
138
+ $is_disabled = apply_filters( 'booster_message', '', 'readonly_string' );
139
+ $is_disabled_message = apply_filters( 'booster_message', '', 'desc' );
140
  $html .= '<table>';
141
  $html .= '<tr>';
142
  $html .= '<th>';
258
  ) {
259
  foreach ( $order->get_items() as $item_key => $item ) {
260
  $product_id = $item['product_id'];
261
+ $total_number = apply_filters( 'booster_option', 1, $this->get_value( 'wcj_' . 'product_input_fields' . '_' . $this->scope . '_total_number', $product_id, 1 ) );
262
  for ( $i = 1; $i <= $total_number; $i++ ) {
263
  $meta_key = 'wcj_product_input_fields_' . $this->scope . '_' . $i;
264
  if ( ! WCJ_IS_WC_VERSION_BELOW_3 ) {
287
  function hide_custom_input_fields_default_output_in_admin_order( $hidden_metas ) {
288
  $total_number = 0;
289
  if ( 'global' === $this->scope ) {
290
+ $total_number = apply_filters( 'booster_option', 1, $this->get_value( 'wcj_' . 'product_input_fields' . '_' . $this->scope . '_total_number', 0, 1 ) );
291
  } else {
292
  $max_number_of_fields_for_local = 100;
293
  $total_number = $max_number_of_fields_for_local;
311
  }
312
  echo '<table cellspacing="0" class="display_meta">';
313
  $_product_id = wcj_get_product_id_or_variation_parent_id( $_product );
314
+ $total_number = apply_filters( 'booster_option', 1, $this->get_value( 'wcj_' . 'product_input_fields' . '_' . $this->scope . '_total_number', $_product_id, 1 ) );
315
  for ( $i = 1; $i <= $total_number; $i++ ) {
316
 
317
  $the_nice_name = $this->get_value( 'wcj_product_input_fields_title_' . $this->scope . '_' . $i, $_product_id, '' );
353
  * @version 3.1.0
354
  */
355
  function validate_product_input_fields_on_add_to_cart( $passed, $product_id ) {
356
+ $total_number = apply_filters( 'booster_option', 1, $this->get_value( 'wcj_' . 'product_input_fields' . '_' . $this->scope . '_total_number', $product_id, 1 ) );
357
  for ( $i = 1; $i <= $total_number; $i++ ) {
358
 
359
  if ( ! $this->is_enabled( $i, $product_id ) ) {
423
  }
424
  $_product_id = wcj_get_product_id_or_variation_parent_id( $product );
425
  $fields = array();
426
+ $total_number = apply_filters( 'booster_option', 1, $this->get_value( 'wcj_' . 'product_input_fields' . '_' . $this->scope . '_total_number', $_product_id, 1 ) );
427
  for ( $i = 1; $i <= $total_number; $i++ ) {
428
 
429
  $type = $this->get_value( 'wcj_product_input_fields_type_' . $this->scope . '_' . $i, $_product_id, 'text' );
610
  * @version 3.1.0
611
  */
612
  function add_product_input_fields_to_cart_item_data( $cart_item_data, $product_id, $variation_id ) {
613
+ $total_number = apply_filters( 'booster_option', 1, $this->get_value( 'wcj_' . 'product_input_fields' . '_' . $this->scope . '_total_number', $product_id, 1 ) );
614
  for ( $i = 1; $i <= $total_number; $i++ ) {
615
  if ( ! $this->is_enabled( $i, $product_id ) ) {
616
  continue;
637
  * get_cart_item_product_input_fields_from_session.
638
  */
639
  function get_cart_item_product_input_fields_from_session( $item, $values, $key ) {
640
+ $total_number = apply_filters( 'booster_option', 1, $this->get_value( 'wcj_' . 'product_input_fields' . '_' . $this->scope . '_total_number', $item['product_id'], 1 ) );
641
  for ( $i = 1; $i <= $total_number; $i++ ) {
642
  if ( array_key_exists( 'wcj_product_input_fields_' . $this->scope . '_' . $i, $values ) )
643
  $item[ 'wcj_product_input_fields_' . $this->scope . '_' . $i ] = $values[ 'wcj_product_input_fields_' . $this->scope . '_' . $i ];
651
  * @version 3.1.0
652
  */
653
  function add_product_input_fields_to_order_item_name( $name, $item, $is_cart = false ) {
654
+ $total_number = apply_filters( 'booster_option', 1, $this->get_value( 'wcj_' . 'product_input_fields' . '_' . $this->scope . '_total_number', $item['product_id'], 1 ) );
655
  if ( $total_number < 1 ) {
656
  return $name;
657
  }
715
  * @since 2.9.0
716
  */
717
  function add_product_input_fields_to_cart_item_display_data( $item_data, $item ) {
718
+ $total_number = apply_filters( 'booster_option', 1, $this->get_value( 'wcj_' . 'product_input_fields' . '_' . $this->scope . '_total_number', $item['product_id'], 1 ) );
719
  if ( $total_number < 1 ) {
720
  return $item_data;
721
  }
760
  * @version 2.5.0
761
  */
762
  function add_product_input_fields_to_order_item_meta( $item_id, $values, $cart_item_key ) {
763
+ $total_number = apply_filters( 'booster_option', 1, $this->get_value( 'wcj_' . 'product_input_fields' . '_' . $this->scope . '_total_number', $values['product_id'], 1 ) );
764
  for ( $i = 1; $i <= $total_number; $i++ ) {
765
  if ( array_key_exists( 'wcj_product_input_fields_' . $this->scope . '_' . $i , $values ) ) {
766
  $type = $this->get_value( 'wcj_product_input_fields_type_' . $this->scope . '_' . $i, $values['product_id'], '' );
includes/lib/tcpdf_min/include/barcodes/pdf417.php CHANGED
@@ -744,6 +744,12 @@ class PDF417 {
744
  $maxecl = 8; // starting error level
745
  $maxerrsize = (928 - $numcw); // available codewords for error
746
  while ($maxecl > 0) {
 
 
 
 
 
 
747
  $errsize = (2 << $ecl);
748
  if ($maxerrsize >= $errsize) {
749
  break;
744
  $maxecl = 8; // starting error level
745
  $maxerrsize = (928 - $numcw); // available codewords for error
746
  while ($maxecl > 0) {
747
+ /////////////////////////////
748
+ // Algoritmika
749
+ if ( version_compare( PHP_VERSION, '7.0.0' ) >= 0 && $ecl < 0 ) {
750
+ $ecl = 0;
751
+ }
752
+ /////////////////////////////
753
  $errsize = (2 << $ecl);
754
  if ($maxerrsize >= $errsize) {
755
  break;
includes/pdf-invoices/class-wcj-pdf-invoicing-report-tool.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - PDF Invoicing - Report Tool
4
  *
5
- * @version 3.2.0
6
  * @since 2.2.1
7
  * @author Algoritmika Ltd.
8
  */
@@ -295,24 +295,15 @@ class WCJ_PDF_Invoicing_Report_Tool {
295
  /**
296
  * Invoices Report Data function.
297
  *
298
- * @version 3.2.0
299
  * @since 2.5.7
300
  */
301
  function get_invoices_report_data( $year, $month, $invoice_type_id ) {
302
- $headers = array(
303
- __( 'Document Number', 'woocommerce-jetpack' ),
304
- __( 'Document Date', 'woocommerce-jetpack' ),
305
- __( 'Order ID', 'woocommerce-jetpack' ),
306
- __( 'Customer Country', 'woocommerce-jetpack' ),
307
- __( 'Customer VAT ID', 'woocommerce-jetpack' ),
308
- __( 'Tax %', 'woocommerce-jetpack' ),
309
- __( 'Order Total Tax Excluding', 'woocommerce-jetpack' ),
310
- __( 'Order Taxes', 'woocommerce-jetpack' ),
311
- __( 'Order Total', 'woocommerce-jetpack' ),
312
- __( 'Order Currency', 'woocommerce-jetpack' ),
313
- __( 'Payment Gateway', 'woocommerce-jetpack' ),
314
- __( 'Refunds', 'woocommerce-jetpack' ),
315
- );
316
 
317
  $total_sum = 0;
318
  $total_sum_excl_tax = 0;
@@ -321,6 +312,8 @@ class WCJ_PDF_Invoicing_Report_Tool {
321
  $first_minute = mktime( 0, 0, 0, $month, 1, $year );
322
  $last_minute = mktime( 23, 59, 59, $month, date( 't', $first_minute ), $year );
323
 
 
 
324
  $data = array();
325
  $offset = 0;
326
  $block_size = 512;
@@ -364,36 +357,108 @@ class WCJ_PDF_Invoicing_Report_Tool {
364
  $order_tax = apply_filters( 'wcj_order_total_tax', $the_order->get_total_tax(), $the_order );
365
  $order_total_exlc_tax = $order_total - $order_tax;
366
  $order_total_tax_not_rounded = $the_order->get_cart_tax() + $the_order->get_shipping_tax();
367
- $order_tax_percent = ( 0 == $order_total ) ? 0 : $order_total_tax_not_rounded / $order_total_exlc_tax;
368
 
369
  $total_sum += $order_total;
370
  $total_sum_excl_tax += $order_total_exlc_tax;
371
  $total_tax += $order_tax;
372
 
373
- $order_tax_html = sprintf( '%.2f', $order_tax );
374
-
375
- $data[] = array(
376
- wcj_get_invoice_number( $order_id, $invoice_type_id ),
377
- wcj_get_invoice_date( $order_id, $invoice_type_id, 0, get_option( 'date_format' ) ),
378
- $order_id,
379
- $customer_country,
380
- $customer_vat_id,
381
- sprintf( '%.0f %%', $order_tax_percent * 100 ),
382
- sprintf( '%.2f', $order_total_exlc_tax ),
383
- $order_tax_html,
384
- sprintf( '%.2f', $order_total ),
385
- wcj_get_order_currency( $the_order ),
386
- get_post_meta( $order_id, '_payment_method_title', true ),
387
- $the_order->get_total_refunded(),
388
- );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
389
  }
390
  }
391
  $offset += $block_size;
392
  }
393
 
 
 
394
  return ( ! empty( $data ) ? array_merge( array( $headers ), $data ) : array() );
395
  }
396
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
397
  }
398
 
399
  endif;
2
  /**
3
  * Booster for WooCommerce - PDF Invoicing - Report Tool
4
  *
5
+ * @version 3.3.0
6
  * @since 2.2.1
7
  * @author Algoritmika Ltd.
8
  */
295
  /**
296
  * Invoices Report Data function.
297
  *
298
+ * @version 3.3.0
299
  * @since 2.5.7
300
  */
301
  function get_invoices_report_data( $year, $month, $invoice_type_id ) {
302
+
303
+ $columns = get_option( 'wcj_pdf_invoicing_report_tool_columns', '' );
304
+ if ( empty( $columns ) ) {
305
+ $columns = array_keys( WCJ()->modules['pdf_invoicing_advanced']->get_report_columns() );
306
+ }
 
 
 
 
 
 
 
 
 
307
 
308
  $total_sum = 0;
309
  $total_sum_excl_tax = 0;
312
  $first_minute = mktime( 0, 0, 0, $month, 1, $year );
313
  $last_minute = mktime( 23, 59, 59, $month, date( 't', $first_minute ), $year );
314
 
315
+ $tax_percent_format = '%.' . get_option( 'wcj_pdf_invoicing_report_tool_tax_percent_precision', 0 ) . 'f %%';
316
+
317
  $data = array();
318
  $offset = 0;
319
  $block_size = 512;
357
  $order_tax = apply_filters( 'wcj_order_total_tax', $the_order->get_total_tax(), $the_order );
358
  $order_total_exlc_tax = $order_total - $order_tax;
359
  $order_total_tax_not_rounded = $the_order->get_cart_tax() + $the_order->get_shipping_tax();
360
+ $order_tax_percent = ( 0 == $order_total_exlc_tax ? 0 : $order_total_tax_not_rounded / $order_total_exlc_tax );
361
 
362
  $total_sum += $order_total;
363
  $total_sum_excl_tax += $order_total_exlc_tax;
364
  $total_tax += $order_tax;
365
 
366
+ $order_cart_tax = $the_order->get_cart_tax();
367
+ $order_shipping_tax = $the_order->get_shipping_tax();
368
+ $order_cart_total_excl_tax = 0;
369
+ foreach ( $the_order->get_items() as $item ) {
370
+ $order_cart_total_excl_tax += $item->get_total();
371
+ }
372
+ $order_shipping_total_excl_tax = $the_order->get_shipping_total();
373
+ $order_cart_tax_percent = ( 0 == $order_cart_total_excl_tax ? 0 : $order_cart_tax / $order_cart_total_excl_tax );
374
+ $order_shipping_tax_percent = ( 0 == $order_shipping_total_excl_tax ? 0 : $order_shipping_tax / $order_shipping_total_excl_tax );
375
+
376
+ $row = array();
377
+ foreach ( $columns as $column ) {
378
+ switch ( $column ) {
379
+ case 'document_number':
380
+ $row[] = wcj_get_invoice_number( $order_id, $invoice_type_id );
381
+ break;
382
+ case 'document_date':
383
+ $row[] = wcj_get_invoice_date( $order_id, $invoice_type_id, 0, get_option( 'date_format' ) );
384
+ break;
385
+ case 'order_id':
386
+ $row[] = $order_id;
387
+ break;
388
+ case 'customer_country':
389
+ $row[] = $customer_country;
390
+ break;
391
+ case 'customer_vat_id':
392
+ $row[] = $customer_vat_id;
393
+ break;
394
+ case 'tax_percent':
395
+ $row[] = sprintf( $tax_percent_format, $order_tax_percent * 100 );
396
+ break;
397
+ case 'order_total_tax_excluding':
398
+ $row[] = sprintf( '%.2f', $order_total_exlc_tax );
399
+ break;
400
+ case 'order_taxes':
401
+ $row[] = sprintf( '%.2f', $order_tax );
402
+ break;
403
+ case 'order_cart_total_excl_tax':
404
+ $row[] = sprintf( '%.2f', $order_cart_total_excl_tax );
405
+ break;
406
+ case 'order_cart_tax':
407
+ $row[] = sprintf( '%.2f', $order_cart_tax );
408
+ break;
409
+ case 'order_cart_tax_percent':
410
+ $row[] = sprintf( $tax_percent_format, $order_cart_tax_percent * 100 );
411
+ break;
412
+ case 'order_shipping_total_excl_tax':
413
+ $row[] = sprintf( '%.2f', $order_shipping_total_excl_tax );
414
+ break;
415
+ case 'order_shipping_tax':
416
+ $row[] = sprintf( '%.2f', $order_shipping_tax );
417
+ break;
418
+ case 'order_shipping_tax_percent':
419
+ $row[] = sprintf( $tax_percent_format, $order_shipping_tax_percent * 100 );
420
+ break;
421
+ case 'order_total':
422
+ $row[] = sprintf( '%.2f', $order_total );
423
+ break;
424
+ case 'order_currency':
425
+ $row[] = wcj_get_order_currency( $the_order );
426
+ break;
427
+ case 'payment_gateway':
428
+ $row[] = get_post_meta( $order_id, '_payment_method_title', true );
429
+ break;
430
+ case 'refunds':
431
+ $row[] = $the_order->get_total_refunded();
432
+ break;
433
+ }
434
+ }
435
+ $data[] = $row;
436
  }
437
  }
438
  $offset += $block_size;
439
  }
440
 
441
+ $headers = $this->get_headers( $columns );
442
+
443
  return ( ! empty( $data ) ? array_merge( array( $headers ), $data ) : array() );
444
  }
445
 
446
+ /**
447
+ * get_headers.
448
+ *
449
+ * @version 3.3.0
450
+ * @since 3.3.0
451
+ */
452
+ function get_headers( $columns ) {
453
+ $headers = array();
454
+ $all_headers = WCJ()->modules['pdf_invoicing_advanced']->get_report_columns();
455
+ foreach ( $columns as $column ) {
456
+ $headers[] = $all_headers[ $column ];
457
+ }
458
+ return $headers;
459
+ }
460
+
461
+
462
  }
463
 
464
  endif;
includes/pdf-invoices/submodules/class-wcj-pdf-invoicing-advanced.php ADDED
@@ -0,0 +1,87 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Booster for WooCommerce - PDF Invoicing - Advanced
4
+ *
5
+ * @version 3.3.0
6
+ * @since 3.3.0
7
+ * @author Algoritmika Ltd.
8
+ */
9
+
10
+ if ( ! defined( 'ABSPATH' ) ) exit;
11
+
12
+ if ( ! class_exists( 'WCJ_PDF_Invoicing_Advanced' ) ) :
13
+
14
+ class WCJ_PDF_Invoicing_Advanced extends WCJ_Module {
15
+
16
+ /**
17
+ * Constructor.
18
+ *
19
+ * @version 3.3.0
20
+ * @since 3.3.0
21
+ */
22
+ function __construct() {
23
+ $this->id = 'pdf_invoicing_advanced';
24
+ $this->parent_id = 'pdf_invoicing';
25
+ $this->short_desc = __( 'Advanced', 'woocommerce-jetpack' );
26
+ $this->desc = '';
27
+ parent::__construct( 'submodule' );
28
+ }
29
+
30
+ /**
31
+ * get_report_default_columns.
32
+ *
33
+ * @version 3.3.0
34
+ * @since 3.3.0
35
+ */
36
+ function get_report_default_columns() {
37
+ return array_keys( array(
38
+ 'document_number' => __( 'Document Number', 'woocommerce-jetpack' ),
39
+ 'document_date' => __( 'Document Date', 'woocommerce-jetpack' ),
40
+ 'order_id' => __( 'Order ID', 'woocommerce-jetpack' ),
41
+ 'customer_country' => __( 'Customer Country', 'woocommerce-jetpack' ),
42
+ 'customer_vat_id' => __( 'Customer VAT ID', 'woocommerce-jetpack' ),
43
+ 'tax_percent' => __( 'Tax %', 'woocommerce-jetpack' ),
44
+ 'order_total_tax_excluding' => __( 'Order Total Excl. Tax', 'woocommerce-jetpack' ),
45
+ 'order_taxes' => __( 'Order Taxes', 'woocommerce-jetpack' ),
46
+ 'order_total' => __( 'Order Total', 'woocommerce-jetpack' ),
47
+ 'order_currency' => __( 'Order Currency', 'woocommerce-jetpack' ),
48
+ 'payment_gateway' => __( 'Payment Gateway', 'woocommerce-jetpack' ),
49
+ 'refunds' => __( 'Refunds', 'woocommerce-jetpack' ),
50
+ ) );
51
+ }
52
+
53
+ /**
54
+ * get_report_columns.
55
+ *
56
+ * @version 3.3.0
57
+ * @since 3.3.0
58
+ * @todo (maybe) `order_discount_tax`
59
+ */
60
+ function get_report_columns() {
61
+ return array(
62
+ 'document_number' => __( 'Document Number', 'woocommerce-jetpack' ),
63
+ 'document_date' => __( 'Document Date', 'woocommerce-jetpack' ),
64
+ 'order_id' => __( 'Order ID', 'woocommerce-jetpack' ),
65
+ 'customer_country' => __( 'Customer Country', 'woocommerce-jetpack' ),
66
+ 'customer_vat_id' => __( 'Customer VAT ID', 'woocommerce-jetpack' ),
67
+ 'tax_percent' => __( 'Tax %', 'woocommerce-jetpack' ),
68
+ 'order_total_tax_excluding' => __( 'Order Total Excl. Tax', 'woocommerce-jetpack' ),
69
+ 'order_taxes' => __( 'Order Taxes', 'woocommerce-jetpack' ),
70
+ 'order_cart_total_excl_tax' => __( 'Cart Total Excl. Tax', 'woocommerce-jetpack' ),
71
+ 'order_cart_tax' => __( 'Cart Tax', 'woocommerce-jetpack' ),
72
+ 'order_cart_tax_percent' => __( 'Cart Tax %', 'woocommerce-jetpack' ),
73
+ 'order_shipping_total_excl_tax' => __( 'Shipping Total Excl. Tax', 'woocommerce-jetpack' ),
74
+ 'order_shipping_tax' => __( 'Shipping Tax', 'woocommerce-jetpack' ),
75
+ 'order_shipping_tax_percent' => __( 'Shipping Tax %', 'woocommerce-jetpack' ),
76
+ 'order_total' => __( 'Order Total', 'woocommerce-jetpack' ),
77
+ 'order_currency' => __( 'Order Currency', 'woocommerce-jetpack' ),
78
+ 'payment_gateway' => __( 'Payment Gateway', 'woocommerce-jetpack' ),
79
+ 'refunds' => __( 'Refunds', 'woocommerce-jetpack' ),
80
+ );
81
+ }
82
+
83
+ }
84
+
85
+ endif;
86
+
87
+ return new WCJ_PDF_Invoicing_Advanced();
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 3.2.0
6
  * @author Algoritmika Ltd.
7
  */
8
 
@@ -276,48 +276,52 @@ class WCJ_PDF_Invoicing_Display extends WCJ_Module {
276
  /**
277
  * create_invoices_meta_box.
278
  *
279
- * @version 3.2.0
280
  * @since 2.8.0
281
  */
282
  function create_invoices_meta_box() {
283
  $_order = wc_get_order();
284
  $order_id = wcj_get_order_id( $_order );
285
  $invoice_types = wcj_get_enabled_invoice_types();
286
- foreach ( $invoice_types as $invoice_type ) {
287
- $table_data = array();
288
- $the_number = '';
289
- if ( wcj_is_invoice_created( $order_id, $invoice_type['id'] ) ) {
290
- // "Document (View)" link
291
- $query_args = array( 'order_id' => $order_id, 'invoice_type_id' => $invoice_type['id'], 'get_invoice' => '1', );
292
- if ( 'yes' === get_option( 'wcj_invoicing_' . $invoice_type['id'] . '_save_as_enabled', 'no' ) ) {
293
- $query_args['save_pdf_invoice'] = '1';
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
294
  }
295
- $the_url = add_query_arg( $query_args, remove_query_arg( array ( 'create_invoice_for_order_id', 'delete_invoice_for_order_id' ) ) );
296
- $the_name = __( 'View', 'woocommerce-jetpack' );
297
- $the_invoice = wcj_get_invoice( $order_id, $invoice_type['id'] );
298
- $the_number = ' [#' . $the_invoice->get_invoice_number() . ']';
299
- $view_link = '<a href="' . $the_url . '">' . $the_name . '</a>';
300
- // "Delete" link
301
- $query_args = array( 'delete_invoice_for_order_id' => $order_id, 'invoice_type_id' => $invoice_type['id'] );
302
- $the_url = add_query_arg( $query_args, remove_query_arg( 'create_invoice_for_order_id' ) );
303
- $the_name = __( 'Delete', 'woocommerce-jetpack' );
304
- $actions = array( $view_link . ' | ' . '<a class="wcj_need_confirmation" href="' . $the_url . '">' . $the_name . '</a>' );
305
- } else {
306
- // "Create" link
307
- $query_args = array( 'create_invoice_for_order_id' => $order_id, 'invoice_type_id' => $invoice_type['id'] );
308
- $the_url = add_query_arg( $query_args, remove_query_arg( 'delete_invoice_for_order_id' ) );
309
- $the_name = __( 'Create', 'woocommerce-jetpack' );
310
- $actions = array( '<a class="wcj_need_confirmation" href="' . $the_url . '">' . $the_name . '</a>' );
311
- }
312
- $maybe_toolptip = '';
313
- $_hooks = wcj_get_invoice_create_on( $invoice_type['id'] );
314
- if ( in_array( 'woocommerce_order_partially_refunded_notification', $_hooks ) ) {
315
- $maybe_toolptip = wc_help_tip( __( 'In case of partial refund, you need to reload the page to see created document in this meta box.', 'woocommerce-jetpack' ), true );
316
  }
317
- $table_data[] = array( '<span class="dashicons dashicons-media-default" style="color:' . $invoice_type['color'] . ';"></span>' . ' ' .
318
- $invoice_type['title'] . $the_number . $maybe_toolptip );
319
- $table_data[] = $actions;
320
- echo '<p>' . wcj_get_table_html( $table_data, array( 'table_class' => 'widefat striped' ) ) . '</p>';
321
  }
322
  }
323
 
2
  /**
3
  * Booster for WooCommerce - PDF Invoicing - Display
4
  *
5
+ * @version 3.3.0
6
  * @author Algoritmika Ltd.
7
  */
8
 
276
  /**
277
  * create_invoices_meta_box.
278
  *
279
+ * @version 3.3.0
280
  * @since 2.8.0
281
  */
282
  function create_invoices_meta_box() {
283
  $_order = wc_get_order();
284
  $order_id = wcj_get_order_id( $_order );
285
  $invoice_types = wcj_get_enabled_invoice_types();
286
+ if ( empty( $invoice_types ) ) {
287
+ echo '<p style="font-style:italic;">' . __( 'You have no document types enabled.', 'woocommerce-jetpack' ) . '</p>';
288
+ } else {
289
+ foreach ( $invoice_types as $invoice_type ) {
290
+ $table_data = array();
291
+ $the_number = '';
292
+ if ( wcj_is_invoice_created( $order_id, $invoice_type['id'] ) ) {
293
+ // "Document (View)" link
294
+ $query_args = array( 'order_id' => $order_id, 'invoice_type_id' => $invoice_type['id'], 'get_invoice' => '1', );
295
+ if ( 'yes' === get_option( 'wcj_invoicing_' . $invoice_type['id'] . '_save_as_enabled', 'no' ) ) {
296
+ $query_args['save_pdf_invoice'] = '1';
297
+ }
298
+ $the_url = add_query_arg( $query_args, remove_query_arg( array ( 'create_invoice_for_order_id', 'delete_invoice_for_order_id' ) ) );
299
+ $the_name = __( 'View', 'woocommerce-jetpack' );
300
+ $the_invoice = wcj_get_invoice( $order_id, $invoice_type['id'] );
301
+ $the_number = ' [#' . $the_invoice->get_invoice_number() . ']';
302
+ $view_link = '<a href="' . $the_url . '">' . $the_name . '</a>';
303
+ // "Delete" link
304
+ $query_args = array( 'delete_invoice_for_order_id' => $order_id, 'invoice_type_id' => $invoice_type['id'] );
305
+ $the_url = add_query_arg( $query_args, remove_query_arg( 'create_invoice_for_order_id' ) );
306
+ $the_name = __( 'Delete', 'woocommerce-jetpack' );
307
+ $actions = array( $view_link . ' | ' . '<a class="wcj_need_confirmation" href="' . $the_url . '">' . $the_name . '</a>' );
308
+ } else {
309
+ // "Create" link
310
+ $query_args = array( 'create_invoice_for_order_id' => $order_id, 'invoice_type_id' => $invoice_type['id'] );
311
+ $the_url = add_query_arg( $query_args, remove_query_arg( 'delete_invoice_for_order_id' ) );
312
+ $the_name = __( 'Create', 'woocommerce-jetpack' );
313
+ $actions = array( '<a class="wcj_need_confirmation" href="' . $the_url . '">' . $the_name . '</a>' );
314
  }
315
+ $maybe_toolptip = '';
316
+ $_hooks = wcj_get_invoice_create_on( $invoice_type['id'] );
317
+ if ( in_array( 'woocommerce_order_partially_refunded_notification', $_hooks ) ) {
318
+ $maybe_toolptip = wc_help_tip( __( 'In case of partial refund, you need to reload the page to see created document in this meta box.', 'woocommerce-jetpack' ), true );
319
+ }
320
+ $table_data[] = array( '<span class="dashicons dashicons-media-default" style="color:' . $invoice_type['color'] . ';"></span>' . ' ' .
321
+ $invoice_type['title'] . $the_number . $maybe_toolptip );
322
+ $table_data[] = $actions;
323
+ echo '<p>' . wcj_get_table_html( $table_data, array( 'table_class' => 'widefat striped' ) ) . '</p>';
 
 
 
 
 
 
 
 
 
 
 
 
324
  }
 
 
 
 
325
  }
326
  }
327
 
includes/price-by-country/class-wcj-price-by-country-core.php CHANGED
@@ -263,7 +263,7 @@ class WCJ_Price_by_Country_Core {
263
  }
264
 
265
  // Get the country group id - go through all the groups, first found group is returned
266
- for ( $i = 1; $i <= apply_filters( 'booster_get_option', 1, get_option( 'wcj_price_by_country_total_groups_number', 1 ) ); $i++ ) {
267
  switch ( get_option( 'wcj_price_by_country_selection', 'comma_list' ) ) {
268
  case 'comma_list':
269
  $country_exchange_rate_group = get_option( 'wcj_price_by_country_exchange_rate_countries_group_' . $i );
263
  }
264
 
265
  // Get the country group id - go through all the groups, first found group is returned
266
+ for ( $i = 1; $i <= apply_filters( 'booster_option', 1, get_option( 'wcj_price_by_country_total_groups_number', 1 ) ); $i++ ) {
267
  switch ( get_option( 'wcj_price_by_country_selection', 'comma_list' ) ) {
268
  case 'comma_list':
269
  $country_exchange_rate_group = get_option( 'wcj_price_by_country_exchange_rate_countries_group_' . $i );
includes/price-by-country/class-wcj-price-by-country-group-generator.php CHANGED
@@ -71,7 +71,7 @@ class WCJ_Price_By_Country_Group_Generator {
71
  if ( isset( $_POST['save'] ) ) {
72
  return;
73
  }
74
- if ( /* ! is_admin() || */ ! wcj_is_user_role( 'administrator' ) || 1 === apply_filters( 'booster_get_option', 1, '' ) ) {
75
  $wcj_notice = __( 'Create All Country Groups Failed.', 'woocommerce-jetpack' );
76
  return;
77
  }
71
  if ( isset( $_POST['save'] ) ) {
72
  return;
73
  }
74
+ if ( /* ! is_admin() || */ ! wcj_is_user_role( 'administrator' ) || 1 === apply_filters( 'booster_option', 1, '' ) ) {
75
  $wcj_notice = __( 'Create All Country Groups Failed.', 'woocommerce-jetpack' );
76
  return;
77
  }
includes/price-by-country/class-wcj-price-by-country-local.php CHANGED
@@ -2,8 +2,10 @@
2
  /**
3
  * Booster for WooCommerce - Price by Country - Local
4
  *
5
- * @version 2.4.4
6
- * @author Algoritmika Ltd.
 
 
7
  */
8
 
9
  if ( ! defined( 'ABSPATH' ) ) exit;
@@ -108,7 +110,7 @@ class WCJ_Price_by_Country_Local {
108
  * get_total_country_groups_number.
109
  */
110
  function get_total_country_groups_number() {
111
- return apply_filters( 'booster_get_option', 1, get_option( 'wcj_price_by_country_total_groups_number', 1 ) );
112
  }
113
 
114
  /**
@@ -137,7 +139,7 @@ class WCJ_Price_by_Country_Local {
137
 
138
  array(
139
  'id' => 'wcj_' . $meta_box_id . '_make_empty_price_' . $this->scope . '_',
140
- 'title' => __( 'Make empty price', 'woocommerce' ),
141
  'type' => 'checkbox',
142
  'default' => 'off',
143
  ),
@@ -156,8 +158,9 @@ class WCJ_Price_by_Country_Local {
156
  if ( isset( $_POST[ $option['id'] . $i . $variation_id_addon ] ) ) {
157
  update_post_meta( $post_id, '_' . $option['id'] . $i, $_POST[ $option['id'] . $i . $variation_id_addon ] );
158
  }
159
- elseif ( 'checkbox' === $option['type'] )
160
  update_post_meta( $post_id, '_' . $option['id'] . $i, 'off' );
 
161
  }
162
  }
163
  }
@@ -229,7 +232,7 @@ class WCJ_Price_by_Country_Local {
229
  /**
230
  * get_all_options_html.
231
  *
232
- * @version 2.4.4
233
  */
234
  function get_all_options_html( $simple_or_variable, $current_post_id, $total_number, $variation_id_addon = '' ) {
235
  $html = '';
@@ -240,64 +243,41 @@ class WCJ_Price_by_Country_Local {
240
  $html .= '<div>';
241
  }
242
 
243
- //if ( 'simple' == $simple_or_variable ) {
244
- $html .= '<p>';
245
- $html .= '<strong>';
246
- $html .= __( 'Country Group Nr.', 'woocommerce-jetpack' ) . ' ' . $i;
247
- $html .= ': ';
248
- switch ( get_option( 'wcj_price_by_country_selection', 'comma_list' ) ) {
249
- case 'comma_list':
250
- $html .= get_option( 'wcj_price_by_country_exchange_rate_countries_group_' . $i );
251
- break;
252
- case 'multiselect':
253
- $html .= implode( ',', get_option( 'wcj_price_by_country_countries_group_' . $i ) );
254
- break;
255
- case 'chosen_select':
256
- $html .= implode( ',', get_option( 'wcj_price_by_country_countries_group_chosen_select_' . $i ) );
257
- break;
258
- }
259
- $html .= '</strong>';
260
- $html .= '</p>';
261
- //}
262
- //elseif ( 'variable' == $simple_or_variable ) {
263
- // $html .= '<tr>';
264
- //}
265
 
266
  foreach ( $options as $option ) {
267
-
268
- // $option_id = $option['id'] . $i . $variation_id_addon;
269
  $option_id = $option['id'] . $i;
270
-
271
- if ( 'simple' == $simple_or_variable ) {
272
- $html .= '<p class="form-field ' . $option_id . $variation_id_addon . '_field">';
273
- } else {
274
- $column_position = 'full';
275
- if ( 'checkbox' != $option['type'] ) {
276
- $column_position = ( false !== strpos( $option['id'], '_regular_price_' ) ) ? 'first' : 'last';
277
- }
278
- $html .= '<p class="form-row form-row-' . $column_position . '">';
279
  }
280
- $group_currency_code = get_option( 'wcj_price_by_country_exchange_rate_currency_group_' . $i );
281
- $currency_code_html = ( 'checkbox' != $option['type'] ) ? ' (' . wcj_get_currency_symbol( $group_currency_code ) . ')' : '';
282
- $html .= '<label for="' . $option_id . $variation_id_addon . '">' . $option['title'] . $currency_code_html . '</label>';
283
- //}
284
- //elseif ( 'variable' == $simple_or_variable ) {
285
- // $html .= '<td>';
286
- //}
287
-
288
  $html .= $this->get_option_field_html( $current_post_id, $option_id, $option, $variation_id_addon );
289
-
290
- //if ( 'simple' == $simple_or_variable ) {
291
- $html .= '</p>';
292
- //}
293
- //elseif ( 'variable' == $simple_or_variable ) {
294
- // $html .= '</td>';
295
- //}
296
  }
297
 
298
- //if ( 'variable' == $simple_or_variable ) {
299
- // $html .= '</tr>';
300
- //}
301
  if ( 'variable' == $simple_or_variable ) {
302
  $html .= '</div>';
303
  }
2
  /**
3
  * Booster for WooCommerce - Price by Country - Local
4
  *
5
+ * @version 3.3.0
6
+ * @author Algoritmika Ltd.
7
+ * @todo clean up
8
+ * @todo (maybe) remove this and leave only standard meta box option (i.e. only `'meta_box' === get_option( 'wcj_price_by_country_local_options_style', 'inline' )`)
9
  */
10
 
11
  if ( ! defined( 'ABSPATH' ) ) exit;
110
  * get_total_country_groups_number.
111
  */
112
  function get_total_country_groups_number() {
113
+ return apply_filters( 'booster_option', 1, get_option( 'wcj_price_by_country_total_groups_number', 1 ) );
114
  }
115
 
116
  /**
139
 
140
  array(
141
  'id' => 'wcj_' . $meta_box_id . '_make_empty_price_' . $this->scope . '_',
142
+ 'title' => __( 'Make empty price', 'woocommerce-jetpack' ),
143
  'type' => 'checkbox',
144
  'default' => 'off',
145
  ),
158
  if ( isset( $_POST[ $option['id'] . $i . $variation_id_addon ] ) ) {
159
  update_post_meta( $post_id, '_' . $option['id'] . $i, $_POST[ $option['id'] . $i . $variation_id_addon ] );
160
  }
161
+ elseif ( 'checkbox' === $option['type'] ) {
162
  update_post_meta( $post_id, '_' . $option['id'] . $i, 'off' );
163
+ }
164
  }
165
  }
166
  }
232
  /**
233
  * get_all_options_html.
234
  *
235
+ * @version 3.3.0
236
  */
237
  function get_all_options_html( $simple_or_variable, $current_post_id, $total_number, $variation_id_addon = '' ) {
238
  $html = '';
243
  $html .= '<div>';
244
  }
245
 
246
+ $countries = '';
247
+ switch ( get_option( 'wcj_price_by_country_selection', 'comma_list' ) ) {
248
+ case 'comma_list':
249
+ $countries .= get_option( 'wcj_price_by_country_exchange_rate_countries_group_' . $i );
250
+ break;
251
+ case 'multiselect':
252
+ $countries .= implode( ',', get_option( 'wcj_price_by_country_countries_group_' . $i ) );
253
+ break;
254
+ case 'chosen_select':
255
+ $countries .= implode( ',', get_option( 'wcj_price_by_country_countries_group_chosen_select_' . $i ) );
256
+ break;
257
+ }
258
+ $admin_title = get_option( 'wcj_price_by_country_countries_group_admin_title_' . $i, __( 'Group', 'woocommerce-jetpack' ) . ' #' . $i );
259
+ $html .= '<details style="float: left; border-top: 1px dashed #cccccc; width: 100%; padding-top: 10px;">' .
260
+ '<summary style="font-weight:bold;">' . $admin_title . '</summary><p>' . $countries . '</p>' .
261
+ '</details>';
 
 
 
 
 
 
262
 
263
  foreach ( $options as $option ) {
 
 
264
  $option_id = $option['id'] . $i;
265
+ if ( 'simple' == $simple_or_variable ) {
266
+ $html .= '<p class="form-field ' . $option_id . $variation_id_addon . '_field">';
267
+ } else {
268
+ $column_position = 'full';
269
+ if ( 'checkbox' != $option['type'] ) {
270
+ $column_position = ( false !== strpos( $option['id'], '_regular_price_' ) ) ? 'first' : 'last';
 
 
 
271
  }
272
+ $html .= '<p class="form-row form-row-' . $column_position . '">';
273
+ }
274
+ $group_currency_code = get_option( 'wcj_price_by_country_exchange_rate_currency_group_' . $i );
275
+ $currency_code_html = ( 'checkbox' != $option['type'] ) ? ' (' . wcj_get_currency_symbol( $group_currency_code ) . ')' : '';
276
+ $html .= '<label for="' . $option_id . $variation_id_addon . '">' . $option['title'] . $currency_code_html . '</label>';
 
 
 
277
  $html .= $this->get_option_field_html( $current_post_id, $option_id, $option, $variation_id_addon );
278
+ $html .= '</p>';
 
 
 
 
 
 
279
  }
280
 
 
 
 
281
  if ( 'variable' == $simple_or_variable ) {
282
  $html .= '</div>';
283
  }
includes/price-by-country/wcj-country-currency.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce Country Currency functions
4
  *
5
- * @version 2.9.0
6
  * @author Algoritmika Ltd.
7
  */
8
 
@@ -12,7 +12,7 @@ if ( ! function_exists( 'wcj_get_yahoo_exchange_rates_supported_currency' ) ) {
12
  /**
13
  * wcj_get_yahoo_exchange_rates_supported_currency.
14
  *
15
- * @version 2.3.9
16
  */
17
  function wcj_get_yahoo_exchange_rates_supported_currency() {
18
  return array(
@@ -26,7 +26,7 @@ if ( ! function_exists( 'wcj_get_yahoo_exchange_rates_supported_currency' ) ) {
26
  'VEF' => true,
27
  'GEL' => true,
28
  'ISK' => true,
29
- 'BYR' => true,
30
  'THB' => true,
31
  'MXV' => true,
32
  'TND' => true,
@@ -234,7 +234,7 @@ if ( ! function_exists( 'wcj_get_country_currency' ) ) {
234
  /**
235
  * wcj_get_country_currency.
236
  *
237
- * @version 2.4.4
238
  */
239
  function wcj_get_country_currency() {
240
  return array(
@@ -268,7 +268,7 @@ if ( ! function_exists( 'wcj_get_country_currency' ) ) {
268
  'BH' => 'BHD',
269
  'BD' => 'BDT',
270
  'BB' => 'BBD',
271
- 'BY' => 'BYR',
272
  'BE' => 'EUR',
273
  'BZ' => 'BZD',
274
  'BJ' => 'XOF',
2
  /**
3
  * Booster for WooCommerce Country Currency functions
4
  *
5
+ * @version 3.3.0
6
  * @author Algoritmika Ltd.
7
  */
8
 
12
  /**
13
  * wcj_get_yahoo_exchange_rates_supported_currency.
14
  *
15
+ * @version 3.3.0
16
  */
17
  function wcj_get_yahoo_exchange_rates_supported_currency() {
18
  return array(
26
  'VEF' => true,
27
  'GEL' => true,
28
  'ISK' => true,
29
+ 'BYN' => true,
30
  'THB' => true,
31
  'MXV' => true,
32
  'TND' => true,
234
  /**
235
  * wcj_get_country_currency.
236
  *
237
+ * @version 3.3.0
238
  */
239
  function wcj_get_country_currency() {
240
  return array(
268
  'BH' => 'BHD',
269
  'BD' => 'BDT',
270
  'BB' => 'BBD',
271
+ 'BY' => 'BYN',
272
  'BE' => 'EUR',
273
  'BZ' => 'BZD',
274
  'BJ' => 'XOF',
includes/reports/class-wcj-currency-reports.php CHANGED
@@ -45,19 +45,19 @@ class WCJ_Currency_Reports {
45
  $currency_symbols[ $the_current_code ] = $the_current_code;
46
  $currency_symbols[ get_woocommerce_currency() ] = get_woocommerce_currency();
47
  if ( wcj_is_module_enabled( 'price_by_country' ) ) {
48
- for ( $i = 1; $i <= apply_filters( 'booster_get_option', 1, get_option( 'wcj_price_by_country_total_groups_number', 1 ) ); $i++ ) {
49
  $the_code = get_option( 'wcj_price_by_country_exchange_rate_currency_group_' . $i );
50
  $currency_symbols[ $the_code ] = $the_code;
51
  }
52
  }
53
  if ( wcj_is_module_enabled( 'multicurrency' ) ) {
54
- for ( $i = 1; $i <= apply_filters( 'booster_get_option', 2, get_option( 'wcj_multicurrency_total_number', 2 ) ); $i++ ) {
55
  $the_code = get_option( 'wcj_multicurrency_currency_' . $i );
56
  $currency_symbols[ $the_code ] = $the_code;
57
  }
58
  }
59
  /* if ( wcj_is_module_enabled( 'multicurrency_base_price' ) ) {
60
- for ( $i = 1; $i <= apply_filters( 'booster_get_option', 1, get_option( 'wcj_multicurrency_base_price_total_number', 1 ) ); $i++ ) {
61
  $the_code = get_option( 'wcj_multicurrency_base_price_currency_' . $i );
62
  $currency_symbols[ $the_code ] = $the_code;
63
  }
45
  $currency_symbols[ $the_current_code ] = $the_current_code;
46
  $currency_symbols[ get_woocommerce_currency() ] = get_woocommerce_currency();
47
  if ( wcj_is_module_enabled( 'price_by_country' ) ) {
48
+ for ( $i = 1; $i <= apply_filters( 'booster_option', 1, get_option( 'wcj_price_by_country_total_groups_number', 1 ) ); $i++ ) {
49
  $the_code = get_option( 'wcj_price_by_country_exchange_rate_currency_group_' . $i );
50
  $currency_symbols[ $the_code ] = $the_code;
51
  }
52
  }
53
  if ( wcj_is_module_enabled( 'multicurrency' ) ) {
54
+ for ( $i = 1; $i <= apply_filters( 'booster_option', 2, get_option( 'wcj_multicurrency_total_number', 2 ) ); $i++ ) {
55
  $the_code = get_option( 'wcj_multicurrency_currency_' . $i );
56
  $currency_symbols[ $the_code ] = $the_code;
57
  }
58
  }
59
  /* if ( wcj_is_module_enabled( 'multicurrency_base_price' ) ) {
60
+ for ( $i = 1; $i <= apply_filters( 'booster_option', 1, get_option( 'wcj_multicurrency_base_price_total_number', 1 ) ); $i++ ) {
61
  $the_code = get_option( 'wcj_multicurrency_base_price_currency_' . $i );
62
  $currency_symbols[ $the_code ] = $the_code;
63
  }
includes/reports/countries/wcj-country-sets.php CHANGED
@@ -2,14 +2,19 @@
2
  /**
3
  * Booster for WooCommerce Country Sets
4
  *
5
- * @version 2.4.7
6
  * @author Algoritmika Ltd.
 
 
 
 
 
7
  */
8
 
9
  return array(
10
 
11
  'Africa' => array(
12
- 'AO', 'BF', 'BI', 'BJ', 'BW', 'CD', 'CF', 'CG', 'CI', 'CM', 'CV', 'DJ', 'DZ', 'EG', 'EH', 'ER', 'ET', 'GA', 'GH', 'GM', 'GN', 'GQ', 'GW', 'YT', 'KE', 'KM', 'LY', 'LR', 'LS', 'MA', 'MG', 'ML', 'MR', 'MU', 'MW', 'MZ', 'NA', 'NE', 'NG', 'RE', 'RW', 'SC', 'SD', 'SH', 'SL', 'SN', 'SO', 'ST', 'SZ', 'TD', 'TG', 'TN', 'TZ', 'UG', 'ZA', 'ZM', 'ZW',
13
  ),
14
 
15
  'Asia' => array(
2
  /**
3
  * Booster for WooCommerce Country Sets
4
  *
5
+ * @version 3.3.0
6
  * @author Algoritmika Ltd.
7
+ * @todo recheck if all countries are included in sets; recheck for overlapping sets
8
+ * @todo move to `wcj-functions-country.php`
9
+ * @todo use in "Price by Country" module for automatic group creation
10
+ * @todo add translations (`__`)
11
+ * @todo clean up
12
  */
13
 
14
  return array(
15
 
16
  'Africa' => array(
17
+ 'AO', 'BF', 'BI', 'BJ', 'BW', 'CD', 'CF', 'CG', 'CI', 'CM', 'CV', 'DJ', 'DZ', 'EG', 'EH', 'ER', 'ET', 'GA', 'GH', 'GM', 'GN', 'GQ', 'GW', 'YT', 'KE', 'KM', 'LY', 'LR', 'LS', 'MA', 'MG', 'ML', 'MR', 'MU', 'MW', 'MZ', 'NA', 'NE', 'NG', 'RE', 'RW', 'SC', 'SD', 'SH', 'SL', 'SN', 'SO', 'ST', 'SZ', 'TD', 'TG', 'TN', 'TZ', 'UG', 'ZA', 'ZM', 'ZW', 'TF',
18
  ),
19
 
20
  'Asia' => array(
includes/reports/wcj-class-reports-customers.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Reports - Customers
4
  *
5
- * @version 2.2.0
6
  * @author Algoritmika Ltd.
7
  */
8
 
@@ -12,7 +12,6 @@ if ( ! class_exists( 'WCJ_Reports_Customers' ) ) :
12
 
13
  class WCJ_Reports_Customers {
14
 
15
- /** @var array Ccountry groups (sets). */
16
  public $country_sets;
17
 
18
  /**
@@ -35,8 +34,9 @@ class WCJ_Reports_Customers {
35
  // Get customers
36
  $customers = get_users( 'role=customer&orderby=registered&order=DESC' );
37
  $total_customers = count( $customers );
38
- if ( $total_customers < 1 )
39
  return '<h5>' . __( 'No customers found.', 'woocommerce-jetpack' ) . '</h5>';
 
40
 
41
  // Count data
42
  $the_data = $this->get_data( $customers, $report_type );
@@ -44,13 +44,13 @@ class WCJ_Reports_Customers {
44
  // Get HTML
45
  $html = $this->get_html( $the_data, $total_customers, $report_type );
46
 
47
- /*$no_sales_countries = array();
 
48
  foreach( WC_Countries::get_countries() as $country_code => $country_name ) {
49
  if ( ! isset( $the_data[ $country_code ] ) ) $no_sales_countries[] = $country_code;// . ' - ' . $country_name;
50
- }*/
51
-
52
- //return $html . count( $no_sales_countries ) . ': ' . implode( '<br>', $no_sales_countries );
53
- //return $html . implode( ', ', $no_sales_countries );
54
 
55
  return $html;
56
  }
@@ -63,8 +63,8 @@ class WCJ_Reports_Customers {
63
  foreach ( $customers as $customer ) {
64
 
65
  // Get country (billing or shipping)
66
- $user_meta = get_user_meta( $customer->ID );
67
- $billing_country = isset( $user_meta['billing_country'][0] ) ? $user_meta['billing_country'][0] : '';
68
  $shipping_country = isset( $user_meta['shipping_country'][0] ) ? $user_meta['shipping_country'][0] : '';
69
  $customer_country = ( '' == $billing_country ) ? $shipping_country : $billing_country;
70
  // If available - change to country set instead
@@ -75,14 +75,17 @@ class WCJ_Reports_Customers {
75
  }
76
  }
77
  // N/A
78
- if ( '' == $customer_country )
79
- $customer_country = 'Non Available';
 
80
 
81
  if ( 'all_countries' === $report_type ) {
82
  // Counter
83
- if ( ! isset( $result[ $customer_country ]['customer_counter'] ) ) $result[ $customer_country ]['customer_counter'] = 0;
 
 
84
  $result[ $customer_country ]['customer_counter']++;
85
- } else {//if ( 'single_country' === $report_type ) {
86
  if ( ! isset( $result[ $customer_country ]['total_spent'] ) ) {
87
  $result[ $customer_country ]['total_spent'] = array(
88
  array(
@@ -93,20 +96,18 @@ class WCJ_Reports_Customers {
93
  ),
94
  );
95
  }
96
-
97
  $customer_total_spent = wc_get_customer_total_spent( $customer->ID );
98
- //if ( '' != $customer_total_spent ) {
99
  $result[ $customer_country ]['total_spent'][] = array(
100
  $customer->data->display_name,
101
  $customer->data->user_email,
102
  $customer_total_spent,
103
  $customer->data->user_registered,
104
- );
105
- //}
106
  }
107
  }
108
  if ( 'all_countries' === $report_type ) {
109
- //arsort( $result );
110
  uasort( $result, array( $this, 'custom_sort_for_data' ) );
111
  }
112
  return $result;
@@ -116,22 +117,24 @@ class WCJ_Reports_Customers {
116
  * custom_sort_for_data.
117
  */
118
  function custom_sort_for_data( $a, $b ) {
119
- if ( $a['customer_counter'] == $b['customer_counter'] ) return 0;
 
 
120
  return ( $a['customer_counter'] > $b['customer_counter'] ) ? -1 : 1;
121
  }
122
 
123
  /**
124
  * get_data function.
 
 
125
  */
126
  function get_html( $data, $total_customers, $report_type = 'all_countries' ) {
127
-
128
  $html = '';
129
-
130
  if ( 'all_countries' === $report_type ) {
131
  $html .= '<h5>' . __( 'Total customers', 'woocommerce-jetpack' ) . ': ' . $total_customers . '</h5>';
132
  $html .= '<table class="widefat" style="width:100% !important;"><tbody>';
133
  $html .= '<tr>';
134
- $html .= '<th></th>';//'<th>' . __( 'Country Flag', 'woocommerce-jetpack' ) . '</th>';
135
  $html .= '<th>' . __( 'Country Code', 'woocommerce-jetpack' ) . '</th>';
136
  $html .= '<th>' . __( 'Customers Count', 'woocommerce-jetpack' ) . '</th>';
137
  $html .= '<th>' . __( 'Percent of total', 'woocommerce-jetpack' ) . '</th>';
@@ -147,20 +150,18 @@ class WCJ_Reports_Customers {
147
  $html .= ( 2 == strlen( $country_code ) ) ? '<td>' . $country_code_link . '</td>' : '<td>' . $country_code . '</td>' ;
148
  $html .= '<td>' . $result . '</td>';
149
  $html .= ( 0 != $total_customers ) ? '<td>' . number_format( ( $result / $total_customers ) * 100, 2 ) . '%' . '</td>' : '<td></td>';
150
- $country_flag_img = '<img src="' . plugins_url() . '/' . 'woocommerce-jetpack' . '/assets/images/flag-icons/' . strtolower( $country_code ) . '.png" title="' . wcj_get_country_name_by_code( $country_code ) . '">';
151
- $country_flag_img_link = '<a href="' . add_query_arg( array ( 'country' => $country_code ) ) . '">' . $country_flag_img . ' ' . wcj_get_country_name_by_code( $country_code ) . '</a>';
 
152
  $html .= ( 2 == strlen( $country_code ) ) ? '<td>' . $country_flag_img_link . '</td>' : '<td></td>';
153
  $html .= '</tr>';
154
  }
155
  $html .= '</tbody></table>';
156
-
157
- } else {//if ( 'single_country' === $report_type ) {
158
  $country_code = $report_type;
159
  $html .= '<h5>' . __( 'Report for:', 'woocommerce-jetpack' ) . ' ' . wcj_get_country_name_by_code( $country_code ) . ' [' . $country_code . ']' . '</h5>';
160
  $html .= ( 2 == strlen( $country_code ) ) ? wcj_get_table_html( $data[ $country_code ]['total_spent'], array( 'table_class' => 'widefat', ) ) : '';
161
-
162
  }
163
-
164
  return $html;
165
  }
166
  }
2
  /**
3
  * Booster for WooCommerce - Reports - Customers
4
  *
5
+ * @version 3.3.0
6
  * @author Algoritmika Ltd.
7
  */
8
 
12
 
13
  class WCJ_Reports_Customers {
14
 
 
15
  public $country_sets;
16
 
17
  /**
34
  // Get customers
35
  $customers = get_users( 'role=customer&orderby=registered&order=DESC' );
36
  $total_customers = count( $customers );
37
+ if ( $total_customers < 1 ) {
38
  return '<h5>' . __( 'No customers found.', 'woocommerce-jetpack' ) . '</h5>';
39
+ }
40
 
41
  // Count data
42
  $the_data = $this->get_data( $customers, $report_type );
44
  // Get HTML
45
  $html = $this->get_html( $the_data, $total_customers, $report_type );
46
 
47
+ /*
48
+ $no_sales_countries = array();
49
  foreach( WC_Countries::get_countries() as $country_code => $country_name ) {
50
  if ( ! isset( $the_data[ $country_code ] ) ) $no_sales_countries[] = $country_code;// . ' - ' . $country_name;
51
+ }
52
+ return $html . count( $no_sales_countries ) . ': ' . implode( '<br>', $no_sales_countries );
53
+ */
 
54
 
55
  return $html;
56
  }
63
  foreach ( $customers as $customer ) {
64
 
65
  // Get country (billing or shipping)
66
+ $user_meta = get_user_meta( $customer->ID );
67
+ $billing_country = isset( $user_meta['billing_country'][0] ) ? $user_meta['billing_country'][0] : '';
68
  $shipping_country = isset( $user_meta['shipping_country'][0] ) ? $user_meta['shipping_country'][0] : '';
69
  $customer_country = ( '' == $billing_country ) ? $shipping_country : $billing_country;
70
  // If available - change to country set instead
75
  }
76
  }
77
  // N/A
78
+ if ( '' == $customer_country ) {
79
+ $customer_country = __( 'Non Available', 'woocommerce-jetpack' );
80
+ }
81
 
82
  if ( 'all_countries' === $report_type ) {
83
  // Counter
84
+ if ( ! isset( $result[ $customer_country ]['customer_counter'] ) ) {
85
+ $result[ $customer_country ]['customer_counter'] = 0;
86
+ }
87
  $result[ $customer_country ]['customer_counter']++;
88
+ } else { // single country
89
  if ( ! isset( $result[ $customer_country ]['total_spent'] ) ) {
90
  $result[ $customer_country ]['total_spent'] = array(
91
  array(
96
  ),
97
  );
98
  }
 
99
  $customer_total_spent = wc_get_customer_total_spent( $customer->ID );
100
+ // if ( '' != $customer_total_spent ) {
101
  $result[ $customer_country ]['total_spent'][] = array(
102
  $customer->data->display_name,
103
  $customer->data->user_email,
104
  $customer_total_spent,
105
  $customer->data->user_registered,
106
+ );
107
+ // }
108
  }
109
  }
110
  if ( 'all_countries' === $report_type ) {
 
111
  uasort( $result, array( $this, 'custom_sort_for_data' ) );
112
  }
113
  return $result;
117
  * custom_sort_for_data.
118
  */
119
  function custom_sort_for_data( $a, $b ) {
120
+ if ( $a['customer_counter'] == $b['customer_counter'] ) {
121
+ return 0;
122
+ }
123
  return ( $a['customer_counter'] > $b['customer_counter'] ) ? -1 : 1;
124
  }
125
 
126
  /**
127
  * get_data function.
128
+ *
129
+ * @version 3.3.0
130
  */
131
  function get_html( $data, $total_customers, $report_type = 'all_countries' ) {
 
132
  $html = '';
 
133
  if ( 'all_countries' === $report_type ) {
134
  $html .= '<h5>' . __( 'Total customers', 'woocommerce-jetpack' ) . ': ' . $total_customers . '</h5>';
135
  $html .= '<table class="widefat" style="width:100% !important;"><tbody>';
136
  $html .= '<tr>';
137
+ $html .= '<th></th>';
138
  $html .= '<th>' . __( 'Country Code', 'woocommerce-jetpack' ) . '</th>';
139
  $html .= '<th>' . __( 'Customers Count', 'woocommerce-jetpack' ) . '</th>';
140
  $html .= '<th>' . __( 'Percent of total', 'woocommerce-jetpack' ) . '</th>';
150
  $html .= ( 2 == strlen( $country_code ) ) ? '<td>' . $country_code_link . '</td>' : '<td>' . $country_code . '</td>' ;
151
  $html .= '<td>' . $result . '</td>';
152
  $html .= ( 0 != $total_customers ) ? '<td>' . number_format( ( $result / $total_customers ) * 100, 2 ) . '%' . '</td>' : '<td></td>';
153
+ $country_flag_img = wcj_get_country_flag_by_code( $country_code );
154
+ $country_flag_img_link = '<a href="' . add_query_arg( array ( 'country' => $country_code ) ) . '">' .
155
+ $country_flag_img . ' ' . wcj_get_country_name_by_code( $country_code ) . '</a>';
156
  $html .= ( 2 == strlen( $country_code ) ) ? '<td>' . $country_flag_img_link . '</td>' : '<td></td>';
157
  $html .= '</tr>';
158
  }
159
  $html .= '</tbody></table>';
160
+ } else { // single country
 
161
  $country_code = $report_type;
162
  $html .= '<h5>' . __( 'Report for:', 'woocommerce-jetpack' ) . ' ' . wcj_get_country_name_by_code( $country_code ) . ' [' . $country_code . ']' . '</h5>';
163
  $html .= ( 2 == strlen( $country_code ) ) ? wcj_get_table_html( $data[ $country_code ]['total_spent'], array( 'table_class' => 'widefat', ) ) : '';
 
164
  }
 
165
  return $html;
166
  }
167
  }
includes/settings/meta-box/wcj-settings-meta-box-add-to-cart-button-visibility.php ADDED
@@ -0,0 +1,51 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Booster for WooCommerce - Settings Meta Box - Add to Cart Button Visibility
4
+ *
5
+ * @version 3.3.0
6
+ * @since 3.3.0
7
+ * @author Algoritmika Ltd.
8
+ */
9
+
10
+ if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
11
+
12
+ return array(
13
+ array(
14
+ 'name' => 'wcj_add_to_cart_button_disable',
15
+ 'default' => 'no',
16
+ 'type' => 'select',
17
+ 'options' => array(
18
+ 'yes' => __( 'Hide', 'woocommerce-jetpack' ),
19
+ 'no' => __( 'Show', 'woocommerce-jetpack' ),
20
+ ),
21
+ 'title' => __( 'Single Product Page', 'woocommerce-jetpack' ),
22
+ ),
23
+ array(
24
+ 'name' => 'wcj_add_to_cart_button_disable_content',
25
+ 'default' => '',
26
+ 'type' => 'textarea',
27
+ 'title' => '',
28
+ 'css' => 'width:100%;',
29
+ 'tooltip' => __( 'Content to replace add to cart button on single product page.', 'woocommerce-jetpack' ) . ' ' .
30
+ __( 'You can use HTML and/or shortcodes here.', 'woocommerce-jetpack' ),
31
+ ),
32
+ array(
33
+ 'name' => 'wcj_add_to_cart_button_loop_disable',
34
+ 'default' => 'no',
35
+ 'type' => 'select',
36
+ 'options' => array(
37
+ 'yes' => __( 'Hide', 'woocommerce-jetpack' ),
38
+ 'no' => __( 'Show', 'woocommerce-jetpack' ),
39
+ ),
40
+ 'title' => __( 'Category/Archives', 'woocommerce-jetpack' ),
41
+ ),
42
+ array(
43
+ 'name' => 'wcj_add_to_cart_button_loop_disable_content',
44
+ 'default' => '',
45
+ 'type' => 'textarea',
46
+ 'title' => '',
47
+ 'css' => 'width:100%;',
48
+ 'tooltip' => __( 'Content to replace add to cart button on category/archives.', 'woocommerce-jetpack' ) . ' ' .
49
+ __( 'You can use HTML and/or shortcodes here.', 'woocommerce-jetpack' ),
50
+ ),
51
+ );
includes/settings/meta-box/wcj-settings-meta-box-admin-tools.php ADDED
@@ -0,0 +1,39 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Booster for WooCommerce - Settings Meta Box - Admin Tools
4
+ *
5
+ * @version 3.3.0
6
+ * @since 3.3.0
7
+ * @author Algoritmika Ltd.
8
+ */
9
+
10
+ if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
11
+
12
+ $products = wcj_get_product_ids_for_meta_box_options( get_the_ID() );
13
+ $settings = array();
14
+ foreach ( $products as $product_id => $desc ) {
15
+ $settings = array_merge( $settings, array(
16
+ array(
17
+ 'type' => 'title',
18
+ 'title' => sprintf( __( 'Product ID: %s', 'woocommerce-jetpack' ), $product_id ) . $desc,
19
+ 'css' => 'background-color:#cddc39;color:black;',
20
+ ),
21
+ array(
22
+ 'name' => '_regular_price' . '_' . $product_id,
23
+ 'default' => '',
24
+ 'type' => 'price',
25
+ 'title' => __( 'Regular price', 'woocommerce' ) . ' (' . get_woocommerce_currency_symbol() . ')',
26
+ 'product_id' => $product_id,
27
+ 'meta_name' => '_regular_price',
28
+ ),
29
+ array(
30
+ 'name' => '_sale_price' . '_' . $product_id,
31
+ 'default' => '',
32
+ 'type' => 'price',
33
+ 'title' => __( 'Sale price', 'woocommerce' ) . ' (' . get_woocommerce_currency_symbol() . ')',
34
+ 'product_id' => $product_id,
35
+ 'meta_name' => '_sale_price',
36
+ ),
37
+ ) );
38
+ }
39
+ return $settings;
includes/settings/meta-box/wcj-settings-meta-box-currency-per-product.php CHANGED
@@ -12,7 +12,7 @@ if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
12
  $currency_codes = array();
13
  $currency_codes[ get_option('woocommerce_currency') ] = get_option('woocommerce_currency');
14
  $currency_codes[ get_woocommerce_currency() ] = get_woocommerce_currency();
15
- $total_number = apply_filters( 'booster_get_option', 1, get_option( 'wcj_currency_per_product_total_number', 1 ) );
16
  for ( $i = 1; $i <= $total_number; $i++ ) {
17
  $currency_codes[ get_option( 'wcj_currency_per_product_currency_' . $i ) ] = get_option( 'wcj_currency_per_product_currency_' . $i );
18
  }
12
  $currency_codes = array();
13
  $currency_codes[ get_option('woocommerce_currency') ] = get_option('woocommerce_currency');
14
  $currency_codes[ get_woocommerce_currency() ] = get_woocommerce_currency();
15
+ $total_number = apply_filters( 'booster_option', 1, get_option( 'wcj_currency_per_product_total_number', 1 ) );
16
  for ( $i = 1; $i <= $total_number; $i++ ) {
17
  $currency_codes[ get_option( 'wcj_currency_per_product_currency_' . $i ) ] = get_option( 'wcj_currency_per_product_currency_' . $i );
18
  }
includes/settings/meta-box/wcj-settings-meta-box-multicurrency-base-price.php CHANGED
@@ -23,7 +23,7 @@ if ( $_product->is_type( 'variable' ) ) {
23
  $products[ $main_product_id ] = '';
24
  }
25
  $options = array();
26
- $total_number = apply_filters( 'booster_get_option', 1, get_option( 'wcj_multicurrency_base_price_total_number', 1 ) );
27
  foreach ( $products as $product_id => $desc ) {
28
  $currency_codes = array();
29
  $currency_codes[ get_woocommerce_currency() ] = get_woocommerce_currency();
@@ -45,7 +45,7 @@ return $options;
45
  */
46
  $currency_codes = array();
47
  $currency_codes[ get_woocommerce_currency() ] = get_woocommerce_currency();
48
- $total_number = apply_filters( 'booster_get_option', 1, get_option( 'wcj_multicurrency_base_price_total_number', 1 ) );
49
  for ( $i = 1; $i <= $total_number; $i++ ) {
50
  $currency_codes[ get_option( 'wcj_multicurrency_base_price_currency_' . $i ) ] = get_option( 'wcj_multicurrency_base_price_currency_' . $i );
51
  }
23
  $products[ $main_product_id ] = '';
24
  }
25
  $options = array();
26
+ $total_number = apply_filters( 'booster_option', 1, get_option( 'wcj_multicurrency_base_price_total_number', 1 ) );
27
  foreach ( $products as $product_id => $desc ) {
28
  $currency_codes = array();
29
  $currency_codes[ get_woocommerce_currency() ] = get_woocommerce_currency();
45
  */
46
  $currency_codes = array();
47
  $currency_codes[ get_woocommerce_currency() ] = get_woocommerce_currency();
48
+ $total_number = apply_filters( 'booster_option', 1, get_option( 'wcj_multicurrency_base_price_total_number', 1 ) );
49
  for ( $i = 1; $i <= $total_number; $i++ ) {
50
  $currency_codes[ get_option( 'wcj_multicurrency_base_price_currency_' . $i ) ] = get_option( 'wcj_multicurrency_base_price_currency_' . $i );
51
  }
includes/settings/meta-box/wcj-settings-meta-box-multicurrency.php CHANGED
@@ -25,7 +25,7 @@ if ( $_product->is_type( 'variable' ) ) {
25
  $products[ $main_product_id ] = '';
26
  }
27
  $currencies = array();
28
- $total_number = apply_filters( 'booster_get_option', 2, get_option( 'wcj_multicurrency_total_number', 2 ) );
29
  foreach ( $products as $product_id => $desc ) {
30
  for ( $i = 1; $i <= $total_number; $i++ ) {
31
  $currency_code = get_option( 'wcj_multicurrency_currency_' . $i );
25
  $products[ $main_product_id ] = '';
26
  }
27
  $currencies = array();
28
+ $total_number = apply_filters( 'booster_option', 2, get_option( 'wcj_multicurrency_total_number', 2 ) );
29
  foreach ( $products as $product_id => $desc ) {
30
  for ( $i = 1; $i <= $total_number; $i++ ) {
31
  $currency_code = get_option( 'wcj_multicurrency_currency_' . $i );
includes/settings/meta-box/wcj-settings-meta-box-order-quantities.php CHANGED
@@ -27,7 +27,7 @@ if ( $_product->is_type( 'variable' ) ) {
27
  }
28
  $quantities = array();
29
  foreach ( $products as $product_id => $desc ) {
30
- if ( 'yes' === apply_filters( 'booster_get_option', 'no', get_option( 'wcj_order_quantities_min_per_item_quantity_per_product', 'no' ) ) ) {
31
  $quantities = array_merge( $quantities, array(
32
  array(
33
  'name' => 'wcj_order_quantities_min' . '_' . $product_id,
@@ -42,7 +42,7 @@ foreach ( $products as $product_id => $desc ) {
42
  ),
43
  ) );
44
  }
45
- if ( 'yes' === apply_filters( 'booster_get_option', 'no', get_option( 'wcj_order_quantities_max_per_item_quantity_per_product', 'no' ) ) ) {
46
  $quantities = array_merge( $quantities, array(
47
  array(
48
  'name' => 'wcj_order_quantities_max' . '_' . $product_id,
27
  }
28
  $quantities = array();
29
  foreach ( $products as $product_id => $desc ) {
30
+ if ( 'yes' === apply_filters( 'booster_option', 'no', get_option( 'wcj_order_quantities_min_per_item_quantity_per_product', 'no' ) ) ) {
31
  $quantities = array_merge( $quantities, array(
32
  array(
33
  'name' => 'wcj_order_quantities_min' . '_' . $product_id,
42
  ),
43
  ) );
44
  }
45
+ if ( 'yes' === apply_filters( 'booster_option', 'no', get_option( 'wcj_order_quantities_max_per_item_quantity_per_product', 'no' ) ) ) {
46
  $quantities = array_merge( $quantities, array(
47
  array(
48
  'name' => 'wcj_order_quantities_max' . '_' . $product_id,
includes/settings/meta-box/wcj-settings-meta-box-price-by-country.php ADDED
@@ -0,0 +1,75 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Booster for WooCommerce - Settings Meta Box - Price by Country
4
+ *
5
+ * @version 3.3.0
6
+ * @since 3.3.0
7
+ * @author Algoritmika Ltd.
8
+ */
9
+
10
+ if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
11
+
12
+ $products = wcj_get_product_ids_for_meta_box_options( get_the_ID() );
13
+ $groups = array();
14
+ $total_number = apply_filters( 'booster_option', 1, get_option( 'wcj_price_by_country_total_groups_number', 1 ) );
15
+ for ( $i = 1; $i <= $total_number; $i++ ) {
16
+ $group_currency_code = get_option( 'wcj_price_by_country_exchange_rate_currency_group_' . $i );
17
+ $admin_title = get_option( 'wcj_price_by_country_countries_group_admin_title_' . $i, __( 'Group', 'woocommerce-jetpack' ) . ' #' . $i );
18
+ $countries = '';
19
+ switch ( get_option( 'wcj_price_by_country_selection', 'comma_list' ) ) {
20
+ case 'comma_list':
21
+ $countries .= get_option( 'wcj_price_by_country_exchange_rate_countries_group_' . $i );
22
+ break;
23
+ case 'multiselect':
24
+ $countries .= implode( ',', get_option( 'wcj_price_by_country_countries_group_' . $i ) );
25
+ break;
26
+ case 'chosen_select':
27
+ $countries .= implode( ',', get_option( 'wcj_price_by_country_countries_group_chosen_select_' . $i ) );
28
+ break;
29
+ }
30
+ $admin_title = '<details>' . '<summary>' . $admin_title . ' [' . $group_currency_code . ']' . '</summary>' .
31
+ '<p>' . $countries . ' (' . count( explode( ',', $countries ) ) . ')' . '</p>' . '</details>';
32
+ $groups = array_merge( $groups, array(
33
+ array(
34
+ 'type' => 'title',
35
+ 'title' => $admin_title,
36
+ 'css' => 'background-color:#cddc39;color:black;',
37
+ ),
38
+ ) );
39
+ foreach ( $products as $product_id => $desc ) {
40
+ $groups = array_merge( $groups, array(
41
+ array(
42
+ 'name' => 'wcj_price_by_country_regular_price_local_' . $i . '_' . $product_id,
43
+ 'default' => 0,
44
+ 'type' => 'price',
45
+ 'title' => __( 'Regular price', 'woocommerce-jetpack' ),
46
+ 'desc' => $desc,
47
+ 'product_id' => $product_id,
48
+ 'meta_name' => '_' . 'wcj_price_by_country_regular_price_local_' . $i,
49
+ ),
50
+ array(
51
+ 'name' => 'wcj_price_by_country_sale_price_local_' . $i . '_' . $product_id,
52
+ 'default' => '',
53
+ 'type' => 'price',
54
+ 'title' => __( 'Sale price', 'woocommerce-jetpack' ),
55
+ 'desc' => $desc,
56
+ 'product_id' => $product_id,
57
+ 'meta_name' => '_' . 'wcj_price_by_country_sale_price_local_' . $i,
58
+ ),
59
+ array(
60
+ 'name' => 'wcj_price_by_country_make_empty_price_local_' . $i . '_' . $product_id,
61
+ 'default' => 'off',
62
+ 'type' => 'select',
63
+ 'options' => array(
64
+ 'off' => __( 'No', 'woocommerce-jetpack' ),
65
+ 'on' => __( 'Yes', 'woocommerce-jetpack' ),
66
+ ),
67
+ 'title' => __( 'Make empty price', 'woocommerce-jetpack' ),
68
+ 'desc' => $desc,
69
+ 'product_id' => $product_id,
70
+ 'meta_name' => '_' . 'wcj_price_by_country_make_empty_price_local_' . $i,
71
+ ),
72
+ ) );
73
+ }
74
+ }
75
+ return $groups;
includes/settings/meta-box/wcj-settings-meta-box-product-add-to-cart.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Settings Meta Box - Product Add To Cart
4
  *
5
- * @version 2.9.0
6
  * @since 2.8.0
7
  * @author Algoritmika Ltd.
8
  */
@@ -10,7 +10,7 @@
10
  if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
11
 
12
  $options = array();
13
- if ( 'yes' === apply_filters( 'booster_get_option', 'no', get_option( 'wcj_add_to_cart_redirect_per_product_enabled', 'no' ) ) ) {
14
  $options = array_merge( $options, array(
15
  array(
16
  'name' => 'wcj_add_to_cart_redirect_enabled',
@@ -46,30 +46,6 @@ if ( 'per_product' === get_option( 'wcj_add_to_cart_on_visit_enabled', 'no' ) )
46
  ),
47
  ) );
48
  }
49
- if ( 'yes' === get_option( 'wcj_add_to_cart_button_per_product_enabled', 'no' ) ) {
50
- $options = array_merge( $options, array(
51
- array(
52
- 'name' => 'wcj_add_to_cart_button_disable',
53
- 'default' => 'no',
54
- 'type' => 'select',
55
- 'options' => array(
56
- 'yes' => __( 'Yes', 'woocommerce-jetpack' ),
57
- 'no' => __( 'No', 'woocommerce-jetpack' ),
58
- ),
59
- 'title' => __( 'Disable Add to Cart Button (Single Product Page)', 'woocommerce-jetpack' ),
60
- ),
61
- array(
62
- 'name' => 'wcj_add_to_cart_button_loop_disable',
63
- 'default' => 'no',
64
- 'type' => 'select',
65
- 'options' => array(
66
- 'yes' => __( 'Yes', 'woocommerce-jetpack' ),
67
- 'no' => __( 'No', 'woocommerce-jetpack' ),
68
- ),
69
- 'title' => __( 'Disable Add to Cart Button (Category/Archives)', 'woocommerce-jetpack' ),
70
- ),
71
- ) );
72
- }
73
  if ( 'yes' === get_option( 'wcj_add_to_cart_button_custom_loop_url_per_product_enabled', 'no' ) ) {
74
  $options = array_merge( $options, array(
75
  array(
2
  /**
3
  * Booster for WooCommerce - Settings Meta Box - Product Add To Cart
4
  *
5
+ * @version 3.3.0
6
  * @since 2.8.0
7
  * @author Algoritmika Ltd.
8
  */
10
  if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
11
 
12
  $options = array();
13
+ if ( 'yes' === apply_filters( 'booster_option', 'no', get_option( 'wcj_add_to_cart_redirect_per_product_enabled', 'no' ) ) ) {
14
  $options = array_merge( $options, array(
15
  array(
16
  'name' => 'wcj_add_to_cart_redirect_enabled',
46
  ),
47
  ) );
48
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
49
  if ( 'yes' === get_option( 'wcj_add_to_cart_button_custom_loop_url_per_product_enabled', 'no' ) ) {
50
  $options = array_merge( $options, array(
51
  array(
includes/settings/meta-box/wcj-settings-meta-box-product-addons.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Settings Meta Box - Product Addons
4
  *
5
- * @version 3.2.2
6
  * @since 2.8.0
7
  * @author Algoritmika Ltd.
8
  */
@@ -104,6 +104,13 @@ for ( $i = 1; $i <= $total_number; $i++ ) {
104
  'no' => __( 'No', 'woocommerce-jetpack' ),
105
  ),
106
  ),
 
 
 
 
 
 
 
107
  ) );
108
  }
109
  return $options;
2
  /**
3
  * Booster for WooCommerce - Settings Meta Box - Product Addons
4
  *
5
+ * @version 3.3.0
6
  * @since 2.8.0
7
  * @author Algoritmika Ltd.
8
  */
104
  'no' => __( 'No', 'woocommerce-jetpack' ),
105
  ),
106
  ),
107
+ array(
108
+ 'title' => __( 'Quantity', 'woocommerce-jetpack' ),
109
+ 'tooltip' => __( 'Leave empty to disable quantity calculation for the addon. When set to zero - addon will be disabled.', 'woocommerce-jetpack' ),
110
+ 'name' => 'wcj_product_addons_per_product_qty_' . $i,
111
+ 'default' => '',
112
+ 'type' => 'text',
113
+ ),
114
  ) );
115
  }
116
  return $options;
includes/settings/meta-box/wcj-settings-meta-box-product-by-country.php CHANGED
@@ -9,10 +9,10 @@
9
 
10
  if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
11
 
12
- $countries = ( 'wc' === apply_filters( 'booster_get_option', 'all', get_option( 'wcj_product_by_country_country_list', 'all' ) ) ? WC()->countries->get_allowed_countries() : wcj_get_countries() );
13
 
14
  $options = array();
15
- if ( 'invisible' != apply_filters( 'booster_get_option', 'visible', get_option( 'wcj_product_by_country_visibility_method', 'visible' ) ) ) {
16
  $options = array_merge( $options, array(
17
  array(
18
  'title' => __( 'Visible in Countries', 'woocommerce-jetpack' ),
@@ -28,7 +28,7 @@ if ( 'invisible' != apply_filters( 'booster_get_option', 'visible', get_option(
28
  ),
29
  ) );
30
  }
31
- if ( 'visible' != apply_filters( 'booster_get_option', 'visible', get_option( 'wcj_product_by_country_visibility_method', 'visible' ) ) ) {
32
  $options = array_merge( $options, array(
33
  array(
34
  'title' => __( 'Invisible in Countries', 'woocommerce-jetpack' ),
9
 
10
  if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
11
 
12
+ $countries = ( 'wc' === apply_filters( 'booster_option', 'all', get_option( 'wcj_product_by_country_country_list', 'all' ) ) ? WC()->countries->get_allowed_countries() : wcj_get_countries() );
13
 
14
  $options = array();
15
+ if ( 'invisible' != apply_filters( 'booster_option', 'visible', get_option( 'wcj_product_by_country_visibility_method', 'visible' ) ) ) {
16
  $options = array_merge( $options, array(
17
  array(
18
  'title' => __( 'Visible in Countries', 'woocommerce-jetpack' ),
28
  ),
29
  ) );
30
  }
31
+ if ( 'visible' != apply_filters( 'booster_option', 'visible', get_option( 'wcj_product_by_country_visibility_method', 'visible' ) ) ) {
32
  $options = array_merge( $options, array(
33
  array(
34
  'title' => __( 'Invisible in Countries', 'woocommerce-jetpack' ),
includes/settings/meta-box/wcj-settings-meta-box-product-by-user-role.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Settings Meta Box - Product Visibility by User Role
4
  *
5
- * @version 2.8.0
6
  * @since 2.8.0
7
  * @author Algoritmika Ltd.
8
  */
@@ -17,6 +17,7 @@ return array(
17
  'options' => wcj_get_user_roles_options(),
18
  'multiple' => true,
19
  'title' => __( 'Visible for User Roles', 'woocommerce-jetpack' ),
20
- 'tooltip' => __( 'Hold Control (Ctrl) key to select multiple roles.', 'woocommerce-jetpack' ),
 
21
  ),
22
  );
2
  /**
3
  * Booster for WooCommerce - Settings Meta Box - Product Visibility by User Role
4
  *
5
+ * @version 3.3.0
6
  * @since 2.8.0
7
  * @author Algoritmika Ltd.
8
  */
17
  'options' => wcj_get_user_roles_options(),
18
  'multiple' => true,
19
  'title' => __( 'Visible for User Roles', 'woocommerce-jetpack' ),
20
+ 'class' => 'chosen_select',
21
+ 'css' => 'width:100%;',
22
  ),
23
  );
includes/settings/meta-box/wcj-settings-meta-box-purchase-data.php CHANGED
@@ -59,7 +59,7 @@ foreach ( $products as $product_id => $desc ) {
59
  'enabled' => get_option( 'wcj_purchase_price_affiliate_commission_enabled', 'no' ),
60
  ),
61
  );
62
- $total_number = apply_filters( 'booster_get_option', 1, get_option( 'wcj_purchase_data_custom_price_fields_total_number', 1 ) );
63
  for ( $i = 1; $i <= $total_number; $i++ ) {
64
  $the_title = get_option( 'wcj_purchase_data_custom_price_field_name_' . $i, '' );
65
  if ( '' == $the_title ) {
59
  'enabled' => get_option( 'wcj_purchase_price_affiliate_commission_enabled', 'no' ),
60
  ),
61
  );
62
+ $total_number = apply_filters( 'booster_option', 1, get_option( 'wcj_purchase_data_custom_price_fields_total_number', 1 ) );
63
  for ( $i = 1; $i <= $total_number; $i++ ) {
64
  $the_title = get_option( 'wcj_purchase_data_custom_price_field_name_' . $i, '' );
65
  if ( '' == $the_title ) {
includes/settings/meta-box/wcj-settings-meta-box-wholesale-price.php CHANGED
@@ -46,11 +46,11 @@ $options = array(
46
  'default' => 0,
47
  'type' => 'number',
48
  'title' => __( 'Number of levels', 'woocommerce-jetpack' ),
49
- 'tooltip' => __( 'Save product after you change this number.', 'woocommerce-jetpack' ) . apply_filters( 'booster_get_option', ' ' . __( 'Free Booster\'s version is limited to one level maximum. Please visit http://booster.io to get full version.', 'woocommerce-jetpack' ), '' ),
50
- 'custom_attributes' => 'min="0" max="' . apply_filters( 'booster_get_option', 1, 1000 ) . '"',
51
  ),
52
  );
53
- for ( $i = 1; $i <= apply_filters( 'booster_get_option', 1, get_post_meta( $product_id, '_' . 'wcj_wholesale_price_levels_number', true ) ); $i++ ) {
54
  $options = array_merge( $options, array(
55
  /*
56
  array(
@@ -82,11 +82,11 @@ if ( ! empty( $user_roles ) ) {
82
  'default' => 0,
83
  'type' => 'number',
84
  'title' => __( 'Number of levels', 'woocommerce-jetpack' ) . ' [' . $user_role_key . ']',
85
- 'tooltip' => __( 'Save product after you change this number.', 'woocommerce-jetpack' ) . apply_filters( 'booster_get_option', ' ' . __( 'Free Booster\'s version is limited to one level maximum. Please visit http://booster.io to get full version.', 'woocommerce-jetpack' ), '' ),
86
- 'custom_attributes' => 'min="0" max="' . apply_filters( 'booster_get_option', 1, 1000 ) . '"',
87
  ),
88
  ) );
89
- for ( $i = 1; $i <= apply_filters( 'booster_get_option', 1, get_post_meta( $product_id, '_' . 'wcj_wholesale_price_levels_number_' . $user_role_key, true ) ); $i++ ) {
90
  $options = array_merge( $options, array(
91
  /*
92
  array(
46
  'default' => 0,
47
  'type' => 'number',
48
  'title' => __( 'Number of levels', 'woocommerce-jetpack' ),
49
+ 'tooltip' => __( 'Save product after you change this number.', 'woocommerce-jetpack' ) . apply_filters( 'booster_option', ' ' . __( 'Free Booster\'s version is limited to one level maximum. Please visit http://booster.io to get full version.', 'woocommerce-jetpack' ), '' ),
50
+ 'custom_attributes' => 'min="0" max="' . apply_filters( 'booster_option', 1, 1000 ) . '"',
51
  ),
52
  );
53
+ for ( $i = 1; $i <= apply_filters( 'booster_option', 1, get_post_meta( $product_id, '_' . 'wcj_wholesale_price_levels_number', true ) ); $i++ ) {
54
  $options = array_merge( $options, array(
55
  /*
56
  array(
82
  'default' => 0,
83
  'type' => 'number',
84
  'title' => __( 'Number of levels', 'woocommerce-jetpack' ) . ' [' . $user_role_key . ']',
85
+ 'tooltip' => __( 'Save product after you change this number.', 'woocommerce-jetpack' ) . apply_filters( 'booster_option', ' ' . __( 'Free Booster\'s version is limited to one level maximum. Please visit http://booster.io to get full version.', 'woocommerce-jetpack' ), '' ),
86
+ 'custom_attributes' => 'min="0" max="' . apply_filters( 'booster_option', 1, 1000 ) . '"',
87
  ),
88
  ) );
89
+ for ( $i = 1; $i <= apply_filters( 'booster_option', 1, get_post_meta( $product_id, '_' . 'wcj_wholesale_price_levels_number_' . $user_role_key, true ) ); $i++ ) {
90
  $options = array_merge( $options, array(
91
  /*
92
  array(
includes/settings/wcj-settings-add-to-cart-button-visibility.php ADDED
@@ -0,0 +1,111 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Booster for WooCommerce - Settings - Add to Cart Button Visibility
4
+ *
5
+ * @version 3.3.0
6
+ * @since 3.3.0
7
+ * @author Algoritmika Ltd.
8
+ * @todo "Per Tag"
9
+ */
10
+
11
+ if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
12
+
13
+ $products_cats = wcj_get_terms( 'product_cat' );
14
+
15
+ return array(
16
+ array(
17
+ 'title' => __( 'All Products', 'woocommerce-jetpack' ),
18
+ 'type' => 'title',
19
+ 'id' => 'wcj_add_to_cart_button_visibility_global_options',
20
+ ),
21
+ array(
22
+ 'title' => __( 'All Products', 'woocommerce-jetpack' ),
23
+ 'desc' => '<strong>' . __( 'Enable section', 'woocommerce-jetpack' ) . '</strong>',
24
+ 'id' => 'wcj_add_to_cart_button_global_enabled',
25
+ 'default' => 'no',
26
+ 'type' => 'checkbox',
27
+ ),
28
+ array(
29
+ 'title' => __( 'Disable Buttons on Category/Archives Pages', 'woocommerce-jetpack' ),
30
+ 'desc' => __( 'Disable', 'woocommerce-jetpack' ),
31
+ 'id' => 'wcj_add_to_cart_button_disable_archives',
32
+ 'default' => 'no',
33
+ 'type' => 'checkbox',
34
+ ),
35
+ array(
36
+ 'title' => __( 'Disable Buttons on Single Product Pages', 'woocommerce-jetpack' ),
37
+ 'desc' => __( 'Disable', 'woocommerce-jetpack' ),
38
+ 'id' => 'wcj_add_to_cart_button_disable_single',
39
+ 'default' => 'no',
40
+ 'type' => 'checkbox',
41
+ ),
42
+ array(
43
+ 'type' => 'sectionend',
44
+ 'id' => 'wcj_add_to_cart_button_visibility_global_options',
45
+ ),
46
+ array(
47
+ 'title' => __( 'Per Product', 'woocommerce-jetpack' ),
48
+ 'type' => 'title',
49
+ 'id' => 'wcj_add_to_cart_button_visibility_per_product_options',
50
+ ),
51
+ array(
52
+ 'title' => __( 'Per Product', 'woocommerce-jetpack' ),
53
+ 'desc' => '<strong>' . __( 'Enable section', 'woocommerce-jetpack' ) . '</strong>',
54
+ 'desc_tip' => __( 'This will add meta box to each product\'s edit page', 'woocommerce-jetpack' ),
55
+ 'id' => 'wcj_add_to_cart_button_per_product_enabled',
56
+ 'default' => 'no',
57
+ 'type' => 'checkbox',
58
+ ),
59
+ array(
60
+ 'type' => 'sectionend',
61
+ 'id' => 'wcj_add_to_cart_button_visibility_per_product_options',
62
+ ),
63
+ array(
64
+ 'title' => __( 'Per Category', 'woocommerce-jetpack' ),
65
+ 'type' => 'title',
66
+ 'id' => 'wcj_add_to_cart_button_visibility_per_category_options',
67
+ ),
68
+ array(
69
+ 'title' => __( 'Per Category', 'woocommerce-jetpack' ),
70
+ 'desc' => '<strong>' . __( 'Enable section', 'woocommerce-jetpack' ) . '</strong>',
71
+ 'id' => 'wcj_add_to_cart_button_per_category_enabled',
72
+ 'default' => 'no',
73
+ 'type' => 'checkbox',
74
+ ),
75
+ array(
76
+ 'title' => __( 'Disable Buttons on Category/Archives Pages', 'woocommerce-jetpack' ),
77
+ 'id' => 'wcj_add_to_cart_button_per_category_disable_loop',
78
+ 'default' => '',
79
+ 'type' => 'multiselect',
80
+ 'class' => 'chosen_select',
81
+ 'options' => $products_cats,
82
+ ),
83
+ array(
84
+ 'desc' => __( 'Content', 'woocommerce-jetpack' ),
85
+ 'desc_tip' => __( 'Content to replace with on archives (can be empty). You can use HTML and/or shortcodes here.', 'woocommerce-jetpack' ),
86
+ 'id' => 'wcj_add_to_cart_button_per_category_content_loop',
87
+ 'default' => '',
88
+ 'type' => 'custom_textarea',
89
+ 'css' => 'width:100%',
90
+ ),
91
+ array(
92
+ 'title' => __( 'Disable Buttons on Single Product Pages', 'woocommerce-jetpack' ),
93
+ 'id' => 'wcj_add_to_cart_button_per_category_disable_single',
94
+ 'default' => '',
95
+ 'type' => 'multiselect',
96
+ 'class' => 'chosen_select',
97
+ 'options' => $products_cats,
98
+ ),
99
+ array(
100
+ 'desc' => __( 'Content', 'woocommerce-jetpack' ),
101
+ 'desc_tip' => __( 'Content to replace with on single product pages (can be empty). You can use HTML and/or shortcodes here.', 'woocommerce-jetpack' ),
102
+ 'id' => 'wcj_add_to_cart_button_per_category_content_single',
103
+ 'default' => '',
104
+ 'type' => 'custom_textarea',
105
+ 'css' => 'width:100%',
106
+ ),
107
+ array(
108
+ 'type' => 'sectionend',
109
+ 'id' => 'wcj_add_to_cart_button_visibility_per_category_options',
110
+ ),
111
+ );
includes/settings/wcj-settings-add-to-cart.php CHANGED
@@ -30,9 +30,9 @@ $settings = array(
30
  'id' => 'wcj_add_to_cart_per_category_total_groups_number',
31
  'default' => 1,
32
  'type' => 'custom_number',
33
- 'desc' => apply_filters( 'booster_get_message', '', 'desc' ),
34
  'custom_attributes' => array_merge(
35
- is_array( apply_filters( 'booster_get_message', '', 'readonly' ) ) ? apply_filters( 'booster_get_message', '', 'readonly' ) : array(),
36
  array( 'step' => '1', 'min' => '1' )
37
  ),
38
  'css' => 'width:100px;',
@@ -45,7 +45,7 @@ if ( ! empty( $product_categories ) && ! is_wp_error( $product_categories ) ){
45
  $product_cats[ $product_category->term_id ] = $product_category->name;
46
  }
47
  }
48
- for ( $i = 1; $i <= apply_filters( 'booster_get_option', 1, get_option( 'wcj_add_to_cart_per_category_total_groups_number', 1 ) ); $i++ ) {
49
  $settings = array_merge( $settings, array(
50
  array(
51
  'title' => __( 'Group', 'woocommerce-jetpack' ) . ' #' . $i,
30
  'id' => 'wcj_add_to_cart_per_category_total_groups_number',
31
  'default' => 1,
32
  'type' => 'custom_number',
33
+ 'desc' => apply_filters( 'booster_message', '', 'desc' ),
34
  'custom_attributes' => array_merge(
35
+ is_array( apply_filters( 'booster_message', '', 'readonly' ) ) ? apply_filters( 'booster_message', '', 'readonly' ) : array(),
36
  array( 'step' => '1', 'min' => '1' )
37
  ),
38
  'css' => 'width:100px;',
45
  $product_cats[ $product_category->term_id ] = $product_category->name;
46
  }
47
  }
48
+ for ( $i = 1; $i <= apply_filters( 'booster_option', 1, get_option( 'wcj_add_to_cart_per_category_total_groups_number', 1 ) ); $i++ ) {
49
  $settings = array_merge( $settings, array(
50
  array(
51
  'title' => __( 'Group', 'woocommerce-jetpack' ) . ' #' . $i,
includes/settings/wcj-settings-address-formats.php CHANGED
@@ -1,6 +1,6 @@
1
  <?php
2
  /**
3
- * Booster for WooCommerce Settings - Address Formats
4
  *
5
  * @version 2.8.0
6
  * @since 2.8.0
1
  <?php
2
  /**
3
+ * Booster for WooCommerce - Settings - Address Formats
4
  *
5
  * @version 2.8.0
6
  * @since 2.8.0
includes/settings/wcj-settings-admin-orders-list.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Settings - Admin Orders List
4
  *
5
- * @version 3.2.4
6
  * @since 3.2.4
7
  * @author Algoritmika Ltd.
8
  */
@@ -42,14 +42,14 @@ $settings = array(
42
  'id' => 'wcj_orders_list_custom_columns_total_number',
43
  'default' => 1,
44
  'type' => 'custom_number',
45
- 'desc' => apply_filters( 'booster_get_message', '', 'desc' ),
46
  'custom_attributes' => array_merge(
47
- is_array( apply_filters( 'booster_get_message', '', 'readonly' ) ) ? apply_filters( 'booster_get_message', '', 'readonly' ) : array(),
48
  array( 'step' => '1', 'min' => '0', )
49
  ),
50
  ),
51
  );
52
- $total_number = apply_filters( 'booster_get_option', 1, get_option( 'wcj_orders_list_custom_columns_total_number', 1 ) );
53
  for ( $i = 1; $i <= $total_number; $i++ ) {
54
  $settings = array_merge( $settings, array(
55
  array(
@@ -65,6 +65,7 @@ for ( $i = 1; $i <= $total_number; $i++ ) {
65
  'id' => 'wcj_orders_list_custom_columns_label_' . $i,
66
  'default' => '',
67
  'type' => 'text',
 
68
  ),
69
  array(
70
  'desc' => __( 'Value', 'woocommerce-jetpack' ),
@@ -72,6 +73,7 @@ for ( $i = 1; $i <= $total_number; $i++ ) {
72
  'id' => 'wcj_orders_list_custom_columns_value_' . $i,
73
  'default' => '',
74
  'type' => 'custom_textarea',
 
75
  ),
76
  array(
77
  'desc' => __( 'Sortable', 'woocommerce-jetpack' ),
2
  /**
3
  * Booster for WooCommerce - Settings - Admin Orders List
4
  *
5
+ * @version 3.3.0
6
  * @since 3.2.4
7
  * @author Algoritmika Ltd.
8
  */
42
  'id' => 'wcj_orders_list_custom_columns_total_number',
43
  'default' => 1,
44
  'type' => 'custom_number',
45
+ 'desc' => apply_filters( 'booster_message', '', 'desc' ),
46
  'custom_attributes' => array_merge(
47
+ is_array( apply_filters( 'booster_message', '', 'readonly' ) ) ? apply_filters( 'booster_message', '', 'readonly' ) : array(),
48
  array( 'step' => '1', 'min' => '0', )
49
  ),
50
  ),
51
  );
52
+ $total_number = apply_filters( 'booster_option', 1, get_option( 'wcj_orders_list_custom_columns_total_number', 1 ) );
53
  for ( $i = 1; $i <= $total_number; $i++ ) {
54
  $settings = array_merge( $settings, array(
55
  array(
65
  'id' => 'wcj_orders_list_custom_columns_label_' . $i,
66
  'default' => '',
67
  'type' => 'text',
68
+ 'css' => 'width:100%;',
69
  ),
70
  array(
71
  'desc' => __( 'Value', 'woocommerce-jetpack' ),
73
  'id' => 'wcj_orders_list_custom_columns_value_' . $i,
74
  'default' => '',
75
  'type' => 'custom_textarea',
76
+ 'css' => 'width:100%;',
77
  ),
78
  array(
79
  'desc' => __( 'Sortable', 'woocommerce-jetpack' ),
includes/settings/wcj-settings-admin-products-list.php CHANGED
@@ -28,14 +28,14 @@ $settings = array(
28
  'id' => 'wcj_products_admin_list_custom_columns_total_number',
29
  'default' => 1,
30
  'type' => 'custom_number',
31
- 'desc' => apply_filters( 'booster_get_message', '', 'desc' ),
32
  'custom_attributes' => array_merge(
33
- is_array( apply_filters( 'booster_get_message', '', 'readonly' ) ) ? apply_filters( 'booster_get_message', '', 'readonly' ) : array(),
34
  array( 'step' => '1', 'min' => '0', )
35
  ),
36
  ),
37
  );
38
- $total_number = apply_filters( 'booster_get_option', 1, get_option( 'wcj_products_admin_list_custom_columns_total_number', 1 ) );
39
  for ( $i = 1; $i <= $total_number; $i++ ) {
40
  $settings = array_merge( $settings, array(
41
  array(
28
  'id' => 'wcj_products_admin_list_custom_columns_total_number',
29
  'default' => 1,
30
  'type' => 'custom_number',
31
+ 'desc' => apply_filters( 'booster_message', '', 'desc' ),
32
  'custom_attributes' => array_merge(
33
+ is_array( apply_filters( 'booster_message', '', 'readonly' ) ) ? apply_filters( 'booster_message', '', 'readonly' ) : array(),
34
  array( 'step' => '1', 'min' => '0', )
35
  ),
36
  ),
37
  );
38
+ $total_number = apply_filters( 'booster_option', 1, get_option( 'wcj_products_admin_list_custom_columns_total_number', 1 ) );
39
  for ( $i = 1; $i <= $total_number; $i++ ) {
40
  $settings = array_merge( $settings, array(
41
  array(
includes/settings/wcj-settings-admin-tools.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Settings - Admin Tools
4
  *
5
- * @version 2.9.1
6
  * @since 2.8.0
7
  * @author Algoritmika Ltd.
8
  */
@@ -83,6 +83,13 @@ return array(
83
  'default' => 'no',
84
  'type' => 'checkbox',
85
  ),
 
 
 
 
 
 
 
86
  array(
87
  'type' => 'sectionend',
88
  'id' => 'wcj_admin_tools_module_options',
2
  /**
3
  * Booster for WooCommerce - Settings - Admin Tools
4
  *
5
+ * @version 3.3.0
6
  * @since 2.8.0
7
  * @author Algoritmika Ltd.
8
  */
83
  'default' => 'no',
84
  'type' => 'checkbox',
85
  ),
86
+ array(
87
+ 'title' => __( 'Show Variable Product Pricing Table', 'woocommerce-jetpack' ),
88
+ 'desc' => __( 'Enable', 'woocommerce-jetpack' ),
89
+ 'id' => 'wcj_admin_tools_variable_product_pricing_table_enabled',
90
+ 'default' => 'no',
91
+ 'type' => 'checkbox',
92
+ ),
93
  array(
94
  'type' => 'sectionend',
95
  'id' => 'wcj_admin_tools_module_options',
includes/settings/wcj-settings-breadcrumbs.php CHANGED
@@ -35,8 +35,8 @@ return array(
35
  'id' => 'wcj_breadcrumbs_hide',
36
  'default' => 'no',
37
  'type' => 'checkbox',
38
- 'desc_tip' => apply_filters( 'booster_get_message', '', 'desc' ),
39
- 'custom_attributes' => apply_filters( 'booster_get_message', '', 'disabled' ),
40
  ),
41
  array(
42
  'type' => 'sectionend',
35
  'id' => 'wcj_breadcrumbs_hide',
36
  'default' => 'no',
37
  'type' => 'checkbox',
38
+ 'desc_tip' => apply_filters( 'booster_message', '', 'desc' ),
39
+ 'custom_attributes' => apply_filters( 'booster_message', '', 'disabled' ),
40
  ),
41
  array(
42
  'type' => 'sectionend',
includes/settings/wcj-settings-call-for-price.php CHANGED
@@ -20,52 +20,52 @@ return array(
20
  array(
21
  'title' => __( 'Label to Show on Single', 'woocommerce-jetpack' ),
22
  'desc_tip' => __( 'This sets the html to output on empty price. Leave blank to disable.', 'woocommerce-jetpack' ),
23
- 'desc' => apply_filters( 'booster_get_message', '', 'desc' ),
24
  'id' => 'wcj_call_for_price_text',
25
  'default' => '<strong>Call for price</strong>',
26
  'type' => 'textarea',
27
  'css' => 'width:100%',
28
- 'custom_attributes' => apply_filters( 'booster_get_message', '', 'readonly' ),
29
  ),
30
  array(
31
  'title' => __( 'Label to Show on Archives', 'woocommerce-jetpack' ),
32
  'desc_tip' => __( 'This sets the html to output on empty price. Leave blank to disable.', 'woocommerce-jetpack' ),
33
- 'desc' => apply_filters( 'booster_get_message', '', 'desc' ),
34
  'id' => 'wcj_call_for_price_text_on_archive',
35
  'default' => '<strong>Call for price</strong>',
36
  'type' => 'textarea',
37
  'css' => 'width:100%',
38
- 'custom_attributes' => apply_filters( 'booster_get_message', '', 'readonly' ),
39
  ),
40
  array(
41
  'title' => __( 'Label to Show on Homepage', 'woocommerce-jetpack' ),
42
  'desc_tip' => __( 'This sets the html to output on empty price. Leave blank to disable.', 'woocommerce-jetpack' ),
43
- 'desc' => apply_filters( 'booster_get_message', '', 'desc' ),
44
  'id' => 'wcj_call_for_price_text_on_home',
45
  'default' => '<strong>Call for price</strong>',
46
  'type' => 'textarea',
47
  'css' => 'width:100%',
48
- 'custom_attributes' => apply_filters( 'booster_get_message', '', 'readonly' ),
49
  ),
50
  array(
51
  'title' => __( 'Label to Show on Related', 'woocommerce-jetpack' ),
52
  'desc_tip' => __( 'This sets the html to output on empty price. Leave blank to disable.', 'woocommerce-jetpack' ),
53
- 'desc' => apply_filters( 'booster_get_message', '', 'desc' ),
54
  'id' => 'wcj_call_for_price_text_on_related',
55
  'default' => '<strong>Call for price</strong>',
56
  'type' => 'textarea',
57
  'css' => 'width:100%',
58
- 'custom_attributes' => apply_filters( 'booster_get_message', '', 'readonly' ),
59
  ),
60
  array(
61
  'title' => __( 'Label to Show for Variations', 'woocommerce-jetpack' ),
62
  'desc_tip' => __( 'This sets the html to output on empty price. Leave blank to disable.', 'woocommerce-jetpack' ),
63
- 'desc' => apply_filters( 'booster_get_message', '', 'desc' ),
64
  'id' => 'wcj_call_for_price_text_variation',
65
  'default' => '<strong>Call for price</strong>',
66
  'type' => 'textarea',
67
  'css' => 'width:100%',
68
- 'custom_attributes' => apply_filters( 'booster_get_message', '', 'readonly' ),
69
  ),
70
  array(
71
  'title' => __( 'Hide Sale! Tag', 'woocommerce-jetpack' ),
20
  array(
21
  'title' => __( 'Label to Show on Single', 'woocommerce-jetpack' ),
22
  'desc_tip' => __( 'This sets the html to output on empty price. Leave blank to disable.', 'woocommerce-jetpack' ),
23
+ 'desc' => apply_filters( 'booster_message', '', 'desc' ),
24
  'id' => 'wcj_call_for_price_text',
25
  'default' => '<strong>Call for price</strong>',
26
  'type' => 'textarea',
27
  'css' => 'width:100%',
28
+ 'custom_attributes' => apply_filters( 'booster_message', '', 'readonly' ),
29
  ),
30
  array(
31
  'title' => __( 'Label to Show on Archives', 'woocommerce-jetpack' ),
32
  'desc_tip' => __( 'This sets the html to output on empty price. Leave blank to disable.', 'woocommerce-jetpack' ),
33
+ 'desc' => apply_filters( 'booster_message', '', 'desc' ),
34
  'id' => 'wcj_call_for_price_text_on_archive',
35
  'default' => '<strong>Call for price</strong>',
36
  'type' => 'textarea',
37
  'css' => 'width:100%',
38
+ 'custom_attributes' => apply_filters( 'booster_message', '', 'readonly' ),
39
  ),
40
  array(
41
  'title' => __( 'Label to Show on Homepage', 'woocommerce-jetpack' ),
42
  'desc_tip' => __( 'This sets the html to output on empty price. Leave blank to disable.', 'woocommerce-jetpack' ),
43
+ 'desc' => apply_filters( 'booster_message', '', 'desc' ),
44
  'id' => 'wcj_call_for_price_text_on_home',
45
  'default' => '<strong>Call for price</strong>',
46
  'type' => 'textarea',
47
  'css' => 'width:100%',
48
+ 'custom_attributes' => apply_filters( 'booster_message', '', 'readonly' ),
49
  ),
50
  array(
51
  'title' => __( 'Label to Show on Related', 'woocommerce-jetpack' ),
52
  'desc_tip' => __( 'This sets the html to output on empty price. Leave blank to disable.', 'woocommerce-jetpack' ),
53
+ 'desc' => apply_filters( 'booster_message', '', 'desc' ),
54
  'id' => 'wcj_call_for_price_text_on_related',
55
  'default' => '<strong>Call for price</strong>',
56
  'type' => 'textarea',
57
  'css' => 'width:100%',
58
+ 'custom_attributes' => apply_filters( 'booster_message', '', 'readonly' ),
59
  ),
60
  array(
61
  'title' => __( 'Label to Show for Variations', 'woocommerce-jetpack' ),
62
  'desc_tip' => __( 'This sets the html to output on empty price. Leave blank to disable.', 'woocommerce-jetpack' ),
63
+ 'desc' => apply_filters( 'booster_message', '', 'desc' ),
64
  'id' => 'wcj_call_for_price_text_variation',
65
  'default' => '<strong>Call for price</strong>',
66
  'type' => 'textarea',
67
  'css' => 'width:100%',
68
+ 'custom_attributes' => apply_filters( 'booster_message', '', 'readonly' ),
69
  ),
70
  array(
71
  'title' => __( 'Hide Sale! Tag', 'woocommerce-jetpack' ),
includes/settings/wcj-settings-cart.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Settings - Cart Custom Info
4
  *
5
- * @version 2.8.0
6
  * @since 2.8.0
7
  * @author Algoritmika Ltd.
8
  * @todo (maybe) 'Hide "Note: Shipping and taxes are estimated..." message on Cart page' - `wcj_cart_hide_shipping_and_taxes_estimated_message`
@@ -25,15 +25,15 @@ $settings = array(
25
  'id' => 'wcj_cart_custom_info_total_number',
26
  'default' => 1,
27
  'type' => 'custom_number',
28
- 'desc' => apply_filters( 'booster_get_message', '', 'desc' ),
29
- 'custom_attributes' => apply_filters( 'booster_get_message', '', 'readonly' ),
30
  ),
31
  array(
32
  'type' => 'sectionend',
33
  'id' => 'wcj_cart_custom_info_options',
34
  ),
35
  );
36
- for ( $i = 1; $i <= apply_filters( 'booster_get_option', 1, get_option( 'wcj_cart_custom_info_total_number', 1 ) ); $i++ ) {
37
  $settings = array_merge( $settings, array(
38
  array(
39
  'title' => __( 'Info Block', 'woocommerce-jetpack' ) . ' #' . $i,
@@ -45,7 +45,7 @@ for ( $i = 1; $i <= apply_filters( 'booster_get_option', 1, get_option( 'wcj_car
45
  'id' => 'wcj_cart_custom_info_content_' . $i,
46
  'default' => '[wcj_cart_items_total_weight before="Total weight: " after=" kg"]',
47
  'type' => 'textarea',
48
- 'css' => 'width:30%;min-width:300px;height:100px;',
49
  ),
50
  array(
51
  'title' => __( 'Position', 'woocommerce-jetpack' ),
@@ -53,14 +53,12 @@ for ( $i = 1; $i <= apply_filters( 'booster_get_option', 1, get_option( 'wcj_car
53
  'default' => 'woocommerce_after_cart_totals',
54
  'type' => 'select',
55
  'options' => wcj_get_cart_filters(),
56
- 'css' => 'width:250px;',
57
  ),
58
  array(
59
  'title' => __( 'Position Order (i.e. Priority)', 'woocommerce-jetpack' ),
60
  'id' => 'wcj_cart_custom_info_priority_' . $i,
61
  'default' => 10,
62
  'type' => 'number',
63
- 'css' => 'width:250px;',
64
  ),
65
  array(
66
  'type' => 'sectionend',
@@ -82,7 +80,7 @@ $settings = array_merge( $settings, array(
82
  'id' => 'wcj_cart_custom_info_item',
83
  'default' => '',
84
  'type' => 'textarea',
85
- 'css' => 'width:30%;min-width:300px;height:100px;',
86
  ),
87
  array(
88
  'type' => 'sectionend',
2
  /**
3
  * Booster for WooCommerce - Settings - Cart Custom Info
4
  *
5
+ * @version 3.3.0
6
  * @since 2.8.0
7
  * @author Algoritmika Ltd.
8
  * @todo (maybe) 'Hide "Note: Shipping and taxes are estimated..." message on Cart page' - `wcj_cart_hide_shipping_and_taxes_estimated_message`
25
  'id' => 'wcj_cart_custom_info_total_number',
26
  'default' => 1,
27
  'type' => 'custom_number',
28
+ 'desc' => apply_filters( 'booster_message', '', 'desc' ),
29
+ 'custom_attributes' => apply_filters( 'booster_message', '', 'readonly' ),
30
  ),
31
  array(
32
  'type' => 'sectionend',
33
  'id' => 'wcj_cart_custom_info_options',
34
  ),
35
  );
36
+ for ( $i = 1; $i <= apply_filters( 'booster_option', 1, get_option( 'wcj_cart_custom_info_total_number', 1 ) ); $i++ ) {
37
  $settings = array_merge( $settings, array(
38
  array(
39
  'title' => __( 'Info Block', 'woocommerce-jetpack' ) . ' #' . $i,
45
  'id' => 'wcj_cart_custom_info_content_' . $i,
46
  'default' => '[wcj_cart_items_total_weight before="Total weight: " after=" kg"]',
47
  'type' => 'textarea',
48
+ 'css' => 'width:100%;height:200px;',
49
  ),
50
  array(
51
  'title' => __( 'Position', 'woocommerce-jetpack' ),
53
  'default' => 'woocommerce_after_cart_totals',
54
  'type' => 'select',
55
  'options' => wcj_get_cart_filters(),
 
56
  ),
57
  array(
58
  'title' => __( 'Position Order (i.e. Priority)', 'woocommerce-jetpack' ),
59
  'id' => 'wcj_cart_custom_info_priority_' . $i,
60
  'default' => 10,
61
  'type' => 'number',
 
62
  ),
63
  array(
64
  'type' => 'sectionend',
80
  'id' => 'wcj_cart_custom_info_item',
81
  'default' => '',
82
  'type' => 'textarea',
83
+ 'css' => 'width:100%;height:100px;',
84
  ),
85
  array(
86
  'type' => 'sectionend',
includes/settings/wcj-settings-checkout-core-fields.php CHANGED
@@ -106,12 +106,12 @@ foreach ( $this->woocommerce_core_checkout_fields as $field ) {
106
  ),
107
  array(
108
  'desc' => __( 'priority (i.e. order)', 'woocommerce-jetpack' ),
109
- 'desc_tip' => __( 'Leave zero for WooCommerce defaults.', 'woocommerce-jetpack' ) . ' ' . apply_filters( 'booster_get_message', '', 'desc_no_link' ),
110
  'id' => 'wcj_checkout_fields_' . $field . '_' . 'priority',
111
  'default' => 0,
112
  'type' => 'number',
113
  'css' => 'min-width:300px;width:50%;',
114
- 'custom_attributes' => apply_filters( 'booster_get_message', '', 'readonly' ),
115
  ),
116
  ) );
117
  }
106
  ),
107
  array(
108
  'desc' => __( 'priority (i.e. order)', 'woocommerce-jetpack' ),
109
+ 'desc_tip' => __( 'Leave zero for WooCommerce defaults.', 'woocommerce-jetpack' ) . ' ' . apply_filters( 'booster_message', '', 'desc_no_link' ),
110
  'id' => 'wcj_checkout_fields_' . $field . '_' . 'priority',
111
  'default' => 0,
112
  'type' => 'number',
113
  'css' => 'min-width:300px;width:50%;',
114
+ 'custom_attributes' => apply_filters( 'booster_message', '', 'readonly' ),
115
  ),
116
  ) );
117
  }
includes/settings/wcj-settings-checkout-custom-fields.php CHANGED
@@ -82,9 +82,9 @@ $settings = array(
82
  'id' => 'wcj_checkout_custom_fields_total_number',
83
  'default' => 1,
84
  'type' => 'custom_number',
85
- 'desc' => apply_filters( 'booster_get_message', '', 'desc' ),
86
  'custom_attributes' => array_merge(
87
- is_array( apply_filters( 'booster_get_message', '', 'readonly' ) ) ? apply_filters( 'booster_get_message', '', 'readonly' ) : array(),
88
  array( 'step' => '1', 'min' => '1' )
89
  ),
90
  'css' => 'width:100px;',
@@ -94,7 +94,7 @@ $settings = array(
94
  'id' => 'wcj_checkout_custom_fields_options',
95
  ),
96
  );
97
- for ( $i = 1; $i <= apply_filters( 'booster_get_option', 1, get_option( 'wcj_checkout_custom_fields_total_number', 1 ) ); $i++ ) {
98
  $settings = array_merge( $settings,
99
  array(
100
  array(
82
  'id' => 'wcj_checkout_custom_fields_total_number',
83
  'default' => 1,
84
  'type' => 'custom_number',
85
+ 'desc' => apply_filters( 'booster_message', '', 'desc' ),
86
  'custom_attributes' => array_merge(
87
+ is_array( apply_filters( 'booster_message', '', 'readonly' ) ) ? apply_filters( 'booster_message', '', 'readonly' ) : array(),
88
  array( 'step' => '1', 'min' => '1' )
89
  ),
90
  'css' => 'width:100px;',
94
  'id' => 'wcj_checkout_custom_fields_options',
95
  ),
96
  );
97
+ for ( $i = 1; $i <= apply_filters( 'booster_option', 1, get_option( 'wcj_checkout_custom_fields_total_number', 1 ) ); $i++ ) {
98
  $settings = array_merge( $settings,
99
  array(
100
  array(
includes/settings/wcj-settings-checkout-custom-info.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Settings - Checkout Custom Info
4
  *
5
- * @version 2.8.0
6
  * @since 2.8.0
7
  * @author Algoritmika Ltd.
8
  */
@@ -20,15 +20,15 @@ $settings = array(
20
  'id' => 'wcj_checkout_custom_info_total_number',
21
  'default' => 1,
22
  'type' => 'custom_number',
23
- 'desc' => apply_filters( 'booster_get_message', '', 'desc' ),
24
- 'custom_attributes' => apply_filters( 'booster_get_message', '', 'readonly' ),
25
  ),
26
  array(
27
  'type' => 'sectionend',
28
  'id' => 'wcj_checkout_custom_info_blocks_options',
29
  ),
30
  );
31
- $total_number = apply_filters( 'booster_get_option', 1, get_option( 'wcj_checkout_custom_info_total_number', 1 ) );
32
  for ( $i = 1; $i <= $total_number; $i++ ) {
33
  $settings = array_merge( $settings, array(
34
  array(
@@ -41,7 +41,7 @@ for ( $i = 1; $i <= $total_number; $i++ ) {
41
  'id' => 'wcj_checkout_custom_info_content_' . $i,
42
  'default' => '[wcj_cart_items_total_weight before="Total weight: " after=" kg"]',
43
  'type' => 'textarea',
44
- 'css' => 'width:30%;min-width:300px;height:100px;',
45
  ),
46
  array(
47
  'title' => __( 'Position', 'woocommerce-jetpack' ),
@@ -79,14 +79,12 @@ for ( $i = 1; $i <= $total_number; $i++ ) {
79
  */
80
  'woocommerce_thankyou' => __( 'Order Received (Thank You) page', 'woocommerce-jetpack' ),
81
  ),
82
- 'css' => 'width:250px;',
83
  ),
84
  array(
85
  'title' => __( 'Position Order (i.e. Priority)', 'woocommerce-jetpack' ),
86
  'id' => 'wcj_checkout_custom_info_priority_' . $i,
87
  'default' => 10,
88
  'type' => 'number',
89
- 'css' => 'width:250px;',
90
  ),
91
  array(
92
  'type' => 'sectionend',
2
  /**
3
  * Booster for WooCommerce - Settings - Checkout Custom Info
4
  *
5
+ * @version 3.3.0
6
  * @since 2.8.0
7
  * @author Algoritmika Ltd.
8
  */
20
  'id' => 'wcj_checkout_custom_info_total_number',
21
  'default' => 1,
22
  'type' => 'custom_number',
23
+ 'desc' => apply_filters( 'booster_message', '', 'desc' ),
24
+ 'custom_attributes' => apply_filters( 'booster_message', '', 'readonly' ),
25
  ),
26
  array(
27
  'type' => 'sectionend',
28
  'id' => 'wcj_checkout_custom_info_blocks_options',
29
  ),
30
  );
31
+ $total_number = apply_filters( 'booster_option', 1, get_option( 'wcj_checkout_custom_info_total_number', 1 ) );
32
  for ( $i = 1; $i <= $total_number; $i++ ) {
33
  $settings = array_merge( $settings, array(
34
  array(
41
  'id' => 'wcj_checkout_custom_info_content_' . $i,
42
  'default' => '[wcj_cart_items_total_weight before="Total weight: " after=" kg"]',
43
  'type' => 'textarea',
44
+ 'css' => 'width:100%;height:200px;',
45
  ),
46
  array(
47
  'title' => __( 'Position', 'woocommerce-jetpack' ),
79
  */
80
  'woocommerce_thankyou' => __( 'Order Received (Thank You) page', 'woocommerce-jetpack' ),
81
  ),
 
82
  ),
83
  array(
84
  'title' => __( 'Position Order (i.e. Priority)', 'woocommerce-jetpack' ),
85
  'id' => 'wcj_checkout_custom_info_priority_' . $i,
86
  'default' => 10,
87
  'type' => 'number',
 
88
  ),
89
  array(
90
  'type' => 'sectionend',
includes/settings/wcj-settings-checkout-customization.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Settings - Checkout Customization
4
  *
5
- * @version 3.1.0
6
  * @since 2.8.0
7
  * @author Algoritmika Ltd.
8
  */
@@ -71,7 +71,7 @@ return array(
71
  'id' => 'wcj_checkout_customization_disable_fields_for_logged_message',
72
  'default' => '<em>' . __( 'This field can not be changed', 'woocommerce-jetpack' ) . '</em>',
73
  'type' => 'custom_textarea',
74
- 'css' => 'width:99%;',
75
  ),
76
  array(
77
  'title' => __( 'Customize "order received" message', 'woocommerce-jetpack' ),
@@ -85,7 +85,20 @@ return array(
85
  'id' => 'wcj_checkout_customization_order_received_message',
86
  'default' => __( 'Thank you. Your order has been received.', 'woocommerce' ),
87
  'type' => 'custom_textarea',
88
- 'css' => 'width:99%;',
 
 
 
 
 
 
 
 
 
 
 
 
 
89
  ),
90
  array(
91
  'type' => 'sectionend',
2
  /**
3
  * Booster for WooCommerce - Settings - Checkout Customization
4
  *
5
+ * @version 3.3.0
6
  * @since 2.8.0
7
  * @author Algoritmika Ltd.
8
  */
71
  'id' => 'wcj_checkout_customization_disable_fields_for_logged_message',
72
  'default' => '<em>' . __( 'This field can not be changed', 'woocommerce-jetpack' ) . '</em>',
73
  'type' => 'custom_textarea',
74
+ 'css' => 'width:100%;',
75
  ),
76
  array(
77
  'title' => __( 'Customize "order received" message', 'woocommerce-jetpack' ),
85
  'id' => 'wcj_checkout_customization_order_received_message',
86
  'default' => __( 'Thank you. Your order has been received.', 'woocommerce' ),
87
  'type' => 'custom_textarea',
88
+ 'css' => 'width:100%;',
89
+ ),
90
+ array(
91
+ 'title' => __( 'Customize "Returning customer?" message', 'woocommerce-jetpack' ),
92
+ 'desc' => __( 'Enable', 'woocommerce-jetpack' ),
93
+ 'id' => 'wcj_checkout_customization_checkout_login_message_enabled',
94
+ 'default' => 'no',
95
+ 'type' => 'checkbox',
96
+ ),
97
+ array(
98
+ 'id' => 'wcj_checkout_customization_checkout_login_message',
99
+ 'default' => __( 'Returning customer?', 'woocommerce' ),
100
+ 'type' => 'custom_textarea',
101
+ 'css' => 'width:100%;',
102
  ),
103
  array(
104
  'type' => 'sectionend',
includes/settings/wcj-settings-checkout-files-upload.php CHANGED
@@ -23,14 +23,14 @@ $settings = array(
23
  'id' => 'wcj_checkout_files_upload_total_number',
24
  'default' => 1,
25
  'type' => 'custom_number',
26
- 'desc' => apply_filters( 'booster_get_message', '', 'desc' ),
27
  'custom_attributes' => array_merge(
28
- is_array( apply_filters( 'booster_get_message', '', 'readonly' ) ) ? apply_filters( 'booster_get_message', '', 'readonly' ) : array(),
29
  array( 'step' => '1', 'min' => '1', )
30
  ),
31
  ),
32
  );
33
- $total_number = apply_filters( 'booster_get_option', 1, get_option( 'wcj_checkout_files_upload_total_number', 1 ) );
34
  for ( $i = 1; $i <= $total_number; $i++ ) {
35
  $settings = array_merge( $settings, array(
36
  array(
23
  'id' => 'wcj_checkout_files_upload_total_number',
24
  'default' => 1,
25
  'type' => 'custom_number',
26
+ 'desc' => apply_filters( 'booster_message', '', 'desc' ),
27
  'custom_attributes' => array_merge(
28
+ is_array( apply_filters( 'booster_message', '', 'readonly' ) ) ? apply_filters( 'booster_message', '', 'readonly' ) : array(),
29
  array( 'step' => '1', 'min' => '1', )
30
  ),
31
  ),
32
  );
33
+ $total_number = apply_filters( 'booster_option', 1, get_option( 'wcj_checkout_files_upload_total_number', 1 ) );
34
  for ( $i = 1; $i <= $total_number; $i++ ) {
35
  $settings = array_merge( $settings, array(
36
  array(
includes/settings/wcj-settings-coupon-code-generator.php CHANGED
@@ -41,8 +41,8 @@ return array(
41
  'type' => 'select',
42
  'options' => $algorithms,
43
  'desc_tip' => sprintf( __( 'Algorithms: %s.', 'woocommerce-jetpack' ), implode( '; ', $algorithms ) ),
44
- 'desc' => apply_filters( 'booster_get_message', '', 'desc' ),
45
- 'custom_attributes' => apply_filters( 'booster_get_message', '', 'disabled' ),
46
  ),
47
  array(
48
  'title' => __( 'Length', 'woocommerce-jetpack' ),
@@ -50,8 +50,8 @@ return array(
50
  'id' => 'wcj_coupons_code_generator_length',
51
  'default' => 0,
52
  'type' => 'number',
53
- 'desc' => apply_filters( 'booster_get_message', '', 'desc' ),
54
- 'custom_attributes' => apply_filters( 'booster_get_message', '', 'readonly' ),
55
  ),
56
  array(
57
  'type' => 'sectionend',
41
  'type' => 'select',
42
  'options' => $algorithms,
43
  'desc_tip' => sprintf( __( 'Algorithms: %s.', 'woocommerce-jetpack' ), implode( '; ', $algorithms ) ),
44
+ 'desc' => apply_filters( 'booster_message', '', 'desc' ),
45
+ 'custom_attributes' => apply_filters( 'booster_message', '', 'disabled' ),
46
  ),
47
  array(
48
  'title' => __( 'Length', 'woocommerce-jetpack' ),
50
  'id' => 'wcj_coupons_code_generator_length',
51
  'default' => 0,
52
  'type' => 'number',
53
+ 'desc' => apply_filters( 'booster_message', '', 'desc' ),
54
+ 'custom_attributes' => apply_filters( 'booster_message', '', 'readonly' ),
55
  ),
56
  array(
57
  'type' => 'sectionend',
includes/settings/wcj-settings-currency-exchange-rates.php CHANGED
@@ -126,11 +126,11 @@ $settings = array_merge( $settings, array(
126
  'id' => 'wcj_currency_exchange_custom_currencies_total_number',
127
  'default' => 1,
128
  'type' => 'custom_number',
129
- 'desc' => apply_filters( 'booster_get_message', '', 'desc' ),
130
- 'custom_attributes' => apply_filters( 'booster_get_message', '', 'readonly' ),
131
  ),
132
  ) );
133
- $total_number = apply_filters( 'booster_get_option', 1, get_option( 'wcj_currency_exchange_custom_currencies_total_number', 1 ) );
134
  for ( $i = 1; $i <= $total_number; $i++ ) {
135
  $settings = array_merge( $settings, array(
136
  array(
126
  'id' => 'wcj_currency_exchange_custom_currencies_total_number',
127
  'default' => 1,
128
  'type' => 'custom_number',
129
+ 'desc' => apply_filters( 'booster_message', '', 'desc' ),
130
+ 'custom_attributes' => apply_filters( 'booster_message', '', 'readonly' ),
131
  ),
132
  ) );
133
+ $total_number = apply_filters( 'booster_option', 1, get_option( 'wcj_currency_exchange_custom_currencies_total_number', 1 ) );
134
  for ( $i = 1; $i <= $total_number; $i++ ) {
135
  $settings = array_merge( $settings, array(
136
  array(
includes/settings/wcj-settings-currency-per-product.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Settings - Currency per Product
4
  *
5
- * @version 3.2.4
6
  * @since 2.8.0
7
  * @author Algoritmika Ltd.
8
  */
@@ -107,11 +107,11 @@ $settings = array(
107
  'manual' => __( 'Enter Rates Manually', 'woocommerce-jetpack' ),
108
  'auto' => __( 'Automatically via Currency Exchange Rates module', 'woocommerce-jetpack' ),
109
  ),
110
- 'desc' => ( '' == apply_filters( 'booster_get_message', '', 'desc' ) ) ?
111
  __( 'Visit', 'woocommerce-jetpack' ) . ' <a href="' . admin_url( 'admin.php?page=wc-settings&tab=jetpack&wcj-cat=prices_and_currencies&section=currency_exchange_rates' ) . '">' . __( 'Currency Exchange Rates module', 'woocommerce-jetpack' ) . '</a>'
112
  :
113
- apply_filters( 'booster_get_message', '', 'desc' ),
114
- 'custom_attributes' => apply_filters( 'booster_get_message', '', 'disabled' ),
115
  ),
116
  array(
117
  'type' => 'sectionend',
@@ -128,9 +128,9 @@ $settings = array(
128
  'id' => 'wcj_currency_per_product_total_number',
129
  'default' => 1,
130
  'type' => 'custom_number',
131
- 'desc' => apply_filters( 'booster_get_message', '', 'desc' ),
132
  'custom_attributes' => array_merge(
133
- is_array( apply_filters( 'booster_get_message', '', 'readonly' ) ) ? apply_filters( 'booster_get_message', '', 'readonly' ) : array(),
134
  array( 'step' => '1', 'min' => '1', )
135
  ),
136
  ),
@@ -147,7 +147,7 @@ if ( 'yes' === get_option( 'wcj_currency_per_product_by_product_cats_enabled', '
147
  if ( 'yes' === get_option( 'wcj_currency_per_product_by_product_tags_enabled', 'no' ) ) {
148
  $product_tags_as_options = wcj_get_terms( 'product_tag' );
149
  }
150
- $total_number = apply_filters( 'booster_get_option', 1, get_option( 'wcj_currency_per_product_total_number', 1 ) );
151
  for ( $i = 1; $i <= $total_number; $i++ ) {
152
  $currency_to = get_option( 'wcj_currency_per_product_currency_' . $i, $currency_from );
153
  $custom_attributes = array(
@@ -230,5 +230,22 @@ $settings = array_merge( $settings, array(
230
  'type' => 'sectionend',
231
  'id' => 'wcj_currency_per_product_currencies_options',
232
  ),
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
233
  ) );
234
  return $settings;
2
  /**
3
  * Booster for WooCommerce - Settings - Currency per Product
4
  *
5
+ * @version 3.3.0
6
  * @since 2.8.0
7
  * @author Algoritmika Ltd.
8
  */
107
  'manual' => __( 'Enter Rates Manually', 'woocommerce-jetpack' ),
108
  'auto' => __( 'Automatically via Currency Exchange Rates module', 'woocommerce-jetpack' ),
109
  ),
110
+ 'desc' => ( '' == apply_filters( 'booster_message', '', 'desc' ) ) ?
111
  __( 'Visit', 'woocommerce-jetpack' ) . ' <a href="' . admin_url( 'admin.php?page=wc-settings&tab=jetpack&wcj-cat=prices_and_currencies&section=currency_exchange_rates' ) . '">' . __( 'Currency Exchange Rates module', 'woocommerce-jetpack' ) . '</a>'
112
  :
113
+ apply_filters( 'booster_message', '', 'desc' ),
114
+ 'custom_attributes' => apply_filters( 'booster_message', '', 'disabled' ),
115
  ),
116
  array(
117
  'type' => 'sectionend',
128
  'id' => 'wcj_currency_per_product_total_number',
129
  'default' => 1,
130
  'type' => 'custom_number',
131
+ 'desc' => apply_filters( 'booster_message', '', 'desc' ),
132
  'custom_attributes' => array_merge(
133
+ is_array( apply_filters( 'booster_message', '', 'readonly' ) ) ? apply_filters( 'booster_message', '', 'readonly' ) : array(),
134
  array( 'step' => '1', 'min' => '1', )
135
  ),
136
  ),
147
  if ( 'yes' === get_option( 'wcj_currency_per_product_by_product_tags_enabled', 'no' ) ) {
148
  $product_tags_as_options = wcj_get_terms( 'product_tag' );
149
  }
150
+ $total_number = apply_filters( 'booster_option', 1, get_option( 'wcj_currency_per_product_total_number', 1 ) );
151
  for ( $i = 1; $i <= $total_number; $i++ ) {
152
  $currency_to = get_option( 'wcj_currency_per_product_currency_' . $i, $currency_from );
153
  $custom_attributes = array(
230
  'type' => 'sectionend',
231
  'id' => 'wcj_currency_per_product_currencies_options',
232
  ),
233
+ array(
234
+ 'title' => __( 'Advanced Options', 'woocommerce-jetpack' ),
235
+ 'type' => 'title',
236
+ 'id' => 'wcj_currency_per_product_advanced_options',
237
+ ),
238
+ array(
239
+ 'title' => __( 'Advanced: Save Calculated Products Prices', 'woocommerce-jetpack' ),
240
+ 'desc_tip' => __( 'This may help if you are experiencing compatibility issues with other plugins.', 'woocommerce-jetpack' ),
241
+ 'desc' => __( 'Enable', 'woocommerce-jetpack' ),
242
+ 'id' => 'wcj_currency_per_product_save_prices',
243
+ 'default' => 'no',
244
+ 'type' => 'checkbox',
245
+ ),
246
+ array(
247
+ 'type' => 'sectionend',
248
+ 'id' => 'wcj_currency_per_product_advanced_options',
249
+ ),
250
  ) );
251
  return $settings;
includes/settings/wcj-settings-currency.php CHANGED
@@ -37,11 +37,11 @@ foreach ( $currency_names as $currency_code => $currency_name ) {
37
  array(
38
  'title' => $currency_name . ' [' . $currency_code . ']',
39
  'desc' => $country_flag,
40
- 'desc_tip' => apply_filters( 'booster_get_message', '', 'desc_no_link' ),
41
  'id' => 'wcj_currency_' . $currency_code,
42
  'default' => $currency_symbols[ $currency_code ],
43
  'type' => 'text',
44
- 'custom_attributes' => apply_filters( 'booster_get_message', '', 'readonly' ),
45
  ),
46
  ) );
47
  }
@@ -60,11 +60,11 @@ $settings = array_merge( $settings, array(
60
  'id' => 'wcj_currency_custom_currency_total_number',
61
  'default' => 1,
62
  'type' => 'custom_number',
63
- 'desc' => apply_filters( 'booster_get_message', '', 'desc' ),
64
- 'custom_attributes' => apply_filters( 'booster_get_message', '', 'readonly' ),
65
  ),
66
  ) );
67
- $custom_currency_total_number = apply_filters( 'booster_get_option', 1, get_option( 'wcj_currency_custom_currency_total_number', 1 ) );
68
  for ( $i = 1; $i <= $custom_currency_total_number; $i++ ) {
69
  $settings = array_merge( $settings, array(
70
  array(
37
  array(
38
  'title' => $currency_name . ' [' . $currency_code . ']',
39
  'desc' => $country_flag,
40
+ 'desc_tip' => apply_filters( 'booster_message', '', 'desc_no_link' ),
41
  'id' => 'wcj_currency_' . $currency_code,
42
  'default' => $currency_symbols[ $currency_code ],
43
  'type' => 'text',
44
+ 'custom_attributes' => apply_filters( 'booster_message', '', 'readonly' ),
45
  ),
46
  ) );
47
  }
60
  'id' => 'wcj_currency_custom_currency_total_number',
61
  'default' => 1,
62
  'type' => 'custom_number',
63
+ 'desc' => apply_filters( 'booster_message', '', 'desc' ),
64
+ 'custom_attributes' => apply_filters( 'booster_message', '', 'readonly' ),
65
  ),
66
  ) );
67
+ $custom_currency_total_number = apply_filters( 'booster_option', 1, get_option( 'wcj_currency_custom_currency_total_number', 1 ) );
68
  for ( $i = 1; $i <= $custom_currency_total_number; $i++ ) {
69
  $settings = array_merge( $settings, array(
70
  array(
includes/settings/wcj-settings-emails-verification.php CHANGED
@@ -99,8 +99,8 @@ return array(
99
  'id' => 'wcj_emails_verification_email_subject',
100
  'default' => __( 'Please activate your account', 'woocommerce-jetpack' ),
101
  'css' => 'width:66%;min-width:300px;',
102
- 'desc' => apply_filters( 'booster_get_message', '', 'desc' ),
103
- 'custom_attributes' => apply_filters( 'booster_get_message', '', 'readonly' ),
104
  ),
105
  array(
106
  'title' => __( 'Email Content', 'woocommerce-jetpack' ),
@@ -109,8 +109,8 @@ return array(
109
  'id' => 'wcj_emails_verification_email_content',
110
  'default' => __( 'Please click the following link to verify your email:<br><br><a href="%verification_url%">%verification_url%</a>', 'woocommerce-jetpack' ),
111
  'css' => 'width:66%;min-width:300px;height:150px;',
112
- 'desc' => apply_filters( 'booster_get_message', '', 'desc' ),
113
- 'custom_attributes' => apply_filters( 'booster_get_message', '', 'readonly' ),
114
  ),
115
  array(
116
  'title' => __( 'Email Template', 'woocommerce-jetpack' ),
@@ -122,8 +122,8 @@ return array(
122
  'plain' => __( 'Plain', 'woocommerce-jetpack' ),
123
  'wc' => __( 'WooCommerce', 'woocommerce-jetpack' ),
124
  ),
125
- 'desc' => apply_filters( 'booster_get_message', '', 'desc' ),
126
- 'custom_attributes' => apply_filters( 'booster_get_message', '', 'disabled' ),
127
  ),
128
  array(
129
  'desc_tip' => __( 'If WooCommerce template is selected, set email heading here.', 'woocommerce-jetpack' ),
@@ -131,8 +131,8 @@ return array(
131
  'type' => 'custom_textarea',
132
  'default' => __( 'Activate your account', 'woocommerce-jetpack' ),
133
  'css' => 'width:66%;min-width:300px;',
134
- 'desc' => apply_filters( 'booster_get_message', '', 'desc' ),
135
- 'custom_attributes' => apply_filters( 'booster_get_message', '', 'readonly' ),
136
  ),
137
  array(
138
  'type' => 'sectionend',
99
  'id' => 'wcj_emails_verification_email_subject',
100
  'default' => __( 'Please activate your account', 'woocommerce-jetpack' ),
101
  'css' => 'width:66%;min-width:300px;',
102
+ 'desc' => apply_filters( 'booster_message', '', 'desc' ),
103
+ 'custom_attributes' => apply_filters( 'booster_message', '', 'readonly' ),
104
  ),
105
  array(
106
  'title' => __( 'Email Content', 'woocommerce-jetpack' ),
109
  'id' => 'wcj_emails_verification_email_content',
110
  'default' => __( 'Please click the following link to verify your email:<br><br><a href="%verification_url%">%verification_url%</a>', 'woocommerce-jetpack' ),
111
  'css' => 'width:66%;min-width:300px;height:150px;',
112
+ 'desc' => apply_filters( 'booster_message', '', 'desc' ),
113
+ 'custom_attributes' => apply_filters( 'booster_message', '', 'readonly' ),
114
  ),
115
  array(
116
  'title' => __( 'Email Template', 'woocommerce-jetpack' ),
122
  'plain' => __( 'Plain', 'woocommerce-jetpack' ),
123
  'wc' => __( 'WooCommerce', 'woocommerce-jetpack' ),
124
  ),
125
+ 'desc' => apply_filters( 'booster_message', '', 'desc' ),
126
+ 'custom_attributes' => apply_filters( 'booster_message', '', 'disabled' ),
127
  ),
128
  array(
129
  'desc_tip' => __( 'If WooCommerce template is selected, set email heading here.', 'woocommerce-jetpack' ),
131
  'type' => 'custom_textarea',
132
  'default' => __( 'Activate your account', 'woocommerce-jetpack' ),
133
  'css' => 'width:66%;min-width:300px;',
134
+ 'desc' => apply_filters( 'booster_message', '', 'desc' ),
135
+ 'custom_attributes' => apply_filters( 'booster_message', '', 'readonly' ),
136
  ),
137
  array(
138
  'type' => 'sectionend',
includes/settings/wcj-settings-emails.php CHANGED
@@ -24,11 +24,11 @@ $settings = array(
24
  'id' => 'wcj_emails_custom_emails_total_number',
25
  'default' => 1,
26
  'type' => 'custom_number',
27
- 'desc' => apply_filters( 'booster_get_message', '', 'desc' ),
28
- 'custom_attributes' => apply_filters( 'booster_get_message', '', 'readonly' ),
29
  ),
30
  );
31
- $total_number = apply_filters( 'booster_get_option', 1, get_option( 'wcj_emails_custom_emails_total_number', 1 ) );
32
  for ( $i = 1; $i <= $total_number; $i++ ) {
33
  $settings = array_merge( $settings, array(
34
  array(
24
  'id' => 'wcj_emails_custom_emails_total_number',
25
  'default' => 1,
26
  'type' => 'custom_number',
27
+ 'desc' => apply_filters( 'booster_message', '', 'desc' ),
28
+ 'custom_attributes' => apply_filters( 'booster_message', '', 'readonly' ),
29
  ),
30
  );
31
+ $total_number = apply_filters( 'booster_option', 1, get_option( 'wcj_emails_custom_emails_total_number', 1 ) );
32
  for ( $i = 1; $i <= $total_number; $i++ ) {
33
  $settings = array_merge( $settings, array(
34
  array(
includes/settings/wcj-settings-empty-cart.php CHANGED
@@ -21,8 +21,8 @@ return array(
21
  'id' => 'wcj_empty_cart_text',
22
  'default' => 'Empty Cart',
23
  'type' => 'text',
24
- 'desc' => apply_filters( 'booster_get_message', '', 'desc' ),
25
- 'custom_attributes' => apply_filters( 'booster_get_message', '', 'readonly' ),
26
  ),
27
  array(
28
  'title' => __( 'Wrapping DIV style', 'woocommerce-jetpack' ),
@@ -43,8 +43,8 @@ return array(
43
  'woocommerce_proceed_to_checkout' => __( 'After Proceed to Checkout button', 'woocommerce-jetpack' ),
44
  'woocommerce_after_cart_totals' => __( 'After Cart Totals', 'woocommerce-jetpack' ),
45
  ),
46
- 'desc' => apply_filters( 'booster_get_message', '', 'desc' ),
47
- 'custom_attributes' => apply_filters( 'booster_get_message', '', 'disabled' ),
48
  ),
49
  array(
50
  'title' => __( 'Button position on the Checkout page', 'woocommerce-jetpack' ),
21
  'id' => 'wcj_empty_cart_text',
22
  'default' => 'Empty Cart',
23
  'type' => 'text',
24
+ 'desc' => apply_filters( 'booster_message', '', 'desc' ),
25
+ 'custom_attributes' => apply_filters( 'booster_message', '', 'readonly' ),
26
  ),
27
  array(
28
  'title' => __( 'Wrapping DIV style', 'woocommerce-jetpack' ),
43
  'woocommerce_proceed_to_checkout' => __( 'After Proceed to Checkout button', 'woocommerce-jetpack' ),
44
  'woocommerce_after_cart_totals' => __( 'After Cart Totals', 'woocommerce-jetpack' ),
45
  ),
46
+ 'desc' => apply_filters( 'booster_message', '', 'desc' ),
47
+ 'custom_attributes' => apply_filters( 'booster_message', '', 'disabled' ),
48
  ),
49
  array(
50
  'title' => __( 'Button position on the Checkout page', 'woocommerce-jetpack' ),
includes/settings/wcj-settings-eu-vat-number.php CHANGED
@@ -107,12 +107,12 @@ $settings = array(
107
  'title' => __( 'Preserve VAT in Base Country', 'woocommerce-jetpack' ),
108
  'desc_tip' => sprintf( __( 'This will validate the VAT, but won\'t exempt VAT for base country VAT numbers. Base (i.e. store) country is set in %s.', 'woocommerce-jetpack' ),
109
  '<a href="' . admin_url( 'admin.php?page=wc-settings&tab=general' ) . '">' . __( 'WooCommerce > Settings > General', 'woocommerce-jetpack' ) . '</a>' ) . '<br>' .
110
- apply_filters( 'booster_get_message', '', 'desc' ),
111
  'desc' => __( 'Yes', 'woocommerce-jetpack' ),
112
  'id' => 'wcj_eu_vat_number_preserve_in_base_country',
113
  'default' => 'no',
114
  'type' => 'checkbox',
115
- 'custom_attributes' => apply_filters( 'booster_get_message', '', 'disabled' ),
116
  ),
117
  /*
118
  array(
@@ -126,12 +126,12 @@ $settings = array(
126
  array(
127
  'title' => __( 'Check for IP Location Country', 'woocommerce-jetpack' ),
128
  'desc_tip' => __( 'This will check if customer\'s country (located by customer\'s IP) matches the country in entered VAT number.', 'woocommerce-jetpack' ) . '<br>' .
129
- apply_filters( 'booster_get_message', '', 'desc' ),
130
  'desc' => __( 'Yes', 'woocommerce-jetpack' ),
131
  'id' => 'wcj_eu_vat_number_check_ip_location_country',
132
  'default' => 'no',
133
  'type' => 'checkbox',
134
- 'custom_attributes' => apply_filters( 'booster_get_message', '', 'disabled' ),
135
  ),
136
  /*
137
  array(
107
  'title' => __( 'Preserve VAT in Base Country', 'woocommerce-jetpack' ),
108
  'desc_tip' => sprintf( __( 'This will validate the VAT, but won\'t exempt VAT for base country VAT numbers. Base (i.e. store) country is set in %s.', 'woocommerce-jetpack' ),
109
  '<a href="' . admin_url( 'admin.php?page=wc-settings&tab=general' ) . '">' . __( 'WooCommerce > Settings > General', 'woocommerce-jetpack' ) . '</a>' ) . '<br>' .
110
+ apply_filters( 'booster_message', '', 'desc' ),
111
  'desc' => __( 'Yes', 'woocommerce-jetpack' ),
112
  'id' => 'wcj_eu_vat_number_preserve_in_base_country',
113
  'default' => 'no',
114
  'type' => 'checkbox',
115
+ 'custom_attributes' => apply_filters( 'booster_message', '', 'disabled' ),
116
  ),
117
  /*
118
  array(
126
  array(
127
  'title' => __( 'Check for IP Location Country', 'woocommerce-jetpack' ),
128
  'desc_tip' => __( 'This will check if customer\'s country (located by customer\'s IP) matches the country in entered VAT number.', 'woocommerce-jetpack' ) . '<br>' .
129
+ apply_filters( 'booster_message', '', 'desc' ),
130
  'desc' => __( 'Yes', 'woocommerce-jetpack' ),
131
  'id' => 'wcj_eu_vat_number_check_ip_location_country',
132
  'default' => 'no',
133
  'type' => 'checkbox',
134
+ 'custom_attributes' => apply_filters( 'booster_message', '', 'disabled' ),
135
  ),
136
  /*
137
  array(
includes/settings/wcj-settings-export.php CHANGED
@@ -53,15 +53,15 @@ $settings = array(
53
  'id' => 'wcj_export_orders_fields_additional_total_number',
54
  'default' => 1,
55
  'type' => 'custom_number',
56
- 'desc' => apply_filters( 'booster_get_message', '', 'desc' ),
57
  'custom_attributes' => array_merge(
58
- is_array( apply_filters( 'booster_get_message', '', 'readonly' ) ) ?
59
- apply_filters( 'booster_get_message', '', 'readonly' ) : array(),
60
  array( 'step' => '1', 'min' => '0', )
61
  ),
62
  ),
63
  );
64
- $total_number = apply_filters( 'booster_get_option', 1, get_option( 'wcj_export_orders_fields_additional_total_number', 1 ) );
65
  for ( $i = 1; $i <= $total_number; $i++ ) {
66
  $settings = array_merge( $settings, array(
67
  array(
@@ -121,15 +121,15 @@ $settings = array_merge( $settings, array(
121
  'id' => 'wcj_export_orders_items_fields_additional_total_number',
122
  'default' => 1,
123
  'type' => 'custom_number',
124
- 'desc' => apply_filters( 'booster_get_message', '', 'desc' ),
125
  'custom_attributes' => array_merge(
126
- is_array( apply_filters( 'booster_get_message', '', 'readonly' ) ) ?
127
- apply_filters( 'booster_get_message', '', 'readonly' ) : array(),
128
  array( 'step' => '1', 'min' => '0', )
129
  ),
130
  ),
131
  ) );
132
- $total_number = apply_filters( 'booster_get_option', 1, get_option( 'wcj_export_orders_items_fields_additional_total_number', 1 ) );
133
  for ( $i = 1; $i <= $total_number; $i++ ) {
134
  $settings = array_merge( $settings, array(
135
  array(
@@ -203,15 +203,15 @@ $settings = array_merge( $settings, array(
203
  'id' => 'wcj_export_products_fields_additional_total_number',
204
  'default' => 1,
205
  'type' => 'custom_number',
206
- 'desc' => apply_filters( 'booster_get_message', '', 'desc' ),
207
  'custom_attributes' => array_merge(
208
- is_array( apply_filters( 'booster_get_message', '', 'readonly' ) ) ?
209
- apply_filters( 'booster_get_message', '', 'readonly' ) : array(),
210
  array( 'step' => '1', 'min' => '0', )
211
  ),
212
  ),
213
  ) );
214
- $total_number = apply_filters( 'booster_get_option', 1, get_option( 'wcj_export_products_fields_additional_total_number', 1 ) );
215
  for ( $i = 1; $i <= $total_number; $i++ ) {
216
  $settings = array_merge( $settings, array(
217
  array(
53
  'id' => 'wcj_export_orders_fields_additional_total_number',
54
  'default' => 1,
55
  'type' => 'custom_number',
56
+ 'desc' => apply_filters( 'booster_message', '', 'desc' ),
57
  'custom_attributes' => array_merge(
58
+ is_array( apply_filters( 'booster_message', '', 'readonly' ) ) ?
59
+ apply_filters( 'booster_message', '', 'readonly' ) : array(),
60
  array( 'step' => '1', 'min' => '0', )
61
  ),
62
  ),
63
  );
64
+ $total_number = apply_filters( 'booster_option', 1, get_option( 'wcj_export_orders_fields_additional_total_number', 1 ) );
65
  for ( $i = 1; $i <= $total_number; $i++ ) {
66
  $settings = array_merge( $settings, array(
67
  array(
121
  'id' => 'wcj_export_orders_items_fields_additional_total_number',
122
  'default' => 1,
123
  'type' => 'custom_number',
124
+ 'desc' => apply_filters( 'booster_message', '', 'desc' ),
125
  'custom_attributes' => array_merge(
126
+ is_array( apply_filters( 'booster_message', '', 'readonly' ) ) ?
127
+ apply_filters( 'booster_message', '', 'readonly' ) : array(),
128
  array( 'step' => '1', 'min' => '0', )
129
  ),
130
  ),
131
  ) );
132
+ $total_number = apply_filters( 'booster_option', 1, get_option( 'wcj_export_orders_items_fields_additional_total_number', 1 ) );
133
  for ( $i = 1; $i <= $total_number; $i++ ) {
134
  $settings = array_merge( $settings, array(
135
  array(
203
  'id' => 'wcj_export_products_fields_additional_total_number',
204
  'default' => 1,
205
  'type' => 'custom_number',
206
+ 'desc' => apply_filters( 'booster_message', '', 'desc' ),
207
  'custom_attributes' => array_merge(
208
+ is_array( apply_filters( 'booster_message', '', 'readonly' ) ) ?
209
+ apply_filters( 'booster_message', '', 'readonly' ) : array(),
210
  array( 'step' => '1', 'min' => '0', )
211
  ),
212
  ),
213
  ) );
214
+ $total_number = apply_filters( 'booster_option', 1, get_option( 'wcj_export_products_fields_additional_total_number', 1 ) );
215
  for ( $i = 1; $i <= $total_number; $i++ ) {
216
  $settings = array_merge( $settings, array(
217
  array(
includes/settings/wcj-settings-free-price.php CHANGED
@@ -45,8 +45,8 @@ foreach ( $product_types as $product_type => $product_type_desc ) {
45
  'default' => $default_value,
46
  'type' => 'textarea',
47
  'css' => 'width:30%;min-width:300px;min-height:50px;',
48
- 'desc' => ( 'variable' === $product_type ) ? apply_filters( 'booster_get_message', '', 'desc' ) : '',
49
- 'custom_attributes' => ( 'variable' === $product_type ) ? apply_filters( 'booster_get_message', '', 'readonly' ) : '',
50
  ),
51
  ) );
52
  }
45
  'default' => $default_value,
46
  'type' => 'textarea',
47
  'css' => 'width:30%;min-width:300px;min-height:50px;',
48
+ 'desc' => ( 'variable' === $product_type ) ? apply_filters( 'booster_message', '', 'desc' ) : '',
49
+ 'custom_attributes' => ( 'variable' === $product_type ) ? apply_filters( 'booster_message', '', 'readonly' ) : '',
50
  ),
51
  ) );
52
  }
includes/settings/wcj-settings-general.php CHANGED
@@ -203,8 +203,8 @@ $settings = array(
203
  'id' => 'wcj_general_user_role_changer_enabled',
204
  'default' => 'no',
205
  'type' => 'checkbox',
206
- 'desc_tip' => apply_filters( 'booster_get_message', '', 'desc' ),
207
- 'custom_attributes' => apply_filters( 'booster_get_message', '', 'disabled' ),
208
  ),
209
  array(
210
  'title' => __( 'Enabled for', 'woocommerce-jetpack' ),
203
  'id' => 'wcj_general_user_role_changer_enabled',
204
  'default' => 'no',
205
  'type' => 'checkbox',
206
+ 'desc_tip' => apply_filters( 'booster_message', '', 'desc' ),
207
+ 'custom_attributes' => apply_filters( 'booster_message', '', 'disabled' ),
208
  ),
209
  array(
210
  'title' => __( 'Enabled for', 'woocommerce-jetpack' ),
includes/settings/wcj-settings-global-discount.php CHANGED
@@ -26,16 +26,16 @@ $settings = array(
26
  'default' => 1,
27
  'type' => 'custom_number',
28
  'desc_tip' => __( 'Press Save changes after you change this number.', 'woocommerce-jetpack' ),
29
- 'desc' => apply_filters( 'booster_get_message', '', 'desc' ),
30
- 'custom_attributes' => is_array( apply_filters( 'booster_get_message', '', 'readonly' ) ) ?
31
- apply_filters( 'booster_get_message', '', 'readonly' ) : array( 'step' => '1', 'min' => '1', ),
32
  ),
33
  array(
34
  'type' => 'sectionend',
35
  'id' => 'wcj_global_discount_options',
36
  ),
37
  );
38
- for ( $i = 1; $i <= apply_filters( 'booster_get_option', 1, get_option( 'wcj_global_discount_groups_total_number', 1 ) ); $i++ ) {
39
  wcj_maybe_convert_and_update_option_value( array(
40
  array( 'id' => 'wcj_global_discount_sale_products_incl_' . $i, 'default' => '' ),
41
  array( 'id' => 'wcj_global_discount_sale_products_excl_' . $i, 'default' => '' ),
26
  'default' => 1,
27
  'type' => 'custom_number',
28
  'desc_tip' => __( 'Press Save changes after you change this number.', 'woocommerce-jetpack' ),
29
+ 'desc' => apply_filters( 'booster_message', '', 'desc' ),
30
+ 'custom_attributes' => is_array( apply_filters( 'booster_message', '', 'readonly' ) ) ?
31
+ apply_filters( 'booster_message', '', 'readonly' ) : array( 'step' => '1', 'min' => '1', ),
32
  ),
33
  array(
34
  'type' => 'sectionend',
35
  'id' => 'wcj_global_discount_options',
36
  ),
37
  );
38
+ for ( $i = 1; $i <= apply_filters( 'booster_option', 1, get_option( 'wcj_global_discount_groups_total_number', 1 ) ); $i++ ) {
39
  wcj_maybe_convert_and_update_option_value( array(
40
  array( 'id' => 'wcj_global_discount_sale_products_incl_' . $i, 'default' => '' ),
41
  array( 'id' => 'wcj_global_discount_sale_products_excl_' . $i, 'default' => '' ),
includes/settings/wcj-settings-left-to-free-shipping.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Settings - Left to Free Shipping
4
  *
5
- * @version 3.1.0
6
  * @since 2.8.0
7
  * @author Algoritmika Ltd.
8
  */
@@ -36,7 +36,7 @@ return array(
36
  'id' => 'wcj_shipping_left_to_free_info_content_cart',
37
  'default' => __( '%left_to_free% left to free shipping', 'woocommerce-jetpack' ),
38
  'type' => 'textarea',
39
- 'css' => 'width:30%;min-width:300px;height:100px;',
40
  ),
41
  array(
42
  'title' => '',
@@ -45,7 +45,6 @@ return array(
45
  'default' => 'woocommerce_after_cart_totals',
46
  'type' => 'select',
47
  'options' => wcj_get_cart_filters(),
48
- 'css' => 'width:250px;',
49
  ),
50
  array(
51
  'title' => '',
@@ -53,7 +52,6 @@ return array(
53
  'id' => 'wcj_shipping_left_to_free_info_priority_cart',
54
  'default' => 10,
55
  'type' => 'number',
56
- 'css' => 'width:250px;',
57
  ),
58
  array(
59
  'title' => __( 'Info on Mini Cart', 'woocommerce-jetpack' ),
@@ -61,8 +59,8 @@ return array(
61
  'id' => 'wcj_shipping_left_to_free_info_enabled_mini_cart',
62
  'default' => 'no',
63
  'type' => 'checkbox',
64
- 'custom_attributes' => apply_filters( 'booster_get_message', '', 'disabled' ),
65
- 'desc_tip' => apply_filters( 'booster_get_message', '', 'desc' ),
66
  ),
67
  array(
68
  'title' => '',
@@ -71,7 +69,7 @@ return array(
71
  'id' => 'wcj_shipping_left_to_free_info_content_mini_cart',
72
  'default' => __( '%left_to_free% left to free shipping', 'woocommerce-jetpack' ),
73
  'type' => 'textarea',
74
- 'css' => 'width:30%;min-width:300px;height:100px;',
75
  ),
76
  array(
77
  'title' => '',
@@ -84,7 +82,6 @@ return array(
84
  'woocommerce_widget_shopping_cart_before_buttons' => __( 'Before buttons', 'woocommerce-jetpack' ),
85
  'woocommerce_after_mini_cart' => __( 'After mini cart', 'woocommerce-jetpack' ),
86
  ),
87
- 'css' => 'width:250px;',
88
  ),
89
  array(
90
  'title' => '',
@@ -92,7 +89,6 @@ return array(
92
  'id' => 'wcj_shipping_left_to_free_info_priority_mini_cart',
93
  'default' => 10,
94
  'type' => 'number',
95
- 'css' => 'width:250px;',
96
  ),
97
  array(
98
  'title' => __( 'Info on Checkout', 'woocommerce-jetpack' ),
@@ -100,8 +96,8 @@ return array(
100
  'id' => 'wcj_shipping_left_to_free_info_enabled_checkout',
101
  'default' => 'no',
102
  'type' => 'checkbox',
103
- 'custom_attributes' => apply_filters( 'booster_get_message', '', 'disabled' ),
104
- 'desc_tip' => apply_filters( 'booster_get_message', '', 'desc' ),
105
  ),
106
  array(
107
  'title' => '',
@@ -110,7 +106,7 @@ return array(
110
  'id' => 'wcj_shipping_left_to_free_info_content_checkout',
111
  'default' => __( '%left_to_free% left to free shipping', 'woocommerce-jetpack' ),
112
  'type' => 'textarea',
113
- 'css' => 'width:30%;min-width:300px;height:100px;',
114
  ),
115
  array(
116
  'title' => '',
@@ -129,7 +125,6 @@ return array(
129
  'woocommerce_checkout_after_order_review' => __( 'After order review', 'woocommerce-jetpack' ),
130
  'woocommerce_after_checkout_form' => __( 'After checkout form', 'woocommerce-jetpack' ),
131
  ),
132
- 'css' => 'width:250px;',
133
  ),
134
  array(
135
  'title' => '',
@@ -137,7 +132,6 @@ return array(
137
  'id' => 'wcj_shipping_left_to_free_info_priority_checkout',
138
  'default' => 10,
139
  'type' => 'number',
140
- 'css' => 'width:250px;',
141
  ),
142
  array(
143
  'title' => __( 'Message on Free Shipping Reached', 'woocommerce-jetpack' ),
@@ -146,7 +140,7 @@ return array(
146
  'id' => 'wcj_shipping_left_to_free_info_content_reached',
147
  'default' => __( 'You have Free delivery', 'woocommerce-jetpack' ),
148
  'type' => 'textarea',
149
- 'css' => 'width:30%;min-width:300px;height:100px;',
150
  ),
151
  array(
152
  'type' => 'sectionend',
2
  /**
3
  * Booster for WooCommerce - Settings - Left to Free Shipping
4
  *
5
+ * @version 3.3.0
6
  * @since 2.8.0
7
  * @author Algoritmika Ltd.
8
  */
36
  'id' => 'wcj_shipping_left_to_free_info_content_cart',
37
  'default' => __( '%left_to_free% left to free shipping', 'woocommerce-jetpack' ),
38
  'type' => 'textarea',
39
+ 'css' => 'width:100%;height:100px;',
40
  ),
41
  array(
42
  'title' => '',
45
  'default' => 'woocommerce_after_cart_totals',
46
  'type' => 'select',
47
  'options' => wcj_get_cart_filters(),
 
48
  ),
49
  array(
50
  'title' => '',
52
  'id' => 'wcj_shipping_left_to_free_info_priority_cart',
53
  'default' => 10,
54
  'type' => 'number',
 
55
  ),
56
  array(
57
  'title' => __( 'Info on Mini Cart', 'woocommerce-jetpack' ),
59
  'id' => 'wcj_shipping_left_to_free_info_enabled_mini_cart',
60
  'default' => 'no',
61
  'type' => 'checkbox',
62
+ 'custom_attributes' => apply_filters( 'booster_message', '', 'disabled' ),
63
+ 'desc_tip' => apply_filters( 'booster_message', '', 'desc' ),
64
  ),
65
  array(
66
  'title' => '',
69
  'id' => 'wcj_shipping_left_to_free_info_content_mini_cart',
70
  'default' => __( '%left_to_free% left to free shipping', 'woocommerce-jetpack' ),
71
  'type' => 'textarea',
72
+ 'css' => 'width:100%;height:100px;',
73
  ),
74
  array(
75
  'title' => '',
82
  'woocommerce_widget_shopping_cart_before_buttons' => __( 'Before buttons', 'woocommerce-jetpack' ),
83
  'woocommerce_after_mini_cart' => __( 'After mini cart', 'woocommerce-jetpack' ),
84
  ),
 
85
  ),
86
  array(
87
  'title' => '',
89
  'id' => 'wcj_shipping_left_to_free_info_priority_mini_cart',
90
  'default' => 10,
91
  'type' => 'number',
 
92
  ),
93
  array(
94
  'title' => __( 'Info on Checkout', 'woocommerce-jetpack' ),
96
  'id' => 'wcj_shipping_left_to_free_info_enabled_checkout',
97
  'default' => 'no',
98
  'type' => 'checkbox',
99
+ 'custom_attributes' => apply_filters( 'booster_message', '', 'disabled' ),
100
+ 'desc_tip' => apply_filters( 'booster_message', '', 'desc' ),
101
  ),
102
  array(
103
  'title' => '',
106
  'id' => 'wcj_shipping_left_to_free_info_content_checkout',
107
  'default' => __( '%left_to_free% left to free shipping', 'woocommerce-jetpack' ),
108
  'type' => 'textarea',
109
+ 'css' => 'width:100%;height:100px;',
110
  ),
111
  array(
112
  'title' => '',
125
  'woocommerce_checkout_after_order_review' => __( 'After order review', 'woocommerce-jetpack' ),
126
  'woocommerce_after_checkout_form' => __( 'After checkout form', 'woocommerce-jetpack' ),
127
  ),
 
128
  ),
129
  array(
130
  'title' => '',
132
  'id' => 'wcj_shipping_left_to_free_info_priority_checkout',
133
  'default' => 10,
134
  'type' => 'number',
 
135
  ),
136
  array(
137
  'title' => __( 'Message on Free Shipping Reached', 'woocommerce-jetpack' ),
140
  'id' => 'wcj_shipping_left_to_free_info_content_reached',
141
  'default' => __( 'You have Free delivery', 'woocommerce-jetpack' ),
142
  'type' => 'textarea',
143
+ 'css' => 'width:100%;height:100px;',
144
  ),
145
  array(
146
  'type' => 'sectionend',
includes/settings/wcj-settings-mini-cart.php CHANGED
@@ -20,15 +20,15 @@ $settings = array(
20
  'id' => 'wcj_mini_cart_custom_info_total_number',
21
  'default' => 1,
22
  'type' => 'custom_number',
23
- 'desc' => apply_filters( 'booster_get_message', '', 'desc' ),
24
- 'custom_attributes' => apply_filters( 'booster_get_message', '', 'readonly' ),
25
  ),
26
  array(
27
  'type' => 'sectionend',
28
  'id' => 'wcj_mini_cart_custom_info_options',
29
  ),
30
  );
31
- for ( $i = 1; $i <= apply_filters( 'booster_get_option', 1, get_option( 'wcj_mini_cart_custom_info_total_number', 1 ) ); $i++ ) {
32
  $settings = array_merge( $settings, array(
33
  array(
34
  'title' => __( 'Info Block', 'woocommerce-jetpack' ) . ' #' . $i,
20
  'id' => 'wcj_mini_cart_custom_info_total_number',
21
  'default' => 1,
22
  'type' => 'custom_number',
23
+ 'desc' => apply_filters( 'booster_message', '', 'desc' ),
24
+ 'custom_attributes' => apply_filters( 'booster_message', '', 'readonly' ),
25
  ),
26
  array(
27
  'type' => 'sectionend',
28
  'id' => 'wcj_mini_cart_custom_info_options',
29
  ),
30
  );
31
+ for ( $i = 1; $i <= apply_filters( 'booster_option', 1, get_option( 'wcj_mini_cart_custom_info_total_number', 1 ) ); $i++ ) {
32
  $settings = array_merge( $settings, array(
33
  array(
34
  'title' => __( 'Info Block', 'woocommerce-jetpack' ) . ' #' . $i,
includes/settings/wcj-settings-modules-by-user-roles.php ADDED
@@ -0,0 +1,51 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Booster for WooCommerce - Settings - Modules By User Roles
4
+ *
5
+ * @version 3.3.0
6
+ * @since 3.3.0
7
+ * @author Algoritmika Ltd.
8
+ */
9
+
10
+ if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
11
+
12
+ $user_roles = wcj_get_user_roles_options();
13
+ $modules = array();
14
+ foreach ( WCJ()->modules as $module_id => $module_obj ) {
15
+ $modules[ $module_id ] = $module_obj->short_desc;
16
+ }
17
+ unset( $modules['modules_by_user_roles'] );
18
+
19
+ $settings = array ();
20
+ foreach ( $user_roles as $role_id => $role_desc ) {
21
+ $settings = array_merge( $settings, array(
22
+ array(
23
+ 'title' => $role_desc,
24
+ 'type' => 'title',
25
+ 'id' => 'wcj_modules_by_user_roles_' . $role_id,
26
+ ),
27
+ array(
28
+ 'title' => __( 'Enable Modules', 'woocommerce-jetpack' ),
29
+ 'desc_tip' => __( 'Select modules which should be enabled for current user role. All other modules will be disabled. Ignored if left empty.', 'woocommerce-jetpack' ),
30
+ 'id' => 'wcj_modules_by_user_roles_incl_' . $role_id,
31
+ 'default' => '',
32
+ 'type' => 'multiselect',
33
+ 'class' => 'chosen_select',
34
+ 'options' => $modules,
35
+ ),
36
+ array(
37
+ 'title' => __( 'Disable Modules', 'woocommerce-jetpack' ),
38
+ 'desc_tip' => __( 'Select modules which should be disabled for current user role. All other modules will be enabled. Ignored if left empty.', 'woocommerce-jetpack' ),
39
+ 'id' => 'wcj_modules_by_user_roles_excl_' . $role_id,
40
+ 'default' => '',
41
+ 'type' => 'multiselect',
42
+ 'class' => 'chosen_select',
43
+ 'options' => $modules,
44
+ ),
45
+ array(
46
+ 'type' => 'sectionend',
47
+ 'id' => 'wcj_modules_by_user_roles_' . $role_id,
48
+ ),
49
+ ) );
50
+ }
51
+ return $settings;
includes/settings/wcj-settings-more-button-labels.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce Settings - More Button Labels
4
  *
5
- * @version 2.8.0
6
  * @since 2.8.0
7
  * @author Algoritmika Ltd.
8
  */
@@ -23,6 +23,14 @@ return array(
23
  'default' => '',
24
  'type' => 'text',
25
  ),
 
 
 
 
 
 
 
 
26
  array(
27
  'type' => 'sectionend',
28
  'id' => 'wcj_checkout_place_order_button_options',
2
  /**
3
  * Booster for WooCommerce Settings - More Button Labels
4
  *
5
+ * @version 3.3.0
6
  * @since 2.8.0
7
  * @author Algoritmika Ltd.
8
  */
23
  'default' => '',
24
  'type' => 'text',
25
  ),
26
+ array(
27
+ 'title' => __( 'Override Default Text', 'woocommerce-jetpack' ),
28
+ 'desc' => __( 'Enable', 'woocommerce-jetpack' ),
29
+ 'desc_tip' => __( 'Enable this if button text is not changing for some payment gateway (e.g. PayPal).', 'woocommerce-jetpack' ),
30
+ 'id' => 'wcj_checkout_place_order_button_override',
31
+ 'default' => 'no',
32
+ 'type' => 'checkbox',
33
+ ),
34
  array(
35
  'type' => 'sectionend',
36
  'id' => 'wcj_checkout_place_order_button_options',
includes/settings/wcj-settings-multicurrency-base-price.php CHANGED
@@ -29,11 +29,11 @@ $settings = array(
29
  'manual' => __( 'Enter Rates Manually', 'woocommerce-jetpack' ),
30
  'auto' => __( 'Automatically via Currency Exchange Rates module', 'woocommerce-jetpack' ),
31
  ),
32
- 'desc' => ( '' == apply_filters( 'booster_get_message', '', 'desc' ) ) ?
33
  __( 'Visit', 'woocommerce-jetpack' ) . ' <a href="' . admin_url( 'admin.php?page=wc-settings&tab=jetpack&wcj-cat=prices_and_currencies&section=currency_exchange_rates' ) . '">' . __( 'Currency Exchange Rates module', 'woocommerce-jetpack' ) . '</a>'
34
  :
35
- apply_filters( 'booster_get_message', '', 'desc' ),
36
- 'custom_attributes' => apply_filters( 'booster_get_message', '', 'disabled' ),
37
  ),
38
  array(
39
  'title' => __( 'Round Prices', 'woocommerce-jetpack' ),
@@ -50,7 +50,7 @@ $settings = array(
50
  'custom_attributes' => array( 'min' => 0 ),
51
  ),
52
  array(
53
- 'title' => __( 'Advanced: Saved Calculated Products Prices', 'woocommerce-jetpack' ),
54
  'desc_tip' => __( 'This may help if you are experiencing compatibility issues with other plugins.', 'woocommerce-jetpack' ),
55
  'desc' => __( 'Enable', 'woocommerce-jetpack' ),
56
  'id' => 'wcj_multicurrency_base_price_save_prices',
@@ -71,14 +71,14 @@ $settings = array(
71
  'id' => 'wcj_multicurrency_base_price_total_number',
72
  'default' => 1,
73
  'type' => 'custom_number',
74
- 'desc' => apply_filters( 'booster_get_message', '', 'desc' ),
75
  'custom_attributes' => array_merge(
76
- is_array( apply_filters( 'booster_get_message', '', 'readonly' ) ) ? apply_filters( 'booster_get_message', '', 'readonly' ) : array(),
77
  array( 'step' => '1', 'min' => '1', )
78
  ),
79
  ),
80
  );
81
- $total_number = apply_filters( 'booster_get_option', 1, get_option( 'wcj_multicurrency_base_price_total_number', 1 ) );
82
  for ( $i = 1; $i <= $total_number; $i++ ) {
83
  $currency_to = get_option( 'wcj_multicurrency_base_price_currency_' . $i, $currency_from );
84
  $custom_attributes = array(
29
  'manual' => __( 'Enter Rates Manually', 'woocommerce-jetpack' ),
30
  'auto' => __( 'Automatically via Currency Exchange Rates module', 'woocommerce-jetpack' ),
31
  ),
32
+ 'desc' => ( '' == apply_filters( 'booster_message', '', 'desc' ) ) ?
33
  __( 'Visit', 'woocommerce-jetpack' ) . ' <a href="' . admin_url( 'admin.php?page=wc-settings&tab=jetpack&wcj-cat=prices_and_currencies&section=currency_exchange_rates' ) . '">' . __( 'Currency Exchange Rates module', 'woocommerce-jetpack' ) . '</a>'
34
  :
35
+ apply_filters( 'booster_message', '', 'desc' ),
36
+ 'custom_attributes' => apply_filters( 'booster_message', '', 'disabled' ),
37
  ),
38
  array(
39
  'title' => __( 'Round Prices', 'woocommerce-jetpack' ),
50
  'custom_attributes' => array( 'min' => 0 ),
51
  ),
52
  array(
53
+ 'title' => __( 'Advanced: Save Calculated Products Prices', 'woocommerce-jetpack' ),
54
  'desc_tip' => __( 'This may help if you are experiencing compatibility issues with other plugins.', 'woocommerce-jetpack' ),
55
  'desc' => __( 'Enable', 'woocommerce-jetpack' ),
56
  'id' => 'wcj_multicurrency_base_price_save_prices',
71
  'id' => 'wcj_multicurrency_base_price_total_number',
72
  'default' => 1,
73
  'type' => 'custom_number',
74
+ 'desc' => apply_filters( 'booster_message', '', 'desc' ),
75
  'custom_attributes' => array_merge(
76
+ is_array( apply_filters( 'booster_message', '', 'readonly' ) ) ? apply_filters( 'booster_message', '', 'readonly' ) : array(),
77
  array( 'step' => '1', 'min' => '1', )
78
  ),
79
  ),
80
  );
81
+ $total_number = apply_filters( 'booster_option', 1, get_option( 'wcj_multicurrency_base_price_total_number', 1 ) );
82
  for ( $i = 1; $i <= $total_number; $i++ ) {
83
  $currency_to = get_option( 'wcj_multicurrency_base_price_currency_' . $i, $currency_from );
84
  $custom_attributes = array(
includes/settings/wcj-settings-multicurrency.php CHANGED
@@ -28,11 +28,11 @@ $settings = array(
28
  'manual' => __( 'Enter Rates Manually', 'woocommerce-jetpack' ),
29
  'auto' => __( 'Automatically via Currency Exchange Rates module', 'woocommerce-jetpack' ),
30
  ),
31
- 'desc' => ( '' == apply_filters( 'booster_get_message', '', 'desc' ) ) ?
32
  __( 'Visit', 'woocommerce-jetpack' ) . ' <a href="' . admin_url( 'admin.php?page=wc-settings&tab=jetpack&wcj-cat=prices_and_currencies&section=currency_exchange_rates' ) . '">' . __( 'Currency Exchange Rates module', 'woocommerce-jetpack' ) . '</a>'
33
  :
34
- apply_filters( 'booster_get_message', '', 'desc' ),
35
- 'custom_attributes' => apply_filters( 'booster_get_message', '', 'disabled' ),
36
  ),
37
  array(
38
  'title' => __( 'Multicurrency on per Product Basis', 'woocommerce-jetpack' ),
@@ -112,14 +112,14 @@ $settings = array(
112
  'id' => 'wcj_multicurrency_total_number',
113
  'default' => 2,
114
  'type' => 'custom_number',
115
- 'desc' => apply_filters( 'booster_get_message', '', 'desc' ),
116
  'custom_attributes' => array_merge(
117
- is_array( apply_filters( 'booster_get_message', '', 'readonly' ) ) ? apply_filters( 'booster_get_message', '', 'readonly' ) : array(),
118
  array( 'step' => '1', 'min' => '2', )
119
  ),
120
  ),
121
  );
122
- $total_number = apply_filters( 'booster_get_option', 2, get_option( 'wcj_multicurrency_total_number', 2 ) );
123
  for ( $i = 1; $i <= $total_number; $i++ ) {
124
  $currency_to = get_option( 'wcj_multicurrency_currency_' . $i, $currency_from );
125
  $custom_attributes = array(
28
  'manual' => __( 'Enter Rates Manually', 'woocommerce-jetpack' ),
29
  'auto' => __( 'Automatically via Currency Exchange Rates module', 'woocommerce-jetpack' ),
30
  ),
31
+ 'desc' => ( '' == apply_filters( 'booster_message', '', 'desc' ) ) ?
32
  __( 'Visit', 'woocommerce-jetpack' ) . ' <a href="' . admin_url( 'admin.php?page=wc-settings&tab=jetpack&wcj-cat=prices_and_currencies&section=currency_exchange_rates' ) . '">' . __( 'Currency Exchange Rates module', 'woocommerce-jetpack' ) . '</a>'
33
  :
34
+ apply_filters( 'booster_message', '', 'desc' ),
35
+ 'custom_attributes' => apply_filters( 'booster_message', '', 'disabled' ),
36
  ),
37
  array(
38
  'title' => __( 'Multicurrency on per Product Basis', 'woocommerce-jetpack' ),
112
  'id' => 'wcj_multicurrency_total_number',
113
  'default' => 2,
114
  'type' => 'custom_number',
115
+ 'desc' => apply_filters( 'booster_message', '', 'desc' ),
116
  'custom_attributes' => array_merge(
117
+ is_array( apply_filters( 'booster_message', '', 'readonly' ) ) ? apply_filters( 'booster_message', '', 'readonly' ) : array(),
118
  array( 'step' => '1', 'min' => '2', )
119
  ),
120
  ),
121
  );
122
+ $total_number = apply_filters( 'booster_option', 2, get_option( 'wcj_multicurrency_total_number', 2 ) );
123
  for ( $i = 1; $i <= $total_number; $i++ ) {
124
  $currency_to = get_option( 'wcj_multicurrency_currency_' . $i, $currency_from );
125
  $custom_attributes = array(
includes/settings/wcj-settings-offer-price.php CHANGED
@@ -27,8 +27,8 @@ return array(
27
  'empty_prices' => __( 'Enable for all products with empty price', 'woocommerce-jetpack' ),
28
  'per_product' => __( 'Enable per product', 'woocommerce-jetpack' ),
29
  ),
30
- 'desc' => apply_filters( 'booster_get_message', '', 'desc' ),
31
- 'custom_attributes' => apply_filters( 'booster_get_message', '', 'disabled' ),
32
  ),
33
  array(
34
  'id' => 'wcj_offer_price_general_options',
@@ -91,15 +91,15 @@ return array(
91
  'woocommerce_before_shop_loop_item' => __( 'Before product', 'woocommerce-jetpack' ),
92
  'woocommerce_after_shop_loop_item' => __( 'After product', 'woocommerce-jetpack' ),
93
  ),
94
- 'desc' => apply_filters( 'booster_get_message', '', 'desc' ),
95
- 'custom_attributes' => apply_filters( 'booster_get_message', '', 'disabled' ),
96
  ),
97
  array(
98
  'desc' => __( 'Position Priority (i.e. Order)', 'woocommerce-jetpack' ),
99
  'id' => 'wcj_offer_price_button_position_priority_archives',
100
  'type' => 'number',
101
  'default' => 10,
102
- 'custom_attributes' => apply_filters( 'booster_get_message', '', 'disabled' ),
103
  ),
104
  array(
105
  'id' => 'wcj_offer_price_button_options',
27
  'empty_prices' => __( 'Enable for all products with empty price', 'woocommerce-jetpack' ),
28
  'per_product' => __( 'Enable per product', 'woocommerce-jetpack' ),
29
  ),
30
+ 'desc' => apply_filters( 'booster_message', '', 'desc' ),
31
+ 'custom_attributes' => apply_filters( 'booster_message', '', 'disabled' ),
32
  ),
33
  array(
34
  'id' => 'wcj_offer_price_general_options',
91
  'woocommerce_before_shop_loop_item' => __( 'Before product', 'woocommerce-jetpack' ),
92
  'woocommerce_after_shop_loop_item' => __( 'After product', 'woocommerce-jetpack' ),
93
  ),
94
+ 'desc' => apply_filters( 'booster_message', '', 'desc' ),
95
+ 'custom_attributes' => apply_filters( 'booster_message', '', 'disabled' ),
96
  ),
97
  array(
98
  'desc' => __( 'Position Priority (i.e. Order)', 'woocommerce-jetpack' ),
99
  'id' => 'wcj_offer_price_button_position_priority_archives',
100
  'type' => 'number',
101
  'default' => 10,
102
+ 'custom_attributes' => apply_filters( 'booster_message', '', 'disabled' ),
103
  ),
104
  array(
105
  'id' => 'wcj_offer_price_button_options',
includes/settings/wcj-settings-order-custom-statuses.php CHANGED
@@ -44,11 +44,11 @@ return array(
44
  'title' => __( 'Make Custom Status Orders Editable', 'woocommerce-jetpack' ),
45
  'desc' => __( 'Enable', 'woocommerce-jetpack' ),
46
  'desc_tip' => __( 'By default orders with custom statuses are not editable (same like with standard WooCommerce Completed status). If you wish to make custom status orders editable, enable the checkbox here.', 'woocommerce-jetpack' ) . ' ' .
47
- apply_filters( 'booster_get_message', '', 'desc' ),
48
  'id' => 'wcj_orders_custom_statuses_is_order_editable',
49
  'default' => 'no',
50
  'type' => 'checkbox',
51
- 'custom_attributes' => apply_filters( 'booster_get_message', '', 'disabled' ),
52
  ),
53
  array(
54
  'title' => __( '"Processing" and "Complete" Action Buttons', 'woocommerce-jetpack' ),
@@ -62,26 +62,26 @@ return array(
62
  'show_complete' => __( 'Show "Complete" only', 'woocommerce-jetpack' ),
63
  'hide' => __( 'Hide', 'woocommerce-jetpack' ),
64
  ),
65
- 'desc' => apply_filters( 'booster_get_message', '', 'desc' ),
66
- 'custom_attributes' => apply_filters( 'booster_get_message', '', 'disabled' ),
67
  ),
68
  array(
69
  'title' => __( 'Add Custom Statuses to Admin Order List Action Buttons', 'woocommerce-jetpack' ),
70
  'desc' => __( 'Add', 'woocommerce-jetpack' ),
71
  'desc_tip' => __( 'If you wish to add custom statuses buttons to the admin Orders page action buttons (Actions column), enable the checkbox here.', 'woocommerce-jetpack' ) . ' ' .
72
- apply_filters( 'booster_get_message', '', 'desc' ),
73
  'id' => 'wcj_orders_custom_statuses_add_to_order_list_actions',
74
  'default' => 'no',
75
  'type' => 'checkbox',
76
- 'custom_attributes' => apply_filters( 'booster_get_message', '', 'disabled' ),
77
  ),
78
  array(
79
  'desc' => __( 'Enable Colors', 'woocommerce-jetpack' ),
80
- 'desc_tip' => __( 'Choose if you want the buttons to have colors.', 'woocommerce-jetpack' ) . ' ' . apply_filters( 'booster_get_message', '', 'desc' ),
81
  'id' => 'wcj_orders_custom_statuses_add_to_order_list_actions_colored',
82
  'default' => 'no',
83
  'type' => 'checkbox',
84
- 'custom_attributes' => apply_filters( 'booster_get_message', '', 'disabled' ),
85
  ),
86
  array(
87
  'type' => 'sectionend',
44
  'title' => __( 'Make Custom Status Orders Editable', 'woocommerce-jetpack' ),
45
  'desc' => __( 'Enable', 'woocommerce-jetpack' ),
46
  'desc_tip' => __( 'By default orders with custom statuses are not editable (same like with standard WooCommerce Completed status). If you wish to make custom status orders editable, enable the checkbox here.', 'woocommerce-jetpack' ) . ' ' .
47
+ apply_filters( 'booster_message', '', 'desc' ),
48
  'id' => 'wcj_orders_custom_statuses_is_order_editable',
49
  'default' => 'no',
50
  'type' => 'checkbox',
51
+ 'custom_attributes' => apply_filters( 'booster_message', '', 'disabled' ),
52
  ),
53
  array(
54
  'title' => __( '"Processing" and "Complete" Action Buttons', 'woocommerce-jetpack' ),
62
  'show_complete' => __( 'Show "Complete" only', 'woocommerce-jetpack' ),
63
  'hide' => __( 'Hide', 'woocommerce-jetpack' ),
64
  ),
65
+ 'desc' => apply_filters( 'booster_message', '', 'desc' ),
66
+ 'custom_attributes' => apply_filters( 'booster_message', '', 'disabled' ),
67
  ),
68
  array(
69
  'title' => __( 'Add Custom Statuses to Admin Order List Action Buttons', 'woocommerce-jetpack' ),
70
  'desc' => __( 'Add', 'woocommerce-jetpack' ),
71
  'desc_tip' => __( 'If you wish to add custom statuses buttons to the admin Orders page action buttons (Actions column), enable the checkbox here.', 'woocommerce-jetpack' ) . ' ' .
72
+ apply_filters( 'booster_message', '', 'desc' ),
73
  'id' => 'wcj_orders_custom_statuses_add_to_order_list_actions',
74
  'default' => 'no',
75
  'type' => 'checkbox',
76
+ 'custom_attributes' => apply_filters( 'booster_message', '', 'disabled' ),
77
  ),
78
  array(
79
  'desc' => __( 'Enable Colors', 'woocommerce-jetpack' ),
80
+ 'desc_tip' => __( 'Choose if you want the buttons to have colors.', 'woocommerce-jetpack' ) . ' ' . apply_filters( 'booster_message', '', 'desc' ),
81
  'id' => 'wcj_orders_custom_statuses_add_to_order_list_actions_colored',
82
  'default' => 'no',
83
  'type' => 'checkbox',
84
+ 'custom_attributes' => apply_filters( 'booster_message', '', 'disabled' ),
85
  ),
86
  array(
87
  'type' => 'sectionend',
includes/settings/wcj-settings-order-min-amount.php CHANGED
@@ -40,12 +40,12 @@ $settings = array(
40
  ),
41
  array(
42
  'title' => __( 'Error message', 'woocommerce-jetpack' ),
43
- 'desc' => apply_filters( 'booster_get_message', '', 'desc' ),
44
  'desc_tip' => __( 'Message to customer if order is below minimum amount. Default: You must have an order with a minimum of %s to place your order, your current order total is %s.', 'woocommerce-jetpack' ),
45
  'id' => 'wcj_order_minimum_amount_error_message',
46
  'default' => 'You must have an order with a minimum of %s to place your order, your current order total is %s.',
47
  'type' => 'textarea',
48
- 'custom_attributes' => apply_filters( 'booster_get_message', '', 'readonly' ),
49
  'css' => 'width:50%;min-width:300px;',
50
  ),
51
  array(
@@ -57,12 +57,12 @@ $settings = array(
57
  ),
58
  array(
59
  'title' => __( 'Message on cart page', 'woocommerce-jetpack' ),
60
- 'desc' => apply_filters( 'booster_get_message', '', 'desc' ),
61
  'desc_tip' => __( 'Message to customer if order is below minimum amount. Default: You must have an order with a minimum of %s to place your order, your current order total is %s.', 'woocommerce-jetpack' ),
62
  'id' => 'wcj_order_minimum_amount_cart_notice_message',
63
  'default' => 'You must have an order with a minimum of %s to place your order, your current order total is %s.',
64
  'type' => 'textarea',
65
- 'custom_attributes' => apply_filters( 'booster_get_message', '', 'readonly' ),
66
  'css' => 'width:50%;min-width:300px;',
67
  ),
68
  array(
@@ -106,7 +106,7 @@ $settings = array(
106
  ),
107
  );
108
  $c = array( 'guest', 'administrator', 'customer' );
109
- $is_r = apply_filters( 'booster_get_message', '', 'readonly' );
110
  if ( '' == $is_r ) {
111
  $is_r = array();
112
  }
@@ -118,7 +118,7 @@ foreach ( wcj_get_user_roles() as $role_key => $role_data ) {
118
  'default' => 0,
119
  'type' => 'number',
120
  'custom_attributes' => ( ! in_array( $role_key, $c ) ? array_merge( array( 'step' => '0.0001', 'min' => '0', ), $is_r ) : array( 'step' => '0.0001', 'min' => '0', ) ),
121
- 'desc_tip' => ( ! in_array( $role_key, $c ) ? apply_filters( 'booster_get_message', '', 'desc_no_link' ) : '' ),
122
  ),
123
  ) );
124
  }
40
  ),
41
  array(
42
  'title' => __( 'Error message', 'woocommerce-jetpack' ),
43
+ 'desc' => apply_filters( 'booster_message', '', 'desc' ),
44
  'desc_tip' => __( 'Message to customer if order is below minimum amount. Default: You must have an order with a minimum of %s to place your order, your current order total is %s.', 'woocommerce-jetpack' ),
45
  'id' => 'wcj_order_minimum_amount_error_message',
46
  'default' => 'You must have an order with a minimum of %s to place your order, your current order total is %s.',
47
  'type' => 'textarea',
48
+ 'custom_attributes' => apply_filters( 'booster_message', '', 'readonly' ),
49
  'css' => 'width:50%;min-width:300px;',
50
  ),
51
  array(
57
  ),
58
  array(
59
  'title' => __( 'Message on cart page', 'woocommerce-jetpack' ),
60
+ 'desc' => apply_filters( 'booster_message', '', 'desc' ),
61
  'desc_tip' => __( 'Message to customer if order is below minimum amount. Default: You must have an order with a minimum of %s to place your order, your current order total is %s.', 'woocommerce-jetpack' ),
62
  'id' => 'wcj_order_minimum_amount_cart_notice_message',
63
  'default' => 'You must have an order with a minimum of %s to place your order, your current order total is %s.',
64
  'type' => 'textarea',
65
+ 'custom_attributes' => apply_filters( 'booster_message', '', 'readonly' ),
66
  'css' => 'width:50%;min-width:300px;',
67
  ),
68
  array(
106
  ),
107
  );
108
  $c = array( 'guest', 'administrator', 'customer' );
109
+ $is_r = apply_filters( 'booster_message', '', 'readonly' );
110
  if ( '' == $is_r ) {
111
  $is_r = array();
112
  }
118
  'default' => 0,
119
  'type' => 'number',
120
  'custom_attributes' => ( ! in_array( $role_key, $c ) ? array_merge( array( 'step' => '0.0001', 'min' => '0', ), $is_r ) : array( 'step' => '0.0001', 'min' => '0', ) ),
121
+ 'desc_tip' => ( ! in_array( $role_key, $c ) ? apply_filters( 'booster_message', '', 'desc_no_link' ) : '' ),
122
  ),
123
  ) );
124
  }
includes/settings/wcj-settings-order-numbers.php CHANGED
@@ -2,9 +2,10 @@
2
  /**
3
  * Booster for WooCommerce - Settings - Order Numbers
4
  *
5
- * @version 3.2.0
6
  * @since 2.8.0
7
  * @author Algoritmika Ltd.
 
8
  */
9
 
10
  if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
@@ -28,60 +29,68 @@ return array(
28
  ),
29
  ),
30
  array(
31
- 'title' => __( 'Next Order Number', 'woocommerce-jetpack' ),
32
- 'desc' => __( 'Next new order will be given this number.', 'woocommerce-jetpack' ) . ' ' . __( 'Use Renumerate Orders tool for existing orders.', 'woocommerce-jetpack' ),
33
  'desc_tip' => __( 'This will be ignored if sequential order numbering is disabled.', 'woocommerce-jetpack' ),
34
  'id' => 'wcj_order_number_counter',
35
  'default' => 1,
36
  'type' => 'number',
37
  ),
 
 
 
 
 
 
 
 
 
 
 
 
 
38
  array(
39
  'title' => __( 'Order Number Custom Prefix', 'woocommerce-jetpack' ),
40
  'desc_tip' => __( 'Prefix before order number (optional). This will change the prefixes for all existing orders.', 'woocommerce-jetpack' ),
41
  'id' => 'wcj_order_number_prefix',
42
  'default' => '',
43
  'type' => 'text',
44
- 'css' => 'width:300px;',
45
  ),
46
  array(
47
  'title' => __( 'Order Number Date Prefix', 'woocommerce-jetpack' ),
48
- 'desc' => apply_filters( 'booster_get_message', '', 'desc' ),
49
  'desc_tip' => __( 'Date prefix before order number (optional). This will change the prefixes for all existing orders. Value is passed directly to PHP `date` function, so most of PHP date formats can be used. The only exception is using `\` symbol in date format, as this symbol will be excluded from date. Try: Y-m-d- or mdy.', 'woocommerce-jetpack' ),
50
  'id' => 'wcj_order_number_date_prefix',
51
  'default' => '',
52
  'type' => 'text',
53
- 'custom_attributes' => apply_filters( 'booster_get_message', '', 'readonly' ),
54
- 'css' => 'width:300px;',
55
  ),
56
  array(
57
  'title' => __( 'Order Number Width', 'woocommerce-jetpack' ),
58
- 'desc' => apply_filters( 'booster_get_message', '', 'desc' ),
59
  'desc_tip' => __( 'Minimum width of number without prefix (zeros will be added to the left side). This will change the minimum width of order number for all existing orders. E.g. set to 5 to have order number displayed as 00001 instead of 1. Leave zero to disable.', 'woocommerce-jetpack' ),
60
  'id' => 'wcj_order_number_min_width',
61
  'default' => 0,
62
  'type' => 'number',
63
- 'custom_attributes' => apply_filters( 'booster_get_message', '', 'readonly' ),
64
- 'css' => 'width:300px;',
65
  ),
66
  array(
67
  'title' => __( 'Order Number Custom Suffix', 'woocommerce-jetpack' ),
68
- 'desc' => apply_filters( 'booster_get_message', '', 'desc' ),
69
  'desc_tip' => __( 'Suffix after order number (optional). This will change the suffixes for all existing orders.', 'woocommerce-jetpack' ),
70
  'id' => 'wcj_order_number_suffix',
71
  'default' => '',
72
  'type' => 'text',
73
- 'custom_attributes' => apply_filters( 'booster_get_message', '', 'readonly' ),
74
- 'css' => 'width:300px;',
75
  ),
76
  array(
77
  'title' => __( 'Order Number Date Suffix', 'woocommerce-jetpack' ),
78
- 'desc' => apply_filters( 'booster_get_message', '', 'desc' ),
79
  'desc_tip' => __( 'Date suffix after order number (optional). This will change the suffixes for all existing orders. Value is passed directly to PHP `date` function, so most of PHP date formats can be used. The only exception is using `\` symbol in date format, as this symbol will be excluded from date. Try: Y-m-d- or mdy.', 'woocommerce-jetpack' ),
80
  'id' => 'wcj_order_number_date_suffix',
81
  'default' => '',
82
  'type' => 'text',
83
- 'custom_attributes' => apply_filters( 'booster_get_message', '', 'readonly' ),
84
- 'css' => 'width:300px;',
85
  ),
86
  array(
87
  'title' => __( 'Use MySQL Transaction', 'woocommerce-jetpack' ),
2
  /**
3
  * Booster for WooCommerce - Settings - Order Numbers
4
  *
5
+ * @version 3.3.0
6
  * @since 2.8.0
7
  * @author Algoritmika Ltd.
8
+ * @todo (maybe) add `wcj_order_number_counter_previous_order_date` as `hidden` field (for proper module reset)
9
  */
10
 
11
  if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
29
  ),
30
  ),
31
  array(
32
+ 'title' => __( 'Sequential: Next Order Number', 'woocommerce-jetpack' ),
33
+ 'desc' => '<br>' . __( 'Next new order will be given this number.', 'woocommerce-jetpack' ) . ' ' . __( 'Use Renumerate Orders tool for existing orders.', 'woocommerce-jetpack' ),
34
  'desc_tip' => __( 'This will be ignored if sequential order numbering is disabled.', 'woocommerce-jetpack' ),
35
  'id' => 'wcj_order_number_counter',
36
  'default' => 1,
37
  'type' => 'number',
38
  ),
39
+ array(
40
+ 'title' => __( 'Sequential: Reset Counter', 'woocommerce-jetpack' ),
41
+ 'desc_tip' => __( 'This will be ignored if sequential order numbering is disabled.', 'woocommerce-jetpack' ),
42
+ 'id' => 'wcj_order_number_counter_reset_enabled',
43
+ 'default' => 'no',
44
+ 'type' => 'select',
45
+ 'options' => array(
46
+ 'no' => __( 'Disabled', 'woocommerce-jetpack' ),
47
+ 'daily' => __( 'Daily', 'woocommerce-jetpack' ),
48
+ 'monthly' => __( 'Monthly', 'woocommerce-jetpack' ),
49
+ 'yearly' => __( 'Yearly', 'woocommerce-jetpack' ),
50
+ ),
51
+ ),
52
  array(
53
  'title' => __( 'Order Number Custom Prefix', 'woocommerce-jetpack' ),
54
  'desc_tip' => __( 'Prefix before order number (optional). This will change the prefixes for all existing orders.', 'woocommerce-jetpack' ),
55
  'id' => 'wcj_order_number_prefix',
56
  'default' => '',
57
  'type' => 'text',
 
58
  ),
59
  array(
60
  'title' => __( 'Order Number Date Prefix', 'woocommerce-jetpack' ),
61
+ 'desc' => apply_filters( 'booster_message', '', 'desc' ),
62
  'desc_tip' => __( 'Date prefix before order number (optional). This will change the prefixes for all existing orders. Value is passed directly to PHP `date` function, so most of PHP date formats can be used. The only exception is using `\` symbol in date format, as this symbol will be excluded from date. Try: Y-m-d- or mdy.', 'woocommerce-jetpack' ),
63
  'id' => 'wcj_order_number_date_prefix',
64
  'default' => '',
65
  'type' => 'text',
66
+ 'custom_attributes' => apply_filters( 'booster_message', '', 'readonly' ),
 
67
  ),
68
  array(
69
  'title' => __( 'Order Number Width', 'woocommerce-jetpack' ),
70
+ 'desc' => apply_filters( 'booster_message', '', 'desc' ),
71
  'desc_tip' => __( 'Minimum width of number without prefix (zeros will be added to the left side). This will change the minimum width of order number for all existing orders. E.g. set to 5 to have order number displayed as 00001 instead of 1. Leave zero to disable.', 'woocommerce-jetpack' ),
72
  'id' => 'wcj_order_number_min_width',
73
  'default' => 0,
74
  'type' => 'number',
75
+ 'custom_attributes' => apply_filters( 'booster_message', '', 'readonly' ),
 
76
  ),
77
  array(
78
  'title' => __( 'Order Number Custom Suffix', 'woocommerce-jetpack' ),
79
+ 'desc' => apply_filters( 'booster_message', '', 'desc' ),
80
  'desc_tip' => __( 'Suffix after order number (optional). This will change the suffixes for all existing orders.', 'woocommerce-jetpack' ),
81
  'id' => 'wcj_order_number_suffix',
82
  'default' => '',
83
  'type' => 'text',
84
+ 'custom_attributes' => apply_filters( 'booster_message', '', 'readonly' ),
 
85
  ),
86
  array(
87
  'title' => __( 'Order Number Date Suffix', 'woocommerce-jetpack' ),
88
+ 'desc' => apply_filters( 'booster_message', '', 'desc' ),
89
  'desc_tip' => __( 'Date suffix after order number (optional). This will change the suffixes for all existing orders. Value is passed directly to PHP `date` function, so most of PHP date formats can be used. The only exception is using `\` symbol in date format, as this symbol will be excluded from date. Try: Y-m-d- or mdy.', 'woocommerce-jetpack' ),
90
  'id' => 'wcj_order_number_date_suffix',
91
  'default' => '',
92
  'type' => 'text',
93
+ 'custom_attributes' => apply_filters( 'booster_message', '', 'readonly' ),
 
94
  ),
95
  array(
96
  'title' => __( 'Use MySQL Transaction', 'woocommerce-jetpack' ),
includes/settings/wcj-settings-order-quantities.php CHANGED
@@ -45,17 +45,17 @@ return array(
45
  'id' => 'wcj_order_quantities_min_per_item_quantity',
46
  'default' => 0,
47
  'type' => 'number',
48
- 'desc' => apply_filters( 'booster_get_message', '', 'desc' ),
49
- 'custom_attributes' => ( '' === apply_filters( 'booster_get_message', '', 'readonly' ) ? array( 'min' => 0 ) : apply_filters( 'booster_get_message', '', 'readonly' ) ),
50
  ),
51
  array(
52
  'title' => __( 'Per Item Quantity on Per Product Basis', 'woocommerce-jetpack' ),
53
  'desc' => __( 'Enable', 'woocommerce-jetpack' ),
54
- 'desc_tip' => __( 'This will add meta box to each product\'s edit page.', 'woocommerce-jetpack' ) . ' ' . apply_filters( 'booster_get_message', '', 'desc' ),
55
  'id' => 'wcj_order_quantities_min_per_item_quantity_per_product',
56
  'default' => 'no',
57
  'type' => 'checkbox',
58
- 'custom_attributes' => apply_filters( 'booster_get_message', '', 'disabled' ),
59
  ),
60
  array(
61
  'title' => __( 'Message - Per Item Quantity', 'woocommerce-jetpack' ),
@@ -103,17 +103,17 @@ return array(
103
  'id' => 'wcj_order_quantities_max_per_item_quantity',
104
  'default' => 0,
105
  'type' => 'number',
106
- 'desc' => apply_filters( 'booster_get_message', '', 'desc' ),
107
- 'custom_attributes' => ( '' === apply_filters( 'booster_get_message', '', 'readonly' ) ? array( 'min' => 0 ) : apply_filters( 'booster_get_message', '', 'readonly' ) ),
108
  ),
109
  array(
110
  'title' => __( 'Per Item Quantity on Per Product Basis', 'woocommerce-jetpack' ),
111
  'desc' => __( 'Enable', 'woocommerce-jetpack' ),
112
- 'desc_tip' => __( 'This will add meta box to each product\'s edit page.', 'woocommerce-jetpack' ) . ' ' . apply_filters( 'booster_get_message', '', 'desc' ),
113
  'id' => 'wcj_order_quantities_max_per_item_quantity_per_product',
114
  'default' => 'no',
115
  'type' => 'checkbox',
116
- 'custom_attributes' => apply_filters( 'booster_get_message', '', 'disabled' ),
117
  ),
118
  array(
119
  'title' => __( 'Message - Per Item Quantity', 'woocommerce-jetpack' ),
45
  'id' => 'wcj_order_quantities_min_per_item_quantity',
46
  'default' => 0,
47
  'type' => 'number',
48
+ 'desc' => apply_filters( 'booster_message', '', 'desc' ),
49
+ 'custom_attributes' => ( '' === apply_filters( 'booster_message', '', 'readonly' ) ? array( 'min' => 0 ) : apply_filters( 'booster_message', '', 'readonly' ) ),
50
  ),
51
  array(
52
  'title' => __( 'Per Item Quantity on Per Product Basis', 'woocommerce-jetpack' ),
53
  'desc' => __( 'Enable', 'woocommerce-jetpack' ),
54
+ 'desc_tip' => __( 'This will add meta box to each product\'s edit page.', 'woocommerce-jetpack' ) . ' ' . apply_filters( 'booster_message', '', 'desc' ),
55
  'id' => 'wcj_order_quantities_min_per_item_quantity_per_product',
56
  'default' => 'no',
57
  'type' => 'checkbox',
58
+ 'custom_attributes' => apply_filters( 'booster_message', '', 'disabled' ),
59
  ),
60
  array(
61
  'title' => __( 'Message - Per Item Quantity', 'woocommerce-jetpack' ),
103
  'id' => 'wcj_order_quantities_max_per_item_quantity',
104
  'default' => 0,
105
  'type' => 'number',
106
+ 'desc' => apply_filters( 'booster_message', '', 'desc' ),
107
+ 'custom_attributes' => ( '' === apply_filters( 'booster_message', '', 'readonly' ) ? array( 'min' => 0 ) : apply_filters( 'booster_message', '', 'readonly' ) ),
108
  ),
109
  array(
110
  'title' => __( 'Per Item Quantity on Per Product Basis', 'woocommerce-jetpack' ),
111
  'desc' => __( 'Enable', 'woocommerce-jetpack' ),
112
+ 'desc_tip' => __( 'This will add meta box to each product\'s edit page.', 'woocommerce-jetpack' ) . ' ' . apply_filters( 'booster_message', '', 'desc' ),
113
  'id' => 'wcj_order_quantities_max_per_item_quantity_per_product',
114
  'default' => 'no',
115
  'type' => 'checkbox',
116
+ 'custom_attributes' => apply_filters( 'booster_message', '', 'disabled' ),
117
  ),
118
  array(
119
  'title' => __( 'Message - Per Item Quantity', 'woocommerce-jetpack' ),
includes/settings/wcj-settings-orders.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce Settings - Orders
4
  *
5
- * @version 3.2.4
6
  * @since 2.8.0
7
  * @author Algoritmika Ltd.
8
  */
@@ -10,7 +10,7 @@
10
  if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
11
 
12
  $bulk_regenerate_download_permissions_all_orders_cron_desc = '';
13
- if ( $this->is_enabled() && 'yes' === apply_filters( 'booster_get_option', 'no', get_option( 'wcj_order_bulk_regenerate_download_permissions_enabled', 'no' ) ) ) {
14
  $bulk_regenerate_download_permissions_all_orders_cron_desc = wcj_crons_get_next_event_time_message( 'wcj_bulk_regenerate_download_permissions_all_orders_cron_time' );
15
  }
16
 
@@ -61,6 +61,23 @@ $settings = array(
61
  'type' => 'sectionend',
62
  'id' => 'wcj_order_auto_complete_options',
63
  ),
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
64
  array(
65
  'title' => __( 'Bulk Regenerate Download Permissions for Orders', 'woocommerce-jetpack' ),
66
  'type' => 'title',
@@ -68,40 +85,40 @@ $settings = array(
68
  ),
69
  array(
70
  'title' => __( 'Bulk Regenerate Download Permissions', 'woocommerce-jetpack' ),
71
- 'desc_tip' => apply_filters( 'booster_get_message', '', 'desc' ),
72
  'desc' => '<strong>' . __( 'Enable section', 'woocommerce-jetpack' ) . '</strong>',
73
  'id' => 'wcj_order_bulk_regenerate_download_permissions_enabled',
74
  'default' => 'no',
75
  'type' => 'checkbox',
76
- 'custom_attributes' => apply_filters( 'booster_get_message', '', 'disabled' ),
77
  ),
78
  array(
79
  'title' => __( 'Bulk Actions', 'woocommerce-jetpack' ),
80
- 'desc_tip' => __( 'When enabled this will add "Regenerate download permissions" action to "Bulk Actions" select box on admin orders page.', 'woocommerce-jetpack' ) . ' ' . apply_filters( 'booster_get_message', '', 'desc' ),
81
  'desc' => __( 'Add', 'woocommerce-jetpack' ),
82
  'id' => 'wcj_order_bulk_regenerate_download_permissions_actions',
83
  'default' => 'no',
84
  'type' => 'checkbox',
85
- 'custom_attributes' => apply_filters( 'booster_get_message', '', 'disabled' ),
86
  ),
87
  array(
88
  'title' => __( 'All Orders - Now', 'woocommerce-jetpack' ),
89
- 'desc_tip' => __( 'Check this box and press "Save changes" button to start regeneration. Please note that both module and current section must be enabled before that.', 'woocommerce-jetpack' ) . ' ' . apply_filters( 'booster_get_message', '', 'desc' ),
90
  'desc' => __( 'Regenerate now', 'woocommerce-jetpack' ),
91
  'id' => 'wcj_order_bulk_regenerate_download_permissions_all_orders',
92
  'default' => 'no',
93
  'type' => 'checkbox',
94
- 'custom_attributes' => apply_filters( 'booster_get_message', '', 'disabled' ),
95
  ),
96
  array(
97
  'title' => __( 'All Orders - Periodically', 'woocommerce-jetpack' ),
98
- 'desc' => $bulk_regenerate_download_permissions_all_orders_cron_desc . ' ' . apply_filters( 'booster_get_message', '', 'desc' ),
99
  'id' => 'wcj_order_bulk_regenerate_download_permissions_all_orders_cron',
100
  'default' => 'disabled',
101
  'type' => 'select',
102
  'options' => array_merge( array( 'disabled' => __( 'Disabled', 'woocommerce-jetpack' ) ),
103
  wcj_crons_get_all_intervals( __( 'Regenerate', 'woocommerce-jetpack' ), array( 'minutely' ) ) ),
104
- 'custom_attributes' => apply_filters( 'booster_get_message', '', 'disabled' ),
105
  ),
106
  array(
107
  'type' => 'sectionend',
2
  /**
3
  * Booster for WooCommerce Settings - Orders
4
  *
5
+ * @version 3.3.0
6
  * @since 2.8.0
7
  * @author Algoritmika Ltd.
8
  */
10
  if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
11
 
12
  $bulk_regenerate_download_permissions_all_orders_cron_desc = '';
13
+ if ( $this->is_enabled() && 'yes' === apply_filters( 'booster_option', 'no', get_option( 'wcj_order_bulk_regenerate_download_permissions_enabled', 'no' ) ) ) {
14
  $bulk_regenerate_download_permissions_all_orders_cron_desc = wcj_crons_get_next_event_time_message( 'wcj_bulk_regenerate_download_permissions_all_orders_cron_time' );
15
  }
16
 
61
  'type' => 'sectionend',
62
  'id' => 'wcj_order_auto_complete_options',
63
  ),
64
+ array(
65
+ 'title' => __( 'Country by IP', 'woocommerce-jetpack' ),
66
+ 'type' => 'title',
67
+ 'id' => 'wcj_orders_country_by_ip_options',
68
+ ),
69
+ array(
70
+ 'title' => __( 'Add Country by IP Meta Box', 'woocommerce-jetpack' ),
71
+ 'desc' => __( 'Add', 'woocommerce-jetpack' ),
72
+ 'desc_tip' => __( 'When enabled this will add "Booster: Country by IP" metabox to each order\'s edit page.', 'woocommerce-jetpack' ),
73
+ 'id' => 'wcj_orders_country_by_ip_enabled',
74
+ 'default' => 'no',
75
+ 'type' => 'checkbox',
76
+ ),
77
+ array(
78
+ 'type' => 'sectionend',
79
+ 'id' => 'wcj_orders_country_by_ip_options',
80
+ ),
81
  array(
82
  'title' => __( 'Bulk Regenerate Download Permissions for Orders', 'woocommerce-jetpack' ),
83
  'type' => 'title',
85
  ),
86
  array(
87
  'title' => __( 'Bulk Regenerate Download Permissions', 'woocommerce-jetpack' ),
88
+ 'desc_tip' => apply_filters( 'booster_message', '', 'desc' ),
89
  'desc' => '<strong>' . __( 'Enable section', 'woocommerce-jetpack' ) . '</strong>',
90
  'id' => 'wcj_order_bulk_regenerate_download_permissions_enabled',
91
  'default' => 'no',
92
  'type' => 'checkbox',
93
+ 'custom_attributes' => apply_filters( 'booster_message', '', 'disabled' ),
94
  ),
95
  array(
96
  'title' => __( 'Bulk Actions', 'woocommerce-jetpack' ),
97
+ 'desc_tip' => __( 'When enabled this will add "Regenerate download permissions" action to "Bulk Actions" select box on admin orders page.', 'woocommerce-jetpack' ) . ' ' . apply_filters( 'booster_message', '', 'desc' ),
98
  'desc' => __( 'Add', 'woocommerce-jetpack' ),
99
  'id' => 'wcj_order_bulk_regenerate_download_permissions_actions',
100
  'default' => 'no',
101
  'type' => 'checkbox',
102
+ 'custom_attributes' => apply_filters( 'booster_message', '', 'disabled' ),
103
  ),
104
  array(
105
  'title' => __( 'All Orders - Now', 'woocommerce-jetpack' ),
106
+ 'desc_tip' => __( 'Check this box and press "Save changes" button to start regeneration. Please note that both module and current section must be enabled before that.', 'woocommerce-jetpack' ) . ' ' . apply_filters( 'booster_message', '', 'desc' ),
107
  'desc' => __( 'Regenerate now', 'woocommerce-jetpack' ),
108
  'id' => 'wcj_order_bulk_regenerate_download_permissions_all_orders',
109
  'default' => 'no',
110
  'type' => 'checkbox',
111
+ 'custom_attributes' => apply_filters( 'booster_message', '', 'disabled' ),
112
  ),
113
  array(
114
  'title' => __( 'All Orders - Periodically', 'woocommerce-jetpack' ),
115
+ 'desc' => $bulk_regenerate_download_permissions_all_orders_cron_desc . ' ' . apply_filters( 'booster_message', '', 'desc' ),
116
  'id' => 'wcj_order_bulk_regenerate_download_permissions_all_orders_cron',
117
  'default' => 'disabled',
118
  'type' => 'select',
119
  'options' => array_merge( array( 'disabled' => __( 'Disabled', 'woocommerce-jetpack' ) ),
120
  wcj_crons_get_all_intervals( __( 'Regenerate', 'woocommerce-jetpack' ), array( 'minutely' ) ) ),
121
+ 'custom_attributes' => apply_filters( 'booster_message', '', 'disabled' ),
122
  ),
123
  array(
124
  'type' => 'sectionend',
includes/settings/wcj-settings-payment-gateways-by-country.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Settings - Gateways by Country or State
4
  *
5
- * @version 2.8.0
6
  * @since 2.8.0
7
  * @author Algoritmika Ltd.
8
  */
@@ -13,7 +13,7 @@ $settings = array(
13
  array(
14
  'title' => __( 'Payment Gateways', 'woocommerce-jetpack' ),
15
  'type' => 'title',
16
- 'desc' => __( 'Leave empty to disable.', 'woocommerce-jetpack' ),
17
  'id' => 'wcj_payment_gateways_by_country_gateways_options',
18
  ),
19
  );
@@ -23,11 +23,11 @@ $gateways = WC()->payment_gateways->payment_gateways();
23
  foreach ( $gateways as $key => $gateway ) {
24
  $default_gateways = array( 'bacs' );
25
  if ( ! empty( $default_gateways ) && ! in_array( $key, $default_gateways ) ) {
26
- $custom_attributes = apply_filters( 'booster_get_message', '', 'disabled' );
27
  if ( '' == $custom_attributes ) {
28
  $custom_attributes = array();
29
  }
30
- $desc_tip = apply_filters( 'booster_get_message', '', 'desc_no_link' );
31
  } else {
32
  $custom_attributes = array();
33
  $desc_tip = '';
2
  /**
3
  * Booster for WooCommerce - Settings - Gateways by Country or State
4
  *
5
+ * @version 3.3.0
6
  * @since 2.8.0
7
  * @author Algoritmika Ltd.
8
  */
13
  array(
14
  'title' => __( 'Payment Gateways', 'woocommerce-jetpack' ),
15
  'type' => 'title',
16
+ 'desc' => __( 'Country and state are defined from customer\'s entered billing address.', 'woocommerce-jetpack' ) . '<br>' . __( 'Leave empty to disable.', 'woocommerce-jetpack' ),
17
  'id' => 'wcj_payment_gateways_by_country_gateways_options',
18
  ),
19
  );
23
  foreach ( $gateways as $key => $gateway ) {
24
  $default_gateways = array( 'bacs' );
25
  if ( ! empty( $default_gateways ) && ! in_array( $key, $default_gateways ) ) {
26
+ $custom_attributes = apply_filters( 'booster_message', '', 'disabled' );
27
  if ( '' == $custom_attributes ) {
28
  $custom_attributes = array();
29
  }
30
+ $desc_tip = apply_filters( 'booster_message', '', 'desc_no_link' );
31
  } else {
32
  $custom_attributes = array();
33
  $desc_tip = '';
includes/settings/wcj-settings-payment-gateways-by-currency.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Settings - Gateways by Currency
4
  *
5
- * @version 3.0.0
6
  * @since 3.0.0
7
  * @author Algoritmika Ltd.
8
  */
@@ -20,19 +20,19 @@ $settings = array(
20
  $currencies = wcj_get_currencies_names_and_symbols();
21
  $gateways = WC()->payment_gateways->payment_gateways();
22
  $paypal_allowed_currencies = array( 'AUD', 'BRL', 'CAD', 'MXN', 'NZD', 'HKD', 'SGD', 'USD', 'EUR', 'JPY', 'TRY', 'NOK', 'CZK', 'DKK', 'HUF', 'ILS', 'MYR', 'PHP', 'PLN', 'SEK', 'CHF', 'TWD', 'THB', 'GBP', 'RMB', 'RUB' );
23
- $paypal_allowed_currencies_and_names = '';
24
  foreach ( $paypal_allowed_currencies as $paypal_allowed_currency ) {
25
  $paypal_allowed_currencies_and_names[] = $currencies[ $paypal_allowed_currency ];
26
  }
27
- $paypal_tip = sprintf( __( 'PayPal allows only these currencies:<br>%s.', 'woocommerce-jetpack' ), implode( '<br>', $paypal_allowed_currencies_and_names ) );
28
  foreach ( $gateways as $key => $gateway ) {
29
  $default_gateways = array( 'bacs' );
30
  if ( ! empty( $default_gateways ) && ! in_array( $key, $default_gateways ) ) {
31
- $custom_attributes = apply_filters( 'booster_get_message', '', 'disabled' );
32
  if ( '' == $custom_attributes ) {
33
  $custom_attributes = array();
34
  }
35
- $desc_tip = apply_filters( 'booster_get_message', '', 'desc_no_link' );
36
  } else {
37
  $custom_attributes = array();
38
  $desc_tip = '';
2
  /**
3
  * Booster for WooCommerce - Settings - Gateways by Currency
4
  *
5
+ * @version 3.3.0
6
  * @since 3.0.0
7
  * @author Algoritmika Ltd.
8
  */
20
  $currencies = wcj_get_currencies_names_and_symbols();
21
  $gateways = WC()->payment_gateways->payment_gateways();
22
  $paypal_allowed_currencies = array( 'AUD', 'BRL', 'CAD', 'MXN', 'NZD', 'HKD', 'SGD', 'USD', 'EUR', 'JPY', 'TRY', 'NOK', 'CZK', 'DKK', 'HUF', 'ILS', 'MYR', 'PHP', 'PLN', 'SEK', 'CHF', 'TWD', 'THB', 'GBP', 'RMB', 'RUB' );
23
+ $paypal_allowed_currencies_and_names = array();
24
  foreach ( $paypal_allowed_currencies as $paypal_allowed_currency ) {
25
  $paypal_allowed_currencies_and_names[] = $currencies[ $paypal_allowed_currency ];
26
  }
27
+ $paypal_tip = sprintf( __( 'PayPal allows only these currencies: %s.', 'woocommerce-jetpack' ), '<br>' . implode( '<br>', $paypal_allowed_currencies_and_names ) );
28
  foreach ( $gateways as $key => $gateway ) {
29
  $default_gateways = array( 'bacs' );
30
  if ( ! empty( $default_gateways ) && ! in_array( $key, $default_gateways ) ) {
31
+ $custom_attributes = apply_filters( 'booster_message', '', 'disabled' );
32
  if ( '' == $custom_attributes ) {
33
  $custom_attributes = array();
34
  }
35
+ $desc_tip = apply_filters( 'booster_message', '', 'desc_no_link' );
36
  } else {
37
  $custom_attributes = array();
38
  $desc_tip = '';
includes/settings/wcj-settings-payment-gateways-by-shipping.php CHANGED
@@ -27,11 +27,11 @@ $settings = array(
27
  $gateways = WC()->payment_gateways->payment_gateways();
28
  foreach ( $gateways as $key => $gateway ) {
29
  if ( ! in_array( $key, array( 'bacs', 'cod' ) ) ) {
30
- $custom_attributes = apply_filters( 'booster_get_message', '', 'disabled' );
31
  if ( '' == $custom_attributes ) {
32
  $custom_attributes = array();
33
  }
34
- $desc_tip = apply_filters( 'booster_get_message', '', 'desc_no_link' );
35
  } else {
36
  $custom_attributes = array();
37
  $desc_tip = '';
27
  $gateways = WC()->payment_gateways->payment_gateways();
28
  foreach ( $gateways as $key => $gateway ) {
29
  if ( ! in_array( $key, array( 'bacs', 'cod' ) ) ) {
30
+ $custom_attributes = apply_filters( 'booster_message', '', 'disabled' );
31
  if ( '' == $custom_attributes ) {
32
  $custom_attributes = array();
33
  }
34
+ $desc_tip = apply_filters( 'booster_message', '', 'desc_no_link' );
35
  } else {
36
  $custom_attributes = array();
37
  $desc_tip = '';
includes/settings/wcj-settings-payment-gateways-by-user-role.php CHANGED
@@ -24,11 +24,11 @@ $gateways = WC()->payment_gateways->payment_gateways();
24
  foreach ( $gateways as $key => $gateway ) {
25
  $default_gateways = array( 'bacs' );
26
  if ( ! empty( $default_gateways ) && ! in_array( $key, $default_gateways ) ) {
27
- $custom_attributes = apply_filters( 'booster_get_message', '', 'disabled' );
28
  if ( '' == $custom_attributes ) {
29
  $custom_attributes = array();
30
  }
31
- $desc_tip = apply_filters( 'booster_get_message', '', 'desc_no_link' );
32
  } else {
33
  $custom_attributes = array();
34
  $desc_tip = '';
24
  foreach ( $gateways as $key => $gateway ) {
25
  $default_gateways = array( 'bacs' );
26
  if ( ! empty( $default_gateways ) && ! in_array( $key, $default_gateways ) ) {
27
+ $custom_attributes = apply_filters( 'booster_message', '', 'disabled' );
28
  if ( '' == $custom_attributes ) {
29
  $custom_attributes = array();
30
  }
31
+ $desc_tip = apply_filters( 'booster_message', '', 'desc_no_link' );
32
  } else {
33
  $custom_attributes = array();
34
  $desc_tip = '';
includes/settings/wcj-settings-payment-gateways-currency.php CHANGED
@@ -64,10 +64,10 @@ $settings = array_merge( $settings, array(
64
  'manual' => __( 'Enter Rates Manually', 'woocommerce-jetpack' ),
65
  'auto' => __( 'Automatically via Currency Exchange Rates module', 'woocommerce-jetpack' ),
66
  ),
67
- 'desc' => ( '' == apply_filters( 'booster_get_message', '', 'desc' ) ) ?
68
  __( 'Visit', 'woocommerce-jetpack' ) . ' <a href="' . admin_url( 'admin.php?page=wc-settings&tab=jetpack&wcj-cat=prices_and_currencies&section=currency_exchange_rates' ) . '">' . __( 'Currency Exchange Rates module', 'woocommerce-jetpack' ) . '</a>'
69
- : apply_filters( 'booster_get_message', '', 'desc' ),
70
- 'custom_attributes' => apply_filters( 'booster_get_message', '', 'disabled' ),
71
  ),
72
  array(
73
  'type' => 'sectionend',
64
  'manual' => __( 'Enter Rates Manually', 'woocommerce-jetpack' ),
65
  'auto' => __( 'Automatically via Currency Exchange Rates module', 'woocommerce-jetpack' ),
66
  ),
67
+ 'desc' => ( '' == apply_filters( 'booster_message', '', 'desc' ) ) ?
68
  __( 'Visit', 'woocommerce-jetpack' ) . ' <a href="' . admin_url( 'admin.php?page=wc-settings&tab=jetpack&wcj-cat=prices_and_currencies&section=currency_exchange_rates' ) . '">' . __( 'Currency Exchange Rates module', 'woocommerce-jetpack' ) . '</a>'
69
+ : apply_filters( 'booster_message', '', 'desc' ),
70
+ 'custom_attributes' => apply_filters( 'booster_message', '', 'disabled' ),
71
  ),
72
  array(
73
  'type' => 'sectionend',
includes/settings/wcj-settings-payment-gateways-icons.php CHANGED
@@ -21,8 +21,8 @@ $available_gateways = WC()->payment_gateways->payment_gateways();
21
  foreach ( $available_gateways as $key => $gateway ) {
22
  $default_gateways = array( 'cod', 'cheque', 'bacs', 'mijireh_checkout', 'paypal' );
23
  if ( ! empty( $default_gateways ) && ! in_array( $key, $default_gateways ) ) {
24
- $custom_attributes = apply_filters( 'booster_get_message', '', 'disabled' );
25
- $desc_tip = apply_filters( 'booster_get_message', '', 'desc' );
26
  } else {
27
  $custom_attributes = array();
28
  $desc_tip = '';
21
  foreach ( $available_gateways as $key => $gateway ) {
22
  $default_gateways = array( 'cod', 'cheque', 'bacs', 'mijireh_checkout', 'paypal' );
23
  if ( ! empty( $default_gateways ) && ! in_array( $key, $default_gateways ) ) {
24
+ $custom_attributes = apply_filters( 'booster_message', '', 'disabled' );
25
+ $desc_tip = apply_filters( 'booster_message', '', 'desc' );
26
  } else {
27
  $custom_attributes = array();
28
  $desc_tip = '';
includes/settings/wcj-settings-payment-gateways-min-max.php CHANGED
@@ -72,11 +72,11 @@ $gateways = WC()->payment_gateways->payment_gateways();
72
  foreach ( $gateways as $key => $gateway ) {
73
  $default_gateways = array( 'bacs' );
74
  if ( ! empty( $default_gateways ) && ! in_array( $key, $default_gateways ) ) {
75
- $custom_attributes = apply_filters( 'booster_get_message', '', 'disabled' );
76
  if ( '' == $custom_attributes ) {
77
  $custom_attributes = array();
78
  }
79
- $desc_tip = apply_filters( 'booster_get_message', '', 'desc_no_link' );
80
  } else {
81
  $custom_attributes = array();
82
  $desc_tip = '';
72
  foreach ( $gateways as $key => $gateway ) {
73
  $default_gateways = array( 'bacs' );
74
  if ( ! empty( $default_gateways ) && ! in_array( $key, $default_gateways ) ) {
75
+ $custom_attributes = apply_filters( 'booster_message', '', 'disabled' );
76
  if ( '' == $custom_attributes ) {
77
  $custom_attributes = array();
78
  }
79
+ $desc_tip = apply_filters( 'booster_message', '', 'desc_no_link' );
80
  } else {
81
  $custom_attributes = array();
82
  $desc_tip = '';
includes/settings/wcj-settings-payment-gateways-per-category.php CHANGED
@@ -51,12 +51,12 @@ foreach ( $available_gateways as $gateway_id => $gateway ) {
51
  wcj_get_settings_as_multiselect_or_text(
52
  array(
53
  'title' => '',
54
- 'desc' => __( 'Products - Include', 'woocommerce-jetpack' ) . '. ' . apply_filters( 'booster_get_message', '', 'desc' ),
55
  'desc_tip' => __( 'Show gateway only if there is selected products in cart. Leave blank to disable the option.', 'woocommerce-jetpack' ),
56
  'id' => 'wcj_gateways_per_products_' . $gateway_id,
57
  'default' => '',
58
  'css' => 'width: 450px;',
59
- 'custom_attributes' => apply_filters( 'booster_get_message', '', 'disabled' ),
60
  ),
61
  $products,
62
  $is_multiselect_products
@@ -64,12 +64,12 @@ foreach ( $available_gateways as $gateway_id => $gateway ) {
64
  wcj_get_settings_as_multiselect_or_text(
65
  array(
66
  'title' => '',
67
- 'desc' => __( 'Products - Exclude', 'woocommerce-jetpack' ) . '. ' . apply_filters( 'booster_get_message', '', 'desc' ),
68
  'desc_tip' => __( 'Hide gateway if there is selected products in cart. Leave blank to disable the option.', 'woocommerce-jetpack' ),
69
  'id' => 'wcj_gateways_per_products_excl_' . $gateway_id,
70
  'default' => '',
71
  'css' => 'width: 450px;',
72
- 'custom_attributes' => apply_filters( 'booster_get_message', '', 'disabled' ),
73
  ),
74
  $products,
75
  $is_multiselect_products
51
  wcj_get_settings_as_multiselect_or_text(
52
  array(
53
  'title' => '',
54
+ 'desc' => __( 'Products - Include', 'woocommerce-jetpack' ) . '. ' . apply_filters( 'booster_message', '', 'desc' ),
55
  'desc_tip' => __( 'Show gateway only if there is selected products in cart. Leave blank to disable the option.', 'woocommerce-jetpack' ),
56
  'id' => 'wcj_gateways_per_products_' . $gateway_id,
57
  'default' => '',
58
  'css' => 'width: 450px;',
59
+ 'custom_attributes' => apply_filters( 'booster_message', '', 'disabled' ),
60
  ),
61
  $products,
62
  $is_multiselect_products
64
  wcj_get_settings_as_multiselect_or_text(
65
  array(
66
  'title' => '',
67
+ 'desc' => __( 'Products - Exclude', 'woocommerce-jetpack' ) . '. ' . apply_filters( 'booster_message', '', 'desc' ),
68
  'desc_tip' => __( 'Hide gateway if there is selected products in cart. Leave blank to disable the option.', 'woocommerce-jetpack' ),
69
  'id' => 'wcj_gateways_per_products_excl_' . $gateway_id,
70
  'default' => '',
71
  'css' => 'width: 450px;',
72
+ 'custom_attributes' => apply_filters( 'booster_message', '', 'disabled' ),
73
  ),
74
  $products,
75
  $is_multiselect_products
includes/settings/wcj-settings-payment-gateways.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Settings - Custom Gateways
4
  *
5
- * @version 2.8.0
6
  * @since 2.8.0
7
  * @author Algoritmika Ltd.
8
  */
@@ -21,16 +21,16 @@ $settings = array(
21
  ),
22
  array(
23
  'title' => __( 'Number of Gateways', 'woocommerce-jetpack' ),
24
- 'desc' => apply_filters( 'booster_get_message', '', 'desc' ),
25
  'desc_tip' => __( 'Number of custom payments gateways to be added. All settings for each new gateway are in WooCommerce > Settings > Checkout.', 'woocommerce-jetpack' ),
26
  'id' => 'wcj_custom_payment_gateways_number',
27
  'default' => 1,
28
  'type' => 'number',
29
- 'custom_attributes' => is_array( apply_filters( 'booster_get_message', '', 'readonly' ) ) ?
30
- apply_filters( 'booster_get_message', '', 'readonly' ) : array( 'step' => '1', 'min' => '1' ),
31
  ),
32
  );
33
- for ( $i = 1; $i <= apply_filters( 'booster_get_option', 1, get_option( 'wcj_custom_payment_gateways_number', 1 ) ); $i++ ) {
34
  $settings = array_merge( $settings, array(
35
  array(
36
  'title' => __( 'Admin Title Custom Gateway', 'woocommerce-jetpack' ) . ' #' . $i,
@@ -45,5 +45,22 @@ $settings = array_merge( $settings, array(
45
  'type' => 'sectionend',
46
  'id' => 'wcj_custom_payment_gateways_options',
47
  ),
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
48
  ) );
49
  return $settings;
2
  /**
3
  * Booster for WooCommerce - Settings - Custom Gateways
4
  *
5
+ * @version 3.3.0
6
  * @since 2.8.0
7
  * @author Algoritmika Ltd.
8
  */
21
  ),
22
  array(
23
  'title' => __( 'Number of Gateways', 'woocommerce-jetpack' ),
24
+ 'desc' => apply_filters( 'booster_message', '', 'desc' ),
25
  'desc_tip' => __( 'Number of custom payments gateways to be added. All settings for each new gateway are in WooCommerce > Settings > Checkout.', 'woocommerce-jetpack' ),
26
  'id' => 'wcj_custom_payment_gateways_number',
27
  'default' => 1,
28
  'type' => 'number',
29
+ 'custom_attributes' => is_array( apply_filters( 'booster_message', '', 'readonly' ) ) ?
30
+ apply_filters( 'booster_message', '', 'readonly' ) : array( 'step' => '1', 'min' => '1' ),
31
  ),
32
  );
33
+ for ( $i = 1; $i <= apply_filters( 'booster_option', 1, get_option( 'wcj_custom_payment_gateways_number', 1 ) ); $i++ ) {
34
  $settings = array_merge( $settings, array(
35
  array(
36
  'title' => __( 'Admin Title Custom Gateway', 'woocommerce-jetpack' ) . ' #' . $i,
45
  'type' => 'sectionend',
46
  'id' => 'wcj_custom_payment_gateways_options',
47
  ),
48
+ array(
49
+ 'title' => __( 'Advanced Options', 'woocommerce-jetpack' ),
50
+ 'type' => 'title',
51
+ 'id' => 'wcj_custom_payment_gateways_advanced_options',
52
+ ),
53
+ array(
54
+ 'title' => __( 'Gateways Input Fields', 'woocommerce-jetpack' ),
55
+ 'desc' => __( 'Add "Delete" button', 'woocommerce-jetpack' ),
56
+ 'desc_tip' => __( 'This will add "Delete" button to custom payment gateways input fields admin order meta box.', 'woocommerce-jetpack' ),
57
+ 'id' => 'wcj_custom_payment_gateways_input_fields_delete_button',
58
+ 'default' => 'no',
59
+ 'type' => 'checkbox',
60
+ ),
61
+ array(
62
+ 'type' => 'sectionend',
63
+ 'id' => 'wcj_custom_payment_gateways_advanced_options',
64
+ ),
65
  ) );
66
  return $settings;
includes/settings/wcj-settings-pdf-invoicing-advanced.php ADDED
@@ -0,0 +1,179 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Booster for WooCommerce - Settings - PDF Invoicing - Advanced
4
+ *
5
+ * @version 3.3.0
6
+ * @since 3.3.0
7
+ * @author Algoritmika Ltd.
8
+ * @todo (maybe) create "Tools (Options)" submodule
9
+ */
10
+
11
+ if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
12
+
13
+ $is_full_fonts = wcj_check_and_maybe_download_tcpdf_fonts();
14
+ if ( 'yes' === get_option( 'wcj_invoicing_fonts_manager_do_not_download', 'no' ) ) {
15
+ $fonts_manager_desc = __( 'Fonts download is disabled.', 'woocommerce-jetpack' );
16
+ } else {
17
+ if ( $is_full_fonts ) {
18
+ $fonts_manager_desc = __( 'Fonts are up to date.', 'woocommerce-jetpack' ) . ' ' . sprintf(
19
+ __( 'Latest successful download or version check was on %s.', 'woocommerce-jetpack' ),
20
+ date( 'Y-m-d H:i:s', get_option( 'wcj_invoicing_fonts_version_timestamp', null ) )
21
+ );
22
+ } else {
23
+ $fonts_manager_desc = __( 'Fonts are NOT up to date. Please try downloading by pressing the button below.', 'woocommerce-jetpack' );
24
+ if ( null != get_option( 'wcj_invoicing_fonts_version', null ) ) {
25
+ $fonts_manager_desc .= ' ' . sprintf(
26
+ __( 'Latest successful downloaded version is %s.', 'woocommerce-jetpack' ),
27
+ get_option( 'wcj_invoicing_fonts_version', null )
28
+ );
29
+ }
30
+ if ( null != get_option( 'wcj_invoicing_fonts_version_timestamp', null ) ) {
31
+ $fonts_manager_desc .= ' ' . sprintf(
32
+ __( 'Latest download executed on %s.', 'woocommerce-jetpack' ),
33
+ date( 'Y-m-d H:i:s', get_option( 'wcj_invoicing_fonts_version_timestamp', null ) )
34
+ );
35
+ }
36
+ }
37
+ }
38
+
39
+ return array(
40
+ array(
41
+ 'type' => 'title',
42
+ 'title' => __( 'Advanced Options', 'woocommerce-jetpack' ),
43
+ 'id' => 'wcj_pdf_invoicing_advanced_options',
44
+ ),
45
+ array(
46
+ 'title' => __( 'Hide Disabled Docs Settings', 'woocommerce-jetpack' ),
47
+ 'desc' => __( 'Hide', 'woocommerce-jetpack' ),
48
+ 'id' => 'wcj_invoicing_hide_disabled_docs_settings',
49
+ 'default' => 'no',
50
+ 'type' => 'checkbox',
51
+ ),
52
+ array(
53
+ 'title' => __( 'Replace Admin Order Search with Invoice Search', 'woocommerce-jetpack' ),
54
+ 'desc' => __( 'Enable', 'woocommerce-jetpack' ),
55
+ 'id' => 'wcj_invoicing_admin_search_by_invoice',
56
+ 'default' => 'no',
57
+ 'type' => 'checkbox',
58
+ ),
59
+ array(
60
+ 'title' => __( 'Advanced', 'woocommerce-jetpack' ) . ': ' . __( 'Default Images Directory', 'woocommerce-jetpack' ),
61
+ 'desc' => __( 'Default images directory in TCPDF library (K_PATH_IMAGES).', 'woocommerce-jetpack' ),
62
+ 'desc_tip' => __( 'Try changing this if you have issues displaying images in page background or header.', 'woocommerce-jetpack' ),
63
+ 'id' => 'wcj_invoicing_general_header_images_path', // mislabelled, should be `wcj_invoicing_general_images_path`
64
+ 'default' => 'empty',
65
+ 'type' => 'select',
66
+ 'options' => array(
67
+ 'empty' => __( 'Empty', 'woocommerce-jetpack' ),
68
+ 'tcpdf_default' => __( 'TCPDF Default', 'woocommerce-jetpack' ),
69
+ 'abspath' => __( 'ABSPATH', 'woocommerce-jetpack' ), // . ': ' . ABSPATH,
70
+ 'document_root' => __( 'DOCUMENT_ROOT', 'woocommerce-jetpack' ), // . ': ' . $_SERVER['DOCUMENT_ROOT'],
71
+ ),
72
+ ),
73
+ array(
74
+ 'title' => __( 'Advanced', 'woocommerce-jetpack' ) . ': ' . __( 'Temp Directory', 'woocommerce-jetpack' ),
75
+ 'desc_tip' => __( 'Leave blank to use the default temp directory.', 'woocommerce-jetpack' ),
76
+ 'id' => 'wcj_invoicing_general_tmp_dir',
77
+ 'default' => '',
78
+ 'type' => 'text',
79
+ ),
80
+ array(
81
+ 'type' => 'sectionend',
82
+ 'id' => 'wcj_pdf_invoicing_advanced_options',
83
+ ),
84
+ // $hook_time = date( 'Y-m-d H:i:s', get_option( 'wcj_download_tcpdf_fonts_hook_timestamp', null ) ); // for debug
85
+ array(
86
+ 'title' => __( 'Fonts Manager', 'woocommerce-jetpack' ),
87
+ 'desc' => $fonts_manager_desc,
88
+ 'type' => 'title',
89
+ 'id' => 'wcj_invoicing_fonts_manager_styling_options',
90
+ ),
91
+ array(
92
+ 'title' => __( 'Actions', 'woocommerce-jetpack' ),
93
+ 'type' => 'custom_link',
94
+ 'link' => '<a class="button-primary" href="' . add_query_arg( 'wcj_download_fonts', '1' ) . '">' .
95
+ ( $is_full_fonts ? __( 'Re-download', 'woocommerce-jetpack' ) : __( 'Download', 'woocommerce-jetpack' ) )
96
+ . '</a>',
97
+ 'id' => 'wcj_invoicing_fonts_manager_styling_option',
98
+ ),
99
+ array(
100
+ 'title' => __( 'Disable Fonts Download', 'woocommerce-jetpack' ),
101
+ 'desc' => __( 'Disable', 'woocommerce-jetpack' ),
102
+ 'type' => 'checkbox',
103
+ 'default' => 'no',
104
+ 'id' => 'wcj_invoicing_fonts_manager_do_not_download',
105
+ ),
106
+ array(
107
+ 'type' => 'sectionend',
108
+ 'id' => 'wcj_invoicing_fonts_manager_styling_options',
109
+ ),
110
+ array(
111
+ 'title' => __( 'General Display Options', 'woocommerce-jetpack' ),
112
+ 'type' => 'title',
113
+ 'id' => 'wcj_invoicing_general_display_options',
114
+ ),
115
+ array(
116
+ 'title' => __( 'Add PDF Invoices Meta Box to Admin Edit Order Page', 'woocommerce-jetpack' ),
117
+ 'desc' => __( 'Add', 'woocommerce-jetpack' ),
118
+ 'id' => 'wcj_invoicing_add_order_meta_box',
119
+ 'default' => 'yes',
120
+ 'type' => 'checkbox',
121
+ ),
122
+ array(
123
+ 'type' => 'sectionend',
124
+ 'id' => 'wcj_invoicing_general_display_options',
125
+ ),
126
+ array(
127
+ 'title' => __( 'Report Tool Options', 'woocommerce-jetpack' ),
128
+ 'type' => 'title',
129
+ 'id' => 'wcj_pdf_invoicing_report_tool_options',
130
+ ),
131
+ array(
132
+ 'title' => __( 'Reports Filename', 'woocommerce-jetpack' ),
133
+ 'desc' => wcj_message_replaced_values( array( '%site%', '%invoice_type%', '%year%', '%month%' ) ),
134
+ 'id' => 'wcj_pdf_invoicing_report_tool_filename',
135
+ 'default' => '%site%-%invoice_type%-%year%_%month%',
136
+ 'type' => 'text',
137
+ 'class' => 'widefat',
138
+ ),
139
+ array(
140
+ 'title' => __( 'Report Columns', 'woocommerce-jetpack' ),
141
+ 'desc_tip' => __( 'Leave blank to show all columns.', 'woocommerce-jetpack' ),
142
+ 'id' => 'wcj_pdf_invoicing_report_tool_columns',
143
+ 'default' => $this->get_report_default_columns(),
144
+ 'type' => 'multiselect',
145
+ 'class' => 'chosen_select',
146
+ 'options' => $this->get_report_columns(),
147
+ ),
148
+ array(
149
+ 'title' => __( 'Tax Percent Precision', 'woocommerce-jetpack' ),
150
+ 'id' => 'wcj_pdf_invoicing_report_tool_tax_percent_precision',
151
+ 'default' => 0,
152
+ 'type' => 'number',
153
+ 'custom_attributes' => array( 'min' => 0 ),
154
+ ),
155
+ array(
156
+ 'title' => __( 'CSV Separator', 'woocommerce-jetpack' ),
157
+ 'id' => 'wcj_pdf_invoicing_report_tool_csv_separator',
158
+ 'default' => ';',
159
+ 'type' => 'text',
160
+ ),
161
+ array(
162
+ 'title' => __( 'CSV UTF-8 BOM', 'woocommerce-jetpack' ),
163
+ 'desc' => __( 'Add', 'woocommerce-jetpack' ),
164
+ 'id' => 'wcj_pdf_invoicing_report_tool_csv_add_utf_8_bom',
165
+ 'default' => 'yes',
166
+ 'type' => 'checkbox',
167
+ ),
168
+ array(
169
+ 'title' => __( 'Replace Periods with Commas in CSV Data', 'woocommerce-jetpack' ),
170
+ 'desc' => __( 'Replace', 'woocommerce-jetpack' ),
171
+ 'id' => 'wcj_pdf_invoicing_report_tool_csv_replace_periods_w_commas',
172
+ 'default' => 'yes',
173
+ 'type' => 'checkbox',
174
+ ),
175
+ array(
176
+ 'type' => 'sectionend',
177
+ 'id' => 'wcj_pdf_invoicing_report_tool_options',
178
+ ),
179
+ );
includes/settings/wcj-settings-pdf-invoicing-display.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Settings - PDF Invoicing - Display
4
  *
5
- * @version 3.1.0
6
  * @since 2.8.0
7
  * @author Algoritmika Ltd.
8
  * @todo (maybe) add "Save all settings" buttons to each document type
@@ -140,22 +140,4 @@ foreach ( $invoice_types as $invoice_type ) {
140
  ),
141
  ) );
142
  }
143
- $settings = array_merge( $settings, array(
144
- array(
145
- 'title' => __( 'General Display Options', 'woocommerce-jetpack' ),
146
- 'type' => 'title',
147
- 'id' => 'wcj_invoicing_general_display_options',
148
- ),
149
- array(
150
- 'title' => __( 'Add PDF Invoices Meta Box to Admin Edit Order Page', 'woocommerce-jetpack' ),
151
- 'desc' => __( 'Add', 'woocommerce-jetpack' ),
152
- 'id' => 'wcj_invoicing_add_order_meta_box',
153
- 'default' => 'yes',
154
- 'type' => 'checkbox',
155
- ),
156
- array(
157
- 'type' => 'sectionend',
158
- 'id' => 'wcj_invoicing_general_display_options',
159
- ),
160
- ) );
161
  return $settings;
2
  /**
3
  * Booster for WooCommerce - Settings - PDF Invoicing - Display
4
  *
5
+ * @version 3.3.0
6
  * @since 2.8.0
7
  * @author Algoritmika Ltd.
8
  * @todo (maybe) add "Save all settings" buttons to each document type
140
  ),
141
  ) );
142
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
143
  return $settings;
includes/settings/wcj-settings-pdf-invoicing-emails.php CHANGED
@@ -28,7 +28,7 @@ foreach ( $available_gateways as $key => $gateway ) {
28
  'customer_reset_password' => __( 'Customer - Reset Password', 'woocommerce-jetpack' ),
29
  );
30
  if ( wcj_is_module_enabled( 'emails' ) ) {
31
- for ( $i = 1; $i <= apply_filters( 'booster_get_option', 1, get_option( 'wcj_emails_custom_emails_total_number', 1 ) ); $i++ ) {
32
  $available_emails[ 'wcj_custom' . '_' . $i ] = __( 'Custom', 'woocommerce-jetpack' ) . ' #' . $i;
33
  }
34
  } */
28
  'customer_reset_password' => __( 'Customer - Reset Password', 'woocommerce-jetpack' ),
29
  );
30
  if ( wcj_is_module_enabled( 'emails' ) ) {
31
+ for ( $i = 1; $i <= apply_filters( 'booster_option', 1, get_option( 'wcj_emails_custom_emails_total_number', 1 ) ); $i++ ) {
32
  $available_emails[ 'wcj_custom' . '_' . $i ] = __( 'Custom', 'woocommerce-jetpack' ) . ' #' . $i;
33
  }
34
  } */
includes/settings/wcj-settings-pdf-invoicing-styling.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Settings - PDF Invoicing - Styling
4
  *
5
- * @version 3.2.2
6
  * @since 2.8.0
7
  * @author Algoritmika Ltd.
8
  */
@@ -81,56 +81,4 @@ foreach ( $invoice_types as $invoice_type ) {
81
  ),
82
  ) );
83
  }
84
- if ( 'yes' === get_option( 'wcj_invoicing_fonts_manager_do_not_download', 'no' ) ) {
85
- $fonts_manager_desc = __( 'Fonts download is disabled.', 'woocommerce-jetpack' );
86
- } else {
87
- if ( $is_full_fonts ) {
88
- $fonts_manager_desc = __( 'Fonts are up to date.', 'woocommerce-jetpack' ) . ' ' . sprintf(
89
- __( 'Latest successful download or version check was on %s.', 'woocommerce-jetpack' ),
90
- date( 'Y-m-d H:i:s', get_option( 'wcj_invoicing_fonts_version_timestamp', null ) )
91
- );
92
- } else {
93
- $fonts_manager_desc = __( 'Fonts are NOT up to date. Please try downloading by pressing the button below.', 'woocommerce-jetpack' );
94
- if ( null != get_option( 'wcj_invoicing_fonts_version', null ) ) {
95
- $fonts_manager_desc .= ' ' . sprintf(
96
- __( 'Latest successful downloaded version is %s.', 'woocommerce-jetpack' ),
97
- get_option( 'wcj_invoicing_fonts_version', null )
98
- );
99
- }
100
- if ( null != get_option( 'wcj_invoicing_fonts_version_timestamp', null ) ) {
101
- $fonts_manager_desc .= ' ' . sprintf(
102
- __( 'Latest download executed on %s.', 'woocommerce-jetpack' ),
103
- date( 'Y-m-d H:i:s', get_option( 'wcj_invoicing_fonts_version_timestamp', null ) )
104
- );
105
- }
106
- }
107
- }
108
- // $hook_time = date( 'Y-m-d H:i:s', get_option( 'wcj_download_tcpdf_fonts_hook_timestamp', null ) ); // for debug
109
- $settings = array_merge( $settings, array(
110
- array(
111
- 'title' => __( 'Fonts Manager', 'woocommerce-jetpack' ),
112
- 'desc' => $fonts_manager_desc,
113
- 'type' => 'title',
114
- 'id' => 'wcj_invoicing_fonts_manager_styling_options',
115
- ),
116
- array(
117
- 'title' => __( 'Actions', 'woocommerce-jetpack' ),
118
- 'type' => 'custom_link',
119
- 'link' => '<a class="button-primary" href="' . add_query_arg( 'wcj_download_fonts', '1' ) . '">' .
120
- ( $is_full_fonts ? __( 'Re-download', 'woocommerce-jetpack' ) : __( 'Download', 'woocommerce-jetpack' ) )
121
- . '</a>',
122
- 'id' => 'wcj_invoicing_fonts_manager_styling_option',
123
- ),
124
- array(
125
- 'title' => __( 'Disable Fonts Download', 'woocommerce-jetpack' ),
126
- 'desc' => __( 'Disable', 'woocommerce-jetpack' ),
127
- 'type' => 'checkbox',
128
- 'default' => 'no',
129
- 'id' => 'wcj_invoicing_fonts_manager_do_not_download',
130
- ),
131
- array(
132
- 'type' => 'sectionend',
133
- 'id' => 'wcj_invoicing_fonts_manager_styling_options',
134
- ),
135
- ) );
136
  return $settings;
2
  /**
3
  * Booster for WooCommerce - Settings - PDF Invoicing - Styling
4
  *
5
+ * @version 3.3.0
6
  * @since 2.8.0
7
  * @author Algoritmika Ltd.
8
  */
81
  ),
82
  ) );
83
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
84
  return $settings;
includes/settings/wcj-settings-pdf-invoicing-templates.php CHANGED
@@ -2,13 +2,19 @@
2
  /**
3
  * Booster for WooCommerce - Settings - Templates
4
  *
5
- * @version 3.2.1
6
  * @since 2.8.0
7
  * @author Algoritmika Ltd.
8
  */
9
 
10
  if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
11
 
 
 
 
 
 
 
12
  $settings = array();
13
  $invoice_types = ( 'yes' === get_option( 'wcj_invoicing_hide_disabled_docs_settings', 'no' ) ) ? wcj_get_enabled_invoice_types() : wcj_get_invoice_types();
14
  foreach ( $invoice_types as $invoice_type ) {
@@ -20,6 +26,7 @@ foreach ( $invoice_types as $invoice_type ) {
20
  ),
21
  array(
22
  'title' => __( 'HTML Template', 'woocommerce-jetpack' ),
 
23
  'id' => 'wcj_invoicing_' . $invoice_type['id'] . '_template',
24
  'default' => $this->get_default_template( $invoice_type['id'] ),
25
  'type' => 'textarea',
@@ -36,19 +43,4 @@ foreach ( $invoice_types as $invoice_type ) {
36
  ),
37
  ) );
38
  }
39
- $settings = array_merge( $settings, array(
40
- array(
41
- 'title' => __( 'Available Shortcodes', 'woocommerce-jetpack' ),
42
- 'type' => 'title',
43
- 'desc' => sprintf(
44
- __( 'For the list of available shortcodes, please visit %s.', 'woocommerce-jetpack' ),
45
- '<a target="_blank" href="https://booster.io/category/shortcodes/?utm_source=shortcodes_list&utm_medium=module_button&utm_campaign=booster_documentation">https://booster.io/category/shortcodes/</a>'
46
- ),
47
- 'id' => 'wcj_invoicing_templates_desc',
48
- ),
49
- array(
50
- 'type' => 'sectionend',
51
- 'id' => 'wcj_invoicing_templates_desc',
52
- ),
53
- ) );
54
  return $settings;
2
  /**
3
  * Booster for WooCommerce - Settings - Templates
4
  *
5
+ * @version 3.3.0
6
  * @since 2.8.0
7
  * @author Algoritmika Ltd.
8
  */
9
 
10
  if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
11
 
12
+ $tip = sprintf( __( 'For the list of available shortcodes, please visit %s.', 'woocommerce-jetpack' ),
13
+ '<a target="_blank" href="https://booster.io/category/shortcodes/?utm_source=shortcodes_list&utm_medium=module_button&utm_campaign=booster_documentation">' .
14
+ 'https://booster.io/category/shortcodes/' .
15
+ '</a>'
16
+ );
17
+
18
  $settings = array();
19
  $invoice_types = ( 'yes' === get_option( 'wcj_invoicing_hide_disabled_docs_settings', 'no' ) ) ? wcj_get_enabled_invoice_types() : wcj_get_invoice_types();
20
  foreach ( $invoice_types as $invoice_type ) {
26
  ),
27
  array(
28
  'title' => __( 'HTML Template', 'woocommerce-jetpack' ),
29
+ 'desc' => $tip,
30
  'id' => 'wcj_invoicing_' . $invoice_type['id'] . '_template',
31
  'default' => $this->get_default_template( $invoice_type['id'] ),
32
  'type' => 'textarea',
43
  ),
44
  ) );
45
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
46
  return $settings;
includes/settings/wcj-settings-pdf-invoicing.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Settings - PDF Invoicing - General
4
  *
5
- * @version 3.2.4
6
  * @since 2.8.0
7
  * @author Algoritmika Ltd.
8
  */
@@ -11,7 +11,7 @@ if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
11
 
12
  $settings = array(
13
  array(
14
- 'title' => __( 'PDF Invoicing General Options', 'woocommerce-jetpack' ),
15
  'type' => 'title',
16
  'id' => 'wcj_pdf_invoicing_options',
17
  ),
@@ -56,94 +56,22 @@ foreach ( $invoice_types as $k => $invoice_type ) {
56
  'type' => 'multiselect',
57
  'class' => 'chosen_select',
58
  'options' => $create_on_array,
59
- 'desc' => ( 0 === $k ) ? '' : apply_filters( 'booster_get_message', '', 'desc' ),
60
- 'custom_attributes' => ( 0 === $k ) ? '' : apply_filters( 'booster_get_message', '', 'disabled' ),
61
  ),
62
  array(
63
  'id' => 'wcj_invoicing_' . $invoice_type['id'] . '_skip_zero_total',
64
  'default' => 'no',
65
  'type' => 'checkbox',
66
  'desc' => __( 'Do not create if order total equals zero', 'woocommerce-jetpack' ),
67
- 'custom_attributes' => ( 0 === $k ) ? '' : apply_filters( 'booster_get_message', '', 'disabled' ),
68
  ),
69
  ) );
70
  }
71
  $settings = array_merge( $settings, array(
72
- array(
73
- 'title' => __( 'Hide Disabled Docs Settings', 'woocommerce-jetpack' ),
74
- 'desc' => __( 'Hide', 'woocommerce-jetpack' ),
75
- 'id' => 'wcj_invoicing_hide_disabled_docs_settings',
76
- 'default' => 'no',
77
- 'type' => 'checkbox',
78
- ),
79
- array(
80
- 'title' => __( 'Replace Admin Order Search with Invoice Search', 'woocommerce-jetpack' ),
81
- 'desc' => __( 'Enable', 'woocommerce-jetpack' ),
82
- 'id' => 'wcj_invoicing_admin_search_by_invoice',
83
- 'default' => 'no',
84
- 'type' => 'checkbox',
85
- ),
86
- array(
87
- 'title' => __( 'Advanced', 'woocommerce-jetpack' ) . ': ' . __( 'Default Images Directory', 'woocommerce-jetpack' ),
88
- 'desc' => __( 'Default images directory in TCPDF library (K_PATH_IMAGES).', 'woocommerce-jetpack' ),
89
- 'desc_tip' => __( 'Try changing this if you have issues displaying images in page background or header.', 'woocommerce-jetpack' ),
90
- 'id' => 'wcj_invoicing_general_header_images_path', // mislabelled, should be `wcj_invoicing_general_images_path`
91
- 'default' => 'empty',
92
- 'type' => 'select',
93
- 'options' => array(
94
- 'empty' => __( 'Empty', 'woocommerce-jetpack' ),
95
- 'tcpdf_default' => __( 'TCPDF Default', 'woocommerce-jetpack' ),
96
- 'abspath' => __( 'ABSPATH', 'woocommerce-jetpack' ), // . ': ' . ABSPATH,
97
- 'document_root' => __( 'DOCUMENT_ROOT', 'woocommerce-jetpack' ), // . ': ' . $_SERVER['DOCUMENT_ROOT'],
98
- ),
99
- ),
100
- array(
101
- 'title' => __( 'Advanced', 'woocommerce-jetpack' ) . ': ' . __( 'Temp Directory', 'woocommerce-jetpack' ),
102
- 'desc_tip' => __( 'Leave blank to use the default temp directory.', 'woocommerce-jetpack' ),
103
- 'id' => 'wcj_invoicing_general_tmp_dir',
104
- 'default' => '',
105
- 'type' => 'text',
106
- ),
107
  array(
108
  'type' => 'sectionend',
109
  'id' => 'wcj_pdf_invoicing_options',
110
  ),
111
- array(
112
- 'title' => __( 'Report Tool Options', 'woocommerce-jetpack' ),
113
- 'type' => 'title',
114
- 'id' => 'wcj_pdf_invoicing_report_tool_options',
115
- ),
116
- array(
117
- 'title' => __( 'Reports Filename', 'woocommerce-jetpack' ),
118
- 'desc' => wcj_message_replaced_values( array( '%site%', '%invoice_type%', '%year%', '%month%' ) ),
119
- 'id' => 'wcj_pdf_invoicing_report_tool_filename',
120
- 'default' => '%site%-%invoice_type%-%year%_%month%',
121
- 'type' => 'text',
122
- 'class' => 'widefat',
123
- ),
124
- array(
125
- 'title' => __( 'CSV Separator', 'woocommerce-jetpack' ),
126
- 'id' => 'wcj_pdf_invoicing_report_tool_csv_separator',
127
- 'default' => ';',
128
- 'type' => 'text',
129
- ),
130
- array(
131
- 'title' => __( 'CSV UTF-8 BOM', 'woocommerce-jetpack' ),
132
- 'desc' => __( 'Add', 'woocommerce-jetpack' ),
133
- 'id' => 'wcj_pdf_invoicing_report_tool_csv_add_utf_8_bom',
134
- 'default' => 'yes',
135
- 'type' => 'checkbox',
136
- ),
137
- array(
138
- 'title' => __( 'Replace Periods with Commas in CSV Data', 'woocommerce-jetpack' ),
139
- 'desc' => __( 'Replace', 'woocommerce-jetpack' ),
140
- 'id' => 'wcj_pdf_invoicing_report_tool_csv_replace_periods_w_commas',
141
- 'default' => 'yes',
142
- 'type' => 'checkbox',
143
- ),
144
- array(
145
- 'type' => 'sectionend',
146
- 'id' => 'wcj_pdf_invoicing_report_tool_options',
147
- ),
148
  ) );
149
  return $settings;
2
  /**
3
  * Booster for WooCommerce - Settings - PDF Invoicing - General
4
  *
5
+ * @version 3.3.0
6
  * @since 2.8.0
7
  * @author Algoritmika Ltd.
8
  */
11
 
12
  $settings = array(
13
  array(
14
+ 'title' => __( 'Documents Options', 'woocommerce-jetpack' ),
15
  'type' => 'title',
16
  'id' => 'wcj_pdf_invoicing_options',
17
  ),
56
  'type' => 'multiselect',
57
  'class' => 'chosen_select',
58
  'options' => $create_on_array,
59
+ 'desc' => ( 0 === $k ) ? '' : apply_filters( 'booster_message', '', 'desc' ),
60
+ 'custom_attributes' => ( 0 === $k ) ? '' : apply_filters( 'booster_message', '', 'disabled' ),
61
  ),
62
  array(
63
  'id' => 'wcj_invoicing_' . $invoice_type['id'] . '_skip_zero_total',
64
  'default' => 'no',
65
  'type' => 'checkbox',
66
  'desc' => __( 'Do not create if order total equals zero', 'woocommerce-jetpack' ),
67
+ 'custom_attributes' => ( 0 === $k ) ? '' : apply_filters( 'booster_message', '', 'disabled' ),
68
  ),
69
  ) );
70
  }
71
  $settings = array_merge( $settings, array(
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
72
  array(
73
  'type' => 'sectionend',
74
  'id' => 'wcj_pdf_invoicing_options',
75
  ),
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
76
  ) );
77
  return $settings;
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 3.2.4
6
  * @since 2.8.0
7
  * @author Algoritmika Ltd.
8
  */
@@ -108,6 +108,16 @@ $settings = array(
108
  'default' => 'yes',
109
  'type' => 'checkbox',
110
  ),
 
 
 
 
 
 
 
 
 
 
111
  array(
112
  'title' => __( 'Price Filter Widget and Sorting by Price Support', 'woocommerce-jetpack' ),
113
  'desc' => __( 'Enable', 'woocommerce-jetpack' ),
@@ -179,18 +189,26 @@ $settings = array(
179
  'id' => 'wcj_price_by_country_total_groups_number',
180
  'default' => 1,
181
  'type' => 'custom_number',
182
- 'desc' => apply_filters( 'booster_get_message', '', 'desc' ),
183
  'custom_attributes' => array_merge(
184
- is_array( apply_filters( 'booster_get_message', '', 'readonly' ) ) ? apply_filters( 'booster_get_message', '', 'readonly' ) : array(),
185
  array('step' => '1', 'min' => '1', ) ),
186
  'css' => 'width:100px;',
187
  ),
188
  );
189
- for ( $i = 1; $i <= apply_filters( 'booster_get_option', 1, get_option( 'wcj_price_by_country_total_groups_number', 1 ) ); $i++ ) {
 
 
 
 
 
 
 
190
  switch ( get_option( 'wcj_price_by_country_selection', 'comma_list' ) ) {
191
  case 'comma_list':
192
  $settings[] = array(
193
- 'title' => __( 'Group', 'woocommerce-jetpack' ) . ' #' . $i,
 
194
  'desc' => __( 'Countries. List of comma separated country codes.<br>For country codes and predifined sets visit <a href="http://booster.io/country-codes/" target="_blank">http://booster.io/country-codes/</a>', 'woocommerce-jetpack' ),
195
  'id' => 'wcj_price_by_country_exchange_rate_countries_group_' . $i,
196
  'default' => '',
@@ -200,7 +218,8 @@ for ( $i = 1; $i <= apply_filters( 'booster_get_option', 1, get_option( 'wcj_pri
200
  break;
201
  case 'multiselect':
202
  $settings[] = array(
203
- 'title' => __( 'Group', 'woocommerce-jetpack' ) . ' #' . $i,
 
204
  'id' => 'wcj_price_by_country_countries_group_' . $i,
205
  'default' => '',
206
  'type' => 'multiselect',
@@ -210,7 +229,8 @@ for ( $i = 1; $i <= apply_filters( 'booster_get_option', 1, get_option( 'wcj_pri
210
  break;
211
  case 'chosen_select':
212
  $settings[] = array(
213
- 'title' => __( 'Group', 'woocommerce-jetpack' ) . ' #' . $i,
 
214
  'id' => 'wcj_price_by_country_countries_group_chosen_select_' . $i,
215
  'default' => '',
216
  'type' => 'multiselect',
@@ -228,6 +248,12 @@ for ( $i = 1; $i <= apply_filters( 'booster_get_option', 1, get_option( 'wcj_pri
228
  'type' => 'select',
229
  'options' => wcj_get_currencies_names_and_symbols(),
230
  ),
 
 
 
 
 
 
231
  ) );
232
  }
233
  $settings = array_merge( $settings, array(
@@ -249,14 +275,14 @@ $settings = array_merge( $settings, array(
249
  'manual' => __( 'Enter Rates Manually', 'woocommerce-jetpack' ),
250
  'auto' => __( 'Automatically via Currency Exchange Rates module', 'woocommerce-jetpack' ),
251
  ),
252
- 'desc' => ( '' == apply_filters( 'booster_get_message', '', 'desc' ) )
253
  ? __( 'Visit', 'woocommerce-jetpack' ) . ' <a href="' . admin_url( 'admin.php?page=wc-settings&tab=jetpack&wcj-cat=prices_and_currencies&section=currency_exchange_rates' ) . '">' . __( 'Currency Exchange Rates module', 'woocommerce-jetpack' ) . '</a>'
254
- : apply_filters( 'booster_get_message', '', 'desc' ),
255
- 'custom_attributes' => apply_filters( 'booster_get_message', '', 'disabled' ),
256
  ),
257
  ) );
258
  $currency_from = apply_filters( 'woocommerce_currency', get_option('woocommerce_currency') );
259
- for ( $i = 1; $i <= apply_filters( 'booster_get_option', 1, get_option( 'wcj_price_by_country_total_groups_number', 1 ) ); $i++ ) {
260
  $currency_to = get_option( 'wcj_price_by_country_exchange_rate_currency_group_' . $i );
261
  $custom_attributes = array(
262
  'currency_from' => $currency_from,
2
  /**
3
  * Booster for WooCommerce - Settings - Prices and Currencies by Country
4
  *
5
+ * @version 3.3.0
6
  * @since 2.8.0
7
  * @author Algoritmika Ltd.
8
  */
108
  'default' => 'yes',
109
  'type' => 'checkbox',
110
  ),
111
+ array(
112
+ 'desc' => __( 'Per product options style', 'woocommerce-jetpack' ),
113
+ 'id' => 'wcj_price_by_country_local_options_style',
114
+ 'default' => 'inline',
115
+ 'type' => 'select',
116
+ 'options' => array(
117
+ 'inline' => __( 'Inline', 'woocommerce-jetpack' ),
118
+ 'meta_box' => __( 'Separate meta box', 'woocommerce-jetpack' ),
119
+ ),
120
+ ),
121
  array(
122
  'title' => __( 'Price Filter Widget and Sorting by Price Support', 'woocommerce-jetpack' ),
123
  'desc' => __( 'Enable', 'woocommerce-jetpack' ),
189
  'id' => 'wcj_price_by_country_total_groups_number',
190
  'default' => 1,
191
  'type' => 'custom_number',
192
+ 'desc' => apply_filters( 'booster_message', '', 'desc' ),
193
  'custom_attributes' => array_merge(
194
+ is_array( apply_filters( 'booster_message', '', 'readonly' ) ) ? apply_filters( 'booster_message', '', 'readonly' ) : array(),
195
  array('step' => '1', 'min' => '1', ) ),
196
  'css' => 'width:100px;',
197
  ),
198
  );
199
+ for ( $i = 1; $i <= apply_filters( 'booster_option', 1, get_option( 'wcj_price_by_country_total_groups_number', 1 ) ); $i++ ) {
200
+ $admin_title = get_option( 'wcj_price_by_country_countries_group_admin_title_' . $i, __( 'Group', 'woocommerce-jetpack' ) . ' #' . $i );
201
+ if ( __( 'Group', 'woocommerce-jetpack' ) . ' #' . $i == $admin_title ) {
202
+ $admin_title = '';
203
+ } else {
204
+ $admin_title = ': ' . $admin_title;
205
+ }
206
+ $admin_title = __( 'Group', 'woocommerce-jetpack' ) . ' #' . $i . $admin_title;
207
  switch ( get_option( 'wcj_price_by_country_selection', 'comma_list' ) ) {
208
  case 'comma_list':
209
  $settings[] = array(
210
+ 'title' => $admin_title . ( '' != get_option( 'wcj_price_by_country_exchange_rate_countries_group_' . $i, '' ) ?
211
+ ' (' . count( explode( ',', get_option( 'wcj_price_by_country_exchange_rate_countries_group_' . $i, '' ) ) ) . ')' : '' ),
212
  'desc' => __( 'Countries. List of comma separated country codes.<br>For country codes and predifined sets visit <a href="http://booster.io/country-codes/" target="_blank">http://booster.io/country-codes/</a>', 'woocommerce-jetpack' ),
213
  'id' => 'wcj_price_by_country_exchange_rate_countries_group_' . $i,
214
  'default' => '',
218
  break;
219
  case 'multiselect':
220
  $settings[] = array(
221
+ 'title' => $admin_title . ( is_array( get_option( 'wcj_price_by_country_countries_group_' . $i, '' ) ) ?
222
+ ' (' . count( get_option( 'wcj_price_by_country_countries_group_' . $i, '' ) ) . ')' : '' ),
223
  'id' => 'wcj_price_by_country_countries_group_' . $i,
224
  'default' => '',
225
  'type' => 'multiselect',
229
  break;
230
  case 'chosen_select':
231
  $settings[] = array(
232
+ 'title' => $admin_title . ( is_array( get_option( 'wcj_price_by_country_countries_group_chosen_select_' . $i, '' ) ) ?
233
+ ' (' . count( get_option( 'wcj_price_by_country_countries_group_chosen_select_' . $i, '' ) ) . ')' : '' ),
234
  'id' => 'wcj_price_by_country_countries_group_chosen_select_' . $i,
235
  'default' => '',
236
  'type' => 'multiselect',
248
  'type' => 'select',
249
  'options' => wcj_get_currencies_names_and_symbols(),
250
  ),
251
+ array(
252
+ 'desc' => __( 'Admin Title', 'woocommerce-jetpack' ),
253
+ 'id' => 'wcj_price_by_country_countries_group_admin_title_' . $i,
254
+ 'default' => __( 'Group', 'woocommerce-jetpack' ) . ' #' . $i,
255
+ 'type' => 'text',
256
+ ),
257
  ) );
258
  }
259
  $settings = array_merge( $settings, array(
275
  'manual' => __( 'Enter Rates Manually', 'woocommerce-jetpack' ),
276
  'auto' => __( 'Automatically via Currency Exchange Rates module', 'woocommerce-jetpack' ),
277
  ),
278
+ 'desc' => ( '' == apply_filters( 'booster_message', '', 'desc' ) )
279
  ? __( 'Visit', 'woocommerce-jetpack' ) . ' <a href="' . admin_url( 'admin.php?page=wc-settings&tab=jetpack&wcj-cat=prices_and_currencies&section=currency_exchange_rates' ) . '">' . __( 'Currency Exchange Rates module', 'woocommerce-jetpack' ) . '</a>'
280
+ : apply_filters( 'booster_message', '', 'desc' ),
281
+ 'custom_attributes' => apply_filters( 'booster_message', '', 'disabled' ),
282
  ),
283
  ) );
284
  $currency_from = apply_filters( 'woocommerce_currency', get_option('woocommerce_currency') );
285
+ for ( $i = 1; $i <= apply_filters( 'booster_option', 1, get_option( 'wcj_price_by_country_total_groups_number', 1 ) ); $i++ ) {
286
  $currency_to = get_option( 'wcj_price_by_country_exchange_rate_currency_group_' . $i );
287
  $custom_attributes = array(
288
  'currency_from' => $currency_from,
includes/settings/wcj-settings-price-by-user-role.php CHANGED
@@ -133,11 +133,11 @@ $settings = array_merge( $settings, array(
133
  'type' => 'multiselect',
134
  'class' => 'chosen_select',
135
  'options' => $product_cats_options,
136
- 'desc' => apply_filters( 'booster_get_message', '', 'desc' ),
137
- 'custom_attributes' => apply_filters( 'booster_get_message', '', 'disabled' ),
138
  ),
139
  ) );
140
- $categories = apply_filters( 'booster_get_option', '', get_option( 'wcj_price_by_user_role_categories', '' ) );
141
  if ( ! empty( $categories ) ) {
142
  foreach ( $categories as $category ) {
143
  foreach ( wcj_get_user_roles() as $role_key => $role_data ) {
133
  'type' => 'multiselect',
134
  'class' => 'chosen_select',
135
  'options' => $product_cats_options,
136
+ 'desc' => apply_filters( 'booster_message', '', 'desc' ),
137
+ 'custom_attributes' => apply_filters( 'booster_message', '', 'disabled' ),
138
  ),
139
  ) );
140
+ $categories = apply_filters( 'booster_option', '', get_option( 'wcj_price_by_user_role_categories', '' ) );
141
  if ( ! empty( $categories ) ) {
142
  foreach ( $categories as $category ) {
143
  foreach ( wcj_get_user_roles() as $role_key => $role_data ) {
includes/settings/wcj-settings-price-formats.php CHANGED
@@ -44,14 +44,14 @@ $settings = array(
44
  'id' => 'wcj_price_formats_total_number',
45
  'default' => 1,
46
  'type' => 'custom_number',
47
- 'desc' => apply_filters( 'booster_get_message', '', 'desc' ),
48
  'custom_attributes' => array_merge(
49
- is_array( apply_filters( 'booster_get_message', '', 'readonly' ) ) ? apply_filters( 'booster_get_message', '', 'readonly' ) : array(),
50
  array( 'step' => '1', 'min' => '0', )
51
  ),
52
  ),
53
  );
54
- for ( $i = 1; $i <= apply_filters( 'booster_get_option', 1, get_option( 'wcj_price_formats_total_number', 1 ) ); $i++ ) {
55
  $currency_symbol = wcj_get_currency_symbol( get_option( 'wcj_price_formats_currency_' . $i, get_woocommerce_currency() ) );
56
  $settings = array_merge( $settings, array(
57
  array(
44
  'id' => 'wcj_price_formats_total_number',
45
  'default' => 1,
46
  'type' => 'custom_number',
47
+ 'desc' => apply_filters( 'booster_message', '', 'desc' ),
48
  'custom_attributes' => array_merge(
49
+ is_array( apply_filters( 'booster_message', '', 'readonly' ) ) ? apply_filters( 'booster_message', '', 'readonly' ) : array(),
50
  array( 'step' => '1', 'min' => '0', )
51
  ),
52
  ),
53
  );
54
+ for ( $i = 1; $i <= apply_filters( 'booster_option', 1, get_option( 'wcj_price_formats_total_number', 1 ) ); $i++ ) {
55
  $currency_symbol = wcj_get_currency_symbol( get_option( 'wcj_price_formats_currency_' . $i, get_woocommerce_currency() ) );
56
  $settings = array_merge( $settings, array(
57
  array(
includes/settings/wcj-settings-price-labels.php CHANGED
@@ -2,22 +2,34 @@
2
  /**
3
  * Booster for WooCommerce - Settings - Custom Price Labels
4
  *
5
- * @version 2.8.0
6
  * @since 2.8.0
7
  * @author Algoritmika Ltd.
8
  */
9
 
10
  if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
11
 
12
- $product_cats = array();
13
- $product_categories = get_terms( 'product_cat', 'orderby=name&hide_empty=0' );
14
- foreach ( $product_categories as $product_category ) {
15
- $product_cats[ $product_category->term_id ] = $product_category->name;
16
- }
17
-
18
- $products = wcj_get_products();
19
 
20
  return array(
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
21
  array(
22
  'title' => __( 'Custom Price Labels - Globally', 'woocommerce-jetpack' ),
23
  'type' => 'title',
@@ -30,9 +42,9 @@ return array(
30
  'id' => 'wcj_global_price_labels_add_before_text',
31
  'default' => '',
32
  'type' => 'custom_textarea',
33
- 'desc' => apply_filters( 'booster_get_message', '', 'desc' ),
34
- 'custom_attributes' => apply_filters( 'booster_get_message', '', 'readonly' ),
35
- 'css' => 'width:30%;min-width:300px;',
36
  ),
37
  array(
38
  'title' => __( 'Add after the price', 'woocommerce-jetpack' ),
@@ -40,7 +52,7 @@ return array(
40
  'id' => 'wcj_global_price_labels_add_after_text',
41
  'default' => '',
42
  'type' => 'custom_textarea',
43
- 'css' => 'width:30%;min-width:300px;',
44
  ),
45
  array(
46
  'title' => __( 'Add between regular and sale prices', 'woocommerce-jetpack' ),
@@ -48,20 +60,19 @@ return array(
48
  'id' => 'wcj_global_price_labels_between_regular_and_sale_text',
49
  'default' => '',
50
  'type' => 'custom_textarea',
51
- 'desc' => apply_filters( 'booster_get_message', '', 'desc' ),
52
- 'custom_attributes' => apply_filters( 'booster_get_message', '', 'readonly' ),
53
- 'css' => 'width:30%;min-width:300px;',
54
  ),
55
  array(
56
  'title' => __( 'Remove from price', 'woocommerce-jetpack' ),
57
- // 'desc' => __( 'Enable the Custom Price Labels feature', 'woocommerce-jetpack' ),
58
  'desc_tip' => __( 'Enter text to remove from all products prices. Leave blank to disable.', 'woocommerce-jetpack' ),
59
  'id' => 'wcj_global_price_labels_remove_text',
60
  'default' => '',
61
  'type' => 'custom_textarea',
62
- 'desc' => apply_filters( 'booster_get_message', '', 'desc' ),
63
- 'custom_attributes' => apply_filters( 'booster_get_message', '', 'readonly' ),
64
- 'css' => 'width:30%;min-width:300px;',
65
  ),
66
  array(
67
  'title' => __( 'Replace in price', 'woocommerce-jetpack' ),
@@ -69,10 +80,10 @@ return array(
69
  'id' => 'wcj_global_price_labels_replace_text',
70
  'default' => '',
71
  'type' => 'custom_textarea',
72
- 'desc' => apply_filters( 'booster_get_message', '', 'desc' ),
73
  'custom_attributes'
74
- => apply_filters( 'booster_get_message', '', 'readonly' ),
75
- 'css' => 'width:30%;min-width:300px;',
76
  ),
77
  array(
78
  'title' => '',
@@ -80,9 +91,9 @@ return array(
80
  'id' => 'wcj_global_price_labels_replace_with_text',
81
  'default' => '',
82
  'type' => 'custom_textarea',
83
- 'desc' => apply_filters( 'booster_get_message', '', 'desc' ),
84
- 'custom_attributes' => apply_filters( 'booster_get_message', '', 'readonly' ),
85
- 'css' => 'width:30%;min-width:300px;',
86
  ),
87
  array(
88
  'title' => __( 'Instead of the price', 'woocommerce-jetpack' ),
@@ -90,7 +101,7 @@ return array(
90
  'id' => 'wcj_global_price_labels_instead_text',
91
  'default' => '',
92
  'type' => 'custom_textarea',
93
- 'css' => 'width:30%;min-width:300px;',
94
  ),
95
  array(
96
  'title' => __( 'Products - Include', 'woocommerce-jetpack' ),
@@ -99,7 +110,6 @@ return array(
99
  'default' => '',
100
  'type' => 'multiselect',
101
  'class' => 'chosen_select',
102
- 'css' => 'width: 450px;',
103
  'options' => $products,
104
  ),
105
  array(
@@ -109,7 +119,6 @@ return array(
109
  'default' => '',
110
  'type' => 'multiselect',
111
  'class' => 'chosen_select',
112
- 'css' => 'width: 450px;',
113
  'options' => $products,
114
  ),
115
  array(
@@ -119,7 +128,6 @@ return array(
119
  'default' => '',
120
  'type' => 'multiselect',
121
  'class' => 'chosen_select',
122
- 'css' => 'width: 450px;',
123
  'options' => $product_cats,
124
  ),
125
  array(
@@ -129,7 +137,6 @@ return array(
129
  'default' => '',
130
  'type' => 'multiselect',
131
  'class' => 'chosen_select',
132
- 'css' => 'width: 450px;',
133
  'options' => $product_cats,
134
  ),
135
  array(
@@ -139,27 +146,10 @@ return array(
139
  'default' => '',
140
  'type' => 'multiselect',
141
  'class' => 'chosen_select',
142
- 'css' => 'width: 450px;',
143
  'options' => array_merge( wc_get_product_types(), array( 'variation' => __( 'Variable product\'s variation', 'woocommerce-jetpack' ) ) ),
144
  ),
145
  array(
146
  'type' => 'sectionend',
147
  'id' => 'wcj_global_price_labels_options',
148
  ),
149
- array(
150
- 'title' => __( 'Custom Price Labels - Per Product', 'woocommerce-jetpack' ),
151
- 'type' => 'title',
152
- 'id' => 'wcj_local_price_labels_options'
153
- ),
154
- array(
155
- 'title' => __( 'Enable', 'woocommerce-jetpack' ),
156
- 'desc' => __( 'This will add metaboxes to each product\'s admin edit page.', 'woocommerce-jetpack' ),
157
- 'id' => 'wcj_local_price_labels_enabled',
158
- 'default' => 'yes',
159
- 'type' => 'checkbox',
160
- ),
161
- array(
162
- 'type' => 'sectionend',
163
- 'id' => 'wcj_local_price_labels_options',
164
- ),
165
  );
2
  /**
3
  * Booster for WooCommerce - Settings - Custom Price Labels
4
  *
5
+ * @version 3.3.0
6
  * @since 2.8.0
7
  * @author Algoritmika Ltd.
8
  */
9
 
10
  if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
11
 
12
+ $product_cats = wcj_get_terms( 'product_cat' );
13
+ $products = wcj_get_products();
 
 
 
 
 
14
 
15
  return array(
16
+ array(
17
+ 'title' => __( 'Custom Price Labels - Per Product', 'woocommerce-jetpack' ),
18
+ 'type' => 'title',
19
+ 'id' => 'wcj_local_price_labels_options'
20
+ ),
21
+ array(
22
+ 'title' => __( 'Per Product', 'woocommerce-jetpack' ),
23
+ 'desc' => __( 'Enable', 'woocommerce-jetpack' ),
24
+ 'desc_tip' => __( 'This will add metaboxes to each product\'s admin edit page.', 'woocommerce-jetpack' ),
25
+ 'id' => 'wcj_local_price_labels_enabled',
26
+ 'default' => 'yes',
27
+ 'type' => 'checkbox',
28
+ ),
29
+ array(
30
+ 'type' => 'sectionend',
31
+ 'id' => 'wcj_local_price_labels_options',
32
+ ),
33
  array(
34
  'title' => __( 'Custom Price Labels - Globally', 'woocommerce-jetpack' ),
35
  'type' => 'title',
42
  'id' => 'wcj_global_price_labels_add_before_text',
43
  'default' => '',
44
  'type' => 'custom_textarea',
45
+ 'desc' => apply_filters( 'booster_message', '', 'desc' ),
46
+ 'custom_attributes' => apply_filters( 'booster_message', '', 'readonly' ),
47
+ 'css' => 'width:100%;',
48
  ),
49
  array(
50
  'title' => __( 'Add after the price', 'woocommerce-jetpack' ),
52
  'id' => 'wcj_global_price_labels_add_after_text',
53
  'default' => '',
54
  'type' => 'custom_textarea',
55
+ 'css' => 'width:100%;',
56
  ),
57
  array(
58
  'title' => __( 'Add between regular and sale prices', 'woocommerce-jetpack' ),
60
  'id' => 'wcj_global_price_labels_between_regular_and_sale_text',
61
  'default' => '',
62
  'type' => 'custom_textarea',
63
+ 'desc' => apply_filters( 'booster_message', '', 'desc' ),
64
+ 'custom_attributes' => apply_filters( 'booster_message', '', 'readonly' ),
65
+ 'css' => 'width:100%;',
66
  ),
67
  array(
68
  'title' => __( 'Remove from price', 'woocommerce-jetpack' ),
 
69
  'desc_tip' => __( 'Enter text to remove from all products prices. Leave blank to disable.', 'woocommerce-jetpack' ),
70
  'id' => 'wcj_global_price_labels_remove_text',
71
  'default' => '',
72
  'type' => 'custom_textarea',
73
+ 'desc' => apply_filters( 'booster_message', '', 'desc' ),
74
+ 'custom_attributes' => apply_filters( 'booster_message', '', 'readonly' ),
75
+ 'css' => 'width:100%;',
76
  ),
77
  array(
78
  'title' => __( 'Replace in price', 'woocommerce-jetpack' ),
80
  'id' => 'wcj_global_price_labels_replace_text',
81
  'default' => '',
82
  'type' => 'custom_textarea',
83
+ 'desc' => apply_filters( 'booster_message', '', 'desc' ),
84
  'custom_attributes'
85
+ => apply_filters( 'booster_message', '', 'readonly' ),
86
+ 'css' => 'width:100%;',
87
  ),
88
  array(
89
  'title' => '',
91
  'id' => 'wcj_global_price_labels_replace_with_text',
92
  'default' => '',
93
  'type' => 'custom_textarea',
94
+ 'desc' => apply_filters( 'booster_message', '', 'desc' ),
95
+ 'custom_attributes' => apply_filters( 'booster_message', '', 'readonly' ),
96
+ 'css' => 'width:100%;',
97
  ),
98
  array(
99
  'title' => __( 'Instead of the price', 'woocommerce-jetpack' ),
101
  'id' => 'wcj_global_price_labels_instead_text',
102
  'default' => '',
103
  'type' => 'custom_textarea',
104
+ 'css' => 'width:100%;',
105
  ),
106
  array(
107
  'title' => __( 'Products - Include', 'woocommerce-jetpack' ),
110
  'default' => '',
111
  'type' => 'multiselect',
112
  'class' => 'chosen_select',
 
113
  'options' => $products,
114
  ),
115
  array(
119
  'default' => '',
120
  'type' => 'multiselect',
121
  'class' => 'chosen_select',
 
122
  'options' => $products,
123
  ),
124
  array(
128
  'default' => '',
129
  'type' => 'multiselect',
130
  'class' => 'chosen_select',
 
131
  'options' => $product_cats,
132
  ),
133
  array(
137
  'default' => '',
138
  'type' => 'multiselect',
139
  'class' => 'chosen_select',
 
140
  'options' => $product_cats,
141
  ),
142
  array(
146
  'default' => '',
147
  'type' => 'multiselect',
148
  'class' => 'chosen_select',
 
149
  'options' => array_merge( wc_get_product_types(), array( 'variation' => __( 'Variable product\'s variation', 'woocommerce-jetpack' ) ) ),
150
  ),
151
  array(
152
  'type' => 'sectionend',
153
  'id' => 'wcj_global_price_labels_options',
154
  ),
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
155
  );
includes/settings/wcj-settings-product-add-to-cart.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Settings - Product Add To Cart
4
  *
5
- * @version 3.2.4
6
  * @since 2.8.0
7
  * @author Algoritmika Ltd.
8
  */
@@ -37,12 +37,12 @@ return array(
37
  ),
38
  array(
39
  'title' => __( 'Per Product', 'woocommerce-jetpack' ),
40
- 'desc_tip' => __( 'This will add meta boxes to each product\'s edit page.', 'woocommerce-jetpack' ) . ' ' . apply_filters( 'booster_get_message', '', 'desc' ),
41
  'desc' => __( 'Enable', 'woocommerce-jetpack' ),
42
  'id' => 'wcj_add_to_cart_redirect_per_product_enabled',
43
  'default' => 'no',
44
  'type' => 'checkbox',
45
- 'custom_attributes' => apply_filters( 'booster_get_message', '', 'disabled' ),
46
  ),
47
  array(
48
  'type' => 'sectionend',
@@ -81,8 +81,8 @@ return array(
81
  'id' => 'wcj_add_to_cart_variable_as_radio_enabled',
82
  'default' => 'no',
83
  'type' => 'checkbox',
84
- 'custom_attributes' => apply_filters( 'booster_get_message', '', 'disabled' ),
85
- 'desc_tip' => apply_filters( 'booster_get_message', '', 'desc' ),
86
  ),
87
  array(
88
  'title' => __( 'Variation Label Template', 'woocommerce-jetpack' ),
@@ -91,8 +91,8 @@ return array(
91
  'default' => '%variation_title% (%variation_price%)',
92
  'type' => 'custom_textarea',
93
  'css' => 'width:99%;',
94
- 'custom_attributes' => apply_filters( 'booster_get_message', '', 'readonly' ),
95
- 'desc_tip' => apply_filters( 'booster_get_message', '', 'desc_no_link' ),
96
  ),
97
  array(
98
  'title' => __( 'Variation Description Template', 'woocommerce-jetpack' ),
@@ -101,8 +101,8 @@ return array(
101
  'default' => '<br><small>%variation_description%</small>',
102
  'type' => 'custom_textarea',
103
  'css' => 'width:99%;',
104
- 'custom_attributes' => apply_filters( 'booster_get_message', '', 'readonly' ),
105
- 'desc_tip' => apply_filters( 'booster_get_message', '', 'desc_no_link' ),
106
  ),
107
  array(
108
  'title' => __( 'Variation Radio Input td Style', 'woocommerce-jetpack' ),
@@ -110,8 +110,8 @@ return array(
110
  'default' => 'width:10%;',
111
  'type' => 'text',
112
  'css' => 'width:99%;',
113
- 'custom_attributes' => apply_filters( 'booster_get_message', '', 'readonly' ),
114
- 'desc_tip' => apply_filters( 'booster_get_message', '', 'desc_no_link' ),
115
  ),
116
  array(
117
  'type' => 'sectionend',
@@ -168,37 +168,6 @@ return array(
168
  'type' => 'sectionend',
169
  'id' => 'wcj_add_to_cart_quantity_options',
170
  ),
171
- array(
172
- 'title' => __( 'Add to Cart Button Disabling', 'woocommerce-jetpack' ),
173
- 'type' => 'title',
174
- 'id' => 'wcj_add_to_cart_button_options',
175
- ),
176
- array(
177
- 'title' => __( 'Disable Add to Cart Buttons on per Product Basis', 'woocommerce-jetpack' ),
178
- 'desc' => __( 'Enable', 'woocommerce-jetpack' ),
179
- 'desc_tip' => __( 'This will add meta box to each product\'s edit page', 'woocommerce-jetpack' ),
180
- 'id' => 'wcj_add_to_cart_button_per_product_enabled',
181
- 'default' => 'no',
182
- 'type' => 'checkbox',
183
- ),
184
- array(
185
- 'title' => __( 'Disable Add to Cart Buttons on All Category/Archives Pages', 'woocommerce-jetpack' ),
186
- 'desc' => __( 'Disable Buttons', 'woocommerce-jetpack' ),
187
- 'id' => 'wcj_add_to_cart_button_disable_archives',
188
- 'default' => 'no',
189
- 'type' => 'checkbox',
190
- ),
191
- array(
192
- 'title' => __( 'Disable Add to Cart Buttons on All Single Product Pages', 'woocommerce-jetpack' ),
193
- 'desc' => __( 'Disable Buttons', 'woocommerce-jetpack' ),
194
- 'id' => 'wcj_add_to_cart_button_disable_single',
195
- 'default' => 'no',
196
- 'type' => 'checkbox',
197
- ),
198
- array(
199
- 'type' => 'sectionend',
200
- 'id' => 'wcj_add_to_cart_button_options',
201
- ),
202
  array(
203
  'title' => __( 'Add to Cart Button Custom URL', 'woocommerce-jetpack' ),
204
  'type' => 'title',
@@ -268,8 +237,8 @@ return array(
268
  'id' => 'wcj_product_add_to_cart_message_continue_shopping_enabled',
269
  'default' => 'no',
270
  'type' => 'checkbox',
271
- 'custom_attributes' => apply_filters( 'booster_get_message', '', 'disabled' ),
272
- 'desc_tip' => apply_filters( 'booster_get_message', '', 'desc' ),
273
  ),
274
  array(
275
  'id' => 'wcj_product_add_to_cart_message_continue_shopping_text',
@@ -282,8 +251,8 @@ return array(
282
  'id' => 'wcj_product_add_to_cart_message_view_cart_enabled',
283
  'default' => 'no',
284
  'type' => 'checkbox',
285
- 'custom_attributes' => apply_filters( 'booster_get_message', '', 'disabled' ),
286
- 'desc_tip' => apply_filters( 'booster_get_message', '', 'desc' ),
287
  ),
288
  array(
289
  'id' => 'wcj_product_add_to_cart_message_view_cart_text',
@@ -294,4 +263,80 @@ return array(
294
  'type' => 'sectionend',
295
  'id' => 'wcj_product_add_to_cart_message_options',
296
  ),
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
297
  );
2
  /**
3
  * Booster for WooCommerce - Settings - Product Add To Cart
4
  *
5
+ * @version 3.3.0
6
  * @since 2.8.0
7
  * @author Algoritmika Ltd.
8
  */
37
  ),
38
  array(
39
  'title' => __( 'Per Product', 'woocommerce-jetpack' ),
40
+ 'desc_tip' => __( 'This will add meta boxes to each product\'s edit page.', 'woocommerce-jetpack' ) . ' ' . apply_filters( 'booster_message', '', 'desc' ),
41
  'desc' => __( 'Enable', 'woocommerce-jetpack' ),
42
  'id' => 'wcj_add_to_cart_redirect_per_product_enabled',
43
  'default' => 'no',
44
  'type' => 'checkbox',
45
+ 'custom_attributes' => apply_filters( 'booster_message', '', 'disabled' ),
46
  ),
47
  array(
48
  'type' => 'sectionend',
81
  'id' => 'wcj_add_to_cart_variable_as_radio_enabled',
82
  'default' => 'no',
83
  'type' => 'checkbox',
84
+ 'custom_attributes' => apply_filters( 'booster_message', '', 'disabled' ),
85
+ 'desc_tip' => apply_filters( 'booster_message', '', 'desc' ),
86
  ),
87
  array(
88
  'title' => __( 'Variation Label Template', 'woocommerce-jetpack' ),
91
  'default' => '%variation_title% (%variation_price%)',
92
  'type' => 'custom_textarea',
93
  'css' => 'width:99%;',
94
+ 'custom_attributes' => apply_filters( 'booster_message', '', 'readonly' ),
95
+ 'desc_tip' => apply_filters( 'booster_message', '', 'desc_no_link' ),
96
  ),
97
  array(
98
  'title' => __( 'Variation Description Template', 'woocommerce-jetpack' ),
101
  'default' => '<br><small>%variation_description%</small>',
102
  'type' => 'custom_textarea',
103
  'css' => 'width:99%;',
104
+ 'custom_attributes' => apply_filters( 'booster_message', '', 'readonly' ),
105
+ 'desc_tip' => apply_filters( 'booster_message', '', 'desc_no_link' ),
106
  ),
107
  array(
108
  'title' => __( 'Variation Radio Input td Style', 'woocommerce-jetpack' ),
110
  'default' => 'width:10%;',
111
  'type' => 'text',
112
  'css' => 'width:99%;',
113
+ 'custom_attributes' => apply_filters( 'booster_message', '', 'readonly' ),
114
+ 'desc_tip' => apply_filters( 'booster_message', '', 'desc_no_link' ),
115
  ),
116
  array(
117
  'type' => 'sectionend',
168
  'type' => 'sectionend',
169
  'id' => 'wcj_add_to_cart_quantity_options',
170
  ),
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
171
  array(
172
  'title' => __( 'Add to Cart Button Custom URL', 'woocommerce-jetpack' ),
173
  'type' => 'title',
237
  'id' => 'wcj_product_add_to_cart_message_continue_shopping_enabled',
238
  'default' => 'no',
239
  'type' => 'checkbox',
240
+ 'custom_attributes' => apply_filters( 'booster_message', '', 'disabled' ),
241
+ 'desc_tip' => apply_filters( 'booster_message', '', 'desc' ),
242
  ),
243
  array(
244
  'id' => 'wcj_product_add_to_cart_message_continue_shopping_text',
251
  'id' => 'wcj_product_add_to_cart_message_view_cart_enabled',
252
  'default' => 'no',
253
  'type' => 'checkbox',
254
+ 'custom_attributes' => apply_filters( 'booster_message', '', 'disabled' ),
255
+ 'desc_tip' => apply_filters( 'booster_message', '', 'desc' ),
256
  ),
257
  array(
258
  'id' => 'wcj_product_add_to_cart_message_view_cart_text',
263
  'type' => 'sectionend',
264
  'id' => 'wcj_product_add_to_cart_message_options',
265
  ),
266
+ array(
267
+ 'title' => __( 'Add to Cart Button Position Options', 'woocommerce-jetpack' ),
268
+ 'type' => 'title',
269
+ 'id' => 'wcj_product_add_to_cart_button_position_options',
270
+ ),
271
+ array(
272
+ 'title' => __( 'Add to Cart Button Position', 'woocommerce-jetpack' ),
273
+ 'desc' => '<strong>' . __( 'Enable section', 'woocommerce-jetpack' ) . '</strong>',
274
+ 'id' => 'wcj_product_add_to_cart_button_position_enabled',
275
+ 'default' => 'no',
276
+ 'type' => 'checkbox',
277
+ ),
278
+ array(
279
+ 'title' => __( 'Reposition Button on Single Product Pages', 'woocommerce-jetpack' ),
280
+ 'desc' => __( 'Enable', 'woocommerce-jetpack' ),
281
+ 'id' => 'wcj_product_add_to_cart_button_position_single_enabled',
282
+ 'default' => 'no',
283
+ 'type' => 'checkbox',
284
+ ),
285
+ array(
286
+ 'title' => __( 'Position', 'woocommerce-jetpack' ),
287
+ 'id' => 'wcj_product_add_to_cart_button_position_hook_single',
288
+ 'default' => 'woocommerce_single_product_summary',
289
+ 'type' => 'select',
290
+ 'options' => array(
291
+ 'woocommerce_before_single_product_summary' => __( 'Before single product summary', 'woocommerce-jetpack' ),
292
+ 'woocommerce_single_product_summary' => __( 'Inside single product summary', 'woocommerce-jetpack' ),
293
+ 'woocommerce_after_single_product_summary' => __( 'After single product summary', 'woocommerce-jetpack' ),
294
+ ),
295
+ ),
296
+ array(
297
+ 'desc' => __( 'Priority', 'woocommerce-jetpack' ),
298
+ 'desc_tip' => sprintf( __( 'Here are the default WooCommerce priorities for "Inside single product summary" position: %s', 'woocommerce-jetpack' ),
299
+ implode( ', ', array(
300
+ '5 - ' . __( 'Title', 'woocommerce-jetpack' ),
301
+ '10 - ' . __( 'Rating', 'woocommerce-jetpack' ),
302
+ '10 - ' . __( 'Price', 'woocommerce-jetpack' ),
303
+ '20 - ' . __( 'Excerpt', 'woocommerce-jetpack' ),
304
+ '40 - ' . __( 'Meta', 'woocommerce-jetpack' ),
305
+ '50 - ' . __( 'Sharing', 'woocommerce-jetpack' ),
306
+ '30 - ' . __( 'Add to Cart', 'woocommerce-jetpack' ),
307
+ )
308
+ ) ),
309
+ 'id' => 'wcj_product_add_to_cart_button_position_single',
310
+ 'default' => 30,
311
+ 'type' => 'number',
312
+ ),
313
+ array(
314
+ 'title' => __( 'Reposition Button on Category/Archive Pages', 'woocommerce-jetpack' ),
315
+ 'desc' => __( 'Enable', 'woocommerce-jetpack' ),
316
+ 'id' => 'wcj_product_add_to_cart_button_position_loop_enabled',
317
+ 'default' => 'no',
318
+ 'type' => 'checkbox',
319
+ ),
320
+ array(
321
+ 'title' => __( 'Position', 'woocommerce-jetpack' ),
322
+ 'id' => 'wcj_product_add_to_cart_button_position_hook_loop',
323
+ 'default' => 'woocommerce_after_shop_loop_item',
324
+ 'type' => 'select',
325
+ 'options' => array(
326
+ 'woocommerce_before_shop_loop_item' => __( 'Before product', 'woocommerce-jetpack' ),
327
+ 'woocommerce_before_shop_loop_item_title' => __( 'Before product title', 'woocommerce-jetpack' ),
328
+ 'woocommerce_after_shop_loop_item' => __( 'After product', 'woocommerce-jetpack' ),
329
+ 'woocommerce_after_shop_loop_item_title' => __( 'After product title', 'woocommerce-jetpack' ),
330
+ ),
331
+ ),
332
+ array(
333
+ 'desc' => __( 'Priority', 'woocommerce-jetpack' ),
334
+ 'id' => 'wcj_product_add_to_cart_button_position_loop',
335
+ 'default' => 10,
336
+ 'type' => 'number',
337
+ ),
338
+ array(
339
+ 'type' => 'sectionend',
340
+ 'id' => 'wcj_product_add_to_cart_button_position_options',
341
+ ),
342
  );
includes/settings/wcj-settings-product-addons.php CHANGED
@@ -2,16 +2,24 @@
2
  /**
3
  * Booster for WooCommerce - Settings - Product Addons
4
  *
5
- * @version 3.2.4
6
  * @since 2.8.0
7
  * @author Algoritmika Ltd.
8
  * @todo add "frontend template" options
 
9
  */
10
 
11
  if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
12
 
13
  $products = wcj_get_products();
14
 
 
 
 
 
 
 
 
15
  $settings = array();
16
  $settings = array_merge( $settings, array(
17
  array(
@@ -52,14 +60,14 @@ $settings = array_merge( $settings, array(
52
  'id' => 'wcj_product_addons_all_products_total_number',
53
  'default' => 1,
54
  'type' => 'custom_number',
55
- 'desc' => apply_filters( 'booster_get_message', '', 'desc' ),
56
  'custom_attributes' => array_merge(
57
- is_array( apply_filters( 'booster_get_message', '', 'readonly' ) ) ? apply_filters( 'booster_get_message', '', 'readonly' ) : array(),
58
  array( 'step' => '1', 'min' => '0', )
59
  ),
60
  ),
61
  ) );
62
- $total_number = apply_filters( 'booster_get_option', 1, get_option( 'wcj_product_addons_all_products_total_number', 1 ) );
63
  for ( $i = 1; $i <= $total_number; $i++ ) {
64
  $settings = array_merge( $settings, array(
65
  array(
@@ -74,7 +82,6 @@ for ( $i = 1; $i <= $total_number; $i++ ) {
74
  'id' => 'wcj_product_addons_all_products_type_' . $i,
75
  'default' => 'checkbox',
76
  'type' => 'select',
77
- 'css' => 'width:300px;',
78
  'options' => array(
79
  'checkbox' => __( 'Checkbox', 'woocommerce-jetpack' ),
80
  'radio' => __( 'Radio Buttons', 'woocommerce-jetpack' ),
@@ -87,7 +94,6 @@ for ( $i = 1; $i <= $total_number; $i++ ) {
87
  'id' => 'wcj_product_addons_all_products_title_' . $i,
88
  'default' => '',
89
  'type' => 'textarea',
90
- 'css' => 'width:300px;',
91
  ),
92
  array(
93
  'desc' => __( 'Label(s)', 'woocommerce-jetpack' ),
@@ -95,7 +101,6 @@ for ( $i = 1; $i <= $total_number; $i++ ) {
95
  'id' => 'wcj_product_addons_all_products_label_' . $i,
96
  'default' => '',
97
  'type' => 'textarea',
98
- 'css' => 'width:300px;',
99
  ),
100
  array(
101
  'desc' => __( 'Price(s)', 'woocommerce-jetpack' ),
@@ -103,7 +108,6 @@ for ( $i = 1; $i <= $total_number; $i++ ) {
103
  'id' => 'wcj_product_addons_all_products_price_' . $i,
104
  'default' => 0,
105
  'type' => 'textarea',
106
- 'css' => 'width:300px;',
107
  'custom_attributes' => array( 'step' => '0.0001' ),
108
  ),
109
  array(
@@ -112,7 +116,6 @@ for ( $i = 1; $i <= $total_number; $i++ ) {
112
  'id' => 'wcj_product_addons_all_products_tooltip_' . $i,
113
  'default' => '',
114
  'type' => 'textarea',
115
- 'css' => 'width:300px;',
116
  ),
117
  array(
118
  'desc' => __( 'Default Value', 'woocommerce-jetpack' ),
@@ -120,7 +123,6 @@ for ( $i = 1; $i <= $total_number; $i++ ) {
120
  'id' => 'wcj_product_addons_all_products_default_' . $i,
121
  'default' => '',
122
  'type' => 'text',
123
- 'css' => 'width:300px;',
124
  ),
125
  array(
126
  'desc' => __( 'Placeholder', 'woocommerce-jetpack' ),
@@ -128,7 +130,6 @@ for ( $i = 1; $i <= $total_number; $i++ ) {
128
  'id' => 'wcj_product_addons_all_products_placeholder_' . $i,
129
  'default' => '',
130
  'type' => 'text',
131
- 'css' => 'width:300px;',
132
  ),
133
  array(
134
  'desc' => __( 'Is Required', 'woocommerce-jetpack' ),
@@ -144,6 +145,13 @@ for ( $i = 1; $i <= $total_number; $i++ ) {
144
  'class' => 'chosen_select',
145
  'options' => $products,
146
  ),
 
 
 
 
 
 
 
147
  ) );
148
  }
149
  $settings = array_merge( $settings, array(
@@ -165,13 +173,21 @@ $settings = array_merge( $settings, array(
165
  'default' => 'no',
166
  'type' => 'checkbox',
167
  ),
 
 
 
 
 
 
 
 
 
168
  array(
169
  'title' => __( 'Addon in Cart Format', 'woocommerce-jetpack' ),
170
  'desc' => __( 'Before', 'woocommerce-jetpack' ),
171
  'id' => 'wcj_product_addons_cart_format_start',
172
  'default' => '<dl class="variation">',
173
  'type' => 'textarea',
174
- 'css' => 'width:300px;',
175
  ),
176
  array(
177
  'desc' => __( 'Each Addon', 'woocommerce-jetpack' ),
@@ -179,14 +195,12 @@ $settings = array_merge( $settings, array(
179
  'id' => 'wcj_product_addons_cart_format_each_addon',
180
  'default' => '<dt>%addon_label%:</dt><dd>%addon_price%</dd>',
181
  'type' => 'textarea',
182
- 'css' => 'width:300px;',
183
  ),
184
  array(
185
  'desc' => __( 'After', 'woocommerce-jetpack' ),
186
  'id' => 'wcj_product_addons_cart_format_end',
187
  'default' => '</dl>',
188
  'type' => 'textarea',
189
- 'css' => 'width:300px;',
190
  ),
191
  array(
192
  'title' => __( 'Addon in Order Details Table Format', 'woocommerce-jetpack' ),
@@ -194,7 +208,6 @@ $settings = array_merge( $settings, array(
194
  'id' => 'wcj_product_addons_order_details_format_start',
195
  'default' => '',
196
  'type' => 'textarea',
197
- 'css' => 'width:300px;',
198
  ),
199
  array(
200
  'desc' => __( 'Each Addon', 'woocommerce-jetpack' ),
@@ -202,14 +215,12 @@ $settings = array_merge( $settings, array(
202
  'id' => 'wcj_product_addons_order_details_format_each_addon',
203
  'default' => '&nbsp;| %addon_label%: %addon_price%',
204
  'type' => 'textarea',
205
- 'css' => 'width:300px;',
206
  ),
207
  array(
208
  'desc' => __( 'After', 'woocommerce-jetpack' ),
209
  'id' => 'wcj_product_addons_order_details_format_end',
210
  'default' => '',
211
  'type' => 'textarea',
212
- 'css' => 'width:300px;',
213
  ),
214
  array(
215
  'title' => __( 'Admin Order Page', 'woocommerce-jetpack' ),
2
  /**
3
  * Booster for WooCommerce - Settings - Product Addons
4
  *
5
+ * @version 3.3.0
6
  * @since 2.8.0
7
  * @author Algoritmika Ltd.
8
  * @todo add "frontend template" options
9
+ * @todo (maybe) add `woocommerce_payment_complete` to `$qty_triggers` (also maybe add this trigger to "PDF Invoicing" module)
10
  */
11
 
12
  if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
13
 
14
  $products = wcj_get_products();
15
 
16
+ $qty_triggers = array();
17
+ $qty_triggers['woocommerce_new_order'] = __( 'New order', 'woocommerce-jetpack' );
18
+ $order_statuses = wcj_get_order_statuses();
19
+ foreach ( $order_statuses as $status => $desc ) {
20
+ $qty_triggers[ 'woocommerce_order_status_' . $status ] = sprintf( __( 'Order status "%s"', 'woocommerce-jetpack' ), $desc );
21
+ }
22
+
23
  $settings = array();
24
  $settings = array_merge( $settings, array(
25
  array(
60
  'id' => 'wcj_product_addons_all_products_total_number',
61
  'default' => 1,
62
  'type' => 'custom_number',
63
+ 'desc' => apply_filters( 'booster_message', '', 'desc' ),
64
  'custom_attributes' => array_merge(
65
+ is_array( apply_filters( 'booster_message', '', 'readonly' ) ) ? apply_filters( 'booster_message', '', 'readonly' ) : array(),
66
  array( 'step' => '1', 'min' => '0', )
67
  ),
68
  ),
69
  ) );
70
+ $total_number = apply_filters( 'booster_option', 1, get_option( 'wcj_product_addons_all_products_total_number', 1 ) );
71
  for ( $i = 1; $i <= $total_number; $i++ ) {
72
  $settings = array_merge( $settings, array(
73
  array(
82
  'id' => 'wcj_product_addons_all_products_type_' . $i,
83
  'default' => 'checkbox',
84
  'type' => 'select',
 
85
  'options' => array(
86
  'checkbox' => __( 'Checkbox', 'woocommerce-jetpack' ),
87
  'radio' => __( 'Radio Buttons', 'woocommerce-jetpack' ),
94
  'id' => 'wcj_product_addons_all_products_title_' . $i,
95
  'default' => '',
96
  'type' => 'textarea',
 
97
  ),
98
  array(
99
  'desc' => __( 'Label(s)', 'woocommerce-jetpack' ),
101
  'id' => 'wcj_product_addons_all_products_label_' . $i,
102
  'default' => '',
103
  'type' => 'textarea',
 
104
  ),
105
  array(
106
  'desc' => __( 'Price(s)', 'woocommerce-jetpack' ),
108
  'id' => 'wcj_product_addons_all_products_price_' . $i,
109
  'default' => 0,
110
  'type' => 'textarea',
 
111
  'custom_attributes' => array( 'step' => '0.0001' ),
112
  ),
113
  array(
116
  'id' => 'wcj_product_addons_all_products_tooltip_' . $i,
117
  'default' => '',
118
  'type' => 'textarea',
 
119
  ),
120
  array(
121
  'desc' => __( 'Default Value', 'woocommerce-jetpack' ),
123
  'id' => 'wcj_product_addons_all_products_default_' . $i,
124
  'default' => '',
125
  'type' => 'text',
 
126
  ),
127
  array(
128
  'desc' => __( 'Placeholder', 'woocommerce-jetpack' ),
130
  'id' => 'wcj_product_addons_all_products_placeholder_' . $i,
131
  'default' => '',
132
  'type' => 'text',
 
133
  ),
134
  array(
135
  'desc' => __( 'Is Required', 'woocommerce-jetpack' ),
145
  'class' => 'chosen_select',
146
  'options' => $products,
147
  ),
148
+ array(
149
+ 'desc' => __( 'Quantity', 'woocommerce-jetpack' ),
150
+ 'desc_tip' => __( 'Leave empty to disable quantity calculation for the addon. When set to zero - addon will be disabled.', 'woocommerce-jetpack' ),
151
+ 'id' => 'wcj_product_addons_all_products_qty_' . $i,
152
+ 'default' => '',
153
+ 'type' => 'text',
154
+ ),
155
  ) );
156
  }
157
  $settings = array_merge( $settings, array(
173
  'default' => 'no',
174
  'type' => 'checkbox',
175
  ),
176
+ array(
177
+ 'title' => __( 'Decrease Quantity', 'woocommerce-jetpack' ),
178
+ 'desc_tip' => __( 'If you select multiple triggers to decrease quantity, it will be decreased only once (on whichever trigger is executed first).', 'woocommerce-jetpack' ),
179
+ 'id' => 'wcj_product_addons_qty_decrease_triggers',
180
+ 'default' => '',
181
+ 'type' => 'multiselect',
182
+ 'class' => 'chosen_select',
183
+ 'options' => $qty_triggers,
184
+ ),
185
  array(
186
  'title' => __( 'Addon in Cart Format', 'woocommerce-jetpack' ),
187
  'desc' => __( 'Before', 'woocommerce-jetpack' ),
188
  'id' => 'wcj_product_addons_cart_format_start',
189
  'default' => '<dl class="variation">',
190
  'type' => 'textarea',
 
191
  ),
192
  array(
193
  'desc' => __( 'Each Addon', 'woocommerce-jetpack' ),
195
  'id' => 'wcj_product_addons_cart_format_each_addon',
196
  'default' => '<dt>%addon_label%:</dt><dd>%addon_price%</dd>',
197
  'type' => 'textarea',
 
198
  ),
199
  array(
200
  'desc' => __( 'After', 'woocommerce-jetpack' ),
201
  'id' => 'wcj_product_addons_cart_format_end',
202
  'default' => '</dl>',
203
  'type' => 'textarea',
 
204
  ),
205
  array(
206
  'title' => __( 'Addon in Order Details Table Format', 'woocommerce-jetpack' ),
208
  'id' => 'wcj_product_addons_order_details_format_start',
209
  'default' => '',
210
  'type' => 'textarea',
 
211
  ),
212
  array(
213
  'desc' => __( 'Each Addon', 'woocommerce-jetpack' ),
215
  'id' => 'wcj_product_addons_order_details_format_each_addon',
216
  'default' => '&nbsp;| %addon_label%: %addon_price%',
217
  'type' => 'textarea',
 
218
  ),
219
  array(
220
  'desc' => __( 'After', 'woocommerce-jetpack' ),
221
  'id' => 'wcj_product_addons_order_details_format_end',
222
  'default' => '',
223
  'type' => 'textarea',
 
224
  ),
225
  array(
226
  'title' => __( 'Admin Order Page', 'woocommerce-jetpack' ),
includes/settings/wcj-settings-product-bulk-meta-editor.php CHANGED
@@ -25,12 +25,12 @@ return array(
25
  ),
26
  array(
27
  'title' => __( 'Add Variations to Products List', 'woocommerce-jetpack' ),
28
- 'desc_tip' => __( 'When enabled - variations of variable products will be added to the list. If you want to edit only main product\'s meta, disable this option.', 'woocommerce-jetpack' ) . ' ' . apply_filters( 'booster_get_message', '', 'desc' ),
29
  'desc' => __( 'Enable', 'woocommerce-jetpack' ),
30
  'id' => 'wcj_product_bulk_meta_editor_add_variations',
31
  'default' => 'no',
32
  'type' => 'checkbox',
33
- 'custom_attributes' => apply_filters( 'booster_get_message', '', 'disabled' ),
34
  ),
35
  array(
36
  'title' => __( 'Additional Columns', 'woocommerce-jetpack' ),
25
  ),
26
  array(
27
  'title' => __( 'Add Variations to Products List', 'woocommerce-jetpack' ),
28
+ 'desc_tip' => __( 'When enabled - variations of variable products will be added to the list. If you want to edit only main product\'s meta, disable this option.', 'woocommerce-jetpack' ) . ' ' . apply_filters( 'booster_message', '', 'desc' ),
29
  'desc' => __( 'Enable', 'woocommerce-jetpack' ),
30
  'id' => 'wcj_product_bulk_meta_editor_add_variations',
31
  'default' => 'no',
32
  'type' => 'checkbox',
33
+ 'custom_attributes' => apply_filters( 'booster_message', '', 'disabled' ),
34
  ),
35
  array(
36
  'title' => __( 'Additional Columns', 'woocommerce-jetpack' ),
includes/settings/wcj-settings-product-by-country.php CHANGED
@@ -54,7 +54,7 @@ return array(
54
  'desc' => sprintf(
55
  __( 'If "Manually" option is selected, you can add country selection drop box to frontend with "%s" widget or %s shortcode.', 'woocommerce-jetpack' ),
56
  __( 'Booster - Selector', 'woocommerce-jetpack' ),
57
- '<code>' . '[wcj_selector selector_type="country"]' . '</code>' ) . '<br>' . apply_filters( 'booster_get_message', '', 'desc' ),
58
  'id' => 'wcj_product_by_country_selection_method',
59
  'default' => 'by_ip',
60
  'type' => 'select',
@@ -62,7 +62,7 @@ return array(
62
  'by_ip' => __( 'Automatically by IP', 'woocommerce-jetpack' ),
63
  'manual' => __( 'Manually', 'woocommerce-jetpack' ),
64
  ),
65
- 'custom_attributes' => apply_filters( 'booster_get_message', '', 'disabled' ),
66
  'css' => 'min-width:250px;',
67
  ),
68
  array(
@@ -78,7 +78,7 @@ return array(
78
  'title' => __( 'Country List', 'woocommerce-jetpack' ),
79
  'desc_tip' => __( 'This option sets which countries will be added to list in product\'s edit page. Possible values: "All countries" or "WooCommerce selling locations".', 'woocommerce-jetpack' ),
80
  'desc' => sprintf( __( 'If "WooCommerce selling locations" option is selected, country list will be set by <a href="%s">WooCommerce > Settings > General > Selling location(s)</a>.', 'woocommerce-jetpack' ),
81
- admin_url( 'admin.php?page=wc-settings' ) ) . '<br>' . apply_filters( 'booster_get_message', '', 'desc' ),
82
  'id' => 'wcj_product_by_country_country_list',
83
  'default' => 'all',
84
  'type' => 'select',
@@ -86,7 +86,7 @@ return array(
86
  'all' => __( 'All countries', 'woocommerce-jetpack' ),
87
  'wc' => __( 'WooCommerce selling locations', 'woocommerce-jetpack' ),
88
  ),
89
- 'custom_attributes' => apply_filters( 'booster_get_message', '', 'disabled' ),
90
  'css' => 'min-width:250px;',
91
  ),
92
  array(
@@ -100,8 +100,8 @@ return array(
100
  'invisible' => __( 'Set invisible countries', 'woocommerce-jetpack' ),
101
  'both' => __( 'Set both', 'woocommerce-jetpack' ),
102
  ),
103
- 'desc' => '<br>' . apply_filters( 'booster_get_message', '', 'desc' ),
104
- 'custom_attributes' => apply_filters( 'booster_get_message', '', 'disabled' ),
105
  'css' => 'min-width:250px;',
106
  ),
107
  array(
54
  'desc' => sprintf(
55
  __( 'If "Manually" option is selected, you can add country selection drop box to frontend with "%s" widget or %s shortcode.', 'woocommerce-jetpack' ),
56
  __( 'Booster - Selector', 'woocommerce-jetpack' ),
57
+ '<code>' . '[wcj_selector selector_type="country"]' . '</code>' ) . '<br>' . apply_filters( 'booster_message', '', 'desc' ),
58
  'id' => 'wcj_product_by_country_selection_method',
59
  'default' => 'by_ip',
60
  'type' => 'select',
62
  'by_ip' => __( 'Automatically by IP', 'woocommerce-jetpack' ),
63
  'manual' => __( 'Manually', 'woocommerce-jetpack' ),
64
  ),
65
+ 'custom_attributes' => apply_filters( 'booster_message', '', 'disabled' ),
66
  'css' => 'min-width:250px;',
67
  ),
68
  array(
78
  'title' => __( 'Country List', 'woocommerce-jetpack' ),
79
  'desc_tip' => __( 'This option sets which countries will be added to list in product\'s edit page. Possible values: "All countries" or "WooCommerce selling locations".', 'woocommerce-jetpack' ),
80
  'desc' => sprintf( __( 'If "WooCommerce selling locations" option is selected, country list will be set by <a href="%s">WooCommerce > Settings > General > Selling location(s)</a>.', 'woocommerce-jetpack' ),
81
+ admin_url( 'admin.php?page=wc-settings' ) ) . '<br>' . apply_filters( 'booster_message', '', 'desc' ),
82
  'id' => 'wcj_product_by_country_country_list',
83
  'default' => 'all',
84
  'type' => 'select',
86
  'all' => __( 'All countries', 'woocommerce-jetpack' ),
87
  'wc' => __( 'WooCommerce selling locations', 'woocommerce-jetpack' ),
88
  ),
89
+ 'custom_attributes' => apply_filters( 'booster_message', '', 'disabled' ),
90
  'css' => 'min-width:250px;',
91
  ),
92
  array(
100
  'invisible' => __( 'Set invisible countries', 'woocommerce-jetpack' ),
101
  'both' => __( 'Set both', 'woocommerce-jetpack' ),
102
  ),
103
+ 'desc' => '<br>' . apply_filters( 'booster_message', '', 'desc' ),
104
+ 'custom_attributes' => apply_filters( 'booster_message', '', 'disabled' ),
105
  'css' => 'min-width:250px;',
106
  ),
107
  array(
includes/settings/wcj-settings-product-by-date.php CHANGED
@@ -70,24 +70,24 @@ $settings = array_merge( $settings, array(
70
  'desc' => __( 'Message when product is not available by date.', 'woocommerce-jetpack' ) .
71
  ' ' . wcj_message_replaced_values( array( '%product_title%', '%date_this_month%' ) ) . '.' .
72
  ' ' . __( 'You can also use shortcodes here.', 'woocommerce-jetpack' ) .
73
- ' ' . apply_filters( 'booster_get_message', '', 'desc' ),
74
  'id' => 'wcj_product_by_date_unavailable_message',
75
  'default' => __( '<p style="color:red;">%product_title% is available only on %date_this_month% this month.</p>', 'woocommerce-jetpack' ),
76
  'type' => 'custom_textarea',
77
  'css' => 'width:66%;min-width:300px;',
78
- 'custom_attributes' => apply_filters( 'booster_get_message', '', 'readonly' ),
79
  ),
80
  array(
81
  'title' => __( 'Message (Month Off)', 'woocommerce-jetpack' ),
82
  'desc' => __( 'Message when product is not available by date (month off).', 'woocommerce-jetpack' ) .
83
  ' ' . wcj_message_replaced_values( array( '%product_title%' ) ) . '.' .
84
  ' ' . __( 'You can also use shortcodes here.', 'woocommerce-jetpack' ) .
85
- ' ' . apply_filters( 'booster_get_message', '', 'desc' ),
86
  'id' => 'wcj_product_by_date_unavailable_message_month_off',
87
  'default' => __( '<p style="color:red;">%product_title% is not available this month.</p>', 'woocommerce-jetpack' ),
88
  'type' => 'custom_textarea',
89
  'css' => 'width:66%;min-width:300px;',
90
- 'custom_attributes' => apply_filters( 'booster_get_message', '', 'readonly' ),
91
  ),
92
  array(
93
  'type' => 'sectionend',
70
  'desc' => __( 'Message when product is not available by date.', 'woocommerce-jetpack' ) .
71
  ' ' . wcj_message_replaced_values( array( '%product_title%', '%date_this_month%' ) ) . '.' .
72
  ' ' . __( 'You can also use shortcodes here.', 'woocommerce-jetpack' ) .
73
+ ' ' . apply_filters( 'booster_message', '', 'desc' ),
74
  'id' => 'wcj_product_by_date_unavailable_message',
75
  'default' => __( '<p style="color:red;">%product_title% is available only on %date_this_month% this month.</p>', 'woocommerce-jetpack' ),
76
  'type' => 'custom_textarea',
77
  'css' => 'width:66%;min-width:300px;',
78
+ 'custom_attributes' => apply_filters( 'booster_message', '', 'readonly' ),
79
  ),
80
  array(
81
  'title' => __( 'Message (Month Off)', 'woocommerce-jetpack' ),
82
  'desc' => __( 'Message when product is not available by date (month off).', 'woocommerce-jetpack' ) .
83
  ' ' . wcj_message_replaced_values( array( '%product_title%' ) ) . '.' .
84
  ' ' . __( 'You can also use shortcodes here.', 'woocommerce-jetpack' ) .
85
+ ' ' . apply_filters( 'booster_message', '', 'desc' ),
86
  'id' => 'wcj_product_by_date_unavailable_message_month_off',
87
  'default' => __( '<p style="color:red;">%product_title% is not available this month.</p>', 'woocommerce-jetpack' ),
88
  'type' => 'custom_textarea',
89
  'css' => 'width:66%;min-width:300px;',
90
+ 'custom_attributes' => apply_filters( 'booster_message', '', 'readonly' ),
91
  ),
92
  array(
93
  'type' => 'sectionend',
includes/settings/wcj-settings-product-by-time.php CHANGED
@@ -70,24 +70,24 @@ $settings = array_merge( $settings, array(
70
  'desc' => __( 'Message when product is not available by time.', 'woocommerce-jetpack' ) .
71
  ' ' . __( 'Replaceable values:', 'woocommerce-jetpack' ) . ' ' . '<code>%product_title%</code>' . ', ' . '<code>%time_today%</code>' . '.' .
72
  ' ' . __( 'You can also use shortcodes here.', 'woocommerce-jetpack' ) .
73
- ' ' . apply_filters( 'booster_get_message', '', 'desc' ),
74
  'id' => 'wcj_product_by_time_unavailable_message',
75
  'default' => __( '<p style="color:red;">%product_title% is available only at %time_today% today.</p>', 'woocommerce-jetpack' ),
76
  'type' => 'custom_textarea',
77
  'css' => 'width:66%;min-width:300px;',
78
- 'custom_attributes' => apply_filters( 'booster_get_message', '', 'readonly' ),
79
  ),
80
  array(
81
  'title' => __( 'Message (Day Off)', 'woocommerce-jetpack' ),
82
  'desc' => __( 'Message when product is not available by time (day off).', 'woocommerce-jetpack' ) .
83
  ' ' . __( 'Replaceable value:', 'woocommerce-jetpack' ) . ' ' . '<code>%product_title%</code>' . '.' .
84
  ' ' . __( 'You can also use shortcodes here.', 'woocommerce-jetpack' ) .
85
- ' ' . apply_filters( 'booster_get_message', '', 'desc' ),
86
  'id' => 'wcj_product_by_time_unavailable_message_day_off',
87
  'default' => __( '<p style="color:red;">%product_title% is not available today.</p>', 'woocommerce-jetpack' ),
88
  'type' => 'custom_textarea',
89
  'css' => 'width:66%;min-width:300px;',
90
- 'custom_attributes' => apply_filters( 'booster_get_message', '', 'readonly' ),
91
  ),
92
  array(
93
  'type' => 'sectionend',
70
  'desc' => __( 'Message when product is not available by time.', 'woocommerce-jetpack' ) .
71
  ' ' . __( 'Replaceable values:', 'woocommerce-jetpack' ) . ' ' . '<code>%product_title%</code>' . ', ' . '<code>%time_today%</code>' . '.' .
72
  ' ' . __( 'You can also use shortcodes here.', 'woocommerce-jetpack' ) .
73
+ ' ' . apply_filters( 'booster_message', '', 'desc' ),
74
  'id' => 'wcj_product_by_time_unavailable_message',
75
  'default' => __( '<p style="color:red;">%product_title% is available only at %time_today% today.</p>', 'woocommerce-jetpack' ),
76
  'type' => 'custom_textarea',
77
  'css' => 'width:66%;min-width:300px;',
78
+ 'custom_attributes' => apply_filters( 'booster_message', '', 'readonly' ),
79
  ),
80
  array(
81
  'title' => __( 'Message (Day Off)', 'woocommerce-jetpack' ),
82
  'desc' => __( 'Message when product is not available by time (day off).', 'woocommerce-jetpack' ) .
83
  ' ' . __( 'Replaceable value:', 'woocommerce-jetpack' ) . ' ' . '<code>%product_title%</code>' . '.' .
84
  ' ' . __( 'You can also use shortcodes here.', 'woocommerce-jetpack' ) .
85
+ ' ' . apply_filters( 'booster_message', '', 'desc' ),
86
  'id' => 'wcj_product_by_time_unavailable_message_day_off',
87
  'default' => __( '<p style="color:red;">%product_title% is not available today.</p>', 'woocommerce-jetpack' ),
88
  'type' => 'custom_textarea',
89
  'css' => 'width:66%;min-width:300px;',
90
+ 'custom_attributes' => apply_filters( 'booster_message', '', 'readonly' ),
91
  ),
92
  array(
93
  'type' => 'sectionend',
includes/settings/wcj-settings-product-by-user.php CHANGED
@@ -38,8 +38,8 @@ foreach ( $fields as $field_id => $field_desc ) {
38
  'default' => 'no',
39
  'type' => 'checkbox',
40
  'checkboxgroup' => $checkboxgroup,
41
- 'custom_attributes' => ( ( 'image' === $field_id ) ? apply_filters( 'booster_get_message', '', 'disabled' ) : '' ),
42
- 'desc_tip' => ( ( 'image' === $field_id ) ? apply_filters( 'booster_get_message', '', 'desc' ) : '' ),
43
  );
44
  $fields_required_options[] = array(
45
  'title' => ( ( 1 === $i ) ? __( 'Is Required', 'woocommerce-jetpack' ) : '' ),
@@ -48,8 +48,8 @@ foreach ( $fields as $field_id => $field_desc ) {
48
  'default' => 'no',
49
  'type' => 'checkbox',
50
  'checkboxgroup' => $checkboxgroup,
51
- 'custom_attributes' => ( ( 'image' === $field_id ) ? apply_filters( 'booster_get_message', '', 'disabled' ) : '' ),
52
- 'desc_tip' => ( ( 'image' === $field_id ) ? apply_filters( 'booster_get_message', '', 'desc' ) : '' ),
53
  );
54
  }
55
 
@@ -93,7 +93,7 @@ $settings = array_merge(
93
  'simple' => __( 'Simple product', 'woocommerce-jetpack' ),
94
  'external' => __( 'External/Affiliate product', 'woocommerce-jetpack' ),
95
  ),
96
- // 'desc' => apply_filters( 'booster_get_message', '', 'desc_advanced', array( 'option' => __( 'Variable product', 'woocommerce-jetpack' ) ) ),
97
  ),
98
  array(
99
  'title' => __( 'Product Status', 'woocommerce-jetpack' ),
@@ -136,13 +136,13 @@ $settings = array_merge(
136
  'default' => 1,
137
  'type' => 'custom_number',
138
  'desc_tip' => __( 'Press Save changes after you change this number.', 'woocommerce-jetpack' ),
139
- 'desc' => apply_filters( 'booster_get_message', '', 'desc' ),
140
- 'custom_attributes' => is_array( apply_filters( 'booster_get_message', '', 'readonly' ) ) ?
141
- apply_filters( 'booster_get_message', '', 'readonly' ) : array( 'step' => '1', 'min' => '1' ),
142
  ),
143
  )
144
  );
145
- for ( $i = 1; $i <= apply_filters( 'booster_get_option', 1, get_option( 'wcj_product_by_user_custom_taxonomies_total', 1 ) ); $i++ ) {
146
  $settings = array_merge( $settings, array(
147
  array(
148
  'title' => __( 'Custom Taxonomy', 'woocommerce-jetpack' ) . ' #' . $i,
38
  'default' => 'no',
39
  'type' => 'checkbox',
40
  'checkboxgroup' => $checkboxgroup,
41
+ 'custom_attributes' => ( ( 'image' === $field_id ) ? apply_filters( 'booster_message', '', 'disabled' ) : '' ),
42
+ 'desc_tip' => ( ( 'image' === $field_id ) ? apply_filters( 'booster_message', '', 'desc' ) : '' ),
43
  );
44
  $fields_required_options[] = array(
45
  'title' => ( ( 1 === $i ) ? __( 'Is Required', 'woocommerce-jetpack' ) : '' ),
48
  'default' => 'no',
49
  'type' => 'checkbox',
50
  'checkboxgroup' => $checkboxgroup,
51
+ 'custom_attributes' => ( ( 'image' === $field_id ) ? apply_filters( 'booster_message', '', 'disabled' ) : '' ),
52
+ 'desc_tip' => ( ( 'image' === $field_id ) ? apply_filters( 'booster_message', '', 'desc' ) : '' ),
53
  );
54
  }
55
 
93
  'simple' => __( 'Simple product', 'woocommerce-jetpack' ),
94
  'external' => __( 'External/Affiliate product', 'woocommerce-jetpack' ),
95
  ),
96
+ // 'desc' => apply_filters( 'booster_message', '', 'desc_advanced', array( 'option' => __( 'Variable product', 'woocommerce-jetpack' ) ) ),
97
  ),
98
  array(
99
  'title' => __( 'Product Status', 'woocommerce-jetpack' ),
136
  'default' => 1,
137
  'type' => 'custom_number',
138
  'desc_tip' => __( 'Press Save changes after you change this number.', 'woocommerce-jetpack' ),
139
+ 'desc' => apply_filters( 'booster_message', '', 'desc' ),
140
+ 'custom_attributes' => is_array( apply_filters( 'booster_message', '', 'readonly' ) ) ?
141
+ apply_filters( 'booster_message', '', 'readonly' ) : array( 'step' => '1', 'min' => '1' ),
142
  ),
143
  )
144
  );
145
+ for ( $i = 1; $i <= apply_filters( 'booster_option', 1, get_option( 'wcj_product_by_user_custom_taxonomies_total', 1 ) ); $i++ ) {
146
  $settings = array_merge( $settings, array(
147
  array(
148
  'title' => __( 'Custom Taxonomy', 'woocommerce-jetpack' ) . ' #' . $i,
includes/settings/wcj-settings-product-custom-info.php CHANGED
@@ -52,15 +52,15 @@ foreach ( $single_or_archive_array as $single_or_archive ) {
52
  'id' => 'wcj_product_custom_info_total_number_' . $single_or_archive,
53
  'default' => 1,
54
  'type' => 'custom_number',
55
- 'desc' => apply_filters( 'booster_get_message', '', 'desc' ),
56
- 'custom_attributes' => apply_filters( 'booster_get_message', '', 'readonly' ),
57
  ),
58
  array(
59
  'type' => 'sectionend',
60
  'id' => 'wcj_product_custom_info_options_' . $single_or_archive,
61
  ),
62
  ) );
63
- for ( $i = 1; $i <= apply_filters( 'booster_get_option', 1, get_option( 'wcj_product_custom_info_total_number_' . $single_or_archive, 1 ) ); $i++ ) {
64
 
65
  wcj_maybe_convert_and_update_option_value( array(
66
  array( 'id' => 'wcj_product_custom_info_products_to_include_' . $single_or_archive . '_' . $i, 'default' => '' ),
52
  'id' => 'wcj_product_custom_info_total_number_' . $single_or_archive,
53
  'default' => 1,
54
  'type' => 'custom_number',
55
+ 'desc' => apply_filters( 'booster_message', '', 'desc' ),
56
+ 'custom_attributes' => apply_filters( 'booster_message', '', 'readonly' ),
57
  ),
58
  array(
59
  'type' => 'sectionend',
60
  'id' => 'wcj_product_custom_info_options_' . $single_or_archive,
61
  ),
62
  ) );
63
+ for ( $i = 1; $i <= apply_filters( 'booster_option', 1, get_option( 'wcj_product_custom_info_total_number_' . $single_or_archive, 1 ) ); $i++ ) {
64
 
65
  wcj_maybe_convert_and_update_option_value( array(
66
  array( 'id' => 'wcj_product_custom_info_products_to_include_' . $single_or_archive . '_' . $i, 'default' => '' ),
includes/settings/wcj-settings-product-input-fields.php CHANGED
@@ -31,9 +31,9 @@ $settings = array(
31
  'desc_tip' => __( 'You will be able to change this number later as well as define the fields, for each product individually, in product\'s "Edit".', 'woocommerce-jetpack' ),
32
  'default' => 1,
33
  'type' => 'number',
34
- 'desc' => apply_filters( 'booster_get_message', '', 'desc' ),
35
  'custom_attributes' => array_merge(
36
- is_array( apply_filters( 'booster_get_message', '', 'readonly' ) ) ? apply_filters( 'booster_get_message', '', 'readonly' ) : array(),
37
  array( 'step' => '1', 'min' => '1' )
38
  ),
39
  ),
@@ -61,9 +61,9 @@ $settings = array(
61
  'id' => 'wcj_product_input_fields_global_total_number',
62
  'default' => 1,
63
  'type' => 'custom_number',
64
- 'desc' => apply_filters( 'booster_get_message', '', 'desc' ),
65
  'custom_attributes' => array_merge(
66
- is_array( apply_filters( 'booster_get_message', '', 'readonly' ) ) ? apply_filters( 'booster_get_message', '', 'readonly' ) : array(),
67
  array( 'step' => '1', 'min' => '1' )
68
  ),
69
  ),
@@ -77,7 +77,7 @@ $products = ( $is_multiselect_products ? wcj_get_products() :
77
  $product_cats = wcj_get_terms( 'product_cat' );
78
  $product_tags = wcj_get_terms( 'product_tag' );
79
  $options = $this->get_global_product_fields_options();
80
- for ( $i = 1; $i <= apply_filters( 'booster_get_option', 1, get_option( 'wcj_product_input_fields_global_total_number', 1 ) ); $i++ ) {
81
  $settings = array_merge( $settings, array(
82
  array(
83
  'title' => __( 'Product Input Field', 'woocommerce-jetpack' ) . ' #' . $i,
31
  'desc_tip' => __( 'You will be able to change this number later as well as define the fields, for each product individually, in product\'s "Edit".', 'woocommerce-jetpack' ),
32
  'default' => 1,
33
  'type' => 'number',
34
+ 'desc' => apply_filters( 'booster_message', '', 'desc' ),
35
  'custom_attributes' => array_merge(
36
+ is_array( apply_filters( 'booster_message', '', 'readonly' ) ) ? apply_filters( 'booster_message', '', 'readonly' ) : array(),
37
  array( 'step' => '1', 'min' => '1' )
38
  ),
39
  ),
61
  'id' => 'wcj_product_input_fields_global_total_number',
62
  'default' => 1,
63
  'type' => 'custom_number',
64
+ 'desc' => apply_filters( 'booster_message', '', 'desc' ),
65
  'custom_attributes' => array_merge(
66
+ is_array( apply_filters( 'booster_message', '', 'readonly' ) ) ? apply_filters( 'booster_message', '', 'readonly' ) : array(),
67
  array( 'step' => '1', 'min' => '1' )
68
  ),
69
  ),
77
  $product_cats = wcj_get_terms( 'product_cat' );
78
  $product_tags = wcj_get_terms( 'product_tag' );
79
  $options = $this->get_global_product_fields_options();
80
+ for ( $i = 1; $i <= apply_filters( 'booster_option', 1, get_option( 'wcj_product_input_fields_global_total_number', 1 ) ); $i++ ) {
81
  $settings = array_merge( $settings, array(
82
  array(
83
  'title' => __( 'Product Input Field', 'woocommerce-jetpack' ) . ' #' . $i,
includes/settings/wcj-settings-product-listings.php CHANGED
@@ -86,8 +86,8 @@ return array(
86
  'id' => 'wcj_product_listings_hide_cats_count_on_archive',
87
  'default' => 'no',
88
  'type' => 'checkbox',
89
- 'custom_attributes' => apply_filters( 'booster_get_message', '', 'disabled' ),
90
- 'desc_tip' => apply_filters( 'booster_get_message', '', 'desc' ),
91
  ),
92
  array(
93
  'title' => __( 'Exclude Subcategories', 'woocommerce-jetpack' ),
86
  'id' => 'wcj_product_listings_hide_cats_count_on_archive',
87
  'default' => 'no',
88
  'type' => 'checkbox',
89
+ 'custom_attributes' => apply_filters( 'booster_message', '', 'disabled' ),
90
+ 'desc_tip' => apply_filters( 'booster_message', '', 'desc' ),
91
  ),
92
  array(
93
  'title' => __( 'Exclude Subcategories', 'woocommerce-jetpack' ),
includes/settings/wcj-settings-product-open-pricing.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Settings - Product Open Pricing
4
  *
5
- * @version 2.9.0
6
  * @since 2.8.0
7
  * @author Algoritmika Ltd.
8
  * @todo set default for "wcj_product_open_price_enable_js_validation" to "yes"
@@ -22,7 +22,7 @@ return array(
22
  'id' => 'wcj_product_open_price_label_frontend',
23
  'default' => __( 'Name Your Price', 'woocommerce-jetpack' ),
24
  'type' => 'text',
25
- 'css' => 'width:250px;',
26
  ),
27
  array(
28
  'title' => __( 'Frontend Template', 'woocommerce-jetpack' ),
@@ -31,21 +31,21 @@ return array(
31
  'id' => 'wcj_product_open_price_frontend_template',
32
  'default' => '<label for="wcj_open_price">%frontend_label%</label> %open_price_input% %currency_symbol%',
33
  'type' => 'textarea',
34
- 'css' => 'min-width:300px;width:50%;',
35
  ),
36
  array(
37
  'title' => __( 'Frontend Input Style', 'woocommerce-jetpack' ),
38
  'id' => 'wcj_product_open_price_input_style',
39
  'default' => 'width:75px;text-align:center;',
40
  'type' => 'text',
41
- 'css' => 'width:250px;',
42
  ),
43
  array(
44
  'title' => __( 'Frontend Input Placeholder', 'woocommerce-jetpack' ),
45
  'id' => 'wcj_product_open_price_input_placeholder',
46
  'default' => '',
47
  'type' => 'text',
48
- 'css' => 'width:250px;',
49
  ),
50
  array(
51
  'title' => __( 'Frontend Input Price Step', 'woocommerce-jetpack' ),
@@ -59,21 +59,21 @@ return array(
59
  'id' => 'wcj_product_open_price_messages_required',
60
  'default' => __( 'Price is required!', 'woocommerce-jetpack' ),
61
  'type' => 'text',
62
- 'css' => 'width:250px;',
63
  ),
64
  array(
65
  'title' => __( 'Message on Price too Small', 'woocommerce-jetpack' ),
66
  'id' => 'wcj_product_open_price_messages_to_small',
67
  'default' => __( 'Entered price is too small!', 'woocommerce-jetpack' ),
68
  'type' => 'text',
69
- 'css' => 'width:250px;',
70
  ),
71
  array(
72
  'title' => __( 'Message on Price too Big', 'woocommerce-jetpack' ),
73
  'id' => 'wcj_product_open_price_messages_to_big',
74
  'default' => __( 'Entered price is too big!', 'woocommerce-jetpack' ),
75
  'type' => 'text',
76
- 'css' => 'width:250px;',
77
  ),
78
  array(
79
  'title' => __( 'Disable Quantity Input', 'woocommerce-jetpack' ),
@@ -101,11 +101,11 @@ return array(
101
  'id' => 'wcj_product_open_price_loop_price_info_template',
102
  'default' => '<span class="price">%default_price%</span>',
103
  'type' => 'custom_textarea',
104
- 'css' => 'min-width:300px;width:50%;',
105
  ),
106
  array(
107
  'title' => __( 'Add "Open Pricing" Column to Admin Product List', 'woocommerce-jetpack' ),
108
- 'desc' => __( 'Enable', 'woocommerce-jetpack' ),
109
  'id' => 'wcj_product_open_price_enable_admin_product_list_column',
110
  'default' => 'no',
111
  'type' => 'checkbox',
2
  /**
3
  * Booster for WooCommerce - Settings - Product Open Pricing
4
  *
5
+ * @version 3.3.0
6
  * @since 2.8.0
7
  * @author Algoritmika Ltd.
8
  * @todo set default for "wcj_product_open_price_enable_js_validation" to "yes"
22
  'id' => 'wcj_product_open_price_label_frontend',
23
  'default' => __( 'Name Your Price', 'woocommerce-jetpack' ),
24
  'type' => 'text',
25
+ 'css' => 'width:100%;',
26
  ),
27
  array(
28
  'title' => __( 'Frontend Template', 'woocommerce-jetpack' ),
31
  'id' => 'wcj_product_open_price_frontend_template',
32
  'default' => '<label for="wcj_open_price">%frontend_label%</label> %open_price_input% %currency_symbol%',
33
  'type' => 'textarea',
34
+ 'css' => 'width:100%;',
35
  ),
36
  array(
37
  'title' => __( 'Frontend Input Style', 'woocommerce-jetpack' ),
38
  'id' => 'wcj_product_open_price_input_style',
39
  'default' => 'width:75px;text-align:center;',
40
  'type' => 'text',
41
+ 'css' => 'width:100%;',
42
  ),
43
  array(
44
  'title' => __( 'Frontend Input Placeholder', 'woocommerce-jetpack' ),
45
  'id' => 'wcj_product_open_price_input_placeholder',
46
  'default' => '',
47
  'type' => 'text',
48
+ 'css' => 'width:100%;',
49
  ),
50
  array(
51
  'title' => __( 'Frontend Input Price Step', 'woocommerce-jetpack' ),
59
  'id' => 'wcj_product_open_price_messages_required',
60
  'default' => __( 'Price is required!', 'woocommerce-jetpack' ),
61
  'type' => 'text',
62
+ 'css' => 'width:100%;',
63
  ),
64
  array(
65
  'title' => __( 'Message on Price too Small', 'woocommerce-jetpack' ),
66
  'id' => 'wcj_product_open_price_messages_to_small',
67
  'default' => __( 'Entered price is too small!', 'woocommerce-jetpack' ),
68
  'type' => 'text',
69
+ 'css' => 'width:100%;',
70
  ),
71
  array(
72
  'title' => __( 'Message on Price too Big', 'woocommerce-jetpack' ),
73
  'id' => 'wcj_product_open_price_messages_to_big',
74
  'default' => __( 'Entered price is too big!', 'woocommerce-jetpack' ),
75
  'type' => 'text',
76
+ 'css' => 'width:100%;',
77
  ),
78
  array(
79
  'title' => __( 'Disable Quantity Input', 'woocommerce-jetpack' ),
101
  'id' => 'wcj_product_open_price_loop_price_info_template',
102
  'default' => '<span class="price">%default_price%</span>',
103
  'type' => 'custom_textarea',
104
+ 'css' => 'width:100%;',
105
  ),
106
  array(
107
  'title' => __( 'Add "Open Pricing" Column to Admin Product List', 'woocommerce-jetpack' ),
108
+ 'desc' => __( 'Add', 'woocommerce-jetpack' ),
109
  'id' => 'wcj_product_open_price_enable_admin_product_list_column',
110
  'default' => 'no',
111
  'type' => 'checkbox',
includes/settings/wcj-settings-product-price-by-formula.php CHANGED
@@ -31,8 +31,8 @@ $settings = array(
31
  'type' => 'checkbox',
32
  'id' => 'wcj_product_price_by_formula_enable_for_all_products',
33
  'default' => 'no',
34
- 'desc_tip' => apply_filters( 'booster_get_message', '', 'desc_no_link' ),
35
- 'custom_attributes' => apply_filters( 'booster_get_message', '', 'disabled' ),
36
  ),
37
  array(
38
  'title' => __( 'Total Params', 'woocommerce-jetpack' ),
31
  'type' => 'checkbox',
32
  'id' => 'wcj_product_price_by_formula_enable_for_all_products',
33
  'default' => 'no',
34
+ 'desc_tip' => apply_filters( 'booster_message', '', 'desc_no_link' ),
35
+ 'custom_attributes' => apply_filters( 'booster_message', '', 'disabled' ),
36
  ),
37
  array(
38
  'title' => __( 'Total Params', 'woocommerce-jetpack' ),
includes/settings/wcj-settings-product-tabs.php CHANGED
@@ -31,9 +31,9 @@ $settings = array(
31
  'id' => 'wcj_custom_product_tabs_global_total_number',
32
  'default' => 1,
33
  'type' => 'number',
34
- 'desc' => apply_filters( 'booster_get_message', '', 'desc' ),
35
  'custom_attributes' => array_merge(
36
- is_array( apply_filters( 'booster_get_message', '', 'readonly' ) ) ? apply_filters( 'booster_get_message', '', 'readonly' ) : array(),
37
  array(
38
  'step' => '1',
39
  'min' => '0',
@@ -44,7 +44,7 @@ $settings = array(
44
  $product_tags_options = wcj_get_terms( 'product_tag' );
45
  $product_cats_options = wcj_get_terms( 'product_cat' );
46
  $products_options = wcj_get_products();
47
- for ( $i = 1; $i <= apply_filters( 'booster_get_option', 1, get_option( 'wcj_custom_product_tabs_global_total_number', 1 ) ); $i++ ) {
48
  $settings = array_merge( $settings,
49
  array(
50
  array(
@@ -234,9 +234,9 @@ $settings = array_merge( $settings, array(
234
  'id' => 'wcj_custom_product_tabs_local_total_number_default',
235
  'default' => 1,
236
  'type' => 'number',
237
- 'desc' => apply_filters( 'booster_get_message', '', 'desc' ),
238
  'custom_attributes' => array_merge(
239
- is_array( apply_filters( 'booster_get_message', '', 'readonly' ) ) ? apply_filters( 'booster_get_message', '', 'readonly' ) : array(),
240
  array(
241
  'step' => '1',
242
  'min' => '0',
@@ -244,7 +244,7 @@ $settings = array_merge( $settings, array(
244
  ),
245
  ),
246
  ) );
247
- for ( $i = 1; $i <= apply_filters( 'booster_get_option', 1, get_option( 'wcj_custom_product_tabs_local_total_number_default', 1 ) ); $i++ ) {
248
  $settings = array_merge( $settings, array(
249
  array(
250
  'title' => __( 'Custom Product Tab', 'woocommerce-jetpack' ) . ' #' . $i,
@@ -375,8 +375,8 @@ $settings = array_merge( $settings, array(
375
  'id' => 'wcj_product_info_product_tabs_description_priority',
376
  'default' => 10,
377
  'type' => 'number',
378
- 'desc' => __( 'Priority (i.e. Order)', 'woocommerce-jetpack' ) . ' ' . apply_filters( 'booster_get_message', '', 'desc' ),
379
- 'custom_attributes' => apply_filters( 'booster_get_message', '', 'readonly' ),
380
  ),
381
  array(
382
  'title' => __( 'Additional Information Tab', 'woocommerce-jetpack' ),
@@ -396,8 +396,8 @@ $settings = array_merge( $settings, array(
396
  'id' => 'wcj_product_info_product_tabs_additional_information_priority',
397
  'default' => 20,
398
  'type' => 'number',
399
- 'desc' => __( 'Priority (i.e. Order)', 'woocommerce-jetpack' ) . ' ' . apply_filters( 'booster_get_message', '', 'desc' ),
400
- 'custom_attributes' => apply_filters( 'booster_get_message', '', 'readonly' ),
401
  ),
402
  array(
403
  'title' => __( 'Reviews Tab', 'woocommerce-jetpack' ),
@@ -417,8 +417,8 @@ $settings = array_merge( $settings, array(
417
  'id' => 'wcj_product_info_product_tabs_reviews_priority',
418
  'default' => 30,
419
  'type' => 'number',
420
- 'desc' => __( 'Priority (i.e. Order)', 'woocommerce-jetpack' ) . ' ' . apply_filters( 'booster_get_message', '', 'desc' ),
421
- 'custom_attributes' => apply_filters( 'booster_get_message', '', 'readonly' ),
422
  ),
423
  array(
424
  'type' => 'sectionend',
31
  'id' => 'wcj_custom_product_tabs_global_total_number',
32
  'default' => 1,
33
  'type' => 'number',
34
+ 'desc' => apply_filters( 'booster_message', '', 'desc' ),
35
  'custom_attributes' => array_merge(
36
+ is_array( apply_filters( 'booster_message', '', 'readonly' ) ) ? apply_filters( 'booster_message', '', 'readonly' ) : array(),
37
  array(
38
  'step' => '1',
39
  'min' => '0',
44
  $product_tags_options = wcj_get_terms( 'product_tag' );
45
  $product_cats_options = wcj_get_terms( 'product_cat' );
46
  $products_options = wcj_get_products();
47
+ for ( $i = 1; $i <= apply_filters( 'booster_option', 1, get_option( 'wcj_custom_product_tabs_global_total_number', 1 ) ); $i++ ) {
48
  $settings = array_merge( $settings,
49
  array(
50
  array(
234
  'id' => 'wcj_custom_product_tabs_local_total_number_default',
235
  'default' => 1,
236
  'type' => 'number',
237
+ 'desc' => apply_filters( 'booster_message', '', 'desc' ),
238
  'custom_attributes' => array_merge(
239
+ is_array( apply_filters( 'booster_message', '', 'readonly' ) ) ? apply_filters( 'booster_message', '', 'readonly' ) : array(),
240
  array(
241
  'step' => '1',
242
  'min' => '0',
244
  ),
245
  ),
246
  ) );
247
+ for ( $i = 1; $i <= apply_filters( 'booster_option', 1, get_option( 'wcj_custom_product_tabs_local_total_number_default', 1 ) ); $i++ ) {
248
  $settings = array_merge( $settings, array(
249
  array(
250
  'title' => __( 'Custom Product Tab', 'woocommerce-jetpack' ) . ' #' . $i,
375
  'id' => 'wcj_product_info_product_tabs_description_priority',
376
  'default' => 10,
377
  'type' => 'number',
378
+ 'desc' => __( 'Priority (i.e. Order)', 'woocommerce-jetpack' ) . ' ' . apply_filters( 'booster_message', '', 'desc' ),
379
+ 'custom_attributes' => apply_filters( 'booster_message', '', 'readonly' ),
380
  ),
381
  array(
382
  'title' => __( 'Additional Information Tab', 'woocommerce-jetpack' ),
396
  'id' => 'wcj_product_info_product_tabs_additional_information_priority',
397
  'default' => 20,
398
  'type' => 'number',
399
+ 'desc' => __( 'Priority (i.e. Order)', 'woocommerce-jetpack' ) . ' ' . apply_filters( 'booster_message', '', 'desc' ),
400
+ 'custom_attributes' => apply_filters( 'booster_message', '', 'readonly' ),
401
  ),
402
  array(
403
  'title' => __( 'Reviews Tab', 'woocommerce-jetpack' ),
417
  'id' => 'wcj_product_info_product_tabs_reviews_priority',
418
  'default' => 30,
419
  'type' => 'number',
420
+ 'desc' => __( 'Priority (i.e. Order)', 'woocommerce-jetpack' ) . ' ' . apply_filters( 'booster_message', '', 'desc' ),
421
+ 'custom_attributes' => apply_filters( 'booster_message', '', 'readonly' ),
422
  ),
423
  array(
424
  'type' => 'sectionend',
includes/settings/wcj-settings-products-per-page.php CHANGED
@@ -22,8 +22,8 @@ return array(
22
  'default' => '10|10' . PHP_EOL . '25|25' . PHP_EOL . '50|50' . PHP_EOL . '100|100' . PHP_EOL . 'All|-1',
23
  'type' => 'textarea',
24
  'css' => 'height:200px;',
25
- 'custom_attributes' => apply_filters( 'booster_get_message', '', 'readonly' ),
26
- 'desc_tip' => apply_filters( 'booster_get_message', '', 'desc_no_link' ),
27
  ),
28
  array(
29
  'title' => __( 'Default', 'woocommerce-jetpack' ),
22
  'default' => '10|10' . PHP_EOL . '25|25' . PHP_EOL . '50|50' . PHP_EOL . '100|100' . PHP_EOL . 'All|-1',
23
  'type' => 'textarea',
24
  'css' => 'height:200px;',
25
+ 'custom_attributes' => apply_filters( 'booster_message', '', 'readonly' ),
26
+ 'desc_tip' => apply_filters( 'booster_message', '', 'desc_no_link' ),
27
  ),
28
  array(
29
  'title' => __( 'Default', 'woocommerce-jetpack' ),
includes/settings/wcj-settings-products-xml.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Settings - Products XML
4
  *
5
- * @version 3.2.4
6
  * @since 2.8.0
7
  * @author Algoritmika Ltd.
8
  */
@@ -25,9 +25,9 @@ $settings = array(
25
  'default' => 1,
26
  'type' => 'custom_number',
27
  'desc_tip' => __( 'Press Save changes after you change this number.', 'woocommerce-jetpack' ),
28
- 'desc' => apply_filters( 'booster_get_message', '', 'desc' ),
29
- 'custom_attributes' => is_array( apply_filters( 'booster_get_message', '', 'readonly' ) ) ?
30
- apply_filters( 'booster_get_message', '', 'readonly' ) : array( 'step' => '1', 'min' => '1', ),
31
  ),
32
  array(
33
  'title' => __( 'Advanced: Block Size', 'woocommerce-jetpack' ),
@@ -42,26 +42,22 @@ $settings = array(
42
  'id' => 'wcj_products_xml_options',
43
  ),
44
  );
45
- for ( $i = 1; $i <= apply_filters( 'booster_get_option', 1, get_option( 'wcj_products_xml_total_files', 1 ) ); $i++ ) {
46
  wcj_maybe_convert_and_update_option_value( array(
47
  array( 'id' => 'wcj_products_xml_products_incl_' . $i, 'default' => '' ),
48
  array( 'id' => 'wcj_products_xml_products_excl_' . $i, 'default' => '' ),
49
  ), $is_multiselect_products );
50
  $products_xml_cron_desc = '';
51
  if ( $this->is_enabled() ) {
52
- if ( '' != get_option( 'wcj_create_products_xml_cron_time_' . $i, '' ) ) {
53
- $scheduled_time_diff = get_option( 'wcj_create_products_xml_cron_time_' . $i, '' ) - time();
54
- if ( $scheduled_time_diff > 0 ) {
55
- $products_xml_cron_desc = '<em>' . sprintf( __( '%s seconds till next update.', 'woocommerce-jetpack' ), $scheduled_time_diff ) . '</em>';
56
- }
57
- }
58
- $products_xml_cron_desc .= '<br><a href="' . add_query_arg( 'wcj_create_products_xml', $i ) . '">' . __( 'Create Now', 'woocommerce-jetpack' ) . '</a>';
59
  }
60
  $products_time_file_created_desc = '';
61
  if ( '' != get_option( 'wcj_products_time_file_created_' . $i, '' ) ) {
62
  $products_time_file_created_desc = sprintf(
63
  __( 'Recent file was created on %s', 'woocommerce-jetpack' ),
64
- date_i18n( get_option( 'date_format' ) . ' ' . get_option( 'time_format' ), get_option( 'wcj_products_time_file_created_' . $i, '' ) )
65
  );
66
  }
67
  $default_file_name = ( ( 1 == $i ) ? 'products.xml' : 'products_' . $i . '.xml' );
@@ -81,7 +77,7 @@ for ( $i = 1; $i <= apply_filters( 'booster_get_option', 1, get_option( 'wcj_pro
81
  ),
82
  array(
83
  'title' => __( 'XML Header', 'woocommerce-jetpack' ),
84
- 'desc' => __( 'You can use shortcodes here. For example [wcj_current_datetime].', 'woocommerce-jetpack' ),
85
  'id' => 'wcj_products_xml_header_' . $i,
86
  'default' => '<?xml version = "1.0" encoding = "utf-8" ?>' . PHP_EOL . '<root>' . PHP_EOL,
87
  'type' => 'custom_textarea',
@@ -136,8 +132,8 @@ for ( $i = 1; $i <= apply_filters( 'booster_get_option', 1, get_option( 'wcj_pro
136
  'daily' => __( 'Update Daily', 'woocommerce-jetpack' ),
137
  'weekly' => __( 'Update Weekly', 'woocommerce-jetpack' ),
138
  ),
139
- 'desc_tip' => __( 'Possible update periods are: every minute, hourly, twice daily, daily and weekly.', 'woocommerce-jetpack' ) . ' ' . apply_filters( 'booster_get_message', '', 'desc_no_link' ),
140
- 'custom_attributes' => apply_filters( 'booster_get_message', '', 'disabled' ),
141
  ),
142
  wcj_get_settings_as_multiselect_or_text(
143
  array(
2
  /**
3
  * Booster for WooCommerce - Settings - Products XML
4
  *
5
+ * @version 3.3.0
6
  * @since 2.8.0
7
  * @author Algoritmika Ltd.
8
  */
25
  'default' => 1,
26
  'type' => 'custom_number',
27
  'desc_tip' => __( 'Press Save changes after you change this number.', 'woocommerce-jetpack' ),
28
+ 'desc' => apply_filters( 'booster_message', '', 'desc' ),
29
+ 'custom_attributes' => is_array( apply_filters( 'booster_message', '', 'readonly' ) ) ?
30
+ apply_filters( 'booster_message', '', 'readonly' ) : array( 'step' => '1', 'min' => '1', ),
31
  ),
32
  array(
33
  'title' => __( 'Advanced: Block Size', 'woocommerce-jetpack' ),
42
  'id' => 'wcj_products_xml_options',
43
  ),
44
  );
45
+ for ( $i = 1; $i <= apply_filters( 'booster_option', 1, get_option( 'wcj_products_xml_total_files', 1 ) ); $i++ ) {
46
  wcj_maybe_convert_and_update_option_value( array(
47
  array( 'id' => 'wcj_products_xml_products_incl_' . $i, 'default' => '' ),
48
  array( 'id' => 'wcj_products_xml_products_excl_' . $i, 'default' => '' ),
49
  ), $is_multiselect_products );
50
  $products_xml_cron_desc = '';
51
  if ( $this->is_enabled() ) {
52
+ $products_xml_cron_desc = '<a class="button" title="' . __( 'If you\'ve made any changes in module\'s settings - don\'t forget to save changes before clicking this button.', 'woocommerce-jetpack' ) . '"' .
53
+ ' href="' . add_query_arg( 'wcj_create_products_xml', $i, remove_query_arg( 'wcj_create_products_xml_result' ) ) . '">' . __( 'Create Now', 'woocommerce-jetpack' ) . '</a>' .
54
+ wcj_crons_get_next_event_time_message( 'wcj_create_products_xml_cron_time_' . $i );
 
 
 
 
55
  }
56
  $products_time_file_created_desc = '';
57
  if ( '' != get_option( 'wcj_products_time_file_created_' . $i, '' ) ) {
58
  $products_time_file_created_desc = sprintf(
59
  __( 'Recent file was created on %s', 'woocommerce-jetpack' ),
60
+ '<code>' . date_i18n( get_option( 'date_format' ) . ' ' . get_option( 'time_format' ), get_option( 'wcj_products_time_file_created_' . $i, '' ) ) . '</code>'
61
  );
62
  }
63
  $default_file_name = ( ( 1 == $i ) ? 'products.xml' : 'products_' . $i . '.xml' );
77
  ),
78
  array(
79
  'title' => __( 'XML Header', 'woocommerce-jetpack' ),
80
+ 'desc' => sprintf( __( 'You can use shortcodes here. For example %s.', 'woocommerce-jetpack' ), '<code>[wcj_current_datetime]</code>' ),
81
  'id' => 'wcj_products_xml_header_' . $i,
82
  'default' => '<?xml version = "1.0" encoding = "utf-8" ?>' . PHP_EOL . '<root>' . PHP_EOL,
83
  'type' => 'custom_textarea',
132
  'daily' => __( 'Update Daily', 'woocommerce-jetpack' ),
133
  'weekly' => __( 'Update Weekly', 'woocommerce-jetpack' ),
134
  ),
135
+ 'desc_tip' => __( 'Possible update periods are: every minute, hourly, twice daily, daily and weekly.', 'woocommerce-jetpack' ) . ' ' . apply_filters( 'booster_message', '', 'desc_no_link' ),
136
+ 'custom_attributes' => apply_filters( 'booster_message', '', 'disabled' ),
137
  ),
138
  wcj_get_settings_as_multiselect_or_text(
139
  array(
includes/settings/wcj-settings-purchase-data.php CHANGED
@@ -53,11 +53,11 @@ $settings = array(
53
  'id' => 'wcj_purchase_data_custom_price_fields_total_number',
54
  'default' => 1,
55
  'type' => 'custom_number',
56
- 'desc' => apply_filters( 'booster_get_message', '', 'desc' ),
57
- 'custom_attributes' => apply_filters( 'booster_get_message', '', 'readonly' ),
58
  ),
59
  );
60
- $total_number = apply_filters( 'booster_get_option', 1, get_option( 'wcj_purchase_data_custom_price_fields_total_number', 1 ) );
61
  for ( $i = 1; $i <= $total_number; $i++ ) {
62
  $settings = array_merge( $settings, array(
63
  array(
@@ -135,8 +135,8 @@ $settings = array_merge( $settings, array(
135
  'id' => 'wcj_purchase_data_custom_products_columns_profit',
136
  'default' => 'no',
137
  'type' => 'checkbox',
138
- 'desc_tip' => apply_filters( 'booster_get_message', '', 'desc' ),
139
- 'custom_attributes' => apply_filters( 'booster_get_message', '', 'disabled' ),
140
  ),
141
  array(
142
  'title' => __( 'Purchase Cost', 'woocommerce-jetpack' ),
@@ -144,8 +144,8 @@ $settings = array_merge( $settings, array(
144
  'id' => 'wcj_purchase_data_custom_products_columns_purchase_cost',
145
  'default' => 'no',
146
  'type' => 'checkbox',
147
- 'desc_tip' => apply_filters( 'booster_get_message', '', 'desc' ),
148
- 'custom_attributes' => apply_filters( 'booster_get_message', '', 'disabled' ),
149
  ),
150
  array(
151
  'type' => 'sectionend',
53
  'id' => 'wcj_purchase_data_custom_price_fields_total_number',
54
  'default' => 1,
55
  'type' => 'custom_number',
56
+ 'desc' => apply_filters( 'booster_message', '', 'desc' ),
57
+ 'custom_attributes' => apply_filters( 'booster_message', '', 'readonly' ),
58
  ),
59
  );
60
+ $total_number = apply_filters( 'booster_option', 1, get_option( 'wcj_purchase_data_custom_price_fields_total_number', 1 ) );
61
  for ( $i = 1; $i <= $total_number; $i++ ) {
62
  $settings = array_merge( $settings, array(
63
  array(
135
  'id' => 'wcj_purchase_data_custom_products_columns_profit',
136
  'default' => 'no',
137
  'type' => 'checkbox',
138
+ 'desc_tip' => apply_filters( 'booster_message', '', 'desc' ),
139
+ 'custom_attributes' => apply_filters( 'booster_message', '', 'disabled' ),
140
  ),
141
  array(
142
  'title' => __( 'Purchase Cost', 'woocommerce-jetpack' ),
144
  'id' => 'wcj_purchase_data_custom_products_columns_purchase_cost',
145
  'default' => 'no',
146
  'type' => 'checkbox',
147
+ 'desc_tip' => apply_filters( 'booster_message', '', 'desc' ),
148
+ 'custom_attributes' => apply_filters( 'booster_message', '', 'disabled' ),
149
  ),
150
  array(
151
  'type' => 'sectionend',
includes/settings/wcj-settings-related-products.php CHANGED
@@ -149,11 +149,11 @@ $settings = array_merge( $settings, array(
149
  'desc' => __( 'Enable', 'woocommerce-jetpack' ),
150
  'desc_tip' => __( 'This will add metabox to each product\'s edit page.', 'woocommerce-jetpack' ) .
151
  ' ' . __( 'You will be able to select related products manually for each product individually. There is also an option to remove related products on per product basis.', 'woocommerce-jetpack' ) .
152
- ' ' . apply_filters( 'booster_get_message', '', 'desc' ),
153
  'id' => 'wcj_product_info_related_products_per_product',
154
  'default' => 'no',
155
  'type' => 'checkbox',
156
- 'custom_attributes' => apply_filters( 'booster_get_message', '', 'disabled' ),
157
  ),
158
  array(
159
  'type' => 'sectionend',
149
  'desc' => __( 'Enable', 'woocommerce-jetpack' ),
150
  'desc_tip' => __( 'This will add metabox to each product\'s edit page.', 'woocommerce-jetpack' ) .
151
  ' ' . __( 'You will be able to select related products manually for each product individually. There is also an option to remove related products on per product basis.', 'woocommerce-jetpack' ) .
152
+ ' ' . apply_filters( 'booster_message', '', 'desc' ),
153
  'id' => 'wcj_product_info_related_products_per_product',
154
  'default' => 'no',
155
  'type' => 'checkbox',
156
+ 'custom_attributes' => apply_filters( 'booster_message', '', 'disabled' ),
157
  ),
158
  array(
159
  'type' => 'sectionend',
includes/settings/wcj-settings-sale-flash.php CHANGED
@@ -63,11 +63,11 @@ $settings = array(
63
  array(
64
  'title' => __( 'Per Product', 'woocommerce-jetpack' ),
65
  'desc' => '<strong>' . __( 'Enable section', 'woocommerce-jetpack' ) . '</strong>',
66
- 'desc_tip' => __( 'This will add meta box to each product\'s edit page.', 'woocommerce-jetpack' ) . ' ' . apply_filters( 'booster_get_message', '', 'desc' ),
67
  'id' => 'wcj_sale_flash_per_product_enabled',
68
  'default' => 'no',
69
  'type' => 'checkbox',
70
- 'custom_attributes' => apply_filters( 'booster_get_message', '', 'disabled' ),
71
  ),
72
  array(
73
  'type' => 'sectionend',
@@ -88,11 +88,11 @@ foreach ( $product_terms as $id => $product_term ) {
88
  array(
89
  'title' => $title,
90
  'desc' => '<strong>' . __( 'Enable section', 'woocommerce-jetpack' ) . '</strong>',
91
- 'desc_tip' => apply_filters( 'booster_get_message', '', 'desc' ),
92
  'id' => 'wcj_sale_flash_per_' . $id . '_enabled',
93
  'default' => 'no',
94
  'type' => 'checkbox',
95
- 'custom_attributes' => apply_filters( 'booster_get_message', '', 'disabled' ),
96
  ),
97
  ) );
98
  foreach ( $product_term as $term_id => $term_desc ) {
63
  array(
64
  'title' => __( 'Per Product', 'woocommerce-jetpack' ),
65
  'desc' => '<strong>' . __( 'Enable section', 'woocommerce-jetpack' ) . '</strong>',
66
+ 'desc_tip' => __( 'This will add meta box to each product\'s edit page.', 'woocommerce-jetpack' ) . ' ' . apply_filters( 'booster_message', '', 'desc' ),
67
  'id' => 'wcj_sale_flash_per_product_enabled',
68
  'default' => 'no',
69
  'type' => 'checkbox',
70
+ 'custom_attributes' => apply_filters( 'booster_message', '', 'disabled' ),
71
  ),
72
  array(
73
  'type' => 'sectionend',
88
  array(
89
  'title' => $title,
90
  'desc' => '<strong>' . __( 'Enable section', 'woocommerce-jetpack' ) . '</strong>',
91
+ 'desc_tip' => apply_filters( 'booster_message', '', 'desc' ),
92
  'id' => 'wcj_sale_flash_per_' . $id . '_enabled',
93
  'default' => 'no',
94
  'type' => 'checkbox',
95
+ 'custom_attributes' => apply_filters( 'booster_message', '', 'disabled' ),
96
  ),
97
  ) );
98
  foreach ( $product_term as $term_id => $term_desc ) {
includes/settings/wcj-settings-shipping-by-condition.php CHANGED
@@ -31,11 +31,11 @@ foreach ( $this->condition_options as $options_id => $options_data ) {
31
  $settings = array_merge( $settings, $this->get_additional_section_settings( $options_id ) );
32
  foreach ( WC()->shipping()->load_shipping_methods() as $method ) {
33
  if ( ! in_array( $method->id, array( 'flat_rate', 'local_pickup' ) ) ) {
34
- $custom_attributes = apply_filters( 'booster_get_message', '', 'disabled' );
35
  if ( '' == $custom_attributes ) {
36
  $custom_attributes = array();
37
  }
38
- $desc_tip = apply_filters( 'booster_get_message', '', 'desc_no_link' );
39
  } else {
40
  $custom_attributes = array();
41
  $desc_tip = '';
31
  $settings = array_merge( $settings, $this->get_additional_section_settings( $options_id ) );
32
  foreach ( WC()->shipping()->load_shipping_methods() as $method ) {
33
  if ( ! in_array( $method->id, array( 'flat_rate', 'local_pickup' ) ) ) {
34
+ $custom_attributes = apply_filters( 'booster_message', '', 'disabled' );
35
  if ( '' == $custom_attributes ) {
36
  $custom_attributes = array();
37
  }
38
+ $desc_tip = apply_filters( 'booster_message', '', 'desc_no_link' );
39
  } else {
40
  $custom_attributes = array();
41
  $desc_tip = '';
includes/settings/wcj-settings-shipping-by-order-amount.php CHANGED
@@ -19,11 +19,11 @@ $settings = array(
19
  );
20
  foreach ( WC()->shipping()->load_shipping_methods() as $method ) {
21
  if ( ! in_array( $method->id, array( 'flat_rate', 'free_shipping' ) ) ) {
22
- $custom_attributes = apply_filters( 'booster_get_message', '', 'disabled' );
23
  if ( '' == $custom_attributes ) {
24
  $custom_attributes = array();
25
  }
26
- $desc_tip = apply_filters( 'booster_get_message', '', 'desc_no_link' );
27
  } else {
28
  $custom_attributes = array();
29
  $desc_tip = '';
19
  );
20
  foreach ( WC()->shipping()->load_shipping_methods() as $method ) {
21
  if ( ! in_array( $method->id, array( 'flat_rate', 'free_shipping' ) ) ) {
22
+ $custom_attributes = apply_filters( 'booster_message', '', 'disabled' );
23
  if ( '' == $custom_attributes ) {
24
  $custom_attributes = array();
25
  }
26
+ $desc_tip = apply_filters( 'booster_message', '', 'desc_no_link' );
27
  } else {
28
  $custom_attributes = array();
29
  $desc_tip = '';
includes/settings/wcj-settings-shipping-calculator.php CHANGED
@@ -70,24 +70,24 @@ return array(
70
  'id' => 'wcj_shipping_calculator_labels_enabled',
71
  'default' => 'no',
72
  'type' => 'checkbox',
73
- 'desc_tip' => apply_filters( 'booster_get_message', '', 'desc' ),
74
- 'custom_attributes' => apply_filters( 'booster_get_message', '', 'disabled' ),
75
  ),
76
  array(
77
  'title' => __( 'Label for Calculate Shipping', 'woocommerce-jetpack' ),
78
  'id' => 'wcj_shipping_calculator_label_calculate_shipping',
79
  'default' => __( 'Calculate Shipping', 'woocommerce-jetpack' ),
80
  'type' => 'text',
81
- 'desc_tip' => apply_filters( 'booster_get_message', '', 'desc_no_link' ),
82
- 'custom_attributes' => apply_filters( 'booster_get_message', '', 'readonly' ),
83
  ),
84
  array(
85
  'title' => __( 'Label for Update Totals', 'woocommerce-jetpack' ),
86
  'id' => 'wcj_shipping_calculator_label_update_totals',
87
  'default' => __( 'Update Totals', 'woocommerce-jetpack' ),
88
  'type' => 'text',
89
- 'desc_tip' => apply_filters( 'booster_get_message', '', 'desc_no_link' ),
90
- 'custom_attributes' => apply_filters( 'booster_get_message', '', 'readonly' ),
91
  ),
92
  array(
93
  'type' => 'sectionend',
70
  'id' => 'wcj_shipping_calculator_labels_enabled',
71
  'default' => 'no',
72
  'type' => 'checkbox',
73
+ 'desc_tip' => apply_filters( 'booster_message', '', 'desc' ),
74
+ 'custom_attributes' => apply_filters( 'booster_message', '', 'disabled' ),
75
  ),
76
  array(
77
  'title' => __( 'Label for Calculate Shipping', 'woocommerce-jetpack' ),
78
  'id' => 'wcj_shipping_calculator_label_calculate_shipping',
79
  'default' => __( 'Calculate Shipping', 'woocommerce-jetpack' ),
80
  'type' => 'text',
81
+ 'desc_tip' => apply_filters( 'booster_message', '', 'desc_no_link' ),
82
+ 'custom_attributes' => apply_filters( 'booster_message', '', 'readonly' ),
83
  ),
84
  array(
85
  'title' => __( 'Label for Update Totals', 'woocommerce-jetpack' ),
86
  'id' => 'wcj_shipping_calculator_label_update_totals',
87
  'default' => __( 'Update Totals', 'woocommerce-jetpack' ),
88
  'type' => 'text',
89
+ 'desc_tip' => apply_filters( 'booster_message', '', 'desc_no_link' ),
90
+ 'custom_attributes' => apply_filters( 'booster_message', '', 'readonly' ),
91
  ),
92
  array(
93
  'type' => 'sectionend',
includes/settings/wcj-settings-shipping-options.php CHANGED
@@ -33,8 +33,8 @@ $settings = array(
33
  'except_local_pickup' => __( 'Hide all except "Local Pickup"', 'woocommerce-jetpack' ),
34
  'flat_rate_only' => __( 'Hide "Flat Rate" only', 'woocommerce-jetpack' ),
35
  ),
36
- 'desc' => apply_filters( 'booster_get_message', '', 'desc' ),
37
- 'custom_attributes' => apply_filters( 'booster_get_message', '', 'disabled' ),
38
  ),
39
  array(
40
  'title' => __( 'Advanced: Filter Priority', 'woocommerce-jetpack' ),
@@ -83,8 +83,8 @@ $settings = array_merge( $settings, array(
83
  'all' => __( 'All products in cart must grant free shipping', 'woocommerce-jetpack' ),
84
  'at_least_one' => __( 'At least one product in cart must grant free shipping', 'woocommerce-jetpack' ),
85
  ),
86
- 'desc' => apply_filters( 'booster_get_message', '', 'desc' ),
87
- 'custom_attributes' => apply_filters( 'booster_get_message', '', 'disabled' ),
88
  ),
89
  array(
90
  'type' => 'sectionend',
@@ -116,8 +116,8 @@ $settings = array_merge( $settings, array(
116
  'checkout_only' => __( 'Only on checkout page', 'woocommerce-jetpack' ),
117
  ),
118
  'desc_tip' => __( 'Possible values: on both cart and checkout pages; only on cart page; only on checkout page', 'woocommerce-jetpack' ),
119
- 'desc' => apply_filters( 'booster_get_message', '', 'desc' ),
120
- 'custom_attributes' => apply_filters( 'booster_get_message', '', 'disabled' ),
121
  ),
122
  ) );
123
  foreach ( WC()->shipping->get_shipping_methods() as $method ) {
@@ -172,8 +172,8 @@ $settings = array_merge( $settings, array(
172
  'checkout_only' => __( 'Only on checkout page', 'woocommerce-jetpack' ),
173
  ),
174
  'desc_tip' => __( 'Possible values: on both cart and checkout pages; only on cart page; only on checkout page', 'woocommerce-jetpack' ),
175
- 'desc' => apply_filters( 'booster_get_message', '', 'desc' ),
176
- 'custom_attributes' => apply_filters( 'booster_get_message', '', 'disabled' ),
177
  ),
178
  array(
179
  'title' => __( 'Icon Style', 'woocommerce-jetpack' ),
33
  'except_local_pickup' => __( 'Hide all except "Local Pickup"', 'woocommerce-jetpack' ),
34
  'flat_rate_only' => __( 'Hide "Flat Rate" only', 'woocommerce-jetpack' ),
35
  ),
36
+ 'desc' => apply_filters( 'booster_message', '', 'desc' ),
37
+ 'custom_attributes' => apply_filters( 'booster_message', '', 'disabled' ),
38
  ),
39
  array(
40
  'title' => __( 'Advanced: Filter Priority', 'woocommerce-jetpack' ),
83
  'all' => __( 'All products in cart must grant free shipping', 'woocommerce-jetpack' ),
84
  'at_least_one' => __( 'At least one product in cart must grant free shipping', 'woocommerce-jetpack' ),
85
  ),
86
+ 'desc' => apply_filters( 'booster_message', '', 'desc' ),
87
+ 'custom_attributes' => apply_filters( 'booster_message', '', 'disabled' ),
88
  ),
89
  array(
90
  'type' => 'sectionend',
116
  'checkout_only' => __( 'Only on checkout page', 'woocommerce-jetpack' ),
117
  ),
118
  'desc_tip' => __( 'Possible values: on both cart and checkout pages; only on cart page; only on checkout page', 'woocommerce-jetpack' ),
119
+ 'desc' => apply_filters( 'booster_message', '', 'desc' ),
120
+ 'custom_attributes' => apply_filters( 'booster_message', '', 'disabled' ),
121
  ),
122
  ) );
123
  foreach ( WC()->shipping->get_shipping_methods() as $method ) {
172
  'checkout_only' => __( 'Only on checkout page', 'woocommerce-jetpack' ),
173
  ),
174
  'desc_tip' => __( 'Possible values: on both cart and checkout pages; only on cart page; only on checkout page', 'woocommerce-jetpack' ),
175
+ 'desc' => apply_filters( 'booster_message', '', 'desc' ),
176
+ 'custom_attributes' => apply_filters( 'booster_message', '', 'disabled' ),
177
  ),
178
  array(
179
  'title' => __( 'Icon Style', 'woocommerce-jetpack' ),
includes/settings/wcj-settings-sku.php CHANGED
@@ -29,8 +29,8 @@ $settings = array(
29
  ),
30
  'desc_tip' => __( 'Number generation method.', 'woocommerce-jetpack' ) . ' ' .
31
  __( 'Possible values: from product ID, sequential or pseudorandom.', 'woocommerce-jetpack' ),
32
- 'desc' => apply_filters( 'booster_get_message', '', 'desc' ),
33
- 'custom_attributes' => apply_filters( 'booster_get_message', '', 'disabled' ),
34
  ),
35
  array(
36
  'title' => __( 'Sequential Number Generation - Counter', 'woocommerce-jetpack' ),
@@ -38,20 +38,20 @@ $settings = array(
38
  'id' => 'wcj_sku_number_generation_sequential',
39
  'default' => 1,
40
  'type' => 'number',
41
- 'desc' => apply_filters( 'booster_get_message', '', 'desc' ),
42
  'custom_attributes' => array_merge(
43
- is_array( apply_filters( 'booster_get_message', '', 'readonly' ) ) ? apply_filters( 'booster_get_message', '', 'readonly' ) : array(),
44
  array( 'step' => '1', 'min' => '0', )
45
  ),
46
  ),
47
  array(
48
  'title' => __( 'Sequential Number Generation - By Category', 'woocommerce-jetpack' ),
49
- 'desc_tip' => __( 'Enables sequential number generation by category.', 'woocommerce-jetpack' ) . ' ' . apply_filters( 'booster_get_message', '', 'desc' ),
50
  'desc' => __( 'Enable', 'woocommerce-jetpack' ),
51
  'id' => 'wcj_sku_number_generation_sequential_by_cat',
52
  'default' => 'no',
53
  'type' => 'checkbox',
54
- 'custom_attributes' => apply_filters( 'booster_get_message', '', 'disabled' ),
55
  ),
56
  array(
57
  'title' => __( 'Prefix', 'woocommerce-jetpack' ),
@@ -95,8 +95,8 @@ $settings = array(
95
  'as_variation' => __( 'Generate different SKU for each variation', 'woocommerce-jetpack' ),
96
  'as_variable_with_suffix' => __( 'SKU same as parent\'s product + variation letter suffix', 'woocommerce-jetpack' ),
97
  ),
98
- 'desc' => apply_filters( 'booster_get_message', '', 'desc' ),
99
- 'custom_attributes' => apply_filters( 'booster_get_message', '', 'disabled' ),
100
  ),
101
  array(
102
  'type' => 'sectionend',
@@ -120,8 +120,8 @@ if ( ! empty( $product_categories ) && ! is_wp_error( $product_categories ) ){
120
  'id' => 'wcj_sku_prefix_cat_' . $product_category->term_id,
121
  'default' => '',
122
  'type' => 'text',
123
- 'desc_tip' => apply_filters( 'booster_get_message', '', 'desc_no_link' ),
124
- 'custom_attributes' => apply_filters( 'booster_get_message', '', 'readonly' ),
125
  ),
126
  array(
127
  'title' => '',
29
  ),
30
  'desc_tip' => __( 'Number generation method.', 'woocommerce-jetpack' ) . ' ' .
31
  __( 'Possible values: from product ID, sequential or pseudorandom.', 'woocommerce-jetpack' ),
32
+ 'desc' => apply_filters( 'booster_message', '', 'desc' ),
33
+ 'custom_attributes' => apply_filters( 'booster_message', '', 'disabled' ),
34
  ),
35
  array(
36
  'title' => __( 'Sequential Number Generation - Counter', 'woocommerce-jetpack' ),
38
  'id' => 'wcj_sku_number_generation_sequential',
39
  'default' => 1,
40
  'type' => 'number',
41
+ 'desc' => apply_filters( 'booster_message', '', 'desc' ),
42
  'custom_attributes' => array_merge(
43
+ is_array( apply_filters( 'booster_message', '', 'readonly' ) ) ? apply_filters( 'booster_message', '', 'readonly' ) : array(),
44
  array( 'step' => '1', 'min' => '0', )
45
  ),
46
  ),
47
  array(
48
  'title' => __( 'Sequential Number Generation - By Category', 'woocommerce-jetpack' ),
49
+ 'desc_tip' => __( 'Enables sequential number generation by category.', 'woocommerce-jetpack' ) . ' ' . apply_filters( 'booster_message', '', 'desc' ),
50
  'desc' => __( 'Enable', 'woocommerce-jetpack' ),
51
  'id' => 'wcj_sku_number_generation_sequential_by_cat',
52
  'default' => 'no',
53
  'type' => 'checkbox',
54
+ 'custom_attributes' => apply_filters( 'booster_message', '', 'disabled' ),
55
  ),
56
  array(
57
  'title' => __( 'Prefix', 'woocommerce-jetpack' ),
95
  'as_variation' => __( 'Generate different SKU for each variation', 'woocommerce-jetpack' ),
96
  'as_variable_with_suffix' => __( 'SKU same as parent\'s product + variation letter suffix', 'woocommerce-jetpack' ),
97
  ),
98
+ 'desc' => apply_filters( 'booster_message', '', 'desc' ),
99
+ 'custom_attributes' => apply_filters( 'booster_message', '', 'disabled' ),
100
  ),
101
  array(
102
  'type' => 'sectionend',
120
  'id' => 'wcj_sku_prefix_cat_' . $product_category->term_id,
121
  'default' => '',
122
  'type' => 'text',
123
+ 'desc_tip' => apply_filters( 'booster_message', '', 'desc_no_link' ),
124
+ 'custom_attributes' => apply_filters( 'booster_message', '', 'readonly' ),
125
  ),
126
  array(
127
  'title' => '',
includes/settings/wcj-settings-sorting.php CHANGED
@@ -64,8 +64,8 @@ $settings = array(
64
  'id' => 'wcj_sorting_by_sku_num_enabled',
65
  'default' => 'no',
66
  'type' => 'checkbox',
67
- 'desc_tip' => apply_filters( 'booster_get_message', '', 'desc' ),
68
- 'custom_attributes' => apply_filters( 'booster_get_message', '', 'disabled' ),
69
  ),
70
  array(
71
  'title' => __( 'Sort by stock quantity', 'woocommerce-jetpack' ),
@@ -124,8 +124,8 @@ $settings = array(
124
  'id' => 'wcj_sorting_default_sorting_enabled',
125
  'default' => 'no',
126
  'type' => 'checkbox',
127
- 'desc_tip' => apply_filters( 'booster_get_message', '', 'desc' ),
128
- 'custom_attributes' => apply_filters( 'booster_get_message', '', 'disabled' ),
129
  ),
130
  );
131
  foreach ( $this->get_woocommerce_default_sortings() as $sorting_key => $sorting_desc ) {
@@ -160,11 +160,11 @@ $settings = array_merge( $settings, array(
160
  array(
161
  'title' => __( 'Remove All Sorting', 'woocommerce-jetpack' ),
162
  'desc' => __( 'Remove all sorting (including WooCommerce default) from shop\'s frontend', 'woocommerce-jetpack' ),
163
- 'desc_tip' => apply_filters( 'booster_get_message', '', 'desc' ),
164
  'id' => 'wcj_sorting_remove_all_enabled',
165
  'default' => 'no',
166
  'type' => 'checkbox',
167
- 'custom_attributes' => apply_filters( 'booster_get_message', '', 'disabled' ),
168
  ),
169
  array(
170
  'type' => 'sectionend',
64
  'id' => 'wcj_sorting_by_sku_num_enabled',
65
  'default' => 'no',
66
  'type' => 'checkbox',
67
+ 'desc_tip' => apply_filters( 'booster_message', '', 'desc' ),
68
+ 'custom_attributes' => apply_filters( 'booster_message', '', 'disabled' ),
69
  ),
70
  array(
71
  'title' => __( 'Sort by stock quantity', 'woocommerce-jetpack' ),
124
  'id' => 'wcj_sorting_default_sorting_enabled',
125
  'default' => 'no',
126
  'type' => 'checkbox',
127
+ 'desc_tip' => apply_filters( 'booster_message', '', 'desc' ),
128
+ 'custom_attributes' => apply_filters( 'booster_message', '', 'disabled' ),
129
  ),
130
  );
131
  foreach ( $this->get_woocommerce_default_sortings() as $sorting_key => $sorting_desc ) {
160
  array(
161
  'title' => __( 'Remove All Sorting', 'woocommerce-jetpack' ),
162
  'desc' => __( 'Remove all sorting (including WooCommerce default) from shop\'s frontend', 'woocommerce-jetpack' ),
163
+ 'desc_tip' => apply_filters( 'booster_message', '', 'desc' ),
164
  'id' => 'wcj_sorting_remove_all_enabled',
165
  'default' => 'no',
166
  'type' => 'checkbox',
167
+ 'custom_attributes' => apply_filters( 'booster_message', '', 'disabled' ),
168
  ),
169
  array(
170
  'type' => 'sectionend',
includes/settings/wcj-settings-track-users.php CHANGED
@@ -43,12 +43,12 @@ return array(
43
  'title' => __( 'Track Orders', 'woocommerce-jetpack' ),
44
  'desc_tip' => __( 'Save customer\'s acquisition source (i.e. HTTP referer) for orders.', 'woocommerce-jetpack' ) . ' ' .
45
  __( 'This will add "Booster: Acquisition Source" meta box to each order\'s edit page.', 'woocommerce-jetpack' ) . ' ' .
46
- apply_filters( 'booster_get_message', '', 'desc' ),
47
  'desc' => __( 'Enable', 'woocommerce-jetpack' ),
48
  'id' => 'wcj_track_users_save_order_http_referer_enabled',
49
  'default' => 'no',
50
  'type' => 'checkbox',
51
- 'custom_attributes' => apply_filters( 'booster_get_message', '', 'disabled' ),
52
  ),
53
  array(
54
  'type' => 'sectionend',
43
  'title' => __( 'Track Orders', 'woocommerce-jetpack' ),
44
  'desc_tip' => __( 'Save customer\'s acquisition source (i.e. HTTP referer) for orders.', 'woocommerce-jetpack' ) . ' ' .
45
  __( 'This will add "Booster: Acquisition Source" meta box to each order\'s edit page.', 'woocommerce-jetpack' ) . ' ' .
46
+ apply_filters( 'booster_message', '', 'desc' ),
47
  'desc' => __( 'Enable', 'woocommerce-jetpack' ),
48
  'id' => 'wcj_track_users_save_order_http_referer_enabled',
49
  'default' => 'no',
50
  'type' => 'checkbox',
51
+ 'custom_attributes' => apply_filters( 'booster_message', '', 'disabled' ),
52
  ),
53
  array(
54
  'type' => 'sectionend',
includes/settings/wcj-settings-url-coupons.php CHANGED
@@ -38,8 +38,8 @@ $settings = array(
38
  'checkout' => __( 'Redirect to checkout', 'woocommerce-jetpack' ),
39
  'custom' => __( 'Redirect to custom local URL', 'woocommerce-jetpack' ),
40
  ),
41
- 'desc' => apply_filters( 'booster_get_message', '', 'desc' ),
42
- 'custom_attributes' => apply_filters( 'booster_get_message', '', 'disabled' ),
43
  ),
44
  array(
45
  'desc' => __( 'Custom Local URL', 'woocommerce-jetpack' ),
@@ -55,8 +55,8 @@ $settings = array(
55
  'id' => 'wcj_url_coupons_fixed_product_discount_add_products',
56
  'default' => 'no',
57
  'type' => 'checkbox',
58
- 'desc_tip' => apply_filters( 'booster_get_message', '', 'desc' ),
59
- 'custom_attributes' => apply_filters( 'booster_get_message', '', 'disabled' ),
60
  ),
61
  array(
62
  'type' => 'sectionend',
38
  'checkout' => __( 'Redirect to checkout', 'woocommerce-jetpack' ),
39
  'custom' => __( 'Redirect to custom local URL', 'woocommerce-jetpack' ),
40
  ),
41
+ 'desc' => apply_filters( 'booster_message', '', 'desc' ),
42
+ 'custom_attributes' => apply_filters( 'booster_message', '', 'disabled' ),
43
  ),
44
  array(
45
  'desc' => __( 'Custom Local URL', 'woocommerce-jetpack' ),
55
  'id' => 'wcj_url_coupons_fixed_product_discount_add_products',
56
  'default' => 'no',
57
  'type' => 'checkbox',
58
+ 'desc_tip' => apply_filters( 'booster_message', '', 'desc' ),
59
+ 'custom_attributes' => apply_filters( 'booster_message', '', 'disabled' ),
60
  ),
61
  array(
62
  'type' => 'sectionend',
includes/settings/wcj-settings-wholesale-price.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Settings - Wholesale Price
4
  *
5
- * @version 3.2.1
6
  * @since 2.8.0
7
  * @author Algoritmika Ltd.
8
  */
@@ -38,6 +38,14 @@ $settings = array(
38
  'default' => 'no',
39
  'type' => 'checkbox',
40
  ),
 
 
 
 
 
 
 
 
41
  array(
42
  'title' => __( 'Show discount info on cart page', 'woocommerce-jetpack' ),
43
  'desc' => __( 'Show', 'woocommerce-jetpack' ),
@@ -94,14 +102,14 @@ $settings = array(
94
  'id' => 'wcj_wholesale_price_levels_number',
95
  'default' => 1,
96
  'type' => 'custom_number',
97
- 'desc' => apply_filters( 'booster_get_message', '', 'desc' ),
98
  'custom_attributes' => array_merge(
99
- is_array( apply_filters( 'booster_get_message', '', 'readonly' ) ) ? apply_filters( 'booster_get_message', '', 'readonly' ) : array(),
100
  array('step' => '1', 'min' => '1', ) ),
101
  'css' => 'width:100px;',
102
  ),
103
  );
104
- for ( $i = 1; $i <= apply_filters( 'booster_get_option', 1, get_option( 'wcj_wholesale_price_levels_number', 1 ) ); $i++ ) {
105
  $settings = array_merge( $settings, array(
106
  array(
107
  'title' => __( 'Min quantity', 'woocommerce-jetpack' ) . ' #' . $i,
@@ -151,14 +159,14 @@ if ( ! empty( $user_roles ) ) {
151
  'id' => 'wcj_wholesale_price_levels_number_' . $user_role_key,
152
  'default' => 1,
153
  'type' => 'custom_number',
154
- 'desc' => apply_filters( 'booster_get_message', '', 'desc' ),
155
  'custom_attributes' => array_merge(
156
- is_array( apply_filters( 'booster_get_message', '', 'readonly' ) ) ? apply_filters( 'booster_get_message', '', 'readonly' ) : array(),
157
  array('step' => '1', 'min' => '1', ) ),
158
  'css' => 'width:100px;',
159
  ),
160
  ) );
161
- for ( $i = 1; $i <= apply_filters( 'booster_get_option', 1, get_option( 'wcj_wholesale_price_levels_number_' . $user_role_key, 1 ) ); $i++ ) {
162
  $settings = array_merge( $settings, array(
163
  array(
164
  'title' => __( 'Min quantity', 'woocommerce-jetpack' ) . ' #' . $i . ' [' . $user_role_key . ']',
2
  /**
3
  * Booster for WooCommerce - Settings - Wholesale Price
4
  *
5
+ * @version 3.3.0
6
  * @since 2.8.0
7
  * @author Algoritmika Ltd.
8
  */
38
  'default' => 'no',
39
  'type' => 'checkbox',
40
  ),
41
+ array(
42
+ 'title' => __( 'Round single product price', 'woocommerce-jetpack' ),
43
+ 'desc_tip' => __( 'If enabled will round single product price with precision set in WooCommerce > Settings > General > Number of decimals.', 'woocommerce-jetpack' ),
44
+ 'desc' => __( 'Enable', 'woocommerce-jetpack' ),
45
+ 'id' => 'wcj_wholesale_price_rounding_enabled',
46
+ 'default' => 'yes',
47
+ 'type' => 'checkbox',
48
+ ),
49
  array(
50
  'title' => __( 'Show discount info on cart page', 'woocommerce-jetpack' ),
51
  'desc' => __( 'Show', 'woocommerce-jetpack' ),
102
  'id' => 'wcj_wholesale_price_levels_number',
103
  'default' => 1,
104
  'type' => 'custom_number',
105
+ 'desc' => apply_filters( 'booster_message', '', 'desc' ),
106
  'custom_attributes' => array_merge(
107
+ is_array( apply_filters( 'booster_message', '', 'readonly' ) ) ? apply_filters( 'booster_message', '', 'readonly' ) : array(),
108
  array('step' => '1', 'min' => '1', ) ),
109
  'css' => 'width:100px;',
110
  ),
111
  );
112
+ for ( $i = 1; $i <= apply_filters( 'booster_option', 1, get_option( 'wcj_wholesale_price_levels_number', 1 ) ); $i++ ) {
113
  $settings = array_merge( $settings, array(
114
  array(
115
  'title' => __( 'Min quantity', 'woocommerce-jetpack' ) . ' #' . $i,
159
  'id' => 'wcj_wholesale_price_levels_number_' . $user_role_key,
160
  'default' => 1,
161
  'type' => 'custom_number',
162
+ 'desc' => apply_filters( 'booster_message', '', 'desc' ),
163
  'custom_attributes' => array_merge(
164
+ is_array( apply_filters( 'booster_message', '', 'readonly' ) ) ? apply_filters( 'booster_message', '', 'readonly' ) : array(),
165
  array('step' => '1', 'min' => '1', ) ),
166
  'css' => 'width:100px;',
167
  ),
168
  ) );
169
+ for ( $i = 1; $i <= apply_filters( 'booster_option', 1, get_option( 'wcj_wholesale_price_levels_number_' . $user_role_key, 1 ) ); $i++ ) {
170
  $settings = array_merge( $settings, array(
171
  array(
172
  'title' => __( 'Min quantity', 'woocommerce-jetpack' ) . ' #' . $i . ' [' . $user_role_key . ']',
includes/shipping/class-wc-shipping-wcj-custom-with-shipping-zones.php CHANGED
@@ -149,7 +149,7 @@ if ( ! function_exists( 'init_wc_shipping_wcj_custom_w_zones_class' ) ) {
149
  'by_total_cart_weight_table' => __( 'By Total Cart Weight Table', 'woocommerce-jetpack' ),
150
  'by_total_cart_quantity' => __( 'By Total Cart Quantity', 'woocommerce-jetpack' ),
151
  );
152
- $type_options = apply_filters( 'booster_get_option', $type_options, array_merge( $type_options, array(
153
  'by_total_cart_quantity_table' => __( 'By Total Cart Quantity Table', 'woocommerce-jetpack' ),
154
  ) ) );
155
  $this->instance_form_fields = array(
@@ -163,7 +163,7 @@ if ( ! function_exists( 'init_wc_shipping_wcj_custom_w_zones_class' ) ) {
163
  'type' => array(
164
  'title' => __( 'Type', 'woocommerce' ),
165
  'type' => 'select',
166
- 'description' => __( 'Cost calculation type.', 'woocommerce-jetpack' ) . ' ' . apply_filters( 'booster_get_message', '', 'desc_advanced_no_link', array( 'option' => __( 'By Total Cart Quantity Table', 'woocommerce-jetpack' ) ) ),
167
  'default' => 'flat_rate',
168
  'desc_tip' => true,
169
  'options' => $type_options,
149
  'by_total_cart_weight_table' => __( 'By Total Cart Weight Table', 'woocommerce-jetpack' ),
150
  'by_total_cart_quantity' => __( 'By Total Cart Quantity', 'woocommerce-jetpack' ),
151
  );
152
+ $type_options = apply_filters( 'booster_option', $type_options, array_merge( $type_options, array(
153
  'by_total_cart_quantity_table' => __( 'By Total Cart Quantity Table', 'woocommerce-jetpack' ),
154
  ) ) );
155
  $this->instance_form_fields = array(
163
  'type' => array(
164
  'title' => __( 'Type', 'woocommerce' ),
165
  'type' => 'select',
166
+ 'description' => __( 'Cost calculation type.', 'woocommerce-jetpack' ) . ' ' . apply_filters( 'booster_message', '', 'desc_advanced_no_link', array( 'option' => __( 'By Total Cart Quantity Table', 'woocommerce-jetpack' ) ) ),
167
  'default' => 'flat_rate',
168
  'desc_tip' => true,
169
  'options' => $type_options,
includes/shipping/class-wc-shipping-wcj-custom.php CHANGED
@@ -102,7 +102,7 @@ if ( ! function_exists( 'init_wc_shipping_wcj_custom_class' ) ) {
102
  'by_total_cart_weight_table' => __( 'By Total Cart Weight Table', 'woocommerce-jetpack' ),
103
  'by_total_cart_quantity' => __( 'By Total Cart Quantity', 'woocommerce-jetpack' ),
104
  );
105
- $type_options = apply_filters( 'booster_get_option', $type_options, array_merge( $type_options, array(
106
  'by_total_cart_quantity_table' => __( 'By Total Cart Quantity Table', 'woocommerce-jetpack' ),
107
  ) ) );
108
  $this->form_fields = array(
@@ -122,7 +122,7 @@ if ( ! function_exists( 'init_wc_shipping_wcj_custom_class' ) ) {
122
  'type' => array(
123
  'title' => __( 'Type', 'woocommerce' ),
124
  'type' => 'select',
125
- 'description' => __( 'Cost calculation type.', 'woocommerce-jetpack' ) . ' ' . apply_filters( 'booster_get_message', '', 'desc_advanced_no_link', array( 'option' => __( 'By Total Cart Quantity Table', 'woocommerce-jetpack' ) ) ),
126
  'default' => 'flat_rate',
127
  'desc_tip' => true,
128
  'options' => $type_options,
102
  'by_total_cart_weight_table' => __( 'By Total Cart Weight Table', 'woocommerce-jetpack' ),
103
  'by_total_cart_quantity' => __( 'By Total Cart Quantity', 'woocommerce-jetpack' ),
104
  );
105
+ $type_options = apply_filters( 'booster_option', $type_options, array_merge( $type_options, array(
106
  'by_total_cart_quantity_table' => __( 'By Total Cart Quantity Table', 'woocommerce-jetpack' ),
107
  ) ) );
108
  $this->form_fields = array(
122
  'type' => array(
123
  'title' => __( 'Type', 'woocommerce' ),
124
  'type' => 'select',
125
+ 'description' => __( 'Cost calculation type.', 'woocommerce-jetpack' ) . ' ' . apply_filters( 'booster_message', '', 'desc_advanced_no_link', array( 'option' => __( 'By Total Cart Quantity Table', 'woocommerce-jetpack' ) ) ),
126
  'default' => 'flat_rate',
127
  'desc_tip' => true,
128
  'options' => $type_options,
includes/shortcodes/class-wcj-shortcodes-general.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Shortcodes - General
4
  *
5
- * @version 3.2.4
6
  * @author Algoritmika Ltd.
7
  */
8
 
@@ -15,13 +15,12 @@ class WCJ_General_Shortcodes extends WCJ_Shortcodes {
15
  /**
16
  * Constructor.
17
  *
18
- * @version 3.2.4
19
  */
20
  function __construct() {
21
 
22
  $this->the_shortcodes = array(
23
  'wcj_barcode',
24
- 'wcj_tcpdf_barcode',
25
  'wcj_button_toggle_tax_display',
26
  'wcj_cart_items_total_quantity',
27
  'wcj_cart_items_total_weight',
@@ -47,7 +46,9 @@ class WCJ_General_Shortcodes extends WCJ_Shortcodes {
47
  'wcj_selector',
48
  'wcj_site_url',
49
  'wcj_store_address',
 
50
  'wcj_tcpdf_pagebreak',
 
51
  'wcj_text',
52
  'wcj_wholesale_price_table',
53
  'wcj_wp_option',
@@ -92,6 +93,8 @@ class WCJ_General_Shortcodes extends WCJ_Shortcodes {
92
  'width' => 0,
93
  'height' => 0,
94
  'color' => 'black',
 
 
95
  );
96
 
97
  parent::__construct();
@@ -99,104 +102,57 @@ class WCJ_General_Shortcodes extends WCJ_Shortcodes {
99
  }
100
 
101
  /**
102
- * wcj_tcpdf_barcode.
103
  *
104
- * @version 3.2.4
105
- * @since 3.2.4
106
- * @todo `color`
107
- * @todo `align` (try 'T')
 
 
 
108
  */
109
- function wcj_tcpdf_barcode( $atts ) {
110
- if ( '' === $atts['code'] ) {
111
- return '';
112
- }
113
- if ( '' === $atts['type'] ) {
114
- $atts['type'] = ( '1D' === $atts['dimension'] ? 'C39' : 'PDF417' );
115
- }
116
- if ( 0 === $atts['width'] ) {
117
- $atts['width'] = ( '1D' === $atts['dimension'] ? 80 : 80 );
118
- }
119
- if ( 0 === $atts['height'] ) {
120
- $atts['height'] = ( '1D' === $atts['dimension'] ? 30 : 80 );
121
- }
122
- if ( '1D' === $atts['dimension'] ) {
123
- $params = array(
124
- $atts['code'],
125
- $atts['type'],
126
- '', // x
127
- '', // y
128
- $atts['width'],
129
- $atts['height'],
130
- 0.4, // xres
131
- array( // style
132
- 'position' => 'S',
133
- 'border' => true,
134
- 'padding' => 4,
135
- 'fgcolor' => array( 0, 0, 0 ),
136
- 'bgcolor' => array( 255, 255, 255 ),
137
- 'text' => false,
138
- ),
139
- 'N', // align
140
- );
141
- } else {
142
- $params = array(
143
- $atts['code'],
144
- $atts['type'],
145
- '', // x
146
- '', // y
147
- $atts['width'],
148
- $atts['height'],
149
- array( // style
150
- 'border' => true,
151
- 'vpadding' => 'auto',
152
- 'hpadding' => 'auto',
153
- 'fgcolor' => array( 0, 0, 0 ),
154
- 'bgcolor' => array( 255, 255, 255 ),
155
- 'module_width' => 1, // width of a single module in points
156
- 'module_height' => 1, // height of a single module in points
157
- ),
158
- 'N', // align
159
- false, // distort
160
- );
161
- }
162
  require_once( WCJ_PLUGIN_PATH . '/includes/lib/tcpdf_min/include/tcpdf_static.php' );
163
  $params = TCPDF_STATIC::serializeTCPDFtagParameters( $params );
164
- $method = ( '1D' === $atts['dimension'] ? 'write1DBarcode' : 'write2DBarcode' );
165
  return '<tcpdf method="' . $method . '" params="' . $params . '" />';
166
  }
167
 
 
 
 
 
 
 
 
 
 
 
168
  /**
169
  * wcj_barcode.
170
  *
171
- * @version 3.2.4
172
  * @since 3.2.4
173
- * @todo barcode in `[wcj_order_items_table]`
174
- * @todo `code` from product data (SKU etc.), i.e. `[wcj_product_barcode]`
175
- * @todo (maybe) "Barcodes" module
176
- * @todo (maybe) `getBarcodePNG()`
177
  */
178
  function wcj_barcode( $atts ) {
179
- if ( '' === $atts['code'] ) {
180
- return '';
181
- }
182
- if ( '' === $atts['type'] ) {
183
- $atts['type'] = ( '1D' === $atts['dimension'] ? 'C39' : 'PDF417' );
184
- }
185
- if ( 0 === $atts['width'] ) {
186
- $atts['width'] = ( '1D' === $atts['dimension'] ? 2 : 10 );
187
- }
188
- if ( 0 === $atts['height'] ) {
189
- $atts['height'] = ( '1D' === $atts['dimension'] ? 30 : 10 );
190
- }
191
- if ( '1D' === $atts['dimension'] ) {
192
- require_once( WCJ_PLUGIN_PATH . '/includes/lib/tcpdf_min/tcpdf_barcodes_1d.php' );
193
- $barcode = new TCPDFBarcode( $atts['code'], $atts['type'] );
194
- } else {
195
- require_once( WCJ_PLUGIN_PATH . '/includes/lib/tcpdf_min/tcpdf_barcodes_2d.php' );
196
- $barcode = new TCPDF2DBarcode( $atts['code'], $atts['type'] );
197
- }
198
- $barcode_array = $barcode->getBarcodeArray();
199
- return ( ! empty( $barcode_array ) && is_array( $barcode_array ) ? $barcode->getBarcodeHTML( $atts['width'], $atts['height'], $atts['color'] ) : '' );
200
  }
201
 
202
  /**
@@ -472,7 +428,7 @@ class WCJ_General_Shortcodes extends WCJ_Shortcodes {
472
  $shortcode_currencies = explode( ',', $shortcode_currencies );
473
  }
474
  if ( empty( $shortcode_currencies ) ) {
475
- $total_number = apply_filters( 'booster_get_option', 2, get_option( 'wcj_multicurrency_total_number', 2 ) );
476
  for ( $i = 1; $i <= $total_number; $i++ ) {
477
  $shortcode_currencies[] = get_option( 'wcj_multicurrency_currency_' . $i );
478
  }
@@ -506,7 +462,7 @@ class WCJ_General_Shortcodes extends WCJ_Shortcodes {
506
  }
507
 
508
  $wholesale_price_levels = array();
509
- for ( $i = 1; $i <= apply_filters( 'booster_get_option', 1, get_option( 'wcj_wholesale_price_levels_number' . $role_option_name_addon, 1 ) ); $i++ ) {
510
  $level_qty = get_option( 'wcj_wholesale_price_level_min_qty' . $role_option_name_addon . '_' . $i, PHP_INT_MAX );
511
  $discount = get_option( 'wcj_wholesale_price_level_discount_percent' . $role_option_name_addon . '_' . $i, 0 );
512
  $wholesale_price_levels[] = array( 'quantity' => $level_qty, 'discount' => $discount, );
2
  /**
3
  * Booster for WooCommerce - Shortcodes - General
4
  *
5
+ * @version 3.3.0
6
  * @author Algoritmika Ltd.
7
  */
8
 
15
  /**
16
  * Constructor.
17
  *
18
+ * @version 3.3.0
19
  */
20
  function __construct() {
21
 
22
  $this->the_shortcodes = array(
23
  'wcj_barcode',
 
24
  'wcj_button_toggle_tax_display',
25
  'wcj_cart_items_total_quantity',
26
  'wcj_cart_items_total_weight',
46
  'wcj_selector',
47
  'wcj_site_url',
48
  'wcj_store_address',
49
+ 'wcj_tcpdf_barcode',
50
  'wcj_tcpdf_pagebreak',
51
+ 'wcj_tcpdf_rectangle',
52
  'wcj_text',
53
  'wcj_wholesale_price_table',
54
  'wcj_wp_option',
93
  'width' => 0,
94
  'height' => 0,
95
  'color' => 'black',
96
+ 'x' => 0,
97
+ 'y' => 0,
98
  );
99
 
100
  parent::__construct();
102
  }
103
 
104
  /**
105
+ * wcj_tcpdf_rectangle.
106
  *
107
+ * @version 3.3.0
108
+ * @since 3.3.0
109
+ * @see https://tcpdf.org/examples/example_012/
110
+ * @todo add more atts (e.g. style, fill color etc.)
111
+ * @todo add options to take `width` and `height` from custom source (e.g. item or order meta)
112
+ * @todo (maybe) move all `tcpdf` shortcodes to `class-wcj-shortcodes-tcpdf.php`
113
+ * @todo (maybe) create general `[wcj_tcpdf_method]` shortcode (not sure how to solve `$params` part though)
114
  */
115
+ function wcj_tcpdf_rectangle( $atts ) {
116
+
117
+ $style = 'D';
118
+ $border_style = array( 'all' => array( 'width' => 0.5, 'cap' => 'round', 'join' => 'round', 'dash' => 0, 'color' => array( 0, 0, 0 ) ) );
119
+ $fill_color = array();
120
+
121
+ $params = array(
122
+ $atts['x'],
123
+ $atts['y'],
124
+ $atts['width'],
125
+ $atts['height'],
126
+ $style,
127
+ $border_style,
128
+ $fill_color,
129
+ );
130
+
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
131
  require_once( WCJ_PLUGIN_PATH . '/includes/lib/tcpdf_min/include/tcpdf_static.php' );
132
  $params = TCPDF_STATIC::serializeTCPDFtagParameters( $params );
133
+ $method = 'Rect';
134
  return '<tcpdf method="' . $method . '" params="' . $params . '" />';
135
  }
136
 
137
+ /**
138
+ * wcj_tcpdf_barcode.
139
+ *
140
+ * @version 3.3.0
141
+ * @since 3.2.4
142
+ */
143
+ function wcj_tcpdf_barcode( $atts ) {
144
+ return wcj_tcpdf_barcode( $atts );
145
+ }
146
+
147
  /**
148
  * wcj_barcode.
149
  *
150
+ * @version 3.3.0
151
  * @since 3.2.4
152
+ * @todo (maybe) current page url as `code`
 
 
 
153
  */
154
  function wcj_barcode( $atts ) {
155
+ return wcj_barcode( $atts );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
156
  }
157
 
158
  /**
428
  $shortcode_currencies = explode( ',', $shortcode_currencies );
429
  }
430
  if ( empty( $shortcode_currencies ) ) {
431
+ $total_number = apply_filters( 'booster_option', 2, get_option( 'wcj_multicurrency_total_number', 2 ) );
432
  for ( $i = 1; $i <= $total_number; $i++ ) {
433
  $shortcode_currencies[] = get_option( 'wcj_multicurrency_currency_' . $i );
434
  }
462
  }
463
 
464
  $wholesale_price_levels = array();
465
+ for ( $i = 1; $i <= apply_filters( 'booster_option', 1, get_option( 'wcj_wholesale_price_levels_number' . $role_option_name_addon, 1 ) ); $i++ ) {
466
  $level_qty = get_option( 'wcj_wholesale_price_level_min_qty' . $role_option_name_addon . '_' . $i, PHP_INT_MAX );
467
  $discount = get_option( 'wcj_wholesale_price_level_discount_percent' . $role_option_name_addon . '_' . $i, 0 );
468
  $wholesale_price_levels[] = array( 'quantity' => $level_qty, 'discount' => $discount, );
includes/shortcodes/class-wcj-shortcodes-order-items.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Shortcodes - Order Items
4
  *
5
- * @version 3.2.4
6
  * @author Algoritmika Ltd.
7
  */
8
 
@@ -25,7 +25,7 @@ class WCJ_Order_Items_Shortcodes extends WCJ_Shortcodes {
25
  /**
26
  * add_extra_atts.
27
  *
28
- * @version 3.2.2
29
  */
30
  function add_extra_atts( $atts ) {
31
  $modified_atts = array_merge( array(
@@ -60,6 +60,8 @@ class WCJ_Order_Items_Shortcodes extends WCJ_Shortcodes {
60
  'hide_zero_prices' => 'no',
61
  'multicolumns_glue' => '<br>',
62
  'sort_by_column' => 0,
 
 
63
  ), $atts );
64
  return $modified_atts;
65
  }
@@ -312,7 +314,7 @@ class WCJ_Order_Items_Shortcodes extends WCJ_Shortcodes {
312
  $data = array();
313
  $item_counter = 0;
314
  foreach ( $the_items as $item_id => $item ) {
315
- $item['is_custom'] = ( isset( $item['is_custom'] ) ); // $item['is_custom'] may be defined only if WCJ_IS_WC_VERSION_BELOW_3
316
  $the_product = ( true === $item['is_custom'] ) ? null : $the_order->get_product_from_item( $item );
317
  // Check if it's not excluded by category
318
  if ( '' != $atts['exclude_by_categories'] && $the_product ) {
@@ -438,7 +440,7 @@ class WCJ_Order_Items_Shortcodes extends WCJ_Shortcodes {
438
  /**
439
  * get_cell.
440
  *
441
- * @version 3.2.4
442
  * @since 3.2.0
443
  */
444
  function get_cell( $column, $column_param, $atts, $the_order, $columns, $item_counter, $item_id, $item, $the_product ) {
@@ -620,10 +622,18 @@ class WCJ_Order_Items_Shortcodes extends WCJ_Shortcodes {
620
  return $this->wcj_price_shortcode( $the_order->get_item_total( $item, true, true ), $atts );
621
 
622
  case 'item_subtotal_tax_excl':
623
- return $this->wcj_price_shortcode( $the_order->get_item_subtotal( $item, false, true ), $atts );
 
 
 
 
624
 
625
  case 'item_subtotal_tax_incl':
626
- return $this->wcj_price_shortcode( $the_order->get_item_subtotal( $item, true, true ), $atts );
 
 
 
 
627
 
628
  case 'item_tax':
629
  return $this->wcj_price_shortcode( $the_order->get_item_tax( $item, true ), $atts );
@@ -637,10 +647,18 @@ class WCJ_Order_Items_Shortcodes extends WCJ_Shortcodes {
637
  return $this->wcj_price_shortcode( $the_order->get_line_total( $item, true, true ), $atts );
638
 
639
  case 'line_subtotal_tax_excl':
640
- return $this->wcj_price_shortcode( $the_order->get_line_subtotal( $item, false, true ), $atts );
 
 
 
 
641
 
642
  case 'line_subtotal_tax_incl':
643
- return $this->wcj_price_shortcode( $the_order->get_line_subtotal( $item, true, true ), $atts );
 
 
 
 
644
 
645
  case 'line_tax':
646
  $line_tax = $the_order->get_line_tax( $item );
@@ -648,7 +666,10 @@ class WCJ_Order_Items_Shortcodes extends WCJ_Shortcodes {
648
  return $this->wcj_price_shortcode( $line_tax, $atts );
649
 
650
  case 'line_subtax':
651
- $line_subtax = $the_order->get_line_subtotal( $item, true, false ) - $the_order->get_line_subtotal( $item, false, false );
 
 
 
652
  return $this->wcj_price_shortcode( $line_subtax, $atts );
653
 
654
  case 'item_tax_percent':
@@ -705,6 +726,38 @@ class WCJ_Order_Items_Shortcodes extends WCJ_Shortcodes {
705
  case 'product_purchase_note':
706
  return ( ! is_object( $the_product ) ) ? '' : $the_product->get_purchase_note();
707
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
708
  default:
709
  return '';
710
  }
2
  /**
3
  * Booster for WooCommerce - Shortcodes - Order Items
4
  *
5
+ * @version 3.3.0
6
  * @author Algoritmika Ltd.
7
  */
8
 
25
  /**
26
  * add_extra_atts.
27
  *
28
+ * @version 3.3.0
29
  */
30
  function add_extra_atts( $atts ) {
31
  $modified_atts = array_merge( array(
60
  'hide_zero_prices' => 'no',
61
  'multicolumns_glue' => '<br>',
62
  'sort_by_column' => 0,
63
+ 'product_barcode_width' => 60,
64
+ 'product_barcode_height' => 60,
65
  ), $atts );
66
  return $modified_atts;
67
  }
314
  $data = array();
315
  $item_counter = 0;
316
  foreach ( $the_items as $item_id => $item ) {
317
+ $item['is_custom'] = ( isset( $item['is_custom'] ) ); // todo: $item['is_custom'] may be defined only if WCJ_IS_WC_VERSION_BELOW_3
318
  $the_product = ( true === $item['is_custom'] ) ? null : $the_order->get_product_from_item( $item );
319
  // Check if it's not excluded by category
320
  if ( '' != $atts['exclude_by_categories'] && $the_product ) {
440
  /**
441
  * get_cell.
442
  *
443
+ * @version 3.3.0
444
  * @since 3.2.0
445
  */
446
  function get_cell( $column, $column_param, $atts, $the_order, $columns, $item_counter, $item_id, $item, $the_product ) {
622
  return $this->wcj_price_shortcode( $the_order->get_item_total( $item, true, true ), $atts );
623
 
624
  case 'item_subtotal_tax_excl':
625
+ $return = ( is_callable( array( $item, 'get_subtotal' ) ) ? // could also use `is_object( $the_product )`
626
+ $the_order->get_item_subtotal( $item, false, true ) :
627
+ $the_order->get_item_total( $item, false, true )
628
+ );
629
+ return $this->wcj_price_shortcode( $return, $atts );
630
 
631
  case 'item_subtotal_tax_incl':
632
+ $return = ( is_callable( array( $item, 'get_subtotal' ) ) ?
633
+ $the_order->get_item_subtotal( $item, true, true ) :
634
+ $the_order->get_item_total( $item, true, true )
635
+ );
636
+ return $this->wcj_price_shortcode( $return, $atts );
637
 
638
  case 'item_tax':
639
  return $this->wcj_price_shortcode( $the_order->get_item_tax( $item, true ), $atts );
647
  return $this->wcj_price_shortcode( $the_order->get_line_total( $item, true, true ), $atts );
648
 
649
  case 'line_subtotal_tax_excl':
650
+ $return = ( is_callable( array( $item, 'get_subtotal' ) ) ?
651
+ $the_order->get_line_subtotal( $item, false, true ) :
652
+ $the_order->get_line_total( $item, false, true )
653
+ );
654
+ return $this->wcj_price_shortcode( $return, $atts );
655
 
656
  case 'line_subtotal_tax_incl':
657
+ $return = ( is_callable( array( $item, 'get_subtotal' ) ) ?
658
+ $the_order->get_line_subtotal( $item, true, true ) :
659
+ $the_order->get_line_total( $item, true, true )
660
+ );
661
+ return $this->wcj_price_shortcode( $return, $atts );
662
 
663
  case 'line_tax':
664
  $line_tax = $the_order->get_line_tax( $item );
666
  return $this->wcj_price_shortcode( $line_tax, $atts );
667
 
668
  case 'line_subtax':
669
+ $line_subtax = ( is_callable( array( $item, 'get_subtotal' ) ) ?
670
+ $the_order->get_line_subtotal( $item, true, false ) - $the_order->get_line_subtotal( $item, false, false ) :
671
+ $the_order->get_line_total( $item, true, false ) - $the_order->get_line_total( $item, false, false )
672
+ );
673
  return $this->wcj_price_shortcode( $line_subtax, $atts );
674
 
675
  case 'item_tax_percent':
726
  case 'product_purchase_note':
727
  return ( ! is_object( $the_product ) ) ? '' : $the_product->get_purchase_note();
728
 
729
+ case 'product_barcode':
730
+ if ( is_object( $the_product ) ) {
731
+ if ( ! isset( $column_param ) || '' == $column_param ) {
732
+ $code = $the_product->get_sku();
733
+ } else {
734
+ switch ( $column_param ) {
735
+ case '%id%':
736
+ $code = $the_product->get_id();
737
+ break;
738
+ case '%sku%':
739
+ $code = $the_product->get_sku();
740
+ break;
741
+ case '%url%':
742
+ $code = $the_product->get_permalink();
743
+ break;
744
+ default: // meta
745
+ $code = get_post_meta( $the_product->get_id(), $column_param, true );
746
+ }
747
+ }
748
+ $atts = array(
749
+ 'code' => $code,
750
+ 'type' => 'PDF417',
751
+ 'dimension' => '2D',
752
+ 'width' => $atts['product_barcode_width'],
753
+ 'height' => $atts['product_barcode_height'],
754
+ 'color' => 'black',
755
+ );
756
+ return wcj_tcpdf_barcode( $atts );
757
+ } else {
758
+ return '';
759
+ }
760
+
761
  default:
762
  return '';
763
  }
includes/shortcodes/class-wcj-shortcodes-orders.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Shortcodes - Orders
4
  *
5
- * @version 3.2.4
6
  * @author Algoritmika Ltd.
7
  */
8
 
@@ -15,7 +15,7 @@ class WCJ_Orders_Shortcodes extends WCJ_Shortcodes {
15
  /**
16
  * Constructor.
17
  *
18
- * @version 3.1.2
19
  */
20
  function __construct() {
21
 
@@ -38,6 +38,7 @@ class WCJ_Orders_Shortcodes extends WCJ_Shortcodes {
38
  'wcj_order_function',
39
  'wcj_order_id',
40
  'wcj_order_items',
 
41
  'wcj_order_items_meta',
42
  'wcj_order_items_total_number',
43
  'wcj_order_items_total_quantity',
@@ -46,6 +47,7 @@ class WCJ_Orders_Shortcodes extends WCJ_Shortcodes {
46
  'wcj_order_number',
47
  'wcj_order_payment_method',
48
  'wcj_order_payment_method_transaction_id',
 
49
  'wcj_order_refunds_table',
50
  'wcj_order_remaining_refund_amount',
51
  'wcj_order_shipping_address',
@@ -61,6 +63,7 @@ class WCJ_Orders_Shortcodes extends WCJ_Shortcodes {
61
  'wcj_order_subtotal_to_display',
62
  'wcj_order_tax_by_class',
63
  'wcj_order_taxes_html',
 
64
  'wcj_order_time',
65
  'wcj_order_total',
66
  'wcj_order_total_after_refund',
@@ -92,7 +95,7 @@ class WCJ_Orders_Shortcodes extends WCJ_Shortcodes {
92
  /**
93
  * add_extra_atts.
94
  *
95
- * @version 3.2.4
96
  */
97
  function add_extra_atts( $atts ) {
98
  $modified_atts = array_merge( array(
@@ -128,6 +131,14 @@ class WCJ_Orders_Shortcodes extends WCJ_Shortcodes {
128
  'insert_page_break' => '',
129
  'key' => null,
130
  'days' => 0,
 
 
 
 
 
 
 
 
131
  ), $atts );
132
 
133
  return $modified_atts;
@@ -135,20 +146,29 @@ class WCJ_Orders_Shortcodes extends WCJ_Shortcodes {
135
 
136
  /**
137
  * init_atts.
 
 
138
  */
139
  function init_atts( $atts ) {
140
 
141
  // Atts
142
- $atts['excl_tax'] = ( 'yes' === $atts['excl_tax'] ) ? true : false;
143
 
144
- if ( 0 == $atts['order_id'] ) $atts['order_id'] = ( isset( $_GET['order_id'] ) ) ? $_GET['order_id'] : get_the_ID();
145
- if ( 0 == $atts['order_id'] ) $atts['order_id'] = ( isset( $_GET['pdf_invoice'] ) ) ? $_GET['pdf_invoice'] : 0; // PDF Invoices V1 compatibility
146
- if ( 0 == $atts['order_id'] ) return false;
147
- //if ( 'shop_order' !== get_post_type( $atts['order_id'] ) ) return false;
 
 
 
 
 
148
 
149
  // Class properties
150
  $this->the_order = ( 'shop_order' === get_post_type( $atts['order_id'] ) ) ? wc_get_order( $atts['order_id'] ) : null;
151
- if ( ! $this->the_order ) return false;
 
 
152
 
153
  return $atts;
154
  }
@@ -177,10 +197,88 @@ class WCJ_Orders_Shortcodes extends WCJ_Shortcodes {
177
  /**
178
  * wcj_price_shortcode.
179
  *
180
- * @version 2.7.0
181
  */
182
  private function wcj_price_shortcode( $raw_price, $atts ) {
183
- return ( 'yes' === $atts['hide_if_zero'] && 0 == $raw_price ) ? '' : wcj_price( $raw_price, wcj_get_order_currency( $this->the_order ), $atts['hide_currency'] );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
184
  }
185
 
186
  /**
2
  /**
3
  * Booster for WooCommerce - Shortcodes - Orders
4
  *
5
+ * @version 3.3.0
6
  * @author Algoritmika Ltd.
7
  */
8
 
15
  /**
16
  * Constructor.
17
  *
18
+ * @version 3.3.0
19
  */
20
  function __construct() {
21
 
38
  'wcj_order_function',
39
  'wcj_order_id',
40
  'wcj_order_items',
41
+ 'wcj_order_items_cost',
42
  'wcj_order_items_meta',
43
  'wcj_order_items_total_number',
44
  'wcj_order_items_total_quantity',
47
  'wcj_order_number',
48
  'wcj_order_payment_method',
49
  'wcj_order_payment_method_transaction_id',
50
+ 'wcj_order_profit',
51
  'wcj_order_refunds_table',
52
  'wcj_order_remaining_refund_amount',
53
  'wcj_order_shipping_address',
63
  'wcj_order_subtotal_to_display',
64
  'wcj_order_tax_by_class',
65
  'wcj_order_taxes_html',
66
+ 'wcj_order_tcpdf_barcode',
67
  'wcj_order_time',
68
  'wcj_order_total',
69
  'wcj_order_total_after_refund',
95
  /**
96
  * add_extra_atts.
97
  *
98
+ * @version 3.3.0
99
  */
100
  function add_extra_atts( $atts ) {
101
  $modified_atts = array_merge( array(
131
  'insert_page_break' => '',
132
  'key' => null,
133
  'days' => 0,
134
+ 'code' => '',
135
+ 'type' => '',
136
+ 'dimension' => '2D',
137
+ 'width' => 0,
138
+ 'height' => 0,
139
+ 'color' => 'black',
140
+ 'currency' => '',
141
+ 'doc_type' => 'invoice',
142
  ), $atts );
143
 
144
  return $modified_atts;
146
 
147
  /**
148
  * init_atts.
149
+ *
150
+ * @todo (maybe) `if ( 'shop_order' !== get_post_type( $atts['order_id'] ) ) return false;`
151
  */
152
  function init_atts( $atts ) {
153
 
154
  // Atts
155
+ $atts['excl_tax'] = ( 'yes' === $atts['excl_tax'] );
156
 
157
+ if ( 0 == $atts['order_id'] ) {
158
+ $atts['order_id'] = ( isset( $_GET['order_id'] ) ) ? $_GET['order_id'] : get_the_ID();
159
+ }
160
+ if ( 0 == $atts['order_id'] ) {
161
+ $atts['order_id'] = ( isset( $_GET['pdf_invoice'] ) ) ? $_GET['pdf_invoice'] : 0; // PDF Invoices V1 compatibility
162
+ }
163
+ if ( 0 == $atts['order_id'] ) {
164
+ return false;
165
+ }
166
 
167
  // Class properties
168
  $this->the_order = ( 'shop_order' === get_post_type( $atts['order_id'] ) ) ? wc_get_order( $atts['order_id'] ) : null;
169
+ if ( ! $this->the_order ) {
170
+ return false;
171
+ }
172
 
173
  return $atts;
174
  }
197
  /**
198
  * wcj_price_shortcode.
199
  *
200
+ * @version 3.3.0
201
  */
202
  private function wcj_price_shortcode( $raw_price, $atts ) {
203
+ if ( 'yes' === $atts['hide_if_zero'] && 0 == $raw_price ) {
204
+ return '';
205
+ } else {
206
+ $order_currency = wcj_get_order_currency( $this->the_order );
207
+ if ( '' === $atts['currency'] ) {
208
+ return wcj_price( $raw_price, $order_currency, $atts['hide_currency'] );
209
+ } else {
210
+ $convert_to_currency = $atts['currency'];
211
+ if ( '%shop_currency%' === $convert_to_currency ) {
212
+ $convert_to_currency = get_option( 'woocommerce_currency' );
213
+ }
214
+ return wcj_price( $raw_price * wcj_get_saved_exchange_rate( $order_currency, $convert_to_currency ), $convert_to_currency, $atts['hide_currency'] );
215
+ }
216
+ }
217
+ }
218
+
219
+ /**
220
+ * wcj_order_items_cost.
221
+ *
222
+ * @version 3.3.0
223
+ * @since 3.3.0
224
+ */
225
+ function wcj_order_items_cost( $atts ) {
226
+ $atts['type'] = 'items_cost';
227
+ return $this->wcj_order_profit( $atts );
228
+ }
229
+
230
+ /**
231
+ * wcj_order_profit.
232
+ *
233
+ * @version 3.3.0
234
+ * @since 3.3.0
235
+ */
236
+ function wcj_order_profit( $atts ) {
237
+ $total = 0;
238
+ foreach ( $this->the_order->get_items() as $item_id => $item ) {
239
+ $product_id = ( ( isset( $item['variation_id'] ) && 0 != $item['variation_id'] && 'no' === get_option( 'wcj_purchase_data_variable_as_simple_enabled', 'no' ) )
240
+ ? $item['variation_id'] : $item['product_id'] );
241
+ $value = 0;
242
+ if ( 0 != ( $purchase_price = wc_get_product_purchase_price( $product_id ) ) ) {
243
+ if ( 'profit' === $atts['type'] || '' === $atts['type'] ) {
244
+ // profit
245
+ $_order_prices_include_tax = ( WCJ_IS_WC_VERSION_BELOW_3 ? $this->the_order->prices_include_tax : $this->the_order->get_prices_include_tax() );
246
+ $line_total = ( $_order_prices_include_tax ? ( $item['line_total'] + $item['line_tax'] ) : $item['line_total'] );
247
+ $value = $line_total - $purchase_price * $item['qty'];
248
+ } else {
249
+ // 'items_cost'
250
+ $value = $purchase_price * $item['qty'];
251
+ }
252
+ }
253
+ $total += $value;
254
+ }
255
+ return $this->wcj_price_shortcode( $total, $atts );
256
+ }
257
+
258
+ /**
259
+ * wcj_order_tcpdf_barcode.
260
+ *
261
+ * @version 3.3.0
262
+ * @since 3.3.0
263
+ */
264
+ function wcj_order_tcpdf_barcode( $atts ) {
265
+ switch ( $atts['code'] ) {
266
+ case '%url%':
267
+ $atts['code'] = $this->the_order->get_view_order_url();
268
+ break;
269
+ case '%id%':
270
+ $atts['code'] = $atts['order_id'];
271
+ break;
272
+ case '%doc_number%':
273
+ $atts['code'] = wcj_get_invoice_number( $atts['order_id'], $atts['doc_type'] );
274
+ break;
275
+ case '%meta%':
276
+ $atts['code'] = get_post_meta( $atts['order_id'], $atts['meta_key'], true );
277
+ break;
278
+ default:
279
+ return '';
280
+ }
281
+ return wcj_tcpdf_barcode( $atts );
282
  }
283
 
284
  /**
includes/shortcodes/class-wcj-shortcodes-products-add-form.php CHANGED
@@ -37,7 +37,7 @@ class WCJ_Products_Add_Form_Shortcodes extends WCJ_Shortcodes {
37
  'external_url_enabled' => get_option( 'wcj_product_by_user_external_url_enabled', 'no' ),
38
  'cats_enabled' => get_option( 'wcj_product_by_user_cats_enabled', 'no' ),
39
  'tags_enabled' => get_option( 'wcj_product_by_user_tags_enabled', 'no' ),
40
- 'image_enabled' => apply_filters( 'booster_get_option', 'no', get_option( 'wcj_product_by_user_image_enabled', 'no' ) ),
41
 
42
  'desc_required' => get_option( 'wcj_product_by_user_desc_required', 'no' ),
43
  'short_desc_required' => get_option( 'wcj_product_by_user_short_desc_required', 'no' ),
@@ -46,7 +46,7 @@ class WCJ_Products_Add_Form_Shortcodes extends WCJ_Shortcodes {
46
  'external_url_required' => get_option( 'wcj_product_by_user_external_url_required', 'no' ),
47
  'cats_required' => get_option( 'wcj_product_by_user_cats_required', 'no' ),
48
  'tags_required' => get_option( 'wcj_product_by_user_tags_required', 'no' ),
49
- 'image_required' => apply_filters( 'booster_get_option', 'no', get_option( 'wcj_product_by_user_image_required', 'no' ) ),
50
 
51
  'visibility' => implode( ',', get_option( 'wcj_product_by_user_user_visibility', array() ) ),
52
  'module' => 'product_by_user',
@@ -58,7 +58,7 @@ class WCJ_Products_Add_Form_Shortcodes extends WCJ_Shortcodes {
58
  $this->the_atts['external_url_required'] = 'no';
59
  }
60
 
61
- $this->the_atts['custom_taxonomies_total'] = apply_filters( 'booster_get_option', 1, get_option( 'wcj_product_by_user_custom_taxonomies_total', 1 ) );
62
  for ( $i = 1; $i <= $this->the_atts['custom_taxonomies_total']; $i++ ) {
63
  $this->the_atts[ 'custom_taxonomy_' . $i . '_enabled' ] = get_option( 'wcj_product_by_user_custom_taxonomy_' . $i . '_enabled', 'no' );
64
  $this->the_atts[ 'custom_taxonomy_' . $i . '_required' ] = get_option( 'wcj_product_by_user_custom_taxonomy_' . $i . '_required', 'no' );
37
  'external_url_enabled' => get_option( 'wcj_product_by_user_external_url_enabled', 'no' ),
38
  'cats_enabled' => get_option( 'wcj_product_by_user_cats_enabled', 'no' ),
39
  'tags_enabled' => get_option( 'wcj_product_by_user_tags_enabled', 'no' ),
40
+ 'image_enabled' => apply_filters( 'booster_option', 'no', get_option( 'wcj_product_by_user_image_enabled', 'no' ) ),
41
 
42
  'desc_required' => get_option( 'wcj_product_by_user_desc_required', 'no' ),
43
  'short_desc_required' => get_option( 'wcj_product_by_user_short_desc_required', 'no' ),
46
  'external_url_required' => get_option( 'wcj_product_by_user_external_url_required', 'no' ),
47
  'cats_required' => get_option( 'wcj_product_by_user_cats_required', 'no' ),
48
  'tags_required' => get_option( 'wcj_product_by_user_tags_required', 'no' ),
49
+ 'image_required' => apply_filters( 'booster_option', 'no', get_option( 'wcj_product_by_user_image_required', 'no' ) ),
50
 
51
  'visibility' => implode( ',', get_option( 'wcj_product_by_user_user_visibility', array() ) ),
52
  'module' => 'product_by_user',
58
  $this->the_atts['external_url_required'] = 'no';
59
  }
60
 
61
+ $this->the_atts['custom_taxonomies_total'] = apply_filters( 'booster_option', 1, get_option( 'wcj_product_by_user_custom_taxonomies_total', 1 ) );
62
  for ( $i = 1; $i <= $this->the_atts['custom_taxonomies_total']; $i++ ) {
63
  $this->the_atts[ 'custom_taxonomy_' . $i . '_enabled' ] = get_option( 'wcj_product_by_user_custom_taxonomy_' . $i . '_enabled', 'no' );
64
  $this->the_atts[ 'custom_taxonomy_' . $i . '_required' ] = get_option( 'wcj_product_by_user_custom_taxonomy_' . $i . '_required', 'no' );
includes/shortcodes/class-wcj-shortcodes-products-crowdfunding.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Shortcodes - Products Crowdfunding
4
  *
5
- * @version 2.7.0
6
  * @since 2.5.4
7
  * @author Algoritmika Ltd.
8
  */
@@ -46,29 +46,37 @@ class WCJ_Products_Crowdfunding_Shortcodes extends WCJ_Shortcodes {
46
  /**
47
  * Inits shortcode atts and properties.
48
  *
49
- * @version 2.5.4
50
  * @since 2.5.4
51
  * @param array $atts Shortcode atts.
52
  * @return array The (modified) shortcode atts.
 
53
  */
54
  function init_atts( $atts ) {
55
 
56
  // Atts
 
57
  if ( 0 == $atts['product_id'] ) {
58
- global $wcj_product_id_for_shortcode;
59
- if ( 0 != $wcj_product_id_for_shortcode ) {
60
- $atts['product_id'] = $wcj_product_id_for_shortcode;
61
  } else {
62
  $atts['product_id'] = get_the_ID();
63
  }
64
- if ( 0 == $atts['product_id'] ) return false;
 
 
65
  }
66
  $the_post_type = get_post_type( $atts['product_id'] );
67
- if ( 'product' !== $the_post_type && 'product_variation' !== $the_post_type ) return false;
 
 
68
 
69
  // Class properties
70
- $this->the_product = wc_get_product( $atts['product_id'] );
71
- if ( ! $this->the_product ) return false;
 
 
72
 
73
  return $atts;
74
  }
2
  /**
3
  * Booster for WooCommerce - Shortcodes - Products Crowdfunding
4
  *
5
+ * @version 3.3.0
6
  * @since 2.5.4
7
  * @author Algoritmika Ltd.
8
  */
46
  /**
47
  * Inits shortcode atts and properties.
48
  *
49
+ * @version 3.3.0
50
  * @since 2.5.4
51
  * @param array $atts Shortcode atts.
52
  * @return array The (modified) shortcode atts.
53
+ * @todo (maybe) call this function from `WCJ_Products_Shortcodes` class (i.e. make `WCJ_Products_Crowdfunding_Shortcodes extends WCJ_Products_Shortcodes`)
54
  */
55
  function init_atts( $atts ) {
56
 
57
  // Atts
58
+ $is_passed_product = false;
59
  if ( 0 == $atts['product_id'] ) {
60
+ if ( isset( $this->passed_product ) ) {
61
+ $atts['product_id'] = wcj_get_product_id( $this->passed_product );
62
+ $is_passed_product = true;
63
  } else {
64
  $atts['product_id'] = get_the_ID();
65
  }
66
+ if ( 0 == $atts['product_id'] ) {
67
+ return false;
68
+ }
69
  }
70
  $the_post_type = get_post_type( $atts['product_id'] );
71
+ if ( 'product' !== $the_post_type && 'product_variation' !== $the_post_type ) {
72
+ return false;
73
+ }
74
 
75
  // Class properties
76
+ $this->the_product = ( $is_passed_product ? $this->passed_product : wc_get_product( $atts['product_id'] ) );
77
+ if ( ! $this->the_product ) {
78
+ return false;
79
+ }
80
 
81
  return $atts;
82
  }
includes/shortcodes/class-wcj-shortcodes-products.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Shortcodes - Products
4
  *
5
- * @version 3.2.4
6
  * @author Algoritmika Ltd.
7
  */
8
 
@@ -15,7 +15,7 @@ class WCJ_Products_Shortcodes extends WCJ_Shortcodes {
15
  /**
16
  * Constructor.
17
  *
18
- * @version 3.2.4
19
  * @todo (maybe) add `[wcj_product_stock_price]`
20
  */
21
  function __construct() {
@@ -27,6 +27,7 @@ class WCJ_Products_Shortcodes extends WCJ_Shortcodes {
27
  'wcj_product_author_link_all_posts',
28
  'wcj_product_available_variations',
29
  'wcj_product_average_rating',
 
30
  'wcj_product_categories',
31
  'wcj_product_categories_names',
32
  'wcj_product_categories_urls',
@@ -106,6 +107,13 @@ class WCJ_Products_Shortcodes extends WCJ_Shortcodes {
106
  'variations' => 'no',
107
  'columns_style' => 'text-align: center;',
108
  'currency' => '',
 
 
 
 
 
 
 
109
  );
110
 
111
  parent::__construct();
@@ -114,32 +122,65 @@ class WCJ_Products_Shortcodes extends WCJ_Shortcodes {
114
  /**
115
  * Inits shortcode atts and properties.
116
  *
117
- * @version 2.4.8
118
  * @param array $atts Shortcode atts.
119
  * @return array The (modified) shortcode atts.
120
  */
121
  function init_atts( $atts ) {
122
 
123
  // Atts
 
124
  if ( 0 == $atts['product_id'] ) {
125
- global $wcj_product_id_for_shortcode;
126
- if ( 0 != $wcj_product_id_for_shortcode ) {
127
- $atts['product_id'] = $wcj_product_id_for_shortcode;
128
  } else {
129
  $atts['product_id'] = get_the_ID();
130
  }
131
- if ( 0 == $atts['product_id'] ) return false;
 
 
132
  }
133
  $the_post_type = get_post_type( $atts['product_id'] );
134
- if ( 'product' !== $the_post_type && 'product_variation' !== $the_post_type ) return false;
 
 
135
 
136
  // Class properties
137
- $this->the_product = wc_get_product( $atts['product_id'] );
138
- if ( ! $this->the_product ) return false;
 
 
139
 
140
  return $atts;
141
  }
142
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
143
  /**
144
  * wcj_product_id.
145
  *
@@ -736,13 +777,13 @@ class WCJ_Products_Shortcodes extends WCJ_Shortcodes {
736
 
737
  $wholesale_price_levels = array();
738
  if ( wcj_is_product_wholesale_enabled_per_product( $product_id ) ) {
739
- for ( $i = 1; $i <= apply_filters( 'booster_get_option', 1, get_post_meta( $product_id, '_' . 'wcj_wholesale_price_levels_number' . $role_option_name_addon, true ) ); $i++ ) {
740
  $level_qty = get_post_meta( $product_id, '_' . 'wcj_wholesale_price_level_min_qty' . $role_option_name_addon . '_' . $i, true );
741
  $discount = get_post_meta( $product_id, '_' . 'wcj_wholesale_price_level_discount' . $role_option_name_addon . '_' . $i, true );
742
  $wholesale_price_levels[] = array( 'quantity' => $level_qty, 'discount' => $discount, );
743
  }
744
  } else {
745
- for ( $i = 1; $i <= apply_filters( 'booster_get_option', 1, get_option( 'wcj_wholesale_price_levels_number' . $role_option_name_addon, 1 ) ); $i++ ) {
746
  $level_qty = get_option( 'wcj_wholesale_price_level_min_qty' . $role_option_name_addon . '_' . $i, PHP_INT_MAX );
747
  $discount = get_option( 'wcj_wholesale_price_level_discount_percent' . $role_option_name_addon . '_' . $i, 0 );
748
  $wholesale_price_levels[] = array( 'quantity' => $level_qty, 'discount' => $discount, );
2
  /**
3
  * Booster for WooCommerce - Shortcodes - Products
4
  *
5
+ * @version 3.3.0
6
  * @author Algoritmika Ltd.
7
  */
8
 
15
  /**
16
  * Constructor.
17
  *
18
+ * @version 3.3.0
19
  * @todo (maybe) add `[wcj_product_stock_price]`
20
  */
21
  function __construct() {
27
  'wcj_product_author_link_all_posts',
28
  'wcj_product_available_variations',
29
  'wcj_product_average_rating',
30
+ 'wcj_product_barcode',
31
  'wcj_product_categories',
32
  'wcj_product_categories_names',
33
  'wcj_product_categories_urls',
107
  'variations' => 'no',
108
  'columns_style' => 'text-align: center;',
109
  'currency' => '',
110
+ 'code' => '',
111
+ 'type' => '',
112
+ 'dimension' => '2D',
113
+ 'width' => 0,
114
+ 'height' => 0,
115
+ 'color' => 'black',
116
+ 'meta_key' => '',
117
  );
118
 
119
  parent::__construct();
122
  /**
123
  * Inits shortcode atts and properties.
124
  *
125
+ * @version 3.3.0
126
  * @param array $atts Shortcode atts.
127
  * @return array The (modified) shortcode atts.
128
  */
129
  function init_atts( $atts ) {
130
 
131
  // Atts
132
+ $is_passed_product = false;
133
  if ( 0 == $atts['product_id'] ) {
134
+ if ( isset( $this->passed_product ) ) {
135
+ $atts['product_id'] = wcj_get_product_id( $this->passed_product );
136
+ $is_passed_product = true;
137
  } else {
138
  $atts['product_id'] = get_the_ID();
139
  }
140
+ if ( 0 == $atts['product_id'] ) {
141
+ return false;
142
+ }
143
  }
144
  $the_post_type = get_post_type( $atts['product_id'] );
145
+ if ( 'product' !== $the_post_type && 'product_variation' !== $the_post_type ) {
146
+ return false;
147
+ }
148
 
149
  // Class properties
150
+ $this->the_product = ( $is_passed_product ? $this->passed_product : wc_get_product( $atts['product_id'] ) );
151
+ if ( ! $this->the_product ) {
152
+ return false;
153
+ }
154
 
155
  return $atts;
156
  }
157
 
158
+ /**
159
+ * wcj_product_barcode.
160
+ *
161
+ * @version 3.3.0
162
+ * @since 3.3.0
163
+ */
164
+ function wcj_product_barcode( $atts ) {
165
+ switch ( $atts['code'] ) {
166
+ case '%id%':
167
+ $atts['code'] = $atts['product_id'];
168
+ break;
169
+ case '%sku%':
170
+ $atts['code'] = $this->the_product->get_sku();
171
+ break;
172
+ case '%url%':
173
+ $atts['code'] = $this->the_product->get_permalink();
174
+ break;
175
+ case '%meta%':
176
+ $atts['code'] = get_post_meta( $atts['product_id'], $atts['meta_key'], true );
177
+ break;
178
+ default:
179
+ return '';
180
+ }
181
+ return wcj_barcode( $atts );
182
+ }
183
+
184
  /**
185
  * wcj_product_id.
186
  *
777
 
778
  $wholesale_price_levels = array();
779
  if ( wcj_is_product_wholesale_enabled_per_product( $product_id ) ) {
780
+ for ( $i = 1; $i <= apply_filters( 'booster_option', 1, get_post_meta( $product_id, '_' . 'wcj_wholesale_price_levels_number' . $role_option_name_addon, true ) ); $i++ ) {
781
  $level_qty = get_post_meta( $product_id, '_' . 'wcj_wholesale_price_level_min_qty' . $role_option_name_addon . '_' . $i, true );
782
  $discount = get_post_meta( $product_id, '_' . 'wcj_wholesale_price_level_discount' . $role_option_name_addon . '_' . $i, true );
783
  $wholesale_price_levels[] = array( 'quantity' => $level_qty, 'discount' => $discount, );
784
  }
785
  } else {
786
+ for ( $i = 1; $i <= apply_filters( 'booster_option', 1, get_option( 'wcj_wholesale_price_levels_number' . $role_option_name_addon, 1 ) ); $i++ ) {
787
  $level_qty = get_option( 'wcj_wholesale_price_level_min_qty' . $role_option_name_addon . '_' . $i, PHP_INT_MAX );
788
  $discount = get_option( 'wcj_wholesale_price_level_discount_percent' . $role_option_name_addon . '_' . $i, 0 );
789
  $wholesale_price_levels[] = array( 'quantity' => $level_qty, 'discount' => $discount, );
includes/templates/cart-empty.php CHANGED
@@ -1,36 +1,36 @@
1
- <?php
2
- /**
3
- * Empty cart page
4
- *
5
- * This template can be overridden by copying it to yourtheme/woocommerce/cart/cart-empty.php.
6
- *
7
- * HOWEVER, on occasion WooCommerce will need to update template files and you
8
- * (the theme developer) will need to copy the new files to your theme to
9
- * maintain compatibility. We try to do this as little as possible, but it does
10
- * happen. When this occurs the version of the template file will be bumped and
11
- * the readme will list any important changes.
12
- *
13
- * @see https://docs.woocommerce.com/document/template-structure/
14
- * @author WooThemes
15
- * @package WooCommerce/Templates
16
- * @version 3.1.0
17
- */
18
-
19
- if ( ! defined( 'ABSPATH' ) ) {
20
- exit; // Exit if accessed directly
21
- }
22
-
23
- wc_print_notices();
24
-
25
- /**
26
- * @hooked wc_empty_cart_message - 10
27
- */
28
- do_action( 'woocommerce_cart_is_empty' );
29
-
30
- if ( wc_get_page_id( 'shop' ) > 0 ) : ?>
31
- <p class="return-to-shop">
32
- <a class="button wc-backward" href="<?php echo esc_url( apply_filters( 'woocommerce_return_to_shop_redirect', wc_get_page_permalink( 'shop' ) ) ); ?>">
33
- <?php echo apply_filters( 'wcj_return_to_shop_text', __( 'Return to shop', 'woocommerce' ) ); ?>
34
- </a>
35
- </p>
36
- <?php endif; ?>
1
+ <?php
2
+ /**
3
+ * Empty cart page
4
+ *
5
+ * This template can be overridden by copying it to yourtheme/woocommerce/cart/cart-empty.php.
6
+ *
7
+ * HOWEVER, on occasion WooCommerce will need to update template files and you
8
+ * (the theme developer) will need to copy the new files to your theme to
9
+ * maintain compatibility. We try to do this as little as possible, but it does
10
+ * happen. When this occurs the version of the template file will be bumped and
11
+ * the readme will list any important changes.
12
+ *
13
+ * @see https://docs.woocommerce.com/document/template-structure/
14
+ * @author WooThemes
15
+ * @package WooCommerce/Templates
16
+ * @version 3.1.0
17
+ */
18
+
19
+ if ( ! defined( 'ABSPATH' ) ) {
20
+ exit; // Exit if accessed directly
21
+ }
22
+
23
+ wc_print_notices();
24
+
25
+ /**
26
+ * @hooked wc_empty_cart_message - 10
27
+ */
28
+ do_action( 'woocommerce_cart_is_empty' );
29
+
30
+ if ( wc_get_page_id( 'shop' ) > 0 ) : ?>
31
+ <p class="return-to-shop">
32
+ <a class="button wc-backward" href="<?php echo esc_url( apply_filters( 'woocommerce_return_to_shop_redirect', wc_get_page_permalink( 'shop' ) ) ); ?>">
33
+ <?php echo apply_filters( 'wcj_return_to_shop_text', __( 'Return to shop', 'woocommerce' ) ); ?>
34
+ </a>
35
+ </p>
36
+ <?php endif; ?>
includes/tools/class-wcj-order-statuses-tool.php CHANGED
@@ -155,7 +155,7 @@ class WCJ_Order_Statuses_Tool {
155
  $color_html = '<input disabled type="color" value="' . $icon_data['color'] . '">';
156
  $delete_button = '<a class="button-primary" href="' . add_query_arg( 'delete', $status, remove_query_arg( 'edit' ) ) .
157
  '" onclick="return confirm(\'' . __( 'Are you sure?', 'woocommerce-jetpack' ) . '\')">' . __( 'Delete', 'woocommerce-jetpack' ) . '</a>';
158
- $edit_button = '<a class="button-primary"' . ( '' != apply_filters( 'booster_get_message', '', 'desc' ) ?
159
  ' disabled title="' . __( 'Get Booster Plus to enable.', 'woocommerce-jetpack' ) . '"' :
160
  ' href="' . add_query_arg( 'edit', $status, remove_query_arg( 'delete' ) ) . '"' ) . '>' . __( 'Edit', 'woocommerce-jetpack' ) . '</a>';
161
  $row = array_merge( $row, array(
155
  $color_html = '<input disabled type="color" value="' . $icon_data['color'] . '">';
156
  $delete_button = '<a class="button-primary" href="' . add_query_arg( 'delete', $status, remove_query_arg( 'edit' ) ) .
157
  '" onclick="return confirm(\'' . __( 'Are you sure?', 'woocommerce-jetpack' ) . '\')">' . __( 'Delete', 'woocommerce-jetpack' ) . '</a>';
158
+ $edit_button = '<a class="button-primary"' . ( '' != apply_filters( 'booster_message', '', 'desc' ) ?
159
  ' disabled title="' . __( 'Get Booster Plus to enable.', 'woocommerce-jetpack' ) . '"' :
160
  ' href="' . add_query_arg( 'edit', $status, remove_query_arg( 'delete' ) ) . '"' ) . '>' . __( 'Edit', 'woocommerce-jetpack' ) . '</a>';
161
  $row = array_merge( $row, array(
langs/woocommerce-jetpack.pot CHANGED
@@ -1,5 +1,28 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  #: includes/class-wcj-add-to-cart.php:23
2
- msgid "Add to Cart Labels"
3
  msgstr ""
4
 
5
  #: includes/class-wcj-add-to-cart.php:24
@@ -49,14 +72,14 @@ msgstr ""
49
  #: includes/class-wcj-admin-bar.php:166 includes/class-wcj-admin-bar.php:461
50
  #: includes/class-wcj-admin-bar.php:561
51
  #: includes/admin/class-wc-settings-jetpack.php:211
52
- #: includes/admin/class-wc-settings-jetpack.php:405
53
- #: includes/core/class-wcj-admin.php:129
54
  msgid "Settings"
55
  msgstr ""
56
 
57
  #: includes/class-wcj-admin-bar.php:170
58
- #: includes/admin/class-wc-settings-jetpack.php:407
59
- #: includes/classes/class-wcj-module.php:645
60
  msgid "Documentation"
61
  msgstr ""
62
 
@@ -75,7 +98,7 @@ msgstr ""
75
 
76
  #: includes/class-wcj-admin-bar.php:237 includes/class-wcj-admin-bar.php:274
77
  #: includes/class-wcj-admin-bar.php:585
78
- #: includes/classes/class-wcj-module.php:478
79
  #: includes/settings/wcj-settings-wpml.php:15
80
  msgid "Tools"
81
  msgstr ""
@@ -86,14 +109,14 @@ msgstr ""
86
 
87
  #: includes/class-wcj-admin-bar.php:262
88
  #: includes/class-wcj-checkout-files-upload.php:145
89
- #: includes/class-wcj-eu-vat-number.php:86
90
- #: includes/class-wcj-payment-gateways.php:75
91
  #: includes/class-wcj-track-users.php:117
92
  #: includes/class-wcj-track-users.php:213
93
  #: includes/admin/class-wc-settings-jetpack.php:24
94
  #: includes/admin/class-wc-settings-jetpack.php:213
95
  #: includes/classes/class-wcj-module.php:295
96
- #: includes/classes/class-wcj-module.php:505
97
  msgid "Booster"
98
  msgstr ""
99
 
@@ -203,7 +226,7 @@ msgid "Most Stocked"
203
  msgstr ""
204
 
205
  #: includes/class-wcj-admin-bar.php:405
206
- #: includes/class-wcj-eu-vat-number.php:150
207
  msgid "Taxes"
208
  msgstr ""
209
 
@@ -296,7 +319,7 @@ msgstr ""
296
  #: includes/settings/wcj-settings-checkout-custom-fields.php:170
297
  #: includes/settings/wcj-settings-checkout-custom-info.php:56
298
  #: includes/settings/wcj-settings-empty-cart.php:59
299
- #: includes/settings/wcj-settings-left-to-free-shipping.php:125
300
  #: includes/settings/wcj-settings-price-by-user-role.php:46
301
  msgid "Shipping"
302
  msgstr ""
@@ -441,44 +464,48 @@ msgstr ""
441
  msgid "Current PHP time limit: %s seconds."
442
  msgstr ""
443
 
444
- #: includes/class-wcj-admin-tools.php:69
445
  #: includes/settings/wcj-settings-export.php:157
446
  #: includes/settings/wcj-settings-export.php:236
447
  msgid "Product Meta"
448
  msgstr ""
449
 
450
- #: includes/class-wcj-admin-tools.php:86
451
  #: includes/settings/wcj-settings-export.php:86
452
  #: includes/settings/wcj-settings-export.php:154
453
  msgid "Order Meta"
454
  msgstr ""
455
 
456
- #: includes/class-wcj-admin-tools.php:120
457
  msgid "Order Items Meta"
458
  msgstr ""
459
 
460
- #: includes/class-wcj-admin-tools.php:122
461
  msgid "Item Key"
462
  msgstr ""
463
 
464
- #: includes/class-wcj-admin-tools.php:122
465
  msgid "Item Meta Key"
466
  msgstr ""
467
 
468
- #: includes/class-wcj-admin-tools.php:122
469
  msgid "Item Meta Value"
470
  msgstr ""
471
 
472
- #: includes/class-wcj-admin-tools.php:148
473
  msgid "Delete Log"
474
  msgstr ""
475
 
476
- #: includes/class-wcj-admin-tools.php:151
477
  #, php-format
478
  msgid "Now: %s"
479
  msgstr ""
480
 
481
- #: includes/class-wcj-admin-tools.php:181
 
 
 
 
482
  msgid "NOT DEFINED"
483
  msgstr ""
484
 
@@ -560,12 +587,17 @@ msgid ""
560
  "selected fields on checkout for logged users and more."
561
  msgstr ""
562
 
563
- #: includes/class-wcj-checkout-customization.php:84
 
 
 
 
 
564
  #: includes/settings/wcj-settings-checkout-customization.php:86
565
  msgid "Thank you. Your order has been received."
566
  msgstr ""
567
 
568
- #: includes/class-wcj-checkout-customization.php:103
569
  #: includes/settings/wcj-settings-checkout-customization.php:72
570
  msgid "This field can not be changed"
571
  msgstr ""
@@ -730,21 +762,21 @@ msgstr ""
730
  msgid "Display prices for WooCommerce products in different currencies."
731
  msgstr ""
732
 
733
- #: includes/class-wcj-currency-per-product.php:170
734
  #: includes/settings/wcj-settings-currency-per-product.php:43
735
  msgid ""
736
  "Only one product can be added to the cart. Clear the cart or finish the "
737
  "order, before adding another product to the cart."
738
  msgstr ""
739
 
740
- #: includes/class-wcj-currency-per-product.php:185
741
  #: includes/settings/wcj-settings-currency-per-product.php:50
742
  msgid ""
743
  "Only products with same currency can be added to the cart. Clear the cart or "
744
  "finish the order, before adding products with another currency to the cart."
745
  msgstr ""
746
 
747
- #: includes/class-wcj-currency-per-product.php:231
748
  #, php-format
749
  msgctxt "Price range: from-to"
750
  msgid "%1$s&ndash;%2$s"
@@ -912,7 +944,7 @@ msgid "Booster: Send Email: %s"
912
  msgstr ""
913
 
914
  #: includes/class-wcj-empty-cart-button.php:25
915
- #: includes/shortcodes/class-wcj-shortcodes-general.php:375
916
  msgid "Empty Cart Button"
917
  msgstr ""
918
 
@@ -923,7 +955,7 @@ msgid ""
923
  msgstr ""
924
 
925
  #: includes/class-wcj-eu-vat-number.php:24
926
- #: includes/class-wcj-eu-vat-number.php:227
927
  #: includes/settings/wcj-settings-eu-vat-number.php:22
928
  #: includes/settings/wcj-settings-eu-vat-number.php:29
929
  msgid "EU VAT Number"
@@ -944,45 +976,50 @@ msgstr ""
944
  msgid "Add all EU countries VAT standard rates to WooCommerce."
945
  msgstr ""
946
 
947
- #: includes/class-wcj-eu-vat-number.php:138
948
  msgid "Customer IP"
949
  msgstr ""
950
 
951
- #: includes/class-wcj-eu-vat-number.php:142
 
952
  msgid "Country by IP"
953
  msgstr ""
954
 
955
- #: includes/class-wcj-eu-vat-number.php:146
956
  msgid "Customer EU VAT Number"
957
  msgstr ""
958
 
959
- #: includes/class-wcj-eu-vat-number.php:297
 
 
 
 
960
  #: includes/settings/wcj-settings-eu-vat-number.php:165
961
  msgid "Validating VAT. Please wait..."
962
  msgstr ""
963
 
964
- #: includes/class-wcj-eu-vat-number.php:298
965
  #: includes/settings/wcj-settings-eu-vat-number.php:172
966
  msgid "VAT is valid."
967
  msgstr ""
968
 
969
- #: includes/class-wcj-eu-vat-number.php:299
970
  #: includes/settings/wcj-settings-eu-vat-number.php:179
971
  msgid "VAT is not valid."
972
  msgstr ""
973
 
974
- #: includes/class-wcj-eu-vat-number.php:300
975
  #: includes/settings/wcj-settings-eu-vat-number.php:187
976
  msgid "Validation failed. Please try again."
977
  msgstr ""
978
 
979
- #: includes/class-wcj-eu-vat-number.php:404
980
  #: includes/settings/wcj-settings-eu-vat-number.php:83
981
  msgid "<strong>EU VAT Number</strong> is not valid."
982
  msgstr ""
983
 
984
  #: includes/class-wcj-export-import.php:26
985
- #: includes/admin/class-wc-settings-jetpack.php:291
986
  msgid "Export"
987
  msgstr ""
988
 
@@ -1140,7 +1177,7 @@ msgstr ""
1140
  #: includes/class-wcj-general.php:197 includes/class-wcj-general.php:210
1141
  #: includes/class-wcj-sku.php:333
1142
  #: includes/reports/wcj-class-reports-sales.php:192
1143
- #: includes/settings/wcj-settings-order-numbers.php:123
1144
  #: includes/settings/wcj-settings-product-by-user.php:161
1145
  #: includes/settings/wcj-settings-related-products.php:30
1146
  msgid "ID"
@@ -1156,17 +1193,18 @@ msgstr ""
1156
 
1157
  #: includes/class-wcj-general.php:197
1158
  #: includes/class-wcj-product-by-user.php:197
1159
- #: includes/settings/wcj-settings-pdf-invoicing-styling.php:117
1160
  #: includes/tools/class-wcj-order-statuses-tool.php:142
1161
  #: includes/tools/class-wcj-order-statuses-tool.php:214
1162
  msgid "Actions"
1163
  msgstr ""
1164
 
1165
  #: includes/class-wcj-general.php:203
 
1166
  #: includes/class-wcj-product-bulk-meta-editor.php:367
1167
  #: includes/class-wcj-product-by-user.php:206
1168
  #: includes/pdf-invoices/submodules/class-wcj-pdf-invoicing-display.php:138
1169
- #: includes/pdf-invoices/submodules/class-wcj-pdf-invoicing-display.php:303
1170
  #: includes/shortcodes/class-wcj-shortcodes-products-add-form.php:367
1171
  #: includes/tools/class-wcj-order-statuses-tool.php:157
1172
  msgid "Delete"
@@ -1181,7 +1219,7 @@ msgid "Add New Role"
1181
  msgstr ""
1182
 
1183
  #: includes/class-wcj-general.php:215
1184
- #: includes/settings/wcj-settings-admin-orders-list.php:132
1185
  #: includes/settings/wcj-settings-checkout-custom-fields.php:22
1186
  #: includes/settings/wcj-settings-checkout-custom-fields.php:29
1187
  #: includes/settings/wcj-settings-checkout-custom-fields.php:55
@@ -1194,11 +1232,13 @@ msgstr ""
1194
  #: includes/settings/wcj-settings-order-custom-statuses.php:37
1195
  #: includes/settings/wcj-settings-order-custom-statuses.php:70
1196
  #: includes/settings/wcj-settings-order-min-amount.php:53
1197
- #: includes/settings/wcj-settings-orders.php:81
1198
- #: includes/settings/wcj-settings-pdf-invoicing-display.php:151
1199
- #: includes/settings/wcj-settings-pdf-invoicing.php:132
 
1200
  #: includes/settings/wcj-settings-product-by-country.php:110
1201
  #: includes/settings/wcj-settings-product-by-user.php:114
 
1202
  #: includes/settings/wcj-settings-product-tabs.php:227
1203
  #: includes/settings/wcj-settings-purchase-data.php:134
1204
  #: includes/settings/wcj-settings-purchase-data.php:143
@@ -1230,7 +1270,7 @@ msgid "Total Products:"
1230
  msgstr ""
1231
 
1232
  #: includes/class-wcj-global-discount.php:27
1233
- #: includes/admin/class-wc-settings-jetpack.php:460
1234
  msgid "Global Discount"
1235
  msgstr ""
1236
 
@@ -1249,10 +1289,10 @@ msgstr ""
1249
  #: includes/class-wcj-left-to-free-shipping.php:62
1250
  #: includes/class-wcj-left-to-free-shipping.php:72
1251
  #: includes/class-wcj-left-to-free-shipping.php:82
1252
- #: includes/functions/wcj-functions-general.php:359
1253
  #: includes/settings/wcj-settings-left-to-free-shipping.php:37
1254
- #: includes/settings/wcj-settings-left-to-free-shipping.php:72
1255
- #: includes/settings/wcj-settings-left-to-free-shipping.php:111
1256
  #: includes/widgets/class-wcj-widget-left-to-free-shipping.php:61
1257
  #, php-format
1258
  msgid "%left_to_free% left to free shipping"
@@ -1266,6 +1306,10 @@ msgstr ""
1266
  msgid "Add custom info to WooCommerce mini cart widget."
1267
  msgstr ""
1268
 
 
 
 
 
1269
  #: includes/class-wcj-more-button-labels.php:24
1270
  msgid "More Button Labels"
1271
  msgstr ""
@@ -1314,10 +1358,11 @@ msgstr ""
1314
  #: includes/class-wcj-my-account.php:75
1315
  #: includes/class-wcj-product-bulk-meta-editor.php:279
1316
  #: includes/class-wcj-product-by-user.php:206
1317
- #: includes/class-wcj-purchase-data.php:93
1318
  #: includes/class-wcj-track-users.php:296
1319
- #: includes/classes/class-wcj-module.php:614
1320
- #: includes/functions/wcj-functions-html.php:95
 
1321
  #: includes/reports/wcj-class-reports-monthly-sales.php:341
1322
  #: includes/settings/wcj-settings-empty-cart.php:80
1323
  #: includes/shortcodes/class-wcj-shortcodes-products-add-form.php:367
@@ -1345,7 +1390,7 @@ msgstr ""
1345
  #: includes/class-wcj-offer-price.php:113
1346
  #: includes/functions/wcj-functions-reports.php:21
1347
  #: includes/functions/wcj-functions-reports.php:24
1348
- #: includes/settings/wcj-settings-order-numbers.php:124
1349
  #: includes/settings/wcj-settings-related-products.php:23
1350
  msgid "Date"
1351
  msgstr ""
@@ -1353,6 +1398,7 @@ msgstr ""
1353
  #: includes/class-wcj-offer-price.php:114
1354
  #: includes/export/class-wcj-fields-helper.php:288
1355
  #: includes/reports/wcj-class-reports-stock.php:255
 
1356
  #: includes/settings/wcj-settings-related-products.php:33
1357
  #: includes/settings/meta-box/wcj-settings-meta-box-wholesale-price.php:72
1358
  msgid "Price"
@@ -1369,7 +1415,7 @@ msgstr ""
1369
  #: includes/class-wcj-offer-price.php:117
1370
  #: includes/export/class-wcj-fields-helper.php:75
1371
  #: includes/input-fields/wcj-product-input-fields-options.php:45
1372
- #: includes/reports/wcj-class-reports-customers.php:90
1373
  #: includes/settings/wcj-settings-checkout-custom-fields.php:132
1374
  msgid "Email"
1375
  msgstr ""
@@ -1586,37 +1632,42 @@ msgstr ""
1586
  msgid "Minimum WooCommerce order amount (optionally by user role)."
1587
  msgstr ""
1588
 
1589
- #: includes/class-wcj-order-numbers.php:25
1590
- #: includes/settings/wcj-settings-order-numbers.php:14
1591
  msgid "Order Numbers"
1592
  msgstr ""
1593
 
1594
- #: includes/class-wcj-order-numbers.php:26
1595
  msgid ""
1596
  "WooCommerce sequential order numbering, custom order number prefix, suffix "
1597
  "and number width."
1598
  msgstr ""
1599
 
1600
- #: includes/class-wcj-order-numbers.php:32
1601
  msgid "Orders Renumerate"
1602
  msgstr ""
1603
 
1604
- #: includes/class-wcj-order-numbers.php:33
1605
  msgid "Tool renumerates all orders."
1606
  msgstr ""
1607
 
1608
- #: includes/class-wcj-order-numbers.php:176
1609
  msgid "Orders successfully renumerated!"
1610
  msgstr ""
1611
 
1612
- #: includes/class-wcj-order-numbers.php:183
 
 
 
 
 
1613
  #, php-format
1614
  msgid ""
1615
  "Press the button below to renumerate all existing orders starting from order "
1616
  "counter settings in <a href=\"%s\">Order Numbers</a> module."
1617
  msgstr ""
1618
 
1619
- #: includes/class-wcj-order-numbers.php:190
1620
  msgid "Renumerate orders"
1621
  msgstr ""
1622
 
@@ -1663,10 +1714,14 @@ msgid ""
1663
  msgstr ""
1664
 
1665
  #: includes/class-wcj-orders.php:114
 
 
 
 
1666
  msgid "Regenerate download permissions"
1667
  msgstr ""
1668
 
1669
- #: includes/class-wcj-orders.php:128
1670
  #, php-format
1671
  msgid "Download permissions regenerated for %s order."
1672
  msgid_plural "Download permissions regenerated for %s orders."
@@ -1754,7 +1809,7 @@ msgid "Maximum amount for %gateway_title% is %max_amount%"
1754
  msgstr ""
1755
 
1756
  #: includes/class-wcj-payment-gateways-per-category.php:24
1757
- #: includes/admin/class-wc-settings-jetpack.php:459
1758
  msgid "Gateways per Product or Category"
1759
  msgstr ""
1760
 
@@ -1772,12 +1827,12 @@ msgstr ""
1772
  msgid "Add multiple custom payment gateways to WooCommerce."
1773
  msgstr ""
1774
 
1775
- #: includes/class-wcj-payment-gateways.php:51
1776
  #, php-format
1777
  msgid "<strong>%s</strong> is a required field."
1778
  msgstr ""
1779
 
1780
- #: includes/class-wcj-payment-gateways.php:75
1781
  #, php-format
1782
  msgid "%s Fields"
1783
  msgstr ""
@@ -1811,15 +1866,15 @@ msgstr ""
1811
 
1812
  #: includes/class-wcj-pdf-invoicing.php:89
1813
  #: includes/class-wcj-pdf-invoicing.php:90
1814
- #: includes/settings/wcj-settings-price-by-country.php:164
1815
- #: includes/settings/wcj-settings-price-by-country.php:169
1816
  #: includes/settings/wcj-settings-price-by-country.php:174
 
 
1817
  msgid "Generate"
1818
  msgstr ""
1819
 
1820
  #: includes/class-wcj-pdf-invoicing.php:97
1821
  #: includes/class-wcj-pdf-invoicing.php:98
1822
- #: includes/settings/wcj-settings-pdf-invoicing-styling.php:120
1823
  msgid "Download"
1824
  msgstr ""
1825
 
@@ -1852,17 +1907,17 @@ msgstr ""
1852
  msgid "You are not allowed to view the invoice."
1853
  msgstr ""
1854
 
1855
- #: includes/class-wcj-price-by-country.php:23
1856
  msgid "Prices and Currencies by Country"
1857
  msgstr ""
1858
 
1859
- #: includes/class-wcj-price-by-country.php:24
1860
  msgid ""
1861
  "Change WooCommerce product price and currency automatically by customer's "
1862
  "country."
1863
  msgstr ""
1864
 
1865
- #: includes/class-wcj-price-by-country.php:90
1866
  msgid "Price filter widget product prices recalculated."
1867
  msgstr ""
1868
 
@@ -1901,7 +1956,7 @@ msgid "Create any custom price label for any WooCommerce product."
1901
  msgstr ""
1902
 
1903
  #: includes/class-wcj-price-labels.php:32
1904
- #: includes/settings/wcj-settings-price-labels.php:88
1905
  msgid "Instead of the price"
1906
  msgstr ""
1907
 
@@ -1919,7 +1974,7 @@ msgstr ""
1919
 
1920
  #: includes/class-wcj-price-labels.php:40
1921
  #: includes/class-wcj-product-info.php:254
1922
- #: includes/class-wcj-shipping-options.php:173
1923
  #: includes/settings/wcj-settings-add-to-cart.php:52
1924
  #: includes/settings/wcj-settings-address-formats.php:20
1925
  #: includes/settings/wcj-settings-admin-bar.php:20
@@ -1930,6 +1985,7 @@ msgstr ""
1930
  #: includes/settings/wcj-settings-admin-tools.php:34
1931
  #: includes/settings/wcj-settings-admin-tools.php:74
1932
  #: includes/settings/wcj-settings-admin-tools.php:81
 
1933
  #: includes/settings/wcj-settings-breadcrumbs.php:20
1934
  #: includes/settings/wcj-settings-call-for-price.php:79
1935
  #: includes/settings/wcj-settings-cart-customization.php:34
@@ -1937,6 +1993,7 @@ msgstr ""
1937
  #: includes/settings/wcj-settings-checkout-custom-fields.php:107
1938
  #: includes/settings/wcj-settings-checkout-custom-fields.php:209
1939
  #: includes/settings/wcj-settings-checkout-customization.php:78
 
1940
  #: includes/settings/wcj-settings-checkout-files-upload.php:291
1941
  #: includes/settings/wcj-settings-coupon-code-generator.php:32
1942
  #: includes/settings/wcj-settings-currency-exchange-rates.php:54
@@ -1946,6 +2003,7 @@ msgstr ""
1946
  #: includes/settings/wcj-settings-currency-per-product.php:73
1947
  #: includes/settings/wcj-settings-currency-per-product.php:80
1948
  #: includes/settings/wcj-settings-currency-per-product.php:87
 
1949
  #: includes/settings/wcj-settings-custom-css.php:34
1950
  #: includes/settings/wcj-settings-emails-verification.php:28
1951
  #: includes/settings/wcj-settings-emails-verification.php:36
@@ -1956,52 +2014,54 @@ msgstr ""
1956
  #: includes/settings/wcj-settings-general.php:202
1957
  #: includes/settings/wcj-settings-global-discount.php:52
1958
  #: includes/settings/wcj-settings-left-to-free-shipping.php:27
1959
- #: includes/settings/wcj-settings-left-to-free-shipping.php:60
1960
- #: includes/settings/wcj-settings-left-to-free-shipping.php:99
 
1961
  #: includes/settings/wcj-settings-multicurrency-base-price.php:40
1962
  #: includes/settings/wcj-settings-multicurrency-base-price.php:55
1963
  #: includes/settings/wcj-settings-multicurrency.php:39
1964
  #: includes/settings/wcj-settings-multicurrency.php:48
1965
  #: includes/settings/wcj-settings-offer-price.php:19
1966
  #: includes/settings/wcj-settings-order-custom-statuses.php:45
1967
- #: includes/settings/wcj-settings-order-numbers.php:88
1968
- #: includes/settings/wcj-settings-order-numbers.php:96
1969
- #: includes/settings/wcj-settings-order-numbers.php:103
1970
  #: includes/settings/wcj-settings-order-quantities.php:53
1971
  #: includes/settings/wcj-settings-order-quantities.php:111
1972
  #: includes/settings/wcj-settings-order-quantities.php:137
1973
  #: includes/settings/wcj-settings-order-quantities.php:144
1974
  #: includes/settings/wcj-settings-orders.php:25
1975
  #: includes/settings/wcj-settings-orders.php:54
 
1976
  #: includes/settings/wcj-settings-pdf-invoicing-display.php:113
1977
  #: includes/settings/wcj-settings-pdf-invoicing-footer.php:23
1978
  #: includes/settings/wcj-settings-pdf-invoicing-header.php:23
1979
  #: includes/settings/wcj-settings-pdf-invoicing-numbering.php:23
1980
  #: includes/settings/wcj-settings-pdf-invoicing-styling.php:73
1981
- #: includes/settings/wcj-settings-pdf-invoicing.php:81
1982
  #: includes/settings/wcj-settings-price-by-country.php:69
1983
  #: includes/settings/wcj-settings-price-by-country.php:89
1984
  #: includes/settings/wcj-settings-price-by-country.php:105
1985
- #: includes/settings/wcj-settings-price-by-country.php:113
1986
- #: includes/settings/wcj-settings-price-by-country.php:122
1987
  #: includes/settings/wcj-settings-price-by-user-role.php:20
1988
  #: includes/settings/wcj-settings-price-by-user-role.php:47
1989
  #: includes/settings/wcj-settings-price-formats.php:21
1990
- #: includes/settings/wcj-settings-price-labels.php:155
1991
  #: includes/settings/wcj-settings-product-add-to-cart.php:25
1992
  #: includes/settings/wcj-settings-product-add-to-cart.php:41
1993
  #: includes/settings/wcj-settings-product-add-to-cart.php:80
1994
  #: includes/settings/wcj-settings-product-add-to-cart.php:132
1995
  #: includes/settings/wcj-settings-product-add-to-cart.php:162
1996
  #: includes/settings/wcj-settings-product-add-to-cart.php:178
1997
- #: includes/settings/wcj-settings-product-add-to-cart.php:209
1998
- #: includes/settings/wcj-settings-product-add-to-cart.php:226
1999
- #: includes/settings/wcj-settings-product-add-to-cart.php:267
2000
- #: includes/settings/wcj-settings-product-add-to-cart.php:281
2001
- #: includes/settings/wcj-settings-product-addons.php:24
2002
- #: includes/settings/wcj-settings-product-addons.php:43
2003
- #: includes/settings/wcj-settings-product-addons.php:67
2004
- #: includes/settings/wcj-settings-product-addons.php:163
 
2005
  #: includes/settings/wcj-settings-product-bulk-meta-editor.php:21
2006
  #: includes/settings/wcj-settings-product-bulk-meta-editor.php:29
2007
  #: includes/settings/wcj-settings-product-by-country.php:21
@@ -2025,12 +2085,11 @@ msgstr ""
2025
  #: includes/settings/wcj-settings-product-input-fields.php:317
2026
  #: includes/settings/wcj-settings-product-open-pricing.php:87
2027
  #: includes/settings/wcj-settings-product-open-pricing.php:94
2028
- #: includes/settings/wcj-settings-product-open-pricing.php:108
2029
  #: includes/settings/wcj-settings-product-price-by-formula.php:30
2030
  #: includes/settings/wcj-settings-product-tabs.php:23
2031
  #: includes/settings/wcj-settings-product-tabs.php:212
2032
  #: includes/settings/wcj-settings-product-tabs.php:220
2033
- #: includes/settings/wcj-settings-products-xml.php:77
2034
  #: includes/settings/wcj-settings-purchase-data.php:22
2035
  #: includes/settings/wcj-settings-purchase-data.php:29
2036
  #: includes/settings/wcj-settings-purchase-data.php:36
@@ -2059,7 +2118,8 @@ msgstr ""
2059
  #: includes/settings/wcj-settings-wholesale-price.php:22
2060
  #: includes/settings/wcj-settings-wholesale-price.php:29
2061
  #: includes/settings/wcj-settings-wholesale-price.php:36
2062
- #: includes/settings/meta-box/wcj-settings-meta-box-product-add-to-cart.php:92
 
2063
  #: includes/settings/meta-box/wcj-settings-meta-box-product-addons.php:35
2064
  #: includes/settings/meta-box/wcj-settings-meta-box-related-products.php:17
2065
  #: includes/settings/meta-box/wcj-settings-meta-box-sale-flash.php:14
@@ -2098,63 +2158,60 @@ msgstr ""
2098
  msgid "Booster: Custom Price Labels"
2099
  msgstr ""
2100
 
2101
- #: includes/class-wcj-product-add-to-cart.php:24
2102
- msgid "Product Add to Cart"
 
2103
  msgstr ""
2104
 
2105
- #: includes/class-wcj-product-add-to-cart.php:25
2106
  msgid "Set any local url to redirect to on WooCommerce Add to Cart."
2107
  msgstr ""
2108
 
2109
- #: includes/class-wcj-product-add-to-cart.php:26
2110
  msgid "Automatically add to cart on product visit."
2111
  msgstr ""
2112
 
2113
- #: includes/class-wcj-product-add-to-cart.php:27
2114
  msgid "Display radio buttons instead of drop box for variable products."
2115
  msgstr ""
2116
 
2117
- #: includes/class-wcj-product-add-to-cart.php:28
2118
  msgid "Disable quantity input."
2119
  msgstr ""
2120
 
2121
- #: includes/class-wcj-product-add-to-cart.php:29
2122
- msgid "Disable add to cart button on per product basis."
2123
- msgstr ""
2124
-
2125
- #: includes/class-wcj-product-add-to-cart.php:30
2126
  msgid "Open external products on add to cart in new window."
2127
  msgstr ""
2128
 
2129
- #: includes/class-wcj-product-add-to-cart.php:31
2130
  msgid ""
2131
  "Replace Add to Cart button on archives with button from single product pages."
2132
  msgstr ""
2133
 
2134
- #: includes/class-wcj-product-add-to-cart.php:32
2135
  msgid "Customize Add to Cart messages."
2136
  msgstr ""
2137
 
2138
- #: includes/class-wcj-product-add-to-cart.php:146
2139
  #, php-format
2140
  msgctxt "Item name in quotes"
2141
  msgid "&ldquo;%s&rdquo;"
2142
  msgstr ""
2143
 
2144
- #: includes/class-wcj-product-add-to-cart.php:151
2145
  #, php-format
2146
  msgid "%s has been added to your cart."
2147
  msgid_plural "%s have been added to your cart."
2148
  msgstr[0] ""
2149
  msgstr[1] ""
2150
 
2151
- #: includes/class-wcj-product-add-to-cart.php:155
2152
- #: includes/settings/wcj-settings-product-add-to-cart.php:276
2153
  msgid "Continue shopping"
2154
  msgstr ""
2155
 
2156
- #: includes/class-wcj-product-add-to-cart.php:157
2157
- #: includes/settings/wcj-settings-product-add-to-cart.php:290
2158
  msgid "View cart"
2159
  msgstr ""
2160
 
@@ -2166,11 +2223,11 @@ msgstr ""
2166
  msgid "Add (paid/free/discount) addons to WooCommerce products."
2167
  msgstr ""
2168
 
2169
- #: includes/class-wcj-product-addons.php:101
2170
  msgid "Some of the required addons are not selected!"
2171
  msgstr ""
2172
 
2173
- #: includes/class-wcj-product-addons.php:116
2174
  msgid ""
2175
  "Booster: Free plugin's version is limited to only three products with per "
2176
  "product addons enabled at a time. You will need to get <a href=\"http://"
@@ -2278,12 +2335,15 @@ msgid "for example %s"
2278
  msgstr ""
2279
 
2280
  #: includes/class-wcj-product-bulk-meta-editor.php:232
2281
- #: includes/settings/wcj-settings-wholesale-price.php:43
 
 
2282
  msgid "Show"
2283
  msgstr ""
2284
 
2285
  #: includes/class-wcj-product-bulk-meta-editor.php:236
2286
  #: includes/class-wcj-product-bulk-meta-editor.php:340
 
2287
  msgid "Meta"
2288
  msgstr ""
2289
 
@@ -2294,7 +2354,7 @@ msgid ""
2294
  msgstr ""
2295
 
2296
  #: includes/class-wcj-product-bulk-meta-editor.php:294
2297
- #: includes/settings/wcj-settings-admin-orders-list.php:70
2298
  #: includes/settings/wcj-settings-admin-products-list.php:56
2299
  #: includes/settings/wcj-settings-export.php:91
2300
  #: includes/settings/wcj-settings-export.php:162
@@ -2324,7 +2384,7 @@ msgid "Save"
2324
  msgstr ""
2325
 
2326
  #: includes/class-wcj-product-bulk-meta-editor.php:389
2327
- #: includes/class-wcj-purchase-data.php:76
2328
  #: includes/export/class-wcj-fields-helper.php:280
2329
  #: includes/functions/wcj-functions-reports.php:25
2330
  #: includes/settings/wcj-settings-product-bulk-meta-editor.php:42
@@ -2403,7 +2463,7 @@ msgid "Products category"
2403
  msgstr ""
2404
 
2405
  #: includes/class-wcj-product-bulk-price-converter.php:260
2406
- #: includes/shortcodes/class-wcj-shortcodes-products.php:305
2407
  msgid "Any"
2408
  msgstr ""
2409
 
@@ -2539,7 +2599,8 @@ msgstr ""
2539
  #: includes/settings/wcj-settings-export.php:75
2540
  #: includes/settings/wcj-settings-export.php:143
2541
  #: includes/settings/wcj-settings-export.php:225
2542
- #: includes/settings/wcj-settings-product-addons.php:86
 
2543
  #: includes/settings/wcj-settings-product-by-user.php:167
2544
  #: includes/settings/wcj-settings-product-tabs.php:52
2545
  #: includes/settings/wcj-settings-product-tabs.php:368
@@ -2566,8 +2627,8 @@ msgid "Edit"
2566
  msgstr ""
2567
 
2568
  #: includes/class-wcj-product-custom-info.php:24
2569
- #: includes/admin/class-wc-settings-jetpack.php:461
2570
- #: includes/functions/wcj-functions-general.php:170
2571
  msgid "Product Info"
2572
  msgstr ""
2573
 
@@ -2617,40 +2678,47 @@ msgstr ""
2617
 
2618
  #: includes/class-wcj-product-info.php:123
2619
  #: includes/settings/wcj-settings-offer-price.php:91
 
2620
  #: includes/settings/wcj-settings-product-custom-info.php:102
2621
  msgid "Before product"
2622
  msgstr ""
2623
 
2624
  #: includes/class-wcj-product-info.php:124
 
2625
  #: includes/settings/wcj-settings-product-custom-info.php:103
2626
  msgid "Before product title"
2627
  msgstr ""
2628
 
2629
  #: includes/class-wcj-product-info.php:125
2630
  #: includes/settings/wcj-settings-offer-price.php:92
 
2631
  #: includes/settings/wcj-settings-product-custom-info.php:106
2632
  msgid "After product"
2633
  msgstr ""
2634
 
2635
  #: includes/class-wcj-product-info.php:126
 
2636
  #: includes/settings/wcj-settings-product-custom-info.php:105
2637
  msgid "After product title"
2638
  msgstr ""
2639
 
2640
  #: includes/class-wcj-product-info.php:138
2641
  #: includes/settings/wcj-settings-offer-price.php:72
 
2642
  #: includes/settings/wcj-settings-product-custom-info.php:93
2643
  msgid "Inside single product summary"
2644
  msgstr ""
2645
 
2646
  #: includes/class-wcj-product-info.php:139
2647
  #: includes/settings/wcj-settings-offer-price.php:71
 
2648
  #: includes/settings/wcj-settings-product-custom-info.php:92
2649
  msgid "Before single product summary"
2650
  msgstr ""
2651
 
2652
  #: includes/class-wcj-product-info.php:140
2653
  #: includes/settings/wcj-settings-offer-price.php:73
 
2654
  #: includes/settings/wcj-settings-product-custom-info.php:94
2655
  msgid "After single product summary"
2656
  msgstr ""
@@ -2660,9 +2728,11 @@ msgstr ""
2660
  #: includes/settings/wcj-settings-checkout-custom-info.php:47
2661
  #: includes/settings/wcj-settings-checkout-files-upload.php:51
2662
  #: includes/settings/wcj-settings-left-to-free-shipping.php:43
2663
- #: includes/settings/wcj-settings-left-to-free-shipping.php:78
2664
- #: includes/settings/wcj-settings-left-to-free-shipping.php:117
2665
  #: includes/settings/wcj-settings-mini-cart.php:46
 
 
2666
  #: includes/settings/wcj-settings-product-custom-info.php:85
2667
  #: includes/settings/wcj-settings-product-info.php:50
2668
  #: includes/settings/wcj-settings-product-info.php:83
@@ -2699,7 +2769,7 @@ msgid "[wcj_product_total_sales before=\"Total sales: \"]"
2699
  msgstr ""
2700
 
2701
  #: includes/class-wcj-product-input-fields.php:24
2702
- #: includes/admin/class-wc-settings-jetpack.php:462
2703
  #: includes/input-fields/class-wcj-product-input-fields-core.php:123
2704
  msgid "Product Input Fields"
2705
  msgstr ""
@@ -2820,11 +2890,13 @@ msgid "Order"
2820
  msgstr ""
2821
 
2822
  #: includes/class-wcj-product-tabs.php:591
 
 
2823
  #: includes/settings/wcj-settings-cart.php:44
2824
  #: includes/settings/wcj-settings-checkout-custom-info.php:40
2825
  #: includes/settings/wcj-settings-left-to-free-shipping.php:34
2826
- #: includes/settings/wcj-settings-left-to-free-shipping.php:69
2827
- #: includes/settings/wcj-settings-left-to-free-shipping.php:108
2828
  #: includes/settings/wcj-settings-mini-cart.php:39
2829
  #: includes/settings/wcj-settings-product-custom-info.php:77
2830
  #: includes/settings/wcj-settings-product-tabs.php:72
@@ -2852,16 +2924,15 @@ msgstr ""
2852
 
2853
  #: includes/class-wcj-product-tabs.php:605
2854
  #: includes/input-fields/wcj-product-input-fields-options.php:95
2855
- #: includes/settings/wcj-settings-admin-orders-list.php:82
2856
  #: includes/settings/wcj-settings-checkout-custom-fields.php:224
2857
  #: includes/settings/meta-box/wcj-settings-meta-box-custom-css.php:20
2858
  #: includes/settings/meta-box/wcj-settings-meta-box-offer-price.php:20
 
2859
  #: includes/settings/meta-box/wcj-settings-meta-box-price-by-user-role.php:35
2860
  #: includes/settings/meta-box/wcj-settings-meta-box-price-by-user-role.php:97
2861
  #: includes/settings/meta-box/wcj-settings-meta-box-product-add-to-cart.php:21
2862
  #: includes/settings/meta-box/wcj-settings-meta-box-product-add-to-cart.php:43
2863
- #: includes/settings/meta-box/wcj-settings-meta-box-product-add-to-cart.php:57
2864
- #: includes/settings/meta-box/wcj-settings-meta-box-product-add-to-cart.php:67
2865
  #: includes/settings/meta-box/wcj-settings-meta-box-product-addons.php:19
2866
  #: includes/settings/meta-box/wcj-settings-meta-box-product-addons.php:41
2867
  #: includes/settings/meta-box/wcj-settings-meta-box-product-addons.php:104
@@ -2889,12 +2960,11 @@ msgstr ""
2889
  #: includes/settings/wcj-settings-eu-vat-number.php:130
2890
  #: includes/settings/meta-box/wcj-settings-meta-box-custom-css.php:19
2891
  #: includes/settings/meta-box/wcj-settings-meta-box-offer-price.php:19
 
2892
  #: includes/settings/meta-box/wcj-settings-meta-box-price-by-user-role.php:34
2893
  #: includes/settings/meta-box/wcj-settings-meta-box-price-by-user-role.php:96
2894
  #: includes/settings/meta-box/wcj-settings-meta-box-product-add-to-cart.php:20
2895
  #: includes/settings/meta-box/wcj-settings-meta-box-product-add-to-cart.php:42
2896
- #: includes/settings/meta-box/wcj-settings-meta-box-product-add-to-cart.php:56
2897
- #: includes/settings/meta-box/wcj-settings-meta-box-product-add-to-cart.php:66
2898
  #: includes/settings/meta-box/wcj-settings-meta-box-product-addons.php:18
2899
  #: includes/settings/meta-box/wcj-settings-meta-box-product-addons.php:40
2900
  #: includes/settings/meta-box/wcj-settings-meta-box-product-addons.php:103
@@ -2914,7 +2984,8 @@ msgstr ""
2914
  #: includes/class-wcj-product-tabs.php:614
2915
  #: includes/settings/wcj-settings-checkout-core-fields.php:61
2916
  #: includes/settings/wcj-settings-currency-exchange-rates.php:141
2917
- #: includes/settings/wcj-settings-orders.php:102
 
2918
  #: includes/settings/wcj-settings-product-add-to-cart.php:64
2919
  #: includes/settings/meta-box/wcj-settings-meta-box-product-by-date.php:19
2920
  #: includes/settings/meta-box/wcj-settings-meta-box-product-by-time.php:19
@@ -2950,58 +3021,59 @@ msgstr ""
2950
  msgid "WooCommerce products XML feeds."
2951
  msgstr ""
2952
 
2953
- #: includes/class-wcj-products-xml.php:94
2954
  #: includes/exchange-rates/class-wcj-exchange-rates-crons.php:211
2955
  msgid "Once Weekly"
2956
  msgstr ""
2957
 
2958
- #: includes/class-wcj-products-xml.php:98
2959
  #: includes/exchange-rates/class-wcj-exchange-rates-crons.php:215
2960
  msgid "Once a Minute"
2961
  msgstr ""
2962
 
2963
- #: includes/class-wcj-products-xml.php:110
2964
- msgid "Products XML file created successfully."
2965
  msgstr ""
2966
 
2967
- #: includes/class-wcj-products-xml.php:120
2968
- msgid "An error has occurred while creating products XML file."
 
2969
  msgstr ""
2970
 
2971
- #: includes/class-wcj-purchase-data.php:27
2972
  msgid "Cost of Goods"
2973
  msgstr ""
2974
 
2975
- #: includes/class-wcj-purchase-data.php:28
2976
  msgid "Save WooCommerce product purchase costs data for admin reports."
2977
  msgstr ""
2978
 
2979
- #: includes/class-wcj-purchase-data.php:34
2980
  msgid "\"WooCommerce Cost of Goods\" Data Import"
2981
  msgstr ""
2982
 
2983
- #: includes/class-wcj-purchase-data.php:35
2984
  msgid "Import products costs from \"WooCommerce Cost of Goods\"."
2985
  msgstr ""
2986
 
2987
- #: includes/class-wcj-purchase-data.php:77
2988
  msgid "Product Title"
2989
  msgstr ""
2990
 
2991
- #: includes/class-wcj-purchase-data.php:78
2992
  msgid "WooCommerce Cost of Goods (source)"
2993
  msgstr ""
2994
 
2995
- #: includes/class-wcj-purchase-data.php:79
2996
  msgid "Booster: Product cost (destination)"
2997
  msgstr ""
2998
 
2999
- #: includes/class-wcj-purchase-data.php:92
3000
- #: includes/admin/class-wc-settings-jetpack.php:295
3001
  msgid "Import"
3002
  msgstr ""
3003
 
3004
- #: includes/class-wcj-purchase-data.php:114
3005
  #: includes/shipping/class-wc-shipping-wcj-custom-with-shipping-zones.php:105
3006
  #: includes/shipping/class-wc-shipping-wcj-custom-with-shipping-zones.php:172
3007
  #: includes/shipping/class-wc-shipping-wcj-custom.php:131
@@ -3009,35 +3081,35 @@ msgstr ""
3009
  msgid "Cost"
3010
  msgstr ""
3011
 
3012
- #: includes/class-wcj-purchase-data.php:117
3013
- #: includes/class-wcj-purchase-data.php:150
3014
- #: includes/class-wcj-purchase-data.php:235
3015
  #: includes/functions/wcj-functions-reports.php:29
3016
  #: includes/settings/wcj-settings-purchase-data.php:133
3017
  #: includes/settings/wcj-settings-purchase-data.php:161
3018
  msgid "Profit"
3019
  msgstr ""
3020
 
3021
- #: includes/class-wcj-purchase-data.php:153
3022
  #: includes/settings/wcj-settings-purchase-data.php:142
3023
  #: includes/settings/wcj-settings-purchase-data.php:168
3024
  msgid "Purchase Cost"
3025
  msgstr ""
3026
 
3027
- #: includes/class-wcj-purchase-data.php:233
3028
  msgid "Selling"
3029
  msgstr ""
3030
 
3031
- #: includes/class-wcj-purchase-data.php:234
3032
  msgid "Buying"
3033
  msgstr ""
3034
 
3035
- #: includes/class-wcj-purchase-data.php:243
3036
  msgid "Report"
3037
  msgstr ""
3038
 
3039
  #: includes/class-wcj-related-products.php:38
3040
- #: includes/admin/class-wc-settings-jetpack.php:464
3041
  #: includes/settings/wcj-settings-free-price.php:20
3042
  #: includes/settings/meta-box/wcj-settings-meta-box-related-products.php:28
3043
  msgid "Related Products"
@@ -3229,44 +3301,44 @@ msgstr ""
3229
  msgid "Customize WooCommerce shipping calculator on cart page."
3230
  msgstr ""
3231
 
3232
- #: includes/class-wcj-shipping-options.php:25
3233
  msgid "Shipping Options"
3234
  msgstr ""
3235
 
3236
- #: includes/class-wcj-shipping-options.php:26
3237
  msgid "Add descriptions and icons to shipping methods on frontend."
3238
  msgstr ""
3239
 
3240
- #: includes/class-wcj-shipping-options.php:27
3241
  msgid "Hide WooCommerce shipping when free is available."
3242
  msgstr ""
3243
 
3244
- #: includes/class-wcj-shipping-options.php:28
3245
  msgid "Grant free shipping on per product basis."
3246
  msgstr ""
3247
 
3248
- #: includes/class-wcj-shipping-options.php:172
3249
  msgid "Booster: Hide when free is available"
3250
  msgstr ""
3251
 
3252
- #: includes/class-wcj-shipping-options.php:180
3253
  #: includes/settings/wcj-settings-shipping-options.php:28
3254
  msgid ""
3255
  "Available options: hide all; hide all except \"Local Pickup\"; hide \"Flat "
3256
  "Rate\" only."
3257
  msgstr ""
3258
 
3259
- #: includes/class-wcj-shipping-options.php:184
3260
  #: includes/settings/wcj-settings-shipping-options.php:32
3261
  msgid "Hide all"
3262
  msgstr ""
3263
 
3264
- #: includes/class-wcj-shipping-options.php:185
3265
  #: includes/settings/wcj-settings-shipping-options.php:33
3266
  msgid "Hide all except \"Local Pickup\""
3267
  msgstr ""
3268
 
3269
- #: includes/class-wcj-shipping-options.php:186
3270
  #: includes/settings/wcj-settings-shipping-options.php:34
3271
  msgid "Hide \"Flat Rate\" only"
3272
  msgstr ""
@@ -3387,7 +3459,7 @@ msgid "Other"
3387
  msgstr ""
3388
 
3389
  #: includes/class-wcj-track-users.php:159
3390
- #: includes/settings/wcj-settings-products-xml.php:120
3391
  msgid "URL:"
3392
  msgstr ""
3393
 
@@ -3491,49 +3563,49 @@ msgid ""
3491
  "can be moved to paid plugin version."
3492
  msgstr ""
3493
 
3494
- #: includes/admin/class-wc-settings-jetpack.php:263
3495
  msgid ""
3496
  "This section lets you export, import or reset all Booster's modules settings."
3497
  msgstr ""
3498
 
3499
- #: includes/admin/class-wc-settings-jetpack.php:292
3500
  msgid "Export all Booster's options to a file."
3501
  msgstr ""
3502
 
3503
- #: includes/admin/class-wc-settings-jetpack.php:297
3504
  msgid "Import all Booster's options from a file."
3505
  msgstr ""
3506
 
3507
- #: includes/admin/class-wc-settings-jetpack.php:300
3508
  msgid ""
3509
  "This will reset settings to defaults for all Booster modules. Are you sure?"
3510
  msgstr ""
3511
 
3512
- #: includes/admin/class-wc-settings-jetpack.php:300
3513
  msgid "Reset"
3514
  msgstr ""
3515
 
3516
- #: includes/admin/class-wc-settings-jetpack.php:301
3517
  msgid "Reset all Booster's options."
3518
  msgstr ""
3519
 
3520
- #: includes/admin/class-wc-settings-jetpack.php:338
3521
  msgid "Version"
3522
  msgstr ""
3523
 
3524
- #: includes/admin/class-wc-settings-jetpack.php:362
3525
- #: includes/admin/class-wc-settings-jetpack.php:369
3526
  msgid "Select All"
3527
  msgstr ""
3528
 
3529
- #: includes/admin/class-wc-settings-jetpack.php:363
3530
- #: includes/admin/class-wc-settings-jetpack.php:370
3531
  #: includes/admin/class-wcj-tools.php:72
3532
  msgid "Module"
3533
  msgstr ""
3534
 
3535
- #: includes/admin/class-wc-settings-jetpack.php:364
3536
- #: includes/admin/class-wc-settings-jetpack.php:371
3537
  #: includes/admin/class-wcj-tools.php:73
3538
  #: includes/export/class-wcj-fields-helper.php:293
3539
  #: includes/gateways/class-wc-gateway-wcj-custom.php:74
@@ -3544,40 +3616,40 @@ msgstr ""
3544
  msgid "Description"
3545
  msgstr ""
3546
 
3547
- #: includes/admin/class-wc-settings-jetpack.php:419
3548
  msgid "No active modules found."
3549
  msgstr ""
3550
 
3551
- #: includes/admin/class-wc-settings-jetpack.php:422
3552
  msgid "Total Modules:"
3553
  msgstr ""
3554
 
3555
- #: includes/admin/class-wc-settings-jetpack.php:449
3556
  msgid "Autoload Booster's Options"
3557
  msgstr ""
3558
 
3559
- #: includes/admin/class-wc-settings-jetpack.php:451
3560
  msgid ""
3561
  "Choose if you want Booster's options to be autoloaded when calling "
3562
  "add_option. After saving this option, you need to Reset all Booster's "
3563
  "settings. Leave default value (i.e. Enabled) if not sure."
3564
  msgstr ""
3565
 
3566
- #: includes/admin/class-wc-settings-jetpack.php:456
3567
  msgid "Use List Instead of Comma Separated Text for Products in Settings"
3568
  msgstr ""
3569
 
3570
- #: includes/admin/class-wc-settings-jetpack.php:458
3571
  #, php-format
3572
  msgid "Supported modules: %s."
3573
  msgstr ""
3574
 
3575
- #: includes/admin/class-wc-settings-jetpack.php:463
3576
  msgid "Products XML"
3577
  msgstr ""
3578
 
3579
- #: includes/admin/class-wc-settings-jetpack.php:488
3580
- #: includes/core/class-wcj-admin.php:113
3581
  msgid "Booster for WooCommerce"
3582
  msgstr ""
3583
 
@@ -3595,21 +3667,21 @@ msgstr ""
3595
  msgid "Save changes"
3596
  msgstr ""
3597
 
3598
- #: includes/admin/class-wcj-settings-manager.php:59
3599
  msgid "Please upload a file to import!"
3600
  msgstr ""
3601
 
3602
- #: includes/admin/class-wcj-settings-manager.php:67
3603
- #: includes/admin/class-wcj-settings-manager.php:72
3604
  msgid "Wrong file format!"
3605
  msgstr ""
3606
 
3607
- #: includes/admin/class-wcj-settings-manager.php:81
3608
  #, php-format
3609
  msgid "%d options successfully imported."
3610
  msgstr ""
3611
 
3612
- #: includes/admin/class-wcj-settings-manager.php:166
3613
  #, php-format
3614
  msgid "%d options and %d meta successfully deleted."
3615
  msgstr ""
@@ -3674,17 +3746,17 @@ msgid ""
3674
  "Listings, Product Tabs and more."
3675
  msgstr ""
3676
 
3677
- #: includes/admin/wcj-modules-cats.php:92
3678
  msgid "Cart & Checkout"
3679
  msgstr ""
3680
 
3681
- #: includes/admin/wcj-modules-cats.php:93
3682
  msgid ""
3683
  "Cart and Checkout Customization, Empty Cart Button, Mini Cart, Coupons and "
3684
  "more."
3685
  msgstr ""
3686
 
3687
- #: includes/admin/wcj-modules-cats.php:111
3688
  #: includes/settings/wcj-settings-payment-gateways-by-country.php:14
3689
  #: includes/settings/wcj-settings-payment-gateways-by-currency.php:14
3690
  #: includes/settings/wcj-settings-payment-gateways-by-shipping.php:21
@@ -3693,35 +3765,35 @@ msgstr ""
3693
  msgid "Payment Gateways"
3694
  msgstr ""
3695
 
3696
- #: includes/admin/wcj-modules-cats.php:112
3697
  msgid ""
3698
  "Custom Payment Gateways, Gateways Currency, Gateways Fees and Discounts and "
3699
  "more."
3700
  msgstr ""
3701
 
3702
- #: includes/admin/wcj-modules-cats.php:128
3703
  msgid "Shipping & Orders"
3704
  msgstr ""
3705
 
3706
- #: includes/admin/wcj-modules-cats.php:129
3707
  msgid ""
3708
  "Order Custom Statuses, Order Minimum Amount, Order Numbers, Custom Shipping "
3709
  "Methods and more."
3710
  msgstr ""
3711
 
3712
- #: includes/admin/wcj-modules-cats.php:149
3713
  msgid "PDF Invoicing & Packing Slips"
3714
  msgstr ""
3715
 
3716
- #: includes/admin/wcj-modules-cats.php:150
3717
  msgid "PDF Documents"
3718
  msgstr ""
3719
 
3720
- #: includes/admin/wcj-modules-cats.php:165
3721
  msgid "Emails & Misc."
3722
  msgstr ""
3723
 
3724
- #: includes/admin/wcj-modules-cats.php:166
3725
  msgid "Emails, Reports, Export, Admin Tools, General Options and more."
3726
  msgstr ""
3727
 
@@ -3739,25 +3811,25 @@ msgstr ""
3739
  msgid "Selected: %s."
3740
  msgstr ""
3741
 
3742
- #: includes/classes/class-wcj-module.php:466
3743
  msgid "Back to Module Settings"
3744
  msgstr ""
3745
 
3746
- #: includes/classes/class-wcj-module.php:484
3747
  #: includes/settings/wcj-settings-wpml.php:20
3748
  msgid "Module Tools"
3749
  msgstr ""
3750
 
3751
- #: includes/classes/class-wcj-module.php:557
3752
  #: includes/settings/wcj-settings-checkout-core-fields.php:54
3753
  msgid "enabled"
3754
  msgstr ""
3755
 
3756
- #: includes/classes/class-wcj-module.php:558
3757
  msgid "disabled"
3758
  msgstr ""
3759
 
3760
- #: includes/classes/class-wcj-module.php:566
3761
  #: includes/settings/wcj-settings-product-tabs.php:152
3762
  #: includes/settings/wcj-settings-product-tabs.php:164
3763
  #: includes/settings/wcj-settings-product-tabs.php:176
@@ -3765,27 +3837,27 @@ msgstr ""
3765
  msgid "Deprecated"
3766
  msgstr ""
3767
 
3768
- #: includes/classes/class-wcj-module.php:604
3769
  msgid "Reset Settings"
3770
  msgstr ""
3771
 
3772
- #: includes/classes/class-wcj-module.php:610
3773
  msgid "Reset Module to Default Settings"
3774
  msgstr ""
3775
 
3776
- #: includes/classes/class-wcj-module.php:611
3777
  msgid "Reset Submodule to Default Settings"
3778
  msgstr ""
3779
 
3780
- #: includes/classes/class-wcj-module.php:615
3781
  msgid "Reset settings"
3782
  msgstr ""
3783
 
3784
- #: includes/classes/class-wcj-module.php:649
3785
  msgid "Module Options"
3786
  msgstr ""
3787
 
3788
- #: includes/classes/class-wcj-module.php:656
3789
  msgid "Enable Module"
3790
  msgstr ""
3791
 
@@ -3795,7 +3867,7 @@ msgid "Company Name"
3795
  msgstr ""
3796
 
3797
  #: includes/classes/class-wcj-shortcodes.php:107
3798
- #: includes/shortcodes/class-wcj-shortcodes-general.php:375
3799
  #, php-format
3800
  msgid "\"%s\" module is not enabled!"
3801
  msgstr ""
@@ -3805,39 +3877,38 @@ msgstr ""
3805
  msgid "Page %page_number% / %total_pages%"
3806
  msgstr ""
3807
 
3808
- #: includes/core/class-wcj-admin.php:73
 
 
 
 
3809
  #, php-format
3810
  msgid ""
3811
- "Please upgrade <strong>Booster Plus for WooCommerce</strong> plugin. Visit "
3812
- "<a target=\"_blank\" href=\"%s\">your account page</a> on booster.io to "
3813
- "download the latest Booster Plus version."
3814
  msgstr ""
3815
 
3816
- #: includes/core/class-wcj-admin.php:77
3817
  #, php-format
3818
- msgid ""
3819
- "There is new version of <strong>Booster Plus for WooCommerce</strong> plugin "
3820
- "available. We recommend upgrading. Please visit <a target=\"_blank\" href="
3821
- "\"%s\">your account page</a> on booster.io to download the latest Booster "
3822
- "Plus version."
3823
  msgstr ""
3824
 
3825
- #: includes/core/class-wcj-admin.php:97
3826
  #, php-format
3827
  msgid ""
3828
  "If you like <strong>Booster for WooCommerce</strong> please leave us a %s "
3829
  "rating. Thank you, we couldn't have done it without you!"
3830
  msgstr ""
3831
 
3832
- #: includes/core/class-wcj-admin.php:114
3833
  msgid "Booster Settings"
3834
  msgstr ""
3835
 
3836
- #: includes/core/class-wcj-admin.php:130
3837
  msgid "Docs"
3838
  msgstr ""
3839
 
3840
- #: includes/core/class-wcj-admin.php:133
3841
  msgid "Unlock all"
3842
  msgstr ""
3843
 
@@ -3997,31 +4068,31 @@ msgstr ""
3997
 
3998
  #: includes/exchange-rates/class-wcj-exchange-rates-crons.php:22
3999
  #: includes/settings/wcj-settings-currency-exchange-rates.php:38
4000
- #: includes/settings/wcj-settings-products-xml.php:133
4001
  msgid "Update Every Minute"
4002
  msgstr ""
4003
 
4004
  #: includes/exchange-rates/class-wcj-exchange-rates-crons.php:23
4005
  #: includes/settings/wcj-settings-currency-exchange-rates.php:39
4006
- #: includes/settings/wcj-settings-products-xml.php:134
4007
  msgid "Update Hourly"
4008
  msgstr ""
4009
 
4010
  #: includes/exchange-rates/class-wcj-exchange-rates-crons.php:24
4011
  #: includes/settings/wcj-settings-currency-exchange-rates.php:40
4012
- #: includes/settings/wcj-settings-products-xml.php:135
4013
  msgid "Update Twice Daily"
4014
  msgstr ""
4015
 
4016
  #: includes/exchange-rates/class-wcj-exchange-rates-crons.php:25
4017
  #: includes/settings/wcj-settings-currency-exchange-rates.php:41
4018
- #: includes/settings/wcj-settings-products-xml.php:136
4019
  msgid "Update Daily"
4020
  msgstr ""
4021
 
4022
  #: includes/exchange-rates/class-wcj-exchange-rates-crons.php:26
4023
  #: includes/settings/wcj-settings-currency-exchange-rates.php:42
4024
- #: includes/settings/wcj-settings-products-xml.php:137
4025
  msgid "Update Weekly"
4026
  msgstr ""
4027
 
@@ -4128,7 +4199,7 @@ msgid "URL"
4128
  msgstr ""
4129
 
4130
  #: includes/export/class-wcj-fields-helper.php:81
4131
- #: includes/reports/wcj-class-reports-customers.php:92
4132
  msgid "Registered"
4133
  msgstr ""
4134
 
@@ -4138,8 +4209,9 @@ msgstr ""
4138
 
4139
  #: includes/export/class-wcj-fields-helper.php:110
4140
  #: includes/export/class-wcj-fields-helper.php:193
4141
- #: includes/pdf-invoices/class-wcj-pdf-invoicing-report-tool.php:305
4142
- #: includes/settings/wcj-settings-order-numbers.php:26
 
4143
  msgid "Order ID"
4144
  msgstr ""
4145
 
@@ -4170,14 +4242,16 @@ msgstr ""
4170
 
4171
  #: includes/export/class-wcj-fields-helper.php:116
4172
  #: includes/export/class-wcj-fields-helper.php:201
4173
- #: includes/pdf-invoices/class-wcj-pdf-invoicing-report-tool.php:312
 
4174
  #: includes/settings/meta-box/wcj-settings-meta-box-orders.php:19
4175
  msgid "Order Currency"
4176
  msgstr ""
4177
 
4178
  #: includes/export/class-wcj-fields-helper.php:117
4179
  #: includes/export/class-wcj-fields-helper.php:202
4180
- #: includes/pdf-invoices/class-wcj-pdf-invoicing-report-tool.php:311
 
4181
  msgid "Order Total"
4182
  msgstr ""
4183
 
@@ -4319,7 +4393,7 @@ msgid "Stock Quantity"
4319
  msgstr ""
4320
 
4321
  #: includes/export/class-wcj-fields-helper.php:286
4322
- #: includes/price-by-country/class-wcj-price-by-country-local.php:126
4323
  #: includes/settings/wcj-settings-product-by-user.php:16
4324
  #: includes/settings/meta-box/wcj-settings-meta-box-multicurrency.php:37
4325
  #: includes/settings/meta-box/wcj-settings-meta-box-price-by-user-role.php:55
@@ -4329,7 +4403,7 @@ msgid "Regular Price"
4329
  msgstr ""
4330
 
4331
  #: includes/export/class-wcj-fields-helper.php:287
4332
- #: includes/price-by-country/class-wcj-price-by-country-local.php:133
4333
  #: includes/settings/wcj-settings-product-by-user.php:17
4334
  #: includes/settings/meta-box/wcj-settings-meta-box-multicurrency.php:46
4335
  #: includes/settings/meta-box/wcj-settings-meta-box-price-by-user-role.php:64
@@ -4345,7 +4419,7 @@ msgstr ""
4345
  #: includes/settings/wcj-settings-export.php:149
4346
  #: includes/settings/wcj-settings-export.php:231
4347
  #: includes/settings/wcj-settings-global-discount.php:58
4348
- #: includes/settings/wcj-settings-product-addons.php:73
4349
  #: includes/settings/wcj-settings-purchase-data.php:73
4350
  #: includes/settings/wcj-settings-shipping-options.php:77
4351
  #: includes/settings/meta-box/wcj-settings-meta-box-product-addons.php:45
@@ -4473,18 +4547,18 @@ msgstr ""
4473
  msgid "Availability Class"
4474
  msgstr ""
4475
 
4476
- #: includes/functions/wcj-functions-admin.php:37
4477
  #, php-format
4478
  msgid ""
4479
  "<strong>Booster for WooCommerce</strong> plugin was successfully updated to "
4480
  "version <strong>%s</strong>."
4481
  msgstr ""
4482
 
4483
- #: includes/functions/wcj-functions-admin.php:60
4484
  msgid "Enter comma separated list of IDs."
4485
  msgstr ""
4486
 
4487
- #: includes/functions/wcj-functions-admin.php:134
4488
  #: includes/settings/wcj-settings-emails-verification.php:59
4489
  #: includes/settings/wcj-settings-emails-verification.php:67
4490
  #: includes/settings/wcj-settings-emails-verification.php:107
@@ -4492,60 +4566,60 @@ msgstr ""
4492
  msgid "Replaced value: %s"
4493
  msgstr ""
4494
 
4495
- #: includes/functions/wcj-functions-admin.php:134
4496
  #, php-format
4497
  msgid "Replaced values: %s"
4498
  msgstr ""
4499
 
4500
- #: includes/functions/wcj-functions-admin.php:163
4501
  msgid "Install Booster Plus to unlock all features"
4502
  msgstr ""
4503
 
4504
- #: includes/functions/wcj-functions-admin.php:164
4505
  #, php-format
4506
  msgid ""
4507
  "Some settings fields are locked and you will need %s to modify all locked "
4508
  "fields."
4509
  msgstr ""
4510
 
4511
- #: includes/functions/wcj-functions-admin.php:165
4512
  msgid "Buy now"
4513
  msgstr ""
4514
 
4515
- #: includes/functions/wcj-functions-admin.php:165
4516
  msgid "Visit Booster Site"
4517
  msgstr ""
4518
 
4519
- #: includes/functions/wcj-functions-admin.php:169
4520
  #, php-format
4521
  msgid "Get <a href=\"%s\" target=\"_blank\">Booster Plus</a> to change value."
4522
  msgstr ""
4523
 
4524
- #: includes/functions/wcj-functions-admin.php:172
4525
  #, php-format
4526
  msgid ""
4527
  "Get <a href=\"%s\" target=\"_blank\">Booster Plus</a> to enable \"%s\" "
4528
  "option."
4529
  msgstr ""
4530
 
4531
- #: includes/functions/wcj-functions-admin.php:175
4532
  #, php-format
4533
  msgid "Get Booster Plus to enable \"%s\" option."
4534
  msgstr ""
4535
 
4536
- #: includes/functions/wcj-functions-admin.php:178
4537
  #, php-format
4538
  msgid ""
4539
  "Get <a href=\"%s\" target=\"_blank\">Booster Plus</a> to change values below."
4540
  msgstr ""
4541
 
4542
- #: includes/functions/wcj-functions-admin.php:181
4543
  #, php-format
4544
  msgid ""
4545
  "Get <a href=\"%s\" target=\"_blank\">Booster Plus</a> to change values above."
4546
  msgstr ""
4547
 
4548
- #: includes/functions/wcj-functions-admin.php:184
4549
  msgid "Get Booster Plus to change value."
4550
  msgstr ""
4551
 
@@ -5603,881 +5677,882 @@ msgstr ""
5603
  msgid "Once a minute"
5604
  msgstr ""
5605
 
5606
- #: includes/functions/wcj-functions-currencies.php:15
5607
  msgid "United Arab Emirates Dirham"
5608
  msgstr ""
5609
 
5610
- #: includes/functions/wcj-functions-currencies.php:16
5611
  msgid "Afghan afghani"
5612
  msgstr ""
5613
 
5614
- #: includes/functions/wcj-functions-currencies.php:17
5615
  msgid "Albanian lek"
5616
  msgstr ""
5617
 
5618
- #: includes/functions/wcj-functions-currencies.php:18
5619
  msgid "Armenian dram"
5620
  msgstr ""
5621
 
5622
- #: includes/functions/wcj-functions-currencies.php:19
5623
  msgid "Netherlands Antillean gulden"
5624
  msgstr ""
5625
 
5626
- #: includes/functions/wcj-functions-currencies.php:20
5627
  msgid "Angolan kwanza"
5628
  msgstr ""
5629
 
5630
- #: includes/functions/wcj-functions-currencies.php:21
5631
  msgid "Argentine Peso"
5632
  msgstr ""
5633
 
5634
- #: includes/functions/wcj-functions-currencies.php:22
5635
  msgid "Australian Dollars"
5636
  msgstr ""
5637
 
5638
- #: includes/functions/wcj-functions-currencies.php:23
5639
  msgid "Aruban florin"
5640
  msgstr ""
5641
 
5642
- #: includes/functions/wcj-functions-currencies.php:24
5643
  msgid "Azerbaijani manat"
5644
  msgstr ""
5645
 
5646
- #: includes/functions/wcj-functions-currencies.php:25
5647
  msgid "Bosnia and Herzegovina konvertibilna marka"
5648
  msgstr ""
5649
 
5650
- #: includes/functions/wcj-functions-currencies.php:26
5651
  msgid "Barbadian dollar"
5652
  msgstr ""
5653
 
5654
- #: includes/functions/wcj-functions-currencies.php:27
5655
  msgid "Bangladeshi Taka"
5656
  msgstr ""
5657
 
5658
- #: includes/functions/wcj-functions-currencies.php:28
5659
  msgid "Bulgarian Lev"
5660
  msgstr ""
5661
 
5662
- #: includes/functions/wcj-functions-currencies.php:29
5663
  msgid "Bahraini dinar"
5664
  msgstr ""
5665
 
5666
- #: includes/functions/wcj-functions-currencies.php:30
5667
  msgid "Burundi franc"
5668
  msgstr ""
5669
 
5670
- #: includes/functions/wcj-functions-currencies.php:31
5671
  msgid "Belarusian ruble"
5672
  msgstr ""
5673
 
5674
- #: includes/functions/wcj-functions-currencies.php:32
5675
  msgid "Brunei dollar"
5676
  msgstr ""
5677
 
5678
- #: includes/functions/wcj-functions-currencies.php:33
5679
  msgid "Bolivian boliviano"
5680
  msgstr ""
5681
 
5682
- #: includes/functions/wcj-functions-currencies.php:34
5683
  msgid "Brazilian Real"
5684
  msgstr ""
5685
 
5686
- #: includes/functions/wcj-functions-currencies.php:35
5687
  msgid "Bahamian dollar"
5688
  msgstr ""
5689
 
5690
- #: includes/functions/wcj-functions-currencies.php:36
5691
  msgid "Bhutanese ngultrum"
5692
  msgstr ""
5693
 
5694
- #: includes/functions/wcj-functions-currencies.php:37
5695
  msgid "Botswana pula"
5696
  msgstr ""
5697
 
5698
- #: includes/functions/wcj-functions-currencies.php:38
5699
  msgid "Belize dollar"
5700
  msgstr ""
5701
 
5702
- #: includes/functions/wcj-functions-currencies.php:39
5703
  msgid "Canadian Dollars"
5704
  msgstr ""
5705
 
5706
- #: includes/functions/wcj-functions-currencies.php:40
5707
  msgid "Congolese franc"
5708
  msgstr ""
5709
 
5710
- #: includes/functions/wcj-functions-currencies.php:41
5711
  msgid "Swiss Franc"
5712
  msgstr ""
5713
 
5714
- #: includes/functions/wcj-functions-currencies.php:42
5715
  msgid "Chilean Peso"
5716
  msgstr ""
5717
 
5718
- #: includes/functions/wcj-functions-currencies.php:43
5719
  msgid "Chinese Yuan"
5720
  msgstr ""
5721
 
5722
- #: includes/functions/wcj-functions-currencies.php:44
5723
  msgid "Colombian Peso"
5724
  msgstr ""
5725
 
5726
- #: includes/functions/wcj-functions-currencies.php:45
5727
  msgid "Costa Rican colon"
5728
  msgstr ""
5729
 
5730
- #: includes/functions/wcj-functions-currencies.php:46
5731
  msgid "Cuban peso"
5732
  msgstr ""
5733
 
5734
- #: includes/functions/wcj-functions-currencies.php:47
5735
  msgid "Cape Verdean escudo"
5736
  msgstr ""
5737
 
5738
- #: includes/functions/wcj-functions-currencies.php:48
5739
  msgid "Czech Koruna"
5740
  msgstr ""
5741
 
5742
- #: includes/functions/wcj-functions-currencies.php:49
5743
  msgid "Djiboutian franc"
5744
  msgstr ""
5745
 
5746
- #: includes/functions/wcj-functions-currencies.php:50
5747
  msgid "Danish Krone"
5748
  msgstr ""
5749
 
5750
- #: includes/functions/wcj-functions-currencies.php:51
5751
  msgid "Dominican Peso"
5752
  msgstr ""
5753
 
5754
- #: includes/functions/wcj-functions-currencies.php:52
5755
  msgid "Algerian dinar"
5756
  msgstr ""
5757
 
5758
- #: includes/functions/wcj-functions-currencies.php:53
5759
  msgid "Estonian kroon"
5760
  msgstr ""
5761
 
5762
- #: includes/functions/wcj-functions-currencies.php:54
5763
  msgid "Egyptian Pound"
5764
  msgstr ""
5765
 
5766
- #: includes/functions/wcj-functions-currencies.php:55
5767
  msgid "Eritrean nakfa"
5768
  msgstr ""
5769
 
5770
- #: includes/functions/wcj-functions-currencies.php:56
5771
  msgid "Ethiopian birr"
5772
  msgstr ""
5773
 
5774
- #: includes/functions/wcj-functions-currencies.php:57
5775
  msgid "Euros"
5776
  msgstr ""
5777
 
5778
- #: includes/functions/wcj-functions-currencies.php:58
5779
  msgid "Fijian dollar"
5780
  msgstr ""
5781
 
5782
- #: includes/functions/wcj-functions-currencies.php:59
5783
  msgid "Falkland Islands pound"
5784
  msgstr ""
5785
 
5786
- #: includes/functions/wcj-functions-currencies.php:60
5787
  msgid "Pounds Sterling"
5788
  msgstr ""
5789
 
5790
- #: includes/functions/wcj-functions-currencies.php:61
5791
  msgid "Georgian lari"
5792
  msgstr ""
5793
 
5794
- #: includes/functions/wcj-functions-currencies.php:62
5795
  msgid "Ghanaian cedi"
5796
  msgstr ""
5797
 
5798
- #: includes/functions/wcj-functions-currencies.php:63
5799
  msgid "Gibraltar pound"
5800
  msgstr ""
5801
 
5802
- #: includes/functions/wcj-functions-currencies.php:64
5803
  msgid "Guyanese dollar"
5804
  msgstr ""
5805
 
5806
- #: includes/functions/wcj-functions-currencies.php:65
5807
  msgid "Gambian dalasi"
5808
  msgstr ""
5809
 
5810
- #: includes/functions/wcj-functions-currencies.php:66
5811
  msgid "Guinean franc"
5812
  msgstr ""
5813
 
5814
- #: includes/functions/wcj-functions-currencies.php:67
5815
- #: includes/functions/wcj-functions-currencies.php:170
5816
  msgid "Central African CFA franc"
5817
  msgstr ""
5818
 
5819
- #: includes/functions/wcj-functions-currencies.php:68
5820
  msgid "Guatemalan quetzal"
5821
  msgstr ""
5822
 
5823
- #: includes/functions/wcj-functions-currencies.php:69
5824
  msgid "Hong Kong Dollar"
5825
  msgstr ""
5826
 
5827
- #: includes/functions/wcj-functions-currencies.php:70
5828
  msgid "Honduran lempira"
5829
  msgstr ""
5830
 
5831
- #: includes/functions/wcj-functions-currencies.php:71
5832
  msgid "Croatia kuna"
5833
  msgstr ""
5834
 
5835
- #: includes/functions/wcj-functions-currencies.php:72
5836
  msgid "Haitian gourde"
5837
  msgstr ""
5838
 
5839
- #: includes/functions/wcj-functions-currencies.php:73
5840
  msgid "Hungarian Forint"
5841
  msgstr ""
5842
 
5843
- #: includes/functions/wcj-functions-currencies.php:74
5844
  msgid "Indonesia Rupiah"
5845
  msgstr ""
5846
 
5847
- #: includes/functions/wcj-functions-currencies.php:75
5848
  msgid "Israeli Shekel"
5849
  msgstr ""
5850
 
5851
- #: includes/functions/wcj-functions-currencies.php:76
5852
  msgid "Indian Rupee"
5853
  msgstr ""
5854
 
5855
- #: includes/functions/wcj-functions-currencies.php:77
5856
  msgid "Iraqi dinar"
5857
  msgstr ""
5858
 
5859
- #: includes/functions/wcj-functions-currencies.php:78
5860
  msgid "Iranian rial"
5861
  msgstr ""
5862
 
5863
- #: includes/functions/wcj-functions-currencies.php:79
5864
  msgid "Icelandic krona"
5865
  msgstr ""
5866
 
5867
- #: includes/functions/wcj-functions-currencies.php:80
5868
  msgid "Yemeni rial"
5869
  msgstr ""
5870
 
5871
- #: includes/functions/wcj-functions-currencies.php:81
5872
  msgid "Jamaican dollar"
5873
  msgstr ""
5874
 
5875
- #: includes/functions/wcj-functions-currencies.php:82
5876
  msgid "Jordanian dinar"
5877
  msgstr ""
5878
 
5879
- #: includes/functions/wcj-functions-currencies.php:83
5880
  msgid "Japanese Yen"
5881
  msgstr ""
5882
 
5883
- #: includes/functions/wcj-functions-currencies.php:84
5884
  msgid "Kenyan shilling"
5885
  msgstr ""
5886
 
5887
- #: includes/functions/wcj-functions-currencies.php:85
5888
  msgid "Kyrgyzstani som"
5889
  msgstr ""
5890
 
5891
- #: includes/functions/wcj-functions-currencies.php:86
5892
  msgid "Cambodian riel"
5893
  msgstr ""
5894
 
5895
- #: includes/functions/wcj-functions-currencies.php:87
5896
  msgid "Lao kip"
5897
  msgstr ""
5898
 
5899
- #: includes/functions/wcj-functions-currencies.php:88
5900
  msgid "Cayman Islands dollar"
5901
  msgstr ""
5902
 
5903
- #: includes/functions/wcj-functions-currencies.php:89
5904
  msgid "Comorian franc"
5905
  msgstr ""
5906
 
5907
- #: includes/functions/wcj-functions-currencies.php:90
5908
  msgid "North Korean won"
5909
  msgstr ""
5910
 
5911
- #: includes/functions/wcj-functions-currencies.php:91
5912
  msgid "South Korean Won"
5913
  msgstr ""
5914
 
5915
- #: includes/functions/wcj-functions-currencies.php:92
5916
  msgid "Kuwaiti dinar"
5917
  msgstr ""
5918
 
5919
- #: includes/functions/wcj-functions-currencies.php:93
5920
  msgid "Kazakhstani tenge"
5921
  msgstr ""
5922
 
5923
- #: includes/functions/wcj-functions-currencies.php:94
5924
  msgid "Lao Kip"
5925
  msgstr ""
5926
 
5927
- #: includes/functions/wcj-functions-currencies.php:95
5928
  msgid "Lebanese lira"
5929
  msgstr ""
5930
 
5931
- #: includes/functions/wcj-functions-currencies.php:96
5932
  msgid "Libyan dinar"
5933
  msgstr ""
5934
 
5935
- #: includes/functions/wcj-functions-currencies.php:97
5936
  msgid "Sri Lankan rupee"
5937
  msgstr ""
5938
 
5939
- #: includes/functions/wcj-functions-currencies.php:98
5940
  msgid "Liberian dollar"
5941
  msgstr ""
5942
 
5943
- #: includes/functions/wcj-functions-currencies.php:99
5944
  msgid "Lesotho loti"
5945
  msgstr ""
5946
 
5947
- #: includes/functions/wcj-functions-currencies.php:100
5948
  msgid "Lithuanian litas"
5949
  msgstr ""
5950
 
5951
- #: includes/functions/wcj-functions-currencies.php:101
5952
  msgid "Latvian lats"
5953
  msgstr ""
5954
 
5955
- #: includes/functions/wcj-functions-currencies.php:102
5956
  msgid "Moroccan dirham"
5957
  msgstr ""
5958
 
5959
- #: includes/functions/wcj-functions-currencies.php:103
5960
  msgid "Moldovan leu"
5961
  msgstr ""
5962
 
5963
- #: includes/functions/wcj-functions-currencies.php:104
5964
  msgid "Malagasy ariary"
5965
  msgstr ""
5966
 
5967
- #: includes/functions/wcj-functions-currencies.php:105
5968
  msgid "Malaysian ringgit"
5969
  msgstr ""
5970
 
5971
- #: includes/functions/wcj-functions-currencies.php:106
5972
  msgid "Macedonian denar"
5973
  msgstr ""
5974
 
5975
- #: includes/functions/wcj-functions-currencies.php:107
5976
  msgid "Myanma kyat"
5977
  msgstr ""
5978
 
5979
- #: includes/functions/wcj-functions-currencies.php:108
5980
  msgid "Mongolian tugrik"
5981
  msgstr ""
5982
 
5983
- #: includes/functions/wcj-functions-currencies.php:109
5984
  msgid "Macanese pataca"
5985
  msgstr ""
5986
 
5987
- #: includes/functions/wcj-functions-currencies.php:110
5988
  msgid "Mauritanian ouguiya"
5989
  msgstr ""
5990
 
5991
- #: includes/functions/wcj-functions-currencies.php:111
5992
  msgid "Mauritian rupee"
5993
  msgstr ""
5994
 
5995
- #: includes/functions/wcj-functions-currencies.php:112
5996
  msgid "Maldivian rufiyaa"
5997
  msgstr ""
5998
 
5999
- #: includes/functions/wcj-functions-currencies.php:113
6000
  msgid "Malawian kwacha"
6001
  msgstr ""
6002
 
6003
- #: includes/functions/wcj-functions-currencies.php:114
6004
  msgid "Mexican Peso"
6005
  msgstr ""
6006
 
6007
- #: includes/functions/wcj-functions-currencies.php:115
6008
  msgid "Malaysian Ringgits"
6009
  msgstr ""
6010
 
6011
- #: includes/functions/wcj-functions-currencies.php:116
6012
  msgid "Mozambican metical"
6013
  msgstr ""
6014
 
6015
- #: includes/functions/wcj-functions-currencies.php:117
6016
  msgid "Namibian dollar"
6017
  msgstr ""
6018
 
6019
- #: includes/functions/wcj-functions-currencies.php:118
6020
  msgid "Nigerian Naira"
6021
  msgstr ""
6022
 
6023
- #: includes/functions/wcj-functions-currencies.php:119
6024
  msgid "Nicaraguan cordoba"
6025
  msgstr ""
6026
 
6027
- #: includes/functions/wcj-functions-currencies.php:120
6028
  msgid "Norwegian Krone"
6029
  msgstr ""
6030
 
6031
- #: includes/functions/wcj-functions-currencies.php:121
6032
  msgid "Nepali Rupee"
6033
  msgstr ""
6034
 
6035
- #: includes/functions/wcj-functions-currencies.php:122
6036
  msgid "New Zealand Dollar"
6037
  msgstr ""
6038
 
6039
- #: includes/functions/wcj-functions-currencies.php:123
6040
  msgid "Omani rial"
6041
  msgstr ""
6042
 
6043
- #: includes/functions/wcj-functions-currencies.php:124
6044
  msgid "Panamanian balboa"
6045
  msgstr ""
6046
 
6047
- #: includes/functions/wcj-functions-currencies.php:125
6048
  msgid "Peruvian nuevo sol"
6049
  msgstr ""
6050
 
6051
- #: includes/functions/wcj-functions-currencies.php:126
6052
  msgid "Papua New Guinean kina"
6053
  msgstr ""
6054
 
6055
- #: includes/functions/wcj-functions-currencies.php:127
6056
  msgid "Philippine Pesos"
6057
  msgstr ""
6058
 
6059
- #: includes/functions/wcj-functions-currencies.php:128
6060
  msgid "Paraguayan guarani"
6061
  msgstr ""
6062
 
6063
- #: includes/functions/wcj-functions-currencies.php:129
6064
  msgid "Pakistani Rupee"
6065
  msgstr ""
6066
 
6067
- #: includes/functions/wcj-functions-currencies.php:130
6068
  msgid "Polish Zloty"
6069
  msgstr ""
6070
 
6071
- #: includes/functions/wcj-functions-currencies.php:131
6072
  msgid "Paraguayan Guaran"
6073
  msgstr ""
6074
 
6075
- #: includes/functions/wcj-functions-currencies.php:132
6076
  msgid "Qatari riyal"
6077
  msgstr ""
6078
 
6079
- #: includes/functions/wcj-functions-currencies.php:133
6080
  msgid "Chinese renminbi"
6081
  msgstr ""
6082
 
6083
- #: includes/functions/wcj-functions-currencies.php:134
6084
  msgid "Romanian Leu"
6085
  msgstr ""
6086
 
6087
- #: includes/functions/wcj-functions-currencies.php:135
6088
  msgid "Serbian dinar"
6089
  msgstr ""
6090
 
6091
- #: includes/functions/wcj-functions-currencies.php:136
6092
  msgid "Russian Ruble"
6093
  msgstr ""
6094
 
6095
- #: includes/functions/wcj-functions-currencies.php:137
6096
  msgid "Rwandan franc"
6097
  msgstr ""
6098
 
6099
- #: includes/functions/wcj-functions-currencies.php:138
6100
  msgid "Saudi Riyal"
6101
  msgstr ""
6102
 
6103
- #: includes/functions/wcj-functions-currencies.php:139
6104
  msgid "Solomon Islands dollar"
6105
  msgstr ""
6106
 
6107
- #: includes/functions/wcj-functions-currencies.php:140
6108
  msgid "Seychellois rupee"
6109
  msgstr ""
6110
 
6111
- #: includes/functions/wcj-functions-currencies.php:141
6112
  msgid "Sudanese pound"
6113
  msgstr ""
6114
 
6115
- #: includes/functions/wcj-functions-currencies.php:142
6116
  msgid "Swedish Krona"
6117
  msgstr ""
6118
 
6119
- #: includes/functions/wcj-functions-currencies.php:143
6120
  msgid "Singapore Dollar"
6121
  msgstr ""
6122
 
6123
- #: includes/functions/wcj-functions-currencies.php:144
6124
  msgid "Saint Helena pound"
6125
  msgstr ""
6126
 
6127
- #: includes/functions/wcj-functions-currencies.php:145
6128
  msgid "Syrian pound"
6129
  msgstr ""
6130
 
6131
- #: includes/functions/wcj-functions-currencies.php:146
6132
  msgid "Slovak koruna"
6133
  msgstr ""
6134
 
6135
- #: includes/functions/wcj-functions-currencies.php:147
6136
  msgid "Sierra Leonean leone"
6137
  msgstr ""
6138
 
6139
- #: includes/functions/wcj-functions-currencies.php:148
6140
  msgid "Somali shilling"
6141
  msgstr ""
6142
 
6143
- #: includes/functions/wcj-functions-currencies.php:149
6144
  msgid "Surinamese dollar"
6145
  msgstr ""
6146
 
6147
- #: includes/functions/wcj-functions-currencies.php:150
6148
  msgid "Sao Tome and Principe dobra"
6149
  msgstr ""
6150
 
6151
- #: includes/functions/wcj-functions-currencies.php:151
6152
  msgid "Swazi lilangeni"
6153
  msgstr ""
6154
 
6155
- #: includes/functions/wcj-functions-currencies.php:152
6156
  msgid "Thai Baht"
6157
  msgstr ""
6158
 
6159
- #: includes/functions/wcj-functions-currencies.php:153
6160
  msgid "Tajikistani somoni"
6161
  msgstr ""
6162
 
6163
- #: includes/functions/wcj-functions-currencies.php:154
6164
  msgid "Turkmen manat"
6165
  msgstr ""
6166
 
6167
- #: includes/functions/wcj-functions-currencies.php:155
6168
  msgid "Tunisian dinar"
6169
  msgstr ""
6170
 
6171
- #: includes/functions/wcj-functions-currencies.php:156
6172
  msgid "Paanga"
6173
  msgstr ""
6174
 
6175
- #: includes/functions/wcj-functions-currencies.php:157
6176
  msgid "Turkish Lira"
6177
  msgstr ""
6178
 
6179
- #: includes/functions/wcj-functions-currencies.php:158
6180
  msgid "Trinidad and Tobago dollar"
6181
  msgstr ""
6182
 
6183
- #: includes/functions/wcj-functions-currencies.php:159
6184
  msgid "Taiwan New Dollars"
6185
  msgstr ""
6186
 
6187
- #: includes/functions/wcj-functions-currencies.php:160
6188
  msgid "Tanzanian shilling"
6189
  msgstr ""
6190
 
6191
- #: includes/functions/wcj-functions-currencies.php:161
6192
  msgid "Ukrainian Hryvnia"
6193
  msgstr ""
6194
 
6195
- #: includes/functions/wcj-functions-currencies.php:162
6196
  msgid "Ugandan shilling"
6197
  msgstr ""
6198
 
6199
- #: includes/functions/wcj-functions-currencies.php:163
6200
  msgid "Uruguayan peso"
6201
  msgstr ""
6202
 
6203
- #: includes/functions/wcj-functions-currencies.php:164
6204
  msgid "US Dollars"
6205
  msgstr ""
6206
 
6207
- #: includes/functions/wcj-functions-currencies.php:165
6208
  msgid "Uzbekistani som"
6209
  msgstr ""
6210
 
6211
- #: includes/functions/wcj-functions-currencies.php:166
6212
  msgid "Venezuelan bolivar"
6213
  msgstr ""
6214
 
6215
- #: includes/functions/wcj-functions-currencies.php:167
6216
  msgid "Vietnamese Dong"
6217
  msgstr ""
6218
 
6219
- #: includes/functions/wcj-functions-currencies.php:168
6220
  msgid "Vanuatu vatu"
6221
  msgstr ""
6222
 
6223
- #: includes/functions/wcj-functions-currencies.php:169
6224
  msgid "Samoan tala"
6225
  msgstr ""
6226
 
6227
- #: includes/functions/wcj-functions-currencies.php:171
6228
  msgid "East Caribbean dollar"
6229
  msgstr ""
6230
 
6231
- #: includes/functions/wcj-functions-currencies.php:172
6232
  msgid "Special Drawing Rights"
6233
  msgstr ""
6234
 
6235
- #: includes/functions/wcj-functions-currencies.php:173
6236
  msgid "West African CFA franc"
6237
  msgstr ""
6238
 
6239
- #: includes/functions/wcj-functions-currencies.php:174
6240
  msgid "CFP franc"
6241
  msgstr ""
6242
 
6243
- #: includes/functions/wcj-functions-currencies.php:175
6244
  msgid "South African rand"
6245
  msgstr ""
6246
 
6247
- #: includes/functions/wcj-functions-currencies.php:176
6248
  msgid "Zambian kwacha"
6249
  msgstr ""
6250
 
6251
- #: includes/functions/wcj-functions-currencies.php:177
6252
  msgid "Zimbabwean dollar"
6253
  msgstr ""
6254
 
6255
- #: includes/functions/wcj-functions-currencies.php:179
6256
  msgid "Auroracoin"
6257
  msgstr ""
6258
 
6259
- #: includes/functions/wcj-functions-currencies.php:180
6260
  msgid "BitConnect"
6261
  msgstr ""
6262
 
6263
- #: includes/functions/wcj-functions-currencies.php:181
6264
  msgid "Bitcoin Cash"
6265
  msgstr ""
6266
 
6267
- #: includes/functions/wcj-functions-currencies.php:182
6268
  msgid "Bitcoin"
6269
  msgstr ""
6270
 
6271
- #: includes/functions/wcj-functions-currencies.php:183
6272
  msgid "Coinye"
6273
  msgstr ""
6274
 
6275
- #: includes/functions/wcj-functions-currencies.php:184
6276
  msgid "DigitalNote"
6277
  msgstr ""
6278
 
6279
- #: includes/functions/wcj-functions-currencies.php:185
6280
  msgid "Emercoin"
6281
  msgstr ""
6282
 
6283
- #: includes/functions/wcj-functions-currencies.php:186
6284
  msgid "Ethereum Classic"
6285
  msgstr ""
6286
 
6287
- #: includes/functions/wcj-functions-currencies.php:187
6288
  msgid "Ethereum"
6289
  msgstr ""
6290
 
6291
- #: includes/functions/wcj-functions-currencies.php:188
6292
  msgid "Freemasoncoin"
6293
  msgstr ""
6294
 
6295
- #: includes/functions/wcj-functions-currencies.php:189
6296
  msgid "Gridcoin"
6297
  msgstr ""
6298
 
6299
- #: includes/functions/wcj-functions-currencies.php:190
6300
  msgid "IOTA"
6301
  msgstr ""
6302
 
6303
- #: includes/functions/wcj-functions-currencies.php:191
6304
  msgid "Litecoin"
6305
  msgstr ""
6306
 
6307
- #: includes/functions/wcj-functions-currencies.php:192
6308
  msgid "MazaCoin"
6309
  msgstr ""
6310
 
6311
- #: includes/functions/wcj-functions-currencies.php:193
6312
  msgid "Monero"
6313
  msgstr ""
6314
 
6315
- #: includes/functions/wcj-functions-currencies.php:194
6316
  msgid "Namecoin"
6317
  msgstr ""
6318
 
6319
- #: includes/functions/wcj-functions-currencies.php:195
6320
  msgid "NEM"
6321
  msgstr ""
6322
 
6323
- #: includes/functions/wcj-functions-currencies.php:196
6324
  msgid "Nxt"
6325
  msgstr ""
6326
 
6327
- #: includes/functions/wcj-functions-currencies.php:197
6328
  msgid "Omni"
6329
  msgstr ""
6330
 
6331
- #: includes/functions/wcj-functions-currencies.php:198
6332
  msgid "Peercoin"
6333
  msgstr ""
6334
 
6335
- #: includes/functions/wcj-functions-currencies.php:199
6336
  msgid "PotCoin"
6337
  msgstr ""
6338
 
6339
- #: includes/functions/wcj-functions-currencies.php:200
6340
  msgid "Primecoin"
6341
  msgstr ""
6342
 
6343
- #: includes/functions/wcj-functions-currencies.php:201
6344
  msgid "Ripple"
6345
  msgstr ""
6346
 
6347
- #: includes/functions/wcj-functions-currencies.php:202
6348
  msgid "SixEleven"
6349
  msgstr ""
6350
 
6351
- #: includes/functions/wcj-functions-currencies.php:203
6352
  msgid "Synereo AMP"
6353
  msgstr ""
6354
 
6355
- #: includes/functions/wcj-functions-currencies.php:204
6356
  msgid "Titcoin"
6357
  msgstr ""
6358
 
6359
- #: includes/functions/wcj-functions-currencies.php:205
6360
  msgid "Ubiq"
6361
  msgstr ""
6362
 
6363
- #: includes/functions/wcj-functions-currencies.php:206
6364
  msgid "Vertcoin"
6365
  msgstr ""
6366
 
6367
- #: includes/functions/wcj-functions-currencies.php:207
6368
  msgid "Zcash"
6369
  msgstr ""
6370
 
6371
- #: includes/functions/wcj-functions-currencies.php:209
6372
  msgid "myCred"
6373
  msgstr ""
6374
 
6375
- #: includes/functions/wcj-functions-exchange-rates.php:66
6376
  msgid "Yahoo"
6377
  msgstr ""
6378
 
6379
- #: includes/functions/wcj-functions-exchange-rates.php:67
6380
  msgid "European Central Bank (ECB)"
6381
  msgstr ""
6382
 
6383
- #: includes/functions/wcj-functions-exchange-rates.php:68
6384
  msgid "TCMB"
6385
  msgstr ""
6386
 
6387
- #: includes/functions/wcj-functions-exchange-rates.php:69
6388
  msgid "Fixer.io"
6389
  msgstr ""
6390
 
6391
- #: includes/functions/wcj-functions-exchange-rates.php:70
6392
  msgid "Coinbase"
6393
  msgstr ""
6394
 
6395
- #: includes/functions/wcj-functions-exchange-rates.php:71
6396
  msgid "CoinMarketCap"
6397
  msgstr ""
6398
 
6399
- #: includes/functions/wcj-functions-general.php:399
6400
- #: includes/settings/wcj-settings-left-to-free-shipping.php:147
 
6401
  msgid "You have Free delivery"
6402
  msgstr ""
6403
 
6404
- #: includes/functions/wcj-functions-general.php:420
6405
  msgid "Before cart"
6406
  msgstr ""
6407
 
6408
- #: includes/functions/wcj-functions-general.php:421
6409
  msgid "Before cart table"
6410
  msgstr ""
6411
 
6412
- #: includes/functions/wcj-functions-general.php:422
6413
  msgid "Before cart contents"
6414
  msgstr ""
6415
 
6416
- #: includes/functions/wcj-functions-general.php:423
6417
  msgid "Cart contents"
6418
  msgstr ""
6419
 
6420
- #: includes/functions/wcj-functions-general.php:424
6421
  msgid "Cart coupon"
6422
  msgstr ""
6423
 
6424
- #: includes/functions/wcj-functions-general.php:425
6425
  msgid "Cart actions"
6426
  msgstr ""
6427
 
6428
- #: includes/functions/wcj-functions-general.php:426
6429
  msgid "After cart contents"
6430
  msgstr ""
6431
 
6432
- #: includes/functions/wcj-functions-general.php:427
6433
  msgid "After cart table"
6434
  msgstr ""
6435
 
6436
- #: includes/functions/wcj-functions-general.php:428
6437
  msgid "Cart collaterals"
6438
  msgstr ""
6439
 
6440
- #: includes/functions/wcj-functions-general.php:429
6441
  msgid "After cart"
6442
  msgstr ""
6443
 
6444
- #: includes/functions/wcj-functions-general.php:431
6445
  msgid "Before cart totals"
6446
  msgstr ""
6447
 
6448
- #: includes/functions/wcj-functions-general.php:432
6449
  msgid "Cart totals: Before shipping"
6450
  msgstr ""
6451
 
6452
- #: includes/functions/wcj-functions-general.php:433
6453
  msgid "Cart totals: After shipping"
6454
  msgstr ""
6455
 
6456
- #: includes/functions/wcj-functions-general.php:434
6457
  msgid "Cart totals: Before order total"
6458
  msgstr ""
6459
 
6460
- #: includes/functions/wcj-functions-general.php:435
6461
  msgid "Cart totals: After order total"
6462
  msgstr ""
6463
 
6464
- #: includes/functions/wcj-functions-general.php:436
6465
  msgid "Proceed to checkout"
6466
  msgstr ""
6467
 
6468
- #: includes/functions/wcj-functions-general.php:437
6469
  msgid "After cart totals"
6470
  msgstr ""
6471
 
6472
- #: includes/functions/wcj-functions-general.php:439
6473
  msgid "Before shipping calculator"
6474
  msgstr ""
6475
 
6476
- #: includes/functions/wcj-functions-general.php:440
6477
  msgid "After shipping calculator"
6478
  msgstr ""
6479
 
6480
- #: includes/functions/wcj-functions-general.php:442
6481
  msgid "If cart is empty"
6482
  msgstr ""
6483
 
@@ -6514,6 +6589,8 @@ msgid "Item Title"
6514
  msgstr ""
6515
 
6516
  #: includes/functions/wcj-functions-reports.php:27
 
 
6517
  msgid "Quantity"
6518
  msgstr ""
6519
 
@@ -6758,7 +6835,7 @@ msgstr ""
6758
  #: includes/settings/wcj-settings-export.php:220
6759
  #: includes/settings/wcj-settings-global-discount.php:50
6760
  #: includes/settings/wcj-settings-product-by-user.php:149
6761
- #: includes/settings/wcj-settings-products-xml.php:76
6762
  #: includes/settings/meta-box/wcj-settings-meta-box-price-by-user-role.php:37
6763
  #: includes/settings/meta-box/wcj-settings-meta-box-product-addons.php:21
6764
  #: includes/settings/meta-box/wcj-settings-meta-box-product-bookings.php:14
@@ -6777,7 +6854,7 @@ msgstr ""
6777
  #: includes/settings/wcj-settings-cart-customization.php:50
6778
  #: includes/settings/wcj-settings-checkout-custom-fields.php:120
6779
  #: includes/settings/wcj-settings-more-button-labels.php:19
6780
- #: includes/settings/wcj-settings-product-addons.php:82
6781
  #: includes/settings/meta-box/wcj-settings-meta-box-product-addons.php:53
6782
  msgid "Text"
6783
  msgstr ""
@@ -6794,7 +6871,7 @@ msgstr ""
6794
 
6795
  #: includes/input-fields/wcj-product-input-fields-options.php:35
6796
  #: includes/settings/wcj-settings-checkout-custom-fields.php:123
6797
- #: includes/settings/wcj-settings-product-addons.php:79
6798
  #: includes/settings/meta-box/wcj-settings-meta-box-product-addons.php:50
6799
  msgid "Checkbox"
6800
  msgstr ""
@@ -6837,7 +6914,7 @@ msgstr ""
6837
  #: includes/input-fields/wcj-product-input-fields-options.php:57
6838
  #: includes/settings/wcj-settings-checkout-custom-fields.php:150
6839
  #: includes/settings/wcj-settings-eu-vat-number.php:27
6840
- #: includes/settings/wcj-settings-product-addons.php:126
6841
  #: includes/settings/meta-box/wcj-settings-meta-box-product-addons.php:91
6842
  msgid "Placeholder"
6843
  msgstr ""
@@ -7183,53 +7260,93 @@ msgstr ""
7183
  msgid "No documents (%s) found for %d-%02d."
7184
  msgstr ""
7185
 
7186
- #: includes/pdf-invoices/class-wcj-pdf-invoicing-report-tool.php:303
 
 
 
 
 
 
 
 
7187
  msgid "Document Number"
7188
  msgstr ""
7189
 
7190
- #: includes/pdf-invoices/class-wcj-pdf-invoicing-report-tool.php:304
 
7191
  msgid "Document Date"
7192
  msgstr ""
7193
 
7194
- #: includes/pdf-invoices/class-wcj-pdf-invoicing-report-tool.php:306
 
7195
  msgid "Customer Country"
7196
  msgstr ""
7197
 
7198
- #: includes/pdf-invoices/class-wcj-pdf-invoicing-report-tool.php:307
 
7199
  msgid "Customer VAT ID"
7200
  msgstr ""
7201
 
7202
- #: includes/pdf-invoices/class-wcj-pdf-invoicing-report-tool.php:308
 
7203
  msgid "Tax %"
7204
  msgstr ""
7205
 
7206
- #: includes/pdf-invoices/class-wcj-pdf-invoicing-report-tool.php:309
7207
- msgid "Order Total Tax Excluding"
 
7208
  msgstr ""
7209
 
7210
- #: includes/pdf-invoices/class-wcj-pdf-invoicing-report-tool.php:310
 
7211
  msgid "Order Taxes"
7212
  msgstr ""
7213
 
7214
- #: includes/pdf-invoices/class-wcj-pdf-invoicing-report-tool.php:313
 
7215
  msgid "Payment Gateway"
7216
  msgstr ""
7217
 
7218
- #: includes/pdf-invoices/class-wcj-pdf-invoicing-report-tool.php:314
 
7219
  msgid "Refunds"
7220
  msgstr ""
7221
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7222
  #: includes/pdf-invoices/submodules/class-wcj-pdf-invoicing-display.php:24
7223
  msgid "Display & Misc."
7224
  msgstr ""
7225
 
7226
  #: includes/pdf-invoices/submodules/class-wcj-pdf-invoicing-display.php:129
7227
- #: includes/pdf-invoices/submodules/class-wcj-pdf-invoicing-display.php:296
7228
  msgid "View"
7229
  msgstr ""
7230
 
7231
  #: includes/pdf-invoices/submodules/class-wcj-pdf-invoicing-display.php:148
7232
- #: includes/pdf-invoices/submodules/class-wcj-pdf-invoicing-display.php:309
7233
  msgid "Create"
7234
  msgstr ""
7235
 
@@ -7237,7 +7354,11 @@ msgstr ""
7237
  msgid "Booster: PDF Invoices"
7238
  msgstr ""
7239
 
7240
- #: includes/pdf-invoices/submodules/class-wcj-pdf-invoicing-display.php:315
 
 
 
 
7241
  msgid ""
7242
  "In case of partial refund, you need to reload the page to see created "
7243
  "document in this meta box."
@@ -7290,13 +7411,21 @@ msgstr ""
7290
  msgid "Country Groups Generated."
7291
  msgstr ""
7292
 
7293
- #: includes/price-by-country/class-wcj-price-by-country-local.php:140
7294
- #: includes/settings/wcj-settings-price-by-country.php:289
 
7295
  msgid "Make empty price"
7296
  msgstr ""
7297
 
7298
- #: includes/price-by-country/class-wcj-price-by-country-local.php:246
7299
- msgid "Country Group Nr."
 
 
 
 
 
 
 
7300
  msgstr ""
7301
 
7302
  #: includes/reports/class-wcj-currency-reports.php:38
@@ -7308,36 +7437,40 @@ msgstr ""
7308
  msgid "Show reports only in"
7309
  msgstr ""
7310
 
7311
- #: includes/reports/wcj-class-reports-customers.php:39
7312
  msgid "No customers found."
7313
  msgstr ""
7314
 
7315
- #: includes/reports/wcj-class-reports-customers.php:89
 
 
 
 
7316
  #: includes/settings/wcj-settings-offer-price.php:162
7317
  msgid "Customer Name"
7318
  msgstr ""
7319
 
7320
- #: includes/reports/wcj-class-reports-customers.php:91
7321
  msgid "Total Spent"
7322
  msgstr ""
7323
 
7324
- #: includes/reports/wcj-class-reports-customers.php:131
7325
  msgid "Total customers"
7326
  msgstr ""
7327
 
7328
- #: includes/reports/wcj-class-reports-customers.php:135
7329
  msgid "Country Code"
7330
  msgstr ""
7331
 
7332
- #: includes/reports/wcj-class-reports-customers.php:136
7333
  msgid "Customers Count"
7334
  msgstr ""
7335
 
7336
- #: includes/reports/wcj-class-reports-customers.php:137
7337
  msgid "Percent of total"
7338
  msgstr ""
7339
 
7340
- #: includes/reports/wcj-class-reports-customers.php:159
7341
  msgid "Report for:"
7342
  msgstr ""
7343
 
@@ -7577,6 +7710,103 @@ msgstr ""
7577
  msgid "Report was generated in: "
7578
  msgstr ""
7579
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7580
  #: includes/settings/wcj-settings-add-to-cart.php:14
7581
  msgid "Per Category Options"
7582
  msgstr ""
@@ -7612,14 +7842,6 @@ msgstr ""
7612
  msgid "Click \"Save changes\" after you change this number."
7613
  msgstr ""
7614
 
7615
- #: includes/settings/wcj-settings-add-to-cart.php:51
7616
- #: includes/settings/wcj-settings-price-by-country.php:193
7617
- #: includes/settings/wcj-settings-price-by-country.php:203
7618
- #: includes/settings/wcj-settings-price-by-country.php:213
7619
- #: includes/settings/wcj-settings-price-by-country.php:271
7620
- msgid "Group"
7621
- msgstr ""
7622
-
7623
  #: includes/settings/wcj-settings-add-to-cart.php:59
7624
  msgid "categories"
7625
  msgstr ""
@@ -7638,7 +7860,7 @@ msgid "Button text - product archive (category) view"
7638
  msgstr ""
7639
 
7640
  #: includes/settings/wcj-settings-add-to-cart.php:92
7641
- #: includes/settings/wcj-settings-product-addons.php:18
7642
  #: includes/settings/wcj-settings-product-by-date.php:47
7643
  #: includes/settings/wcj-settings-product-by-time.php:47
7644
  msgid "Per Product Options"
@@ -7788,7 +8010,7 @@ msgstr ""
7788
  #: includes/settings/wcj-settings-payment-gateways-icons.php:14
7789
  #: includes/settings/wcj-settings-payment-gateways-per-category.php:18
7790
  #: includes/settings/wcj-settings-price-by-user-role.php:14
7791
- #: includes/settings/wcj-settings-product-addons.php:157
7792
  #: includes/settings/wcj-settings-product-bookings.php:86
7793
  #: includes/settings/wcj-settings-product-by-user-role.php:14
7794
  #: includes/settings/wcj-settings-product-by-user.php:59
@@ -7803,47 +8025,25 @@ msgid "Options"
7803
  msgstr ""
7804
 
7805
  #: includes/settings/wcj-settings-admin-bar.php:19
7806
- msgid "\"WooCommerce\" Admin Bar"
7807
- msgstr ""
7808
-
7809
- #: includes/settings/wcj-settings-admin-bar.php:26
7810
- msgid "\"Booster\" Admin Bar"
7811
- msgstr ""
7812
-
7813
- #: includes/settings/wcj-settings-admin-bar.php:33
7814
- msgid "\"Booster: Active\" Admin Bar"
7815
- msgstr ""
7816
-
7817
- #: includes/settings/wcj-settings-admin-orders-list.php:14
7818
- #: includes/settings/wcj-settings-admin-orders-list.php:20
7819
- #: includes/settings/wcj-settings-admin-products-list.php:14
7820
- msgid "Custom Columns"
7821
- msgstr ""
7822
-
7823
- #: includes/settings/wcj-settings-admin-orders-list.php:16
7824
- msgid "This section lets you add custom columns to WooCommerce orders list."
7825
- msgstr ""
7826
-
7827
- #: includes/settings/wcj-settings-admin-orders-list.php:21
7828
- #: includes/settings/wcj-settings-admin-orders-list.php:107
7829
- #: includes/settings/wcj-settings-admin-orders-list.php:148
7830
- #: includes/settings/wcj-settings-admin-products-list.php:20
7831
- #: includes/settings/wcj-settings-admin-products-list.php:76
7832
- #: includes/settings/wcj-settings-order-quantities.php:21
7833
- #: includes/settings/wcj-settings-order-quantities.php:79
7834
- #: includes/settings/wcj-settings-orders.php:72
7835
- #: includes/settings/wcj-settings-price-formats.php:37
7836
- #: includes/settings/wcj-settings-product-listings.php:128
7837
- #: includes/settings/wcj-settings-sale-flash.php:20
7838
- #: includes/settings/wcj-settings-sale-flash.php:65
7839
- #: includes/settings/wcj-settings-sale-flash.php:90
7840
- #: includes/settings/wcj-settings-shipping-by-condition.php:25
7841
- #: includes/settings/wcj-settings-shipping-options.php:21
7842
- #: includes/settings/wcj-settings-stock.php:23
7843
- #: includes/settings/wcj-settings-tax-display.php:27
7844
- #: includes/settings/wcj-settings-tax-display.php:44
7845
- #: includes/settings/wcj-settings-tax-display.php:101
7846
- msgid "Enable section"
7847
  msgstr ""
7848
 
7849
  #: includes/settings/wcj-settings-admin-orders-list.php:28
@@ -7882,37 +8082,37 @@ msgstr ""
7882
  msgid "Label"
7883
  msgstr ""
7884
 
7885
- #: includes/settings/wcj-settings-admin-orders-list.php:71
7886
  #: includes/settings/wcj-settings-admin-products-list.php:57
7887
  msgid "You can use shortcodes and/or HTML here."
7888
  msgstr ""
7889
 
7890
- #: includes/settings/wcj-settings-admin-orders-list.php:77
7891
  msgid "Sortable"
7892
  msgstr ""
7893
 
7894
- #: includes/settings/wcj-settings-admin-orders-list.php:83
7895
  msgid "By meta (as text)"
7896
  msgstr ""
7897
 
7898
- #: includes/settings/wcj-settings-admin-orders-list.php:84
7899
  msgid "By meta (as numbers)"
7900
  msgstr ""
7901
 
7902
- #: includes/settings/wcj-settings-admin-orders-list.php:88
7903
  msgid "Key (if sortable)"
7904
  msgstr ""
7905
 
7906
- #: includes/settings/wcj-settings-admin-orders-list.php:101
7907
- #: includes/settings/wcj-settings-admin-orders-list.php:106
7908
  msgid "Multiple Status"
7909
  msgstr ""
7910
 
7911
- #: includes/settings/wcj-settings-admin-orders-list.php:113
7912
  msgid "Multiple Status Filtering"
7913
  msgstr ""
7914
 
7915
- #: includes/settings/wcj-settings-admin-orders-list.php:118
7916
  #: includes/settings/wcj-settings-empty-cart.php:40
7917
  #: includes/settings/wcj-settings-empty-cart.php:55
7918
  #: includes/settings/wcj-settings-offer-price.php:69
@@ -7920,26 +8120,26 @@ msgstr ""
7920
  msgid "Do not add"
7921
  msgstr ""
7922
 
7923
- #: includes/settings/wcj-settings-admin-orders-list.php:119
7924
  msgid "Add as multiple select"
7925
  msgstr ""
7926
 
7927
- #: includes/settings/wcj-settings-admin-orders-list.php:120
7928
  msgid "Add as checkboxes"
7929
  msgstr ""
7930
 
7931
- #: includes/settings/wcj-settings-admin-orders-list.php:124
7932
  msgid "Hide Default Statuses Menu"
7933
  msgstr ""
7934
 
7935
- #: includes/settings/wcj-settings-admin-orders-list.php:125
7936
  #: includes/settings/wcj-settings-breadcrumbs.php:34
7937
  #: includes/settings/wcj-settings-cart-customization.php:20
7938
  #: includes/settings/wcj-settings-cart-customization.php:27
7939
  #: includes/settings/wcj-settings-checkout-customization.php:32
7940
  #: includes/settings/wcj-settings-currency.php:21
7941
  #: includes/settings/wcj-settings-order-custom-statuses.php:63
7942
- #: includes/settings/wcj-settings-pdf-invoicing.php:74
7943
  #: includes/settings/wcj-settings-product-bookings.php:92
7944
  #: includes/settings/wcj-settings-product-images.php:20
7945
  #: includes/settings/wcj-settings-product-images.php:27
@@ -7951,20 +8151,22 @@ msgstr ""
7951
  #: includes/settings/wcj-settings-sale-flash.php:42
7952
  #: includes/settings/wcj-settings-sale-flash.php:49
7953
  #: includes/settings/wcj-settings-shipping-calculator.php:54
 
 
7954
  msgid "Hide"
7955
  msgstr ""
7956
 
7957
- #: includes/settings/wcj-settings-admin-orders-list.php:131
7958
  msgid "Add \"Not Completed\" Status Link to Default Statuses Menu"
7959
  msgstr ""
7960
 
7961
- #: includes/settings/wcj-settings-admin-orders-list.php:142
7962
- #: includes/settings/wcj-settings-admin-orders-list.php:147
7963
  #: includes/settings/wcj-settings-admin-products-list.php:70
7964
  msgid "Columns Order"
7965
  msgstr ""
7966
 
7967
- #: includes/settings/wcj-settings-admin-orders-list.php:155
7968
  #: includes/settings/wcj-settings-admin-products-list.php:83
7969
  msgid "Default columns order"
7970
  msgstr ""
@@ -8025,6 +8227,10 @@ msgstr ""
8025
  msgid "Show Product Meta"
8026
  msgstr ""
8027
 
 
 
 
 
8028
  #: includes/settings/wcj-settings-breadcrumbs.php:19
8029
  msgid "Change Breadcrumbs Home URL"
8030
  msgstr ""
@@ -8160,22 +8366,22 @@ msgstr ""
8160
  msgid "Info Block"
8161
  msgstr ""
8162
 
8163
- #: includes/settings/wcj-settings-cart.php:59
8164
- #: includes/settings/wcj-settings-checkout-custom-info.php:85
8165
  #: includes/settings/wcj-settings-mini-cart.php:58
8166
  #: includes/settings/wcj-settings-product-custom-info.php:112
8167
  msgid "Position Order (i.e. Priority)"
8168
  msgstr ""
8169
 
8170
- #: includes/settings/wcj-settings-cart.php:74
8171
  msgid "Cart Items Table Custom Info"
8172
  msgstr ""
8173
 
8174
- #: includes/settings/wcj-settings-cart.php:80
8175
  msgid "Add to Each Item Name"
8176
  msgstr ""
8177
 
8178
- #: includes/settings/wcj-settings-cart.php:81
8179
  msgid ""
8180
  "You can use shortcodes here. E.g.: [wcj_product_sku]. Leave blank to disable."
8181
  msgstr ""
@@ -8332,7 +8538,7 @@ msgstr ""
8332
  #: includes/settings/wcj-settings-checkout-custom-fields.php:169
8333
  #: includes/settings/wcj-settings-checkout-custom-info.php:55
8334
  #: includes/settings/wcj-settings-empty-cart.php:58
8335
- #: includes/settings/wcj-settings-left-to-free-shipping.php:124
8336
  msgid "Billing"
8337
  msgstr ""
8338
 
@@ -8465,7 +8671,7 @@ msgstr ""
8465
 
8466
  #: includes/settings/wcj-settings-checkout-custom-fields.php:319
8467
  #: includes/settings/wcj-settings-global-discount.php:137
8468
- #: includes/settings/wcj-settings-product-addons.php:140
8469
  #: includes/settings/wcj-settings-related-products.php:223
8470
  msgid "Exclude Products"
8471
  msgstr ""
@@ -8511,44 +8717,44 @@ msgstr ""
8511
  #: includes/settings/wcj-settings-checkout-custom-info.php:53
8512
  #: includes/settings/wcj-settings-checkout-files-upload.php:55
8513
  #: includes/settings/wcj-settings-empty-cart.php:56
8514
- #: includes/settings/wcj-settings-left-to-free-shipping.php:122
8515
  msgid "Before checkout form"
8516
  msgstr ""
8517
 
8518
  #: includes/settings/wcj-settings-checkout-custom-info.php:54
8519
  #: includes/settings/wcj-settings-empty-cart.php:57
8520
- #: includes/settings/wcj-settings-left-to-free-shipping.php:123
8521
  msgid "Before customer details"
8522
  msgstr ""
8523
 
8524
  #: includes/settings/wcj-settings-checkout-custom-info.php:57
8525
  #: includes/settings/wcj-settings-empty-cart.php:60
8526
- #: includes/settings/wcj-settings-left-to-free-shipping.php:126
8527
  msgid "After customer details"
8528
  msgstr ""
8529
 
8530
  #: includes/settings/wcj-settings-checkout-custom-info.php:58
8531
  #: includes/settings/wcj-settings-empty-cart.php:61
8532
- #: includes/settings/wcj-settings-left-to-free-shipping.php:127
8533
  msgid "Before order review"
8534
  msgstr ""
8535
 
8536
  #: includes/settings/wcj-settings-checkout-custom-info.php:59
8537
  #: includes/settings/wcj-settings-empty-cart.php:62
8538
- #: includes/settings/wcj-settings-left-to-free-shipping.php:128
8539
  msgid "Order review"
8540
  msgstr ""
8541
 
8542
  #: includes/settings/wcj-settings-checkout-custom-info.php:60
8543
  #: includes/settings/wcj-settings-empty-cart.php:63
8544
- #: includes/settings/wcj-settings-left-to-free-shipping.php:129
8545
  msgid "After order review"
8546
  msgstr ""
8547
 
8548
  #: includes/settings/wcj-settings-checkout-custom-info.php:61
8549
  #: includes/settings/wcj-settings-checkout-files-upload.php:56
8550
  #: includes/settings/wcj-settings-empty-cart.php:64
8551
- #: includes/settings/wcj-settings-left-to-free-shipping.php:130
8552
  msgid "After checkout form"
8553
  msgstr ""
8554
 
@@ -8671,9 +8877,15 @@ msgstr ""
8671
  #: includes/settings/wcj-settings-checkout-customization.php:84
8672
  #: includes/settings/wcj-settings-sale-flash.php:27
8673
  #: includes/settings/wcj-settings-sale-flash.php:102
 
 
8674
  msgid "You can use HTML and/or shortcodes here."
8675
  msgstr ""
8676
 
 
 
 
 
8677
  #: includes/settings/wcj-settings-checkout-files-upload.php:22
8678
  #: includes/settings/wcj-settings-products-xml.php:23
8679
  msgid "Total Files"
@@ -8835,8 +9047,8 @@ msgid "Form Template Options"
8835
  msgstr ""
8836
 
8837
  #: includes/settings/wcj-settings-checkout-files-upload.php:249
8838
- #: includes/settings/wcj-settings-product-addons.php:170
8839
- #: includes/settings/wcj-settings-product-addons.php:193
8840
  msgid "Before"
8841
  msgstr ""
8842
 
@@ -8856,14 +9068,17 @@ msgid "Replaced values: %field_html%, %button_html%."
8856
  msgstr ""
8857
 
8858
  #: includes/settings/wcj-settings-checkout-files-upload.php:272
8859
- #: includes/settings/wcj-settings-product-addons.php:185
8860
- #: includes/settings/wcj-settings-product-addons.php:208
8861
  msgid "After"
8862
  msgstr ""
8863
 
8864
  #: includes/settings/wcj-settings-checkout-files-upload.php:285
 
8865
  #: includes/settings/wcj-settings-eu-vat-number.php:203
8866
  #: includes/settings/wcj-settings-general.php:77
 
 
8867
  #: includes/settings/wcj-settings-product-custom-info.php:188
8868
  #: includes/settings/wcj-settings-shipping-by-condition.php:78
8869
  msgid "Advanced Options"
@@ -8941,7 +9156,6 @@ msgid "%s till next update."
8941
  msgstr ""
8942
 
8943
  #: includes/settings/wcj-settings-currency-exchange-rates.php:20
8944
- #: includes/settings/wcj-settings-products-xml.php:55
8945
  #, php-format
8946
  msgid "%s seconds till next update."
8947
  msgstr ""
@@ -8958,7 +9172,7 @@ msgstr ""
8958
  #: includes/settings/wcj-settings-multicurrency-base-price.php:24
8959
  #: includes/settings/wcj-settings-multicurrency.php:22
8960
  #: includes/settings/wcj-settings-payment-gateways-currency.php:59
8961
- #: includes/settings/wcj-settings-price-by-country.php:244
8962
  msgid "Exchange Rates Updates"
8963
  msgstr ""
8964
 
@@ -9029,7 +9243,7 @@ msgid "Custom Currency"
9029
  msgstr ""
9030
 
9031
  #: includes/settings/wcj-settings-currency-exchange-rates.php:156
9032
- #: includes/settings/wcj-settings-price-by-country.php:239
9033
  msgid "Exchange Rates"
9034
  msgstr ""
9035
 
@@ -9041,7 +9255,7 @@ msgstr ""
9041
  #: includes/settings/wcj-settings-currency-per-product.php:163
9042
  #: includes/settings/wcj-settings-multicurrency-base-price.php:94
9043
  #: includes/settings/wcj-settings-multicurrency.php:135
9044
- #: includes/settings/wcj-settings-price-by-country.php:225
9045
  #: includes/settings/wcj-settings-price-formats.php:59
9046
  msgid "Currency"
9047
  msgstr ""
@@ -9116,7 +9330,7 @@ msgstr ""
9116
  #: includes/settings/wcj-settings-multicurrency-base-price.php:29
9117
  #: includes/settings/wcj-settings-multicurrency.php:28
9118
  #: includes/settings/wcj-settings-payment-gateways-currency.php:64
9119
- #: includes/settings/wcj-settings-price-by-country.php:249
9120
  msgid "Enter Rates Manually"
9121
  msgstr ""
9122
 
@@ -9124,7 +9338,7 @@ msgstr ""
9124
  #: includes/settings/wcj-settings-multicurrency-base-price.php:30
9125
  #: includes/settings/wcj-settings-multicurrency.php:29
9126
  #: includes/settings/wcj-settings-payment-gateways-currency.php:65
9127
- #: includes/settings/wcj-settings-price-by-country.php:250
9128
  msgid "Automatically via Currency Exchange Rates module"
9129
  msgstr ""
9130
 
@@ -9132,7 +9346,7 @@ msgstr ""
9132
  #: includes/settings/wcj-settings-multicurrency-base-price.php:33
9133
  #: includes/settings/wcj-settings-multicurrency.php:32
9134
  #: includes/settings/wcj-settings-payment-gateways-currency.php:68
9135
- #: includes/settings/wcj-settings-price-by-country.php:253
9136
  msgid "Visit"
9137
  msgstr ""
9138
 
@@ -9140,7 +9354,7 @@ msgstr ""
9140
  #: includes/settings/wcj-settings-multicurrency-base-price.php:33
9141
  #: includes/settings/wcj-settings-multicurrency.php:32
9142
  #: includes/settings/wcj-settings-payment-gateways-currency.php:68
9143
- #: includes/settings/wcj-settings-price-by-country.php:253
9144
  msgid "Currency Exchange Rates module"
9145
  msgstr ""
9146
 
@@ -9171,6 +9385,18 @@ msgstr ""
9171
  msgid "Product Authors User Roles"
9172
  msgstr ""
9173
 
 
 
 
 
 
 
 
 
 
 
 
 
9174
  #: includes/settings/wcj-settings-currency.php:15
9175
  msgid "Currency Symbol Options"
9176
  msgstr ""
@@ -9216,13 +9442,6 @@ msgid ""
9216
  "Set product specific CSS to be loaded only on specific product's single page."
9217
  msgstr ""
9218
 
9219
- #: includes/settings/wcj-settings-custom-css.php:36
9220
- #: includes/settings/wcj-settings-product-add-to-cart.php:179
9221
- #: includes/settings/wcj-settings-product-add-to-cart.php:210
9222
- #: includes/settings/wcj-settings-product-add-to-cart.php:227
9223
- msgid "This will add meta box to each product's edit page"
9224
- msgstr ""
9225
-
9226
  #: includes/settings/wcj-settings-custom-css.php:42
9227
  msgid "Custom CSS on per Product Basis - Default Field Value"
9228
  msgstr ""
@@ -9517,7 +9736,7 @@ msgid "Export Options"
9517
  msgstr ""
9518
 
9519
  #: includes/settings/wcj-settings-export.php:20
9520
- #: includes/settings/wcj-settings-pdf-invoicing.php:125
9521
  msgid "CSV Separator"
9522
  msgstr ""
9523
 
@@ -9661,11 +9880,12 @@ msgid "Grouped Products"
9661
  msgstr ""
9662
 
9663
  #: includes/settings/wcj-settings-free-price.php:16
9664
- #: includes/settings/wcj-settings-product-add-to-cart.php:237
9665
  msgid "External Products"
9666
  msgstr ""
9667
 
9668
  #: includes/settings/wcj-settings-free-price.php:19
 
9669
  msgid "Single Product Page"
9670
  msgstr ""
9671
 
@@ -9711,22 +9931,6 @@ msgstr ""
9711
  msgid "Disable all Booster's shortcodes (for memory saving)."
9712
  msgstr ""
9713
 
9714
- #: includes/settings/wcj-settings-general.php:51
9715
- #: includes/settings/wcj-settings-general.php:100
9716
- #: includes/settings/wcj-settings-general.php:114
9717
- #: includes/settings/wcj-settings-general.php:121
9718
- #: includes/settings/wcj-settings-general.php:128
9719
- #: includes/settings/wcj-settings-general.php:135
9720
- #: includes/settings/wcj-settings-pdf-invoicing-styling.php:126
9721
- #: includes/settings/wcj-settings-price-by-user-role.php:56
9722
- #: includes/settings/wcj-settings-price-by-user-role.php:88
9723
- #: includes/settings/wcj-settings-product-add-to-cart.php:131
9724
- #: includes/settings/wcj-settings-product-open-pricing.php:80
9725
- #: includes/settings/wcj-settings-sku.php:205
9726
- #: includes/settings/meta-box/wcj-settings-meta-box-product-add-to-cart.php:91
9727
- msgid "Disable"
9728
- msgstr ""
9729
-
9730
  #: includes/settings/wcj-settings-general.php:61
9731
  #: includes/settings/wcj-settings-general.php:66
9732
  msgid "Product Revisions"
@@ -9849,7 +10053,7 @@ msgstr ""
9849
  #: includes/settings/wcj-settings-global-discount.php:64
9850
  #: includes/settings/wcj-settings-payment-gateways-fees.php:38
9851
  #: includes/settings/wcj-settings-purchase-data.php:78
9852
- #: includes/settings/wcj-settings-wholesale-price.php:62
9853
  #: includes/settings/meta-box/wcj-settings-meta-box-wholesale-price.php:18
9854
  msgid "Percent"
9855
  msgstr ""
@@ -9858,7 +10062,7 @@ msgstr ""
9858
  #: includes/settings/wcj-settings-payment-gateways-fees.php:37
9859
  #: includes/settings/wcj-settings-price-by-user-role.php:32
9860
  #: includes/settings/wcj-settings-purchase-data.php:77
9861
- #: includes/settings/wcj-settings-wholesale-price.php:63
9862
  #: includes/settings/meta-box/wcj-settings-meta-box-wholesale-price.php:19
9863
  msgid "Fixed"
9864
  msgstr ""
@@ -9879,7 +10083,7 @@ msgstr ""
9879
 
9880
  #: includes/settings/wcj-settings-global-discount.php:83
9881
  #: includes/settings/wcj-settings-product-add-to-cart.php:65
9882
- #: includes/settings/wcj-settings-products-xml.php:204
9883
  msgid "All products"
9884
  msgstr ""
9885
 
@@ -9888,7 +10092,7 @@ msgid "Only products that are already on sale"
9888
  msgstr ""
9889
 
9890
  #: includes/settings/wcj-settings-global-discount.php:85
9891
- #: includes/settings/wcj-settings-products-xml.php:206
9892
  msgid "Only products that are not on sale"
9893
  msgstr ""
9894
 
@@ -9974,46 +10178,46 @@ msgid "Info on Cart"
9974
  msgstr ""
9975
 
9976
  #: includes/settings/wcj-settings-left-to-free-shipping.php:35
9977
- #: includes/settings/wcj-settings-left-to-free-shipping.php:70
9978
- #: includes/settings/wcj-settings-left-to-free-shipping.php:109
9979
- #: includes/settings/wcj-settings-left-to-free-shipping.php:144
9980
  msgid "You can use HTML and/or shortcodes (e.g. [wcj_wpml]) here."
9981
  msgstr ""
9982
 
9983
- #: includes/settings/wcj-settings-left-to-free-shipping.php:52
9984
- #: includes/settings/wcj-settings-left-to-free-shipping.php:91
9985
- #: includes/settings/wcj-settings-left-to-free-shipping.php:136
9986
  msgid "Position Order (Priority)"
9987
  msgstr ""
9988
 
9989
- #: includes/settings/wcj-settings-left-to-free-shipping.php:59
9990
  msgid "Info on Mini Cart"
9991
  msgstr ""
9992
 
9993
- #: includes/settings/wcj-settings-left-to-free-shipping.php:83
9994
  #: includes/settings/wcj-settings-mini-cart.php:51
9995
  msgid "Before mini cart"
9996
  msgstr ""
9997
 
9998
- #: includes/settings/wcj-settings-left-to-free-shipping.php:84
9999
  #: includes/settings/wcj-settings-mini-cart.php:52
10000
  msgid "Before buttons"
10001
  msgstr ""
10002
 
10003
- #: includes/settings/wcj-settings-left-to-free-shipping.php:85
10004
  #: includes/settings/wcj-settings-mini-cart.php:53
10005
  msgid "After mini cart"
10006
  msgstr ""
10007
 
10008
- #: includes/settings/wcj-settings-left-to-free-shipping.php:98
10009
  msgid "Info on Checkout"
10010
  msgstr ""
10011
 
10012
- #: includes/settings/wcj-settings-left-to-free-shipping.php:143
10013
  msgid "Message on Free Shipping Reached"
10014
  msgstr ""
10015
 
10016
- #: includes/settings/wcj-settings-left-to-free-shipping.php:145
10017
  msgid "Set empty to disable."
10018
  msgstr ""
10019
 
@@ -10021,6 +10225,26 @@ msgstr ""
10021
  msgid "Mini Cart Custom Info Blocks"
10022
  msgstr ""
10023
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
10024
  #: includes/settings/wcj-settings-more-button-labels.php:14
10025
  msgid "Place order (Order now) Button"
10026
  msgstr ""
@@ -10033,22 +10257,22 @@ msgstr ""
10033
  msgid "Button on the checkout page."
10034
  msgstr ""
10035
 
10036
- #: includes/settings/wcj-settings-multicurrency-base-price.php:39
10037
- msgid "Round Prices"
10038
  msgstr ""
10039
 
10040
- #: includes/settings/wcj-settings-multicurrency-base-price.php:46
10041
- msgid "rounding precision"
 
 
10042
  msgstr ""
10043
 
10044
- #: includes/settings/wcj-settings-multicurrency-base-price.php:53
10045
- msgid "Advanced: Saved Calculated Products Prices"
10046
  msgstr ""
10047
 
10048
- #: includes/settings/wcj-settings-multicurrency-base-price.php:54
10049
- msgid ""
10050
- "This may help if you are experiencing compatibility issues with other "
10051
- "plugins."
10052
  msgstr ""
10053
 
10054
  #: includes/settings/wcj-settings-multicurrency.php:23
@@ -10166,7 +10390,7 @@ msgid "Roles"
10166
  msgstr ""
10167
 
10168
  #: includes/settings/wcj-settings-multicurrency.php:168
10169
- #: includes/settings/wcj-settings-wholesale-price.php:137
10170
  msgid "Save settings after you change this option. Leave blank to disable."
10171
  msgstr ""
10172
 
@@ -10461,12 +10685,6 @@ msgstr ""
10461
  msgid "Message on cart page"
10462
  msgstr ""
10463
 
10464
- #: includes/settings/wcj-settings-order-min-amount.php:69
10465
- #: includes/settings/wcj-settings-pdf-invoicing.php:87
10466
- #: includes/settings/wcj-settings-pdf-invoicing.php:101
10467
- msgid "Advanced"
10468
- msgstr ""
10469
-
10470
  #: includes/settings/wcj-settings-order-min-amount.php:70
10471
  msgid "Cart notice method"
10472
  msgstr ""
@@ -10506,59 +10724,76 @@ msgstr ""
10506
  msgid "Order Minimum Amount by User Role"
10507
  msgstr ""
10508
 
10509
- #: includes/settings/wcj-settings-order-numbers.php:16
10510
  msgid ""
10511
  "This section lets you enable sequential order numbering, set custom number "
10512
  "prefix, suffix and width."
10513
  msgstr ""
10514
 
10515
- #: includes/settings/wcj-settings-order-numbers.php:20
10516
  #: includes/settings/wcj-settings-sku.php:21
10517
  msgid "Number Generation"
10518
  msgstr ""
10519
 
10520
- #: includes/settings/wcj-settings-order-numbers.php:25
10521
  #: includes/settings/wcj-settings-pdf-invoicing-numbering.php:22
10522
  #: includes/settings/wcj-settings-sku.php:27
10523
  msgid "Sequential"
10524
  msgstr ""
10525
 
10526
- #: includes/settings/wcj-settings-order-numbers.php:27
10527
  #: includes/settings/wcj-settings-sku.php:28
10528
  msgid "Pseudorandom - Hash (max 10 digits)"
10529
  msgstr ""
10530
 
10531
- #: includes/settings/wcj-settings-order-numbers.php:31
10532
- msgid "Next Order Number"
10533
  msgstr ""
10534
 
10535
- #: includes/settings/wcj-settings-order-numbers.php:32
10536
  msgid "Next new order will be given this number."
10537
  msgstr ""
10538
 
10539
- #: includes/settings/wcj-settings-order-numbers.php:32
10540
  msgid "Use Renumerate Orders tool for existing orders."
10541
  msgstr ""
10542
 
10543
- #: includes/settings/wcj-settings-order-numbers.php:33
 
10544
  msgid "This will be ignored if sequential order numbering is disabled."
10545
  msgstr ""
10546
 
10547
- #: includes/settings/wcj-settings-order-numbers.php:39
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
10548
  msgid "Order Number Custom Prefix"
10549
  msgstr ""
10550
 
10551
- #: includes/settings/wcj-settings-order-numbers.php:40
10552
  msgid ""
10553
  "Prefix before order number (optional). This will change the prefixes for all "
10554
  "existing orders."
10555
  msgstr ""
10556
 
10557
- #: includes/settings/wcj-settings-order-numbers.php:47
10558
  msgid "Order Number Date Prefix"
10559
  msgstr ""
10560
 
10561
- #: includes/settings/wcj-settings-order-numbers.php:49
10562
  msgid ""
10563
  "Date prefix before order number (optional). This will change the prefixes "
10564
  "for all existing orders. Value is passed directly to PHP `date` function, so "
@@ -10567,11 +10802,11 @@ msgid ""
10567
  "d- or mdy."
10568
  msgstr ""
10569
 
10570
- #: includes/settings/wcj-settings-order-numbers.php:57
10571
  msgid "Order Number Width"
10572
  msgstr ""
10573
 
10574
- #: includes/settings/wcj-settings-order-numbers.php:59
10575
  msgid ""
10576
  "Minimum width of number without prefix (zeros will be added to the left "
10577
  "side). This will change the minimum width of order number for all existing "
@@ -10579,21 +10814,21 @@ msgid ""
10579
  "Leave zero to disable."
10580
  msgstr ""
10581
 
10582
- #: includes/settings/wcj-settings-order-numbers.php:67
10583
  msgid "Order Number Custom Suffix"
10584
  msgstr ""
10585
 
10586
- #: includes/settings/wcj-settings-order-numbers.php:69
10587
  msgid ""
10588
  "Suffix after order number (optional). This will change the suffixes for all "
10589
  "existing orders."
10590
  msgstr ""
10591
 
10592
- #: includes/settings/wcj-settings-order-numbers.php:77
10593
  msgid "Order Number Date Suffix"
10594
  msgstr ""
10595
 
10596
- #: includes/settings/wcj-settings-order-numbers.php:79
10597
  msgid ""
10598
  "Date suffix after order number (optional). This will change the suffixes for "
10599
  "all existing orders. Value is passed directly to PHP `date` function, so "
@@ -10602,51 +10837,51 @@ msgid ""
10602
  "d- or mdy."
10603
  msgstr ""
10604
 
10605
- #: includes/settings/wcj-settings-order-numbers.php:87
10606
  msgid "Use MySQL Transaction"
10607
  msgstr ""
10608
 
10609
- #: includes/settings/wcj-settings-order-numbers.php:89
10610
  msgid ""
10611
  "This should be enabled if you have a lot of simultaneous orders in your shop "
10612
  "- to prevent duplicate order numbers (sequential)."
10613
  msgstr ""
10614
 
10615
- #: includes/settings/wcj-settings-order-numbers.php:95
10616
  msgid "Enable Order Tracking by Custom Number"
10617
  msgstr ""
10618
 
10619
- #: includes/settings/wcj-settings-order-numbers.php:102
10620
  msgid "Enable Order Admin Search by Custom Number"
10621
  msgstr ""
10622
 
10623
- #: includes/settings/wcj-settings-order-numbers.php:113
10624
  msgid "Orders Renumerate Tool Options"
10625
  msgstr ""
10626
 
10627
- #: includes/settings/wcj-settings-order-numbers.php:118
10628
  msgid "Sort by"
10629
  msgstr ""
10630
 
10631
- #: includes/settings/wcj-settings-order-numbers.php:125
10632
  msgid "Last modified date"
10633
  msgstr ""
10634
 
10635
- #: includes/settings/wcj-settings-order-numbers.php:126
10636
  #: includes/settings/wcj-settings-related-products.php:22
10637
  msgid "Random"
10638
  msgstr ""
10639
 
10640
- #: includes/settings/wcj-settings-order-numbers.php:130
10641
  msgid "Sort Ascending or Descending"
10642
  msgstr ""
10643
 
10644
- #: includes/settings/wcj-settings-order-numbers.php:135
10645
  #: includes/settings/wcj-settings-related-products.php:90
10646
  msgid "Ascending"
10647
  msgstr ""
10648
 
10649
- #: includes/settings/wcj-settings-order-numbers.php:136
10650
  #: includes/settings/wcj-settings-related-products.php:91
10651
  msgid "Descending"
10652
  msgstr ""
@@ -10790,46 +11025,60 @@ msgid ""
10790
  "may want auto-complete all your orders."
10791
  msgstr ""
10792
 
10793
- #: includes/settings/wcj-settings-orders.php:65
 
 
 
 
 
 
 
 
 
 
10794
  msgid "Bulk Regenerate Download Permissions for Orders"
10795
  msgstr ""
10796
 
10797
- #: includes/settings/wcj-settings-orders.php:70
10798
  msgid "Bulk Regenerate Download Permissions"
10799
  msgstr ""
10800
 
10801
- #: includes/settings/wcj-settings-orders.php:79
10802
  msgid "Bulk Actions"
10803
  msgstr ""
10804
 
10805
- #: includes/settings/wcj-settings-orders.php:80
10806
  msgid ""
10807
  "When enabled this will add \"Regenerate download permissions\" action to "
10808
  "\"Bulk Actions\" select box on admin orders page."
10809
  msgstr ""
10810
 
10811
- #: includes/settings/wcj-settings-orders.php:88
10812
  msgid "All Orders - Now"
10813
  msgstr ""
10814
 
10815
- #: includes/settings/wcj-settings-orders.php:89
10816
  msgid ""
10817
  "Check this box and press \"Save changes\" button to start regeneration. "
10818
  "Please note that both module and current section must be enabled before that."
10819
  msgstr ""
10820
 
10821
- #: includes/settings/wcj-settings-orders.php:90
10822
  msgid "Regenerate now"
10823
  msgstr ""
10824
 
10825
- #: includes/settings/wcj-settings-orders.php:97
10826
  msgid "All Orders - Periodically"
10827
  msgstr ""
10828
 
10829
- #: includes/settings/wcj-settings-orders.php:103
10830
  msgid "Regenerate"
10831
  msgstr ""
10832
 
 
 
 
 
10833
  #: includes/settings/wcj-settings-payment-gateways-by-country.php:16
10834
  #: includes/settings/wcj-settings-payment-gateways-by-currency.php:16
10835
  #: includes/settings/wcj-settings-payment-gateways-by-user-role.php:16
@@ -10855,7 +11104,7 @@ msgstr ""
10855
 
10856
  #: includes/settings/wcj-settings-payment-gateways-by-currency.php:27
10857
  #, php-format
10858
- msgid "PayPal allows only these currencies:<br>%s."
10859
  msgstr ""
10860
 
10861
  #: includes/settings/wcj-settings-payment-gateways-by-currency.php:44
@@ -11044,7 +11293,7 @@ msgid "Max"
11044
  msgstr ""
11045
 
11046
  #: includes/settings/wcj-settings-payment-gateways-per-category.php:31
11047
- #: includes/settings/wcj-settings-price-labels.php:116
11048
  #: includes/settings/wcj-settings-product-input-fields.php:109
11049
  msgid "Product Categories - Include"
11050
  msgstr ""
@@ -11056,7 +11305,7 @@ msgid ""
11056
  msgstr ""
11057
 
11058
  #: includes/settings/wcj-settings-payment-gateways-per-category.php:42
11059
- #: includes/settings/wcj-settings-price-labels.php:126
11060
  #: includes/settings/wcj-settings-product-input-fields.php:120
11061
  msgid "Product Categories - Exclude"
11062
  msgstr ""
@@ -11068,7 +11317,7 @@ msgid ""
11068
  msgstr ""
11069
 
11070
  #: includes/settings/wcj-settings-payment-gateways-per-category.php:54
11071
- #: includes/settings/wcj-settings-price-labels.php:96
11072
  #: includes/settings/wcj-settings-product-input-fields.php:154
11073
  msgid "Products - Include"
11074
  msgstr ""
@@ -11080,7 +11329,7 @@ msgid ""
11080
  msgstr ""
11081
 
11082
  #: includes/settings/wcj-settings-payment-gateways-per-category.php:67
11083
- #: includes/settings/wcj-settings-price-labels.php:106
11084
  #: includes/settings/wcj-settings-product-input-fields.php:166
11085
  msgid "Products - Exclude"
11086
  msgstr ""
@@ -11122,7 +11371,150 @@ msgstr ""
11122
  msgid "Admin Title Custom Gateway"
11123
  msgstr ""
11124
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
11125
  #: includes/settings/wcj-settings-pdf-invoicing-display.php:25
 
11126
  #: includes/settings/wcj-settings-shipping.php:30
11127
  msgid "Admin Title"
11128
  msgstr ""
@@ -11147,10 +11539,6 @@ msgstr ""
11147
  msgid "Add \"Create\" button"
11148
  msgstr ""
11149
 
11150
- #: includes/settings/wcj-settings-pdf-invoicing-display.php:77
11151
- msgid "Add \"Delete\" button"
11152
- msgstr ""
11153
-
11154
  #: includes/settings/wcj-settings-pdf-invoicing-display.php:84
11155
  msgid "\"Create\" button requires confirmation"
11156
  msgstr ""
@@ -11197,14 +11585,6 @@ msgstr ""
11197
  msgid "If set to empty - Administrator role will be used."
11198
  msgstr ""
11199
 
11200
- #: includes/settings/wcj-settings-pdf-invoicing-display.php:145
11201
- msgid "General Display Options"
11202
- msgstr ""
11203
-
11204
- #: includes/settings/wcj-settings-pdf-invoicing-display.php:150
11205
- msgid "Add PDF Invoices Meta Box to Admin Edit Order Page"
11206
- msgstr ""
11207
-
11208
  #: includes/settings/wcj-settings-pdf-invoicing-emails.php:53
11209
  msgid "Attach PDF to emails"
11210
  msgstr ""
@@ -11378,66 +11758,21 @@ msgstr ""
11378
  msgid "Make Font Shadowed"
11379
  msgstr ""
11380
 
11381
- #: includes/settings/wcj-settings-pdf-invoicing-styling.php:85
11382
- msgid "Fonts download is disabled."
11383
- msgstr ""
11384
-
11385
- #: includes/settings/wcj-settings-pdf-invoicing-styling.php:88
11386
- msgid "Fonts are up to date."
11387
- msgstr ""
11388
-
11389
- #: includes/settings/wcj-settings-pdf-invoicing-styling.php:89
11390
- #, php-format
11391
- msgid "Latest successful download or version check was on %s."
11392
- msgstr ""
11393
-
11394
- #: includes/settings/wcj-settings-pdf-invoicing-styling.php:93
11395
- msgid ""
11396
- "Fonts are NOT up to date. Please try downloading by pressing the button "
11397
- "below."
11398
- msgstr ""
11399
-
11400
- #: includes/settings/wcj-settings-pdf-invoicing-styling.php:96
11401
- #, php-format
11402
- msgid "Latest successful downloaded version is %s."
11403
- msgstr ""
11404
-
11405
- #: includes/settings/wcj-settings-pdf-invoicing-styling.php:102
11406
  #, php-format
11407
- msgid "Latest download executed on %s."
11408
- msgstr ""
11409
-
11410
- #: includes/settings/wcj-settings-pdf-invoicing-styling.php:111
11411
- msgid "Fonts Manager"
11412
- msgstr ""
11413
-
11414
- #: includes/settings/wcj-settings-pdf-invoicing-styling.php:120
11415
- msgid "Re-download"
11416
- msgstr ""
11417
-
11418
- #: includes/settings/wcj-settings-pdf-invoicing-styling.php:125
11419
- msgid "Disable Fonts Download"
11420
  msgstr ""
11421
 
11422
- #: includes/settings/wcj-settings-pdf-invoicing-templates.php:22
11423
  msgid "HTML Template"
11424
  msgstr ""
11425
 
11426
- #: includes/settings/wcj-settings-pdf-invoicing-templates.php:29
11427
  msgid "Save all templates"
11428
  msgstr ""
11429
 
11430
- #: includes/settings/wcj-settings-pdf-invoicing-templates.php:41
11431
- msgid "Available Shortcodes"
11432
- msgstr ""
11433
-
11434
- #: includes/settings/wcj-settings-pdf-invoicing-templates.php:44
11435
- #, php-format
11436
- msgid "For the list of available shortcodes, please visit %s."
11437
- msgstr ""
11438
-
11439
  #: includes/settings/wcj-settings-pdf-invoicing.php:14
11440
- msgid "PDF Invoicing General Options"
11441
  msgstr ""
11442
 
11443
  #: includes/settings/wcj-settings-pdf-invoicing.php:23
@@ -11470,72 +11805,6 @@ msgstr ""
11470
  msgid "Do not create if order total equals zero"
11471
  msgstr ""
11472
 
11473
- #: includes/settings/wcj-settings-pdf-invoicing.php:73
11474
- msgid "Hide Disabled Docs Settings"
11475
- msgstr ""
11476
-
11477
- #: includes/settings/wcj-settings-pdf-invoicing.php:80
11478
- msgid "Replace Admin Order Search with Invoice Search"
11479
- msgstr ""
11480
-
11481
- #: includes/settings/wcj-settings-pdf-invoicing.php:87
11482
- msgid "Default Images Directory"
11483
- msgstr ""
11484
-
11485
- #: includes/settings/wcj-settings-pdf-invoicing.php:88
11486
- msgid "Default images directory in TCPDF library (K_PATH_IMAGES)."
11487
- msgstr ""
11488
-
11489
- #: includes/settings/wcj-settings-pdf-invoicing.php:89
11490
- msgid ""
11491
- "Try changing this if you have issues displaying images in page background or "
11492
- "header."
11493
- msgstr ""
11494
-
11495
- #: includes/settings/wcj-settings-pdf-invoicing.php:94
11496
- msgid "Empty"
11497
- msgstr ""
11498
-
11499
- #: includes/settings/wcj-settings-pdf-invoicing.php:95
11500
- msgid "TCPDF Default"
11501
- msgstr ""
11502
-
11503
- #: includes/settings/wcj-settings-pdf-invoicing.php:96
11504
- msgid "ABSPATH"
11505
- msgstr ""
11506
-
11507
- #: includes/settings/wcj-settings-pdf-invoicing.php:97
11508
- msgid "DOCUMENT_ROOT"
11509
- msgstr ""
11510
-
11511
- #: includes/settings/wcj-settings-pdf-invoicing.php:101
11512
- msgid "Temp Directory"
11513
- msgstr ""
11514
-
11515
- #: includes/settings/wcj-settings-pdf-invoicing.php:102
11516
- msgid "Leave blank to use the default temp directory."
11517
- msgstr ""
11518
-
11519
- #: includes/settings/wcj-settings-pdf-invoicing.php:112
11520
- msgid "Report Tool Options"
11521
- msgstr ""
11522
-
11523
- #: includes/settings/wcj-settings-pdf-invoicing.php:117
11524
- msgid "Reports Filename"
11525
- msgstr ""
11526
-
11527
- #: includes/settings/wcj-settings-pdf-invoicing.php:131
11528
- msgid "CSV UTF-8 BOM"
11529
- msgstr ""
11530
-
11531
- #: includes/settings/wcj-settings-pdf-invoicing.php:138
11532
- msgid "Replace Periods with Commas in CSV Data"
11533
- msgstr ""
11534
-
11535
- #: includes/settings/wcj-settings-pdf-invoicing.php:139
11536
- msgid "Replace"
11537
- msgstr ""
11538
-
11539
  #: includes/settings/wcj-settings-price-by-country.php:15
11540
  msgid "Price by Country Options"
11541
  msgstr ""
@@ -11636,84 +11905,96 @@ msgid "This will add product data fields in product edit."
11636
  msgstr ""
11637
 
11638
  #: includes/settings/wcj-settings-price-by-country.php:112
 
 
 
 
 
 
 
 
 
 
 
 
11639
  msgid "Price Filter Widget and Sorting by Price Support"
11640
  msgstr ""
11641
 
11642
- #: includes/settings/wcj-settings-price-by-country.php:115
11643
  msgid "Recalculate price filter widget and sorting by price product prices"
11644
  msgstr ""
11645
 
11646
- #: includes/settings/wcj-settings-price-by-country.php:121
11647
  msgid "Add Countries Flags Images to Select Drop-Down Box"
11648
  msgstr ""
11649
 
11650
- #: includes/settings/wcj-settings-price-by-country.php:123
11651
  msgid ""
11652
  "If you are using [wcj_country_select_drop_down_list] shortcode or \"Booster: "
11653
  "Country Switcher\" widget, this will add country flags to these select boxes."
11654
  msgstr ""
11655
 
11656
- #: includes/settings/wcj-settings-price-by-country.php:129
11657
  #: includes/settings/wcj-settings-price-by-user-role.php:62
11658
  msgid "Search Engine Bots"
11659
  msgstr ""
11660
 
11661
- #: includes/settings/wcj-settings-price-by-country.php:130
11662
  msgid "Disable Price by Country for Bots"
11663
  msgstr ""
11664
 
11665
- #: includes/settings/wcj-settings-price-by-country.php:140
11666
  msgid "Country Groups"
11667
  msgstr ""
11668
 
11669
- #: includes/settings/wcj-settings-price-by-country.php:145
11670
  msgid "Countries Selection"
11671
  msgstr ""
11672
 
11673
- #: includes/settings/wcj-settings-price-by-country.php:146
11674
  msgid "Choose how do you want to enter countries groups in admin."
11675
  msgstr ""
11676
 
11677
- #: includes/settings/wcj-settings-price-by-country.php:151
11678
  msgid "Comma separated list"
11679
  msgstr ""
11680
 
11681
- #: includes/settings/wcj-settings-price-by-country.php:152
11682
  msgid "Multiselect"
11683
  msgstr ""
11684
 
11685
- #: includes/settings/wcj-settings-price-by-country.php:153
11686
  msgid "Chosen select"
11687
  msgstr ""
11688
 
11689
- #: includes/settings/wcj-settings-price-by-country.php:157
11690
  msgid "Autogenerate Groups"
11691
  msgstr ""
11692
 
11693
- #: includes/settings/wcj-settings-price-by-country.php:162
11694
  msgid "Currencies supported in both PayPal and Yahoo Exchange Rates:"
11695
  msgstr ""
11696
 
11697
- #: includes/settings/wcj-settings-price-by-country.php:167
11698
  msgid "Currencies supported in Yahoo Exchange Rates:"
11699
  msgstr ""
11700
 
11701
- #: includes/settings/wcj-settings-price-by-country.php:172
11702
  msgid "All Countries and Currencies:"
11703
  msgstr ""
11704
 
11705
- #: includes/settings/wcj-settings-price-by-country.php:178
11706
  msgid "Groups Number"
11707
  msgstr ""
11708
 
11709
- #: includes/settings/wcj-settings-price-by-country.php:194
11710
  msgid ""
11711
  "Countries. List of comma separated country codes.<br>For country codes and "
11712
  "predifined sets visit <a href=\"http://booster.io/country-codes/\" target="
11713
  "\"_blank\">http://booster.io/country-codes/</a>"
11714
  msgstr ""
11715
 
11716
- #: includes/settings/wcj-settings-price-by-country.php:272
11717
  msgid "Multiply Price by"
11718
  msgstr ""
11719
 
@@ -11854,109 +12135,109 @@ msgid ""
11854
  "comma separated list. Leave empty to disable."
11855
  msgstr ""
11856
 
11857
- #: includes/settings/wcj-settings-price-labels.php:22
11858
- msgid "Custom Price Labels - Globally"
11859
  msgstr ""
11860
 
11861
  #: includes/settings/wcj-settings-price-labels.php:24
 
 
 
 
 
 
 
 
11862
  msgid "This section lets you set price labels for all products globally."
11863
  msgstr ""
11864
 
11865
- #: includes/settings/wcj-settings-price-labels.php:28
11866
  msgid "Add before the price"
11867
  msgstr ""
11868
 
11869
- #: includes/settings/wcj-settings-price-labels.php:29
11870
  msgid "Enter text to add before all products prices. Leave blank to disable."
11871
  msgstr ""
11872
 
11873
- #: includes/settings/wcj-settings-price-labels.php:38
11874
  msgid "Add after the price"
11875
  msgstr ""
11876
 
11877
- #: includes/settings/wcj-settings-price-labels.php:39
11878
  msgid "Enter text to add after all products prices. Leave blank to disable."
11879
  msgstr ""
11880
 
11881
- #: includes/settings/wcj-settings-price-labels.php:46
11882
  msgid "Add between regular and sale prices"
11883
  msgstr ""
11884
 
11885
- #: includes/settings/wcj-settings-price-labels.php:47
11886
  msgid ""
11887
  "Enter text to add between regular and sale prices. Leave blank to disable."
11888
  msgstr ""
11889
 
11890
- #: includes/settings/wcj-settings-price-labels.php:56
11891
  msgid "Remove from price"
11892
  msgstr ""
11893
 
11894
- #: includes/settings/wcj-settings-price-labels.php:58
11895
  msgid "Enter text to remove from all products prices. Leave blank to disable."
11896
  msgstr ""
11897
 
11898
- #: includes/settings/wcj-settings-price-labels.php:67
11899
  msgid "Replace in price"
11900
  msgstr ""
11901
 
11902
- #: includes/settings/wcj-settings-price-labels.php:68
11903
  msgid "Enter text to replace in all products prices. Leave blank to disable."
11904
  msgstr ""
11905
 
11906
- #: includes/settings/wcj-settings-price-labels.php:79
11907
  msgid "Enter text to replace with. Leave blank to disable."
11908
  msgstr ""
11909
 
11910
- #: includes/settings/wcj-settings-price-labels.php:89
11911
  msgid "Enter text to display instead of the price. Leave blank to disable."
11912
  msgstr ""
11913
 
11914
- #: includes/settings/wcj-settings-price-labels.php:97
11915
  msgid ""
11916
  "Apply global price labels only for selected products. Leave blank to disable "
11917
  "the option."
11918
  msgstr ""
11919
 
11920
- #: includes/settings/wcj-settings-price-labels.php:107
11921
  msgid ""
11922
  "Do not apply global price labels only for selected products. Leave blank to "
11923
  "disable the option."
11924
  msgstr ""
11925
 
11926
- #: includes/settings/wcj-settings-price-labels.php:117
11927
  msgid ""
11928
  "Apply global price labels only for selected product categories. Leave blank "
11929
  "to disable the option."
11930
  msgstr ""
11931
 
11932
- #: includes/settings/wcj-settings-price-labels.php:127
11933
  msgid ""
11934
  "Do not apply global price labels only for selected product categories. Leave "
11935
  "blank to disable the option."
11936
  msgstr ""
11937
 
11938
- #: includes/settings/wcj-settings-price-labels.php:136
11939
  msgid "Product Types - Include"
11940
  msgstr ""
11941
 
11942
- #: includes/settings/wcj-settings-price-labels.php:137
11943
  msgid ""
11944
  "Apply global price labels only for selected product types. Leave blank to "
11945
  "disable the option."
11946
  msgstr ""
11947
 
11948
- #: includes/settings/wcj-settings-price-labels.php:143
11949
  msgid "Variable product's variation"
11950
  msgstr ""
11951
 
11952
- #: includes/settings/wcj-settings-price-labels.php:150
11953
- msgid "Custom Price Labels - Per Product"
11954
- msgstr ""
11955
-
11956
- #: includes/settings/wcj-settings-price-labels.php:156
11957
- msgid "This will add metaboxes to each product's admin edit page."
11958
- msgstr ""
11959
-
11960
  #: includes/settings/wcj-settings-product-add-to-cart.php:14
11961
  #: includes/settings/meta-box/wcj-settings-meta-box-product-add-to-cart.php:23
11962
  msgid "Add to Cart Local Redirect"
@@ -11976,11 +12257,6 @@ msgid ""
11976
  "disabled."
11977
  msgstr ""
11978
 
11979
- #: includes/settings/wcj-settings-product-add-to-cart.php:24
11980
- #: includes/settings/wcj-settings-product-by-date.php:20
11981
- msgid "All Products"
11982
- msgstr ""
11983
-
11984
  #: includes/settings/wcj-settings-product-add-to-cart.php:31
11985
  msgid "URL - All Products"
11986
  msgstr ""
@@ -11992,14 +12268,6 @@ msgid ""
11992
  "page)."
11993
  msgstr ""
11994
 
11995
- #: includes/settings/wcj-settings-product-add-to-cart.php:39
11996
- #: includes/settings/wcj-settings-product-by-date.php:52
11997
- #: includes/settings/wcj-settings-product-by-time.php:52
11998
- #: includes/settings/wcj-settings-sale-flash.php:59
11999
- #: includes/settings/wcj-settings-sale-flash.php:64
12000
- msgid "Per Product"
12001
- msgstr ""
12002
-
12003
  #: includes/settings/wcj-settings-product-add-to-cart.php:40
12004
  #: includes/settings/wcj-settings-product-tabs.php:213
12005
  msgid "This will add meta boxes to each product's edit page."
@@ -12082,197 +12350,242 @@ msgid "Set All Products to \"Sold individually\""
12082
  msgstr ""
12083
 
12084
  #: includes/settings/wcj-settings-product-add-to-cart.php:172
12085
- msgid "Add to Cart Button Disabling"
12086
  msgstr ""
12087
 
12088
  #: includes/settings/wcj-settings-product-add-to-cart.php:177
12089
- msgid "Disable Add to Cart Buttons on per Product Basis"
12090
  msgstr ""
12091
 
12092
- #: includes/settings/wcj-settings-product-add-to-cart.php:185
12093
- msgid "Disable Add to Cart Buttons on All Category/Archives Pages"
12094
  msgstr ""
12095
 
12096
- #: includes/settings/wcj-settings-product-add-to-cart.php:186
12097
- #: includes/settings/wcj-settings-product-add-to-cart.php:193
12098
- msgid "Disable Buttons"
12099
  msgstr ""
12100
 
12101
- #: includes/settings/wcj-settings-product-add-to-cart.php:192
12102
- msgid "Disable Add to Cart Buttons on All Single Product Pages"
12103
  msgstr ""
12104
 
12105
- #: includes/settings/wcj-settings-product-add-to-cart.php:203
12106
- msgid "Add to Cart Button Custom URL"
12107
  msgstr ""
12108
 
12109
- #: includes/settings/wcj-settings-product-add-to-cart.php:208
12110
- msgid "Custom Add to Cart Buttons URL on Archives on per Product Basis"
12111
  msgstr ""
12112
 
12113
- #: includes/settings/wcj-settings-product-add-to-cart.php:220
12114
- msgid "Add to Cart Button AJAX"
12115
  msgstr ""
12116
 
12117
- #: includes/settings/wcj-settings-product-add-to-cart.php:225
12118
- msgid "Disable/Enable Add to Cart Button AJAX on per Product Basis"
12119
  msgstr ""
12120
 
12121
- #: includes/settings/wcj-settings-product-add-to-cart.php:242
12122
- msgid "Open External Products on Add to Cart in New Window"
12123
  msgstr ""
12124
 
12125
- #: includes/settings/wcj-settings-product-add-to-cart.php:243
12126
- msgid "Enable on Single Product Pages"
12127
  msgstr ""
12128
 
12129
- #: includes/settings/wcj-settings-product-add-to-cart.php:250
12130
- msgid "Enable on Category/Archive Pages"
12131
  msgstr ""
12132
 
12133
- #: includes/settings/wcj-settings-product-add-to-cart.php:261
12134
- msgid "Add to Cart Message Options"
12135
  msgstr ""
12136
 
12137
- #: includes/settings/wcj-settings-product-add-to-cart.php:266
12138
- msgid "Change \"Continue shopping\" Text"
 
12139
  msgstr ""
12140
 
12141
- #: includes/settings/wcj-settings-product-add-to-cart.php:280
12142
- msgid "Change \"View cart\" Text"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
12143
  msgstr ""
12144
 
12145
- #: includes/settings/wcj-settings-product-addons.php:23
12146
  msgid "Enable per Product Addons"
12147
  msgstr ""
12148
 
12149
- #: includes/settings/wcj-settings-product-addons.php:25
12150
  msgid ""
12151
  "When enabled, this will add new \"Booster: Product Addons\" meta box to each "
12152
  "product's edit page."
12153
  msgstr ""
12154
 
12155
- #: includes/settings/wcj-settings-product-addons.php:37
12156
  msgid "All Product Options"
12157
  msgstr ""
12158
 
12159
- #: includes/settings/wcj-settings-product-addons.php:42
12160
  msgid "Enable All Products Addons"
12161
  msgstr ""
12162
 
12163
- #: includes/settings/wcj-settings-product-addons.php:44
12164
  msgid "When enabled, this will add addons below to all products."
12165
  msgstr ""
12166
 
12167
- #: includes/settings/wcj-settings-product-addons.php:50
12168
  #: includes/settings/meta-box/wcj-settings-meta-box-product-addons.php:28
12169
  msgid "Product Addons Total Number"
12170
  msgstr ""
12171
 
12172
- #: includes/settings/wcj-settings-product-addons.php:51
12173
  msgid "Save changes after you change this number."
12174
  msgstr ""
12175
 
12176
- #: includes/settings/wcj-settings-product-addons.php:66
12177
  #: includes/settings/meta-box/wcj-settings-meta-box-product-addons.php:35
12178
  msgid "Product Addon"
12179
  msgstr ""
12180
 
12181
- #: includes/settings/wcj-settings-product-addons.php:80
12182
  #: includes/settings/meta-box/wcj-settings-meta-box-product-addons.php:51
12183
  msgid "Radio Buttons"
12184
  msgstr ""
12185
 
12186
- #: includes/settings/wcj-settings-product-addons.php:81
12187
  #: includes/settings/meta-box/wcj-settings-meta-box-product-addons.php:52
12188
  msgid "Select Box"
12189
  msgstr ""
12190
 
12191
- #: includes/settings/wcj-settings-product-addons.php:93
12192
  #: includes/settings/meta-box/wcj-settings-meta-box-product-addons.php:63
12193
  msgid "Label(s)"
12194
  msgstr ""
12195
 
12196
- #: includes/settings/wcj-settings-product-addons.php:94
12197
- #: includes/settings/wcj-settings-product-addons.php:102
12198
  #: includes/settings/meta-box/wcj-settings-meta-box-product-addons.php:64
12199
  #: includes/settings/meta-box/wcj-settings-meta-box-product-addons.php:71
12200
  msgid "For radio and select enter one value per line."
12201
  msgstr ""
12202
 
12203
- #: includes/settings/wcj-settings-product-addons.php:101
12204
  #: includes/settings/meta-box/wcj-settings-meta-box-product-addons.php:70
12205
  msgid "Price(s)"
12206
  msgstr ""
12207
 
12208
- #: includes/settings/wcj-settings-product-addons.php:110
12209
  #: includes/settings/meta-box/wcj-settings-meta-box-product-addons.php:77
12210
  msgid "Tooltip(s)"
12211
  msgstr ""
12212
 
12213
- #: includes/settings/wcj-settings-product-addons.php:111
12214
  #: includes/settings/meta-box/wcj-settings-meta-box-product-addons.php:78
12215
  msgid "For radio enter one value per line."
12216
  msgstr ""
12217
 
12218
- #: includes/settings/wcj-settings-product-addons.php:118
12219
  #: includes/settings/wcj-settings-purchase-data.php:83
12220
  #: includes/settings/meta-box/wcj-settings-meta-box-product-addons.php:84
12221
  msgid "Default Value"
12222
  msgstr ""
12223
 
12224
- #: includes/settings/wcj-settings-product-addons.php:119
12225
  #: includes/settings/meta-box/wcj-settings-meta-box-product-addons.php:85
12226
  msgid ""
12227
  "For checkbox use 'checked'; for radio and select enter default label. Leave "
12228
  "blank for no default value."
12229
  msgstr ""
12230
 
12231
- #: includes/settings/wcj-settings-product-addons.php:127
12232
  #: includes/settings/meta-box/wcj-settings-meta-box-product-addons.php:92
12233
  msgid "For \"Select Box\" type only."
12234
  msgstr ""
12235
 
12236
- #: includes/settings/wcj-settings-product-addons.php:134
12237
  #: includes/settings/wcj-settings-product-by-user.php:45
12238
  msgid "Is Required"
12239
  msgstr ""
12240
 
12241
- #: includes/settings/wcj-settings-product-addons.php:162
 
 
 
 
 
 
 
12242
  msgid "Enable AJAX on Single Product Page"
12243
  msgstr ""
12244
 
12245
- #: includes/settings/wcj-settings-product-addons.php:169
 
 
 
 
 
 
 
 
 
 
12246
  msgid "Addon in Cart Format"
12247
  msgstr ""
12248
 
12249
- #: includes/settings/wcj-settings-product-addons.php:177
12250
- #: includes/settings/wcj-settings-product-addons.php:200
12251
  msgid "Each Addon"
12252
  msgstr ""
12253
 
12254
- #: includes/settings/wcj-settings-product-addons.php:178
12255
- #: includes/settings/wcj-settings-product-addons.php:201
12256
  msgid "You can use %addon_label% and %addon_price%."
12257
  msgstr ""
12258
 
12259
- #: includes/settings/wcj-settings-product-addons.php:192
12260
  msgid "Addon in Order Details Table Format"
12261
  msgstr ""
12262
 
12263
- #: includes/settings/wcj-settings-product-addons.php:215
12264
  msgid "Admin Order Page"
12265
  msgstr ""
12266
 
12267
- #: includes/settings/wcj-settings-product-addons.php:216
12268
  msgid "Hide all addons"
12269
  msgstr ""
12270
 
12271
- #: includes/settings/wcj-settings-product-addons.php:222
12272
  msgid "Position Priority on Frontend"
12273
  msgstr ""
12274
 
12275
- #: includes/settings/wcj-settings-product-addons.php:223
12276
  #: includes/settings/wcj-settings-shipping-by-condition.php:84
12277
  #: includes/settings/wcj-settings-shipping-options.php:41
12278
  msgid "Set to zero to use the default priority."
@@ -12658,7 +12971,7 @@ msgstr ""
12658
  #: includes/settings/wcj-settings-product-images.php:49
12659
  #: includes/settings/wcj-settings-product-images.php:58
12660
  #: includes/settings/wcj-settings-product-images.php:67
12661
- #: includes/settings/wcj-settings-products-xml.php:111
12662
  #: includes/settings/meta-box/wcj-settings-meta-box-product-images.php:18
12663
  #: includes/settings/meta-box/wcj-settings-meta-box-product-images.php:25
12664
  msgid "You can use shortcodes here."
@@ -12712,12 +13025,12 @@ msgid "Product Tags to Exclude"
12712
  msgstr ""
12713
 
12714
  #: includes/settings/wcj-settings-product-custom-info.php:160
12715
- #: includes/settings/wcj-settings-products-xml.php:144
12716
  msgid "Products to Include"
12717
  msgstr ""
12718
 
12719
  #: includes/settings/wcj-settings-product-custom-info.php:171
12720
- #: includes/settings/wcj-settings-products-xml.php:154
12721
  msgid "Products to Exclude"
12722
  msgstr ""
12723
 
@@ -12897,7 +13210,7 @@ msgstr ""
12897
  #: includes/settings/wcj-settings-product-input-fields.php:144
12898
  #: includes/settings/wcj-settings-product-input-fields.php:156
12899
  #: includes/settings/wcj-settings-product-input-fields.php:168
12900
- #: includes/settings/wcj-settings-wholesale-price.php:68
12901
  msgid "Leave blank to include all products."
12902
  msgstr ""
12903
 
@@ -13445,125 +13758,132 @@ msgid ""
13445
  "WP_Query call. Leave default value if not sure."
13446
  msgstr ""
13447
 
13448
- #: includes/settings/wcj-settings-products-xml.php:58
 
 
 
 
 
 
13449
  msgid "Create Now"
13450
  msgstr ""
13451
 
13452
- #: includes/settings/wcj-settings-products-xml.php:63
13453
  #, php-format
13454
  msgid "Recent file was created on %s"
13455
  msgstr ""
13456
 
13457
- #: includes/settings/wcj-settings-products-xml.php:70
13458
  msgid "XML File"
13459
  msgstr ""
13460
 
13461
- #: includes/settings/wcj-settings-products-xml.php:83
13462
  msgid "XML Header"
13463
  msgstr ""
13464
 
13465
- #: includes/settings/wcj-settings-products-xml.php:84
13466
- msgid "You can use shortcodes here. For example [wcj_current_datetime]."
 
13467
  msgstr ""
13468
 
13469
- #: includes/settings/wcj-settings-products-xml.php:91
13470
  msgid "XML Item"
13471
  msgstr ""
13472
 
13473
- #: includes/settings/wcj-settings-products-xml.php:93
13474
  #, php-format
13475
  msgid ""
13476
  "You can use shortcodes here. Please take a look at <a target=\"_blank\" href="
13477
  "\"%s\">Booster's products shortcodes</a>."
13478
  msgstr ""
13479
 
13480
- #: includes/settings/wcj-settings-products-xml.php:110
13481
  msgid "XML Footer"
13482
  msgstr ""
13483
 
13484
- #: includes/settings/wcj-settings-products-xml.php:118
13485
  msgid "XML File Path and Name"
13486
  msgstr ""
13487
 
13488
- #: includes/settings/wcj-settings-products-xml.php:119
13489
  msgid "Path on server:"
13490
  msgstr ""
13491
 
13492
- #: includes/settings/wcj-settings-products-xml.php:127
13493
  msgid "Update Period"
13494
  msgstr ""
13495
 
13496
- #: includes/settings/wcj-settings-products-xml.php:139
13497
  msgid ""
13498
  "Possible update periods are: every minute, hourly, twice daily, daily and "
13499
  "weekly."
13500
  msgstr ""
13501
 
13502
- #: includes/settings/wcj-settings-products-xml.php:145
13503
  msgid ""
13504
  "To include selected products only, enter products here. Leave blank to "
13505
  "include all products."
13506
  msgstr ""
13507
 
13508
- #: includes/settings/wcj-settings-products-xml.php:155
13509
  msgid ""
13510
  "To exclude selected products, enter products here. Leave blank to include "
13511
  "all products."
13512
  msgstr ""
13513
 
13514
- #: includes/settings/wcj-settings-products-xml.php:163
13515
  msgid "Categories to Include"
13516
  msgstr ""
13517
 
13518
- #: includes/settings/wcj-settings-products-xml.php:164
13519
  msgid ""
13520
  "To include products from selected categories only, enter categories here. "
13521
  "Leave blank to include all products."
13522
  msgstr ""
13523
 
13524
- #: includes/settings/wcj-settings-products-xml.php:172
13525
  msgid "Categories to Exclude"
13526
  msgstr ""
13527
 
13528
- #: includes/settings/wcj-settings-products-xml.php:173
13529
  msgid ""
13530
  "To exclude products from selected categories, enter categories here. Leave "
13531
  "blank to include all products."
13532
  msgstr ""
13533
 
13534
- #: includes/settings/wcj-settings-products-xml.php:181
13535
  msgid "Tags to Include"
13536
  msgstr ""
13537
 
13538
- #: includes/settings/wcj-settings-products-xml.php:182
13539
  msgid ""
13540
  "To include products from selected tags only, enter tags here. Leave blank to "
13541
  "include all products."
13542
  msgstr ""
13543
 
13544
- #: includes/settings/wcj-settings-products-xml.php:190
13545
  msgid "Tags to Exclude"
13546
  msgstr ""
13547
 
13548
- #: includes/settings/wcj-settings-products-xml.php:191
13549
  msgid ""
13550
  "To exclude products from selected tags, enter tags here. Leave blank to "
13551
  "include all products."
13552
  msgstr ""
13553
 
13554
- #: includes/settings/wcj-settings-products-xml.php:199
13555
  msgid "Products Scope"
13556
  msgstr ""
13557
 
13558
- #: includes/settings/wcj-settings-products-xml.php:205
13559
  msgid "Only products that are on sale"
13560
  msgstr ""
13561
 
13562
- #: includes/settings/wcj-settings-products-xml.php:207
13563
  msgid "Only products that are featured"
13564
  msgstr ""
13565
 
13566
- #: includes/settings/wcj-settings-products-xml.php:208
13567
  msgid "Only products that are not featured"
13568
  msgstr ""
13569
 
@@ -13897,10 +14217,6 @@ msgstr ""
13897
  msgid "Hide on Single Page Only"
13898
  msgstr ""
13899
 
13900
- #: includes/settings/wcj-settings-sale-flash.php:81
13901
- msgid "Per Category"
13902
- msgstr ""
13903
-
13904
  #: includes/settings/wcj-settings-sale-flash.php:81
13905
  msgid "Per Tag"
13906
  msgstr ""
@@ -14633,70 +14949,80 @@ msgid "Apply wholesale discount only if no other cart discounts were applied"
14633
  msgstr ""
14634
 
14635
  #: includes/settings/wcj-settings-wholesale-price.php:42
 
 
 
 
 
 
 
 
 
 
14636
  msgid "Show discount info on cart page"
14637
  msgstr ""
14638
 
14639
- #: includes/settings/wcj-settings-wholesale-price.php:49
14640
  msgid "If show discount info on cart page is enabled, set format here"
14641
  msgstr ""
14642
 
14643
- #: includes/settings/wcj-settings-wholesale-price.php:57
14644
  #: includes/settings/meta-box/wcj-settings-meta-box-wholesale-price.php:41
14645
  msgid "Discount Type"
14646
  msgstr ""
14647
 
14648
- #: includes/settings/wcj-settings-wholesale-price.php:67
14649
  msgid "Products to include"
14650
  msgstr ""
14651
 
14652
- #: includes/settings/wcj-settings-wholesale-price.php:76
14653
  msgid "Products to exclude"
14654
  msgstr ""
14655
 
14656
- #: includes/settings/wcj-settings-wholesale-price.php:88
14657
  msgid "Wholesale Levels Options"
14658
  msgstr ""
14659
 
14660
- #: includes/settings/wcj-settings-wholesale-price.php:93
14661
- #: includes/settings/wcj-settings-wholesale-price.php:150
14662
  #: includes/settings/meta-box/wcj-settings-meta-box-wholesale-price.php:48
14663
  #: includes/settings/meta-box/wcj-settings-meta-box-wholesale-price.php:84
14664
  msgid "Number of levels"
14665
  msgstr ""
14666
 
14667
- #: includes/settings/wcj-settings-wholesale-price.php:107
14668
- #: includes/settings/wcj-settings-wholesale-price.php:164
14669
  #: includes/settings/meta-box/wcj-settings-meta-box-wholesale-price.php:65
14670
  #: includes/settings/meta-box/wcj-settings-meta-box-wholesale-price.php:101
14671
  msgid "Min quantity"
14672
  msgstr ""
14673
 
14674
- #: includes/settings/wcj-settings-wholesale-price.php:108
14675
- #: includes/settings/wcj-settings-wholesale-price.php:165
14676
  msgid "Minimum quantity to apply discount"
14677
  msgstr ""
14678
 
14679
- #: includes/settings/wcj-settings-wholesale-price.php:115
14680
- #: includes/settings/wcj-settings-wholesale-price.php:116
14681
- #: includes/settings/wcj-settings-wholesale-price.php:172
14682
- #: includes/settings/wcj-settings-wholesale-price.php:173
14683
  #: includes/settings/meta-box/wcj-settings-meta-box-wholesale-price.php:72
14684
  #: includes/settings/meta-box/wcj-settings-meta-box-wholesale-price.php:108
14685
  msgid "Discount"
14686
  msgstr ""
14687
 
14688
- #: includes/settings/wcj-settings-wholesale-price.php:130
14689
  msgid "Additional User Roles Options"
14690
  msgstr ""
14691
 
14692
- #: includes/settings/wcj-settings-wholesale-price.php:132
14693
  msgid ""
14694
  "If you want to set different wholesale pricing options for different user "
14695
  "roles, fill this section. Please note that you can also use Booster's "
14696
  "\"Price by User Role\" module without filling this section."
14697
  msgstr ""
14698
 
14699
- #: includes/settings/wcj-settings-wholesale-price.php:136
14700
  msgid "User Roles Settings"
14701
  msgstr ""
14702
 
@@ -14705,6 +15031,33 @@ msgstr ""
14705
  msgid "Regenerate wpml-config.xml file"
14706
  msgstr ""
14707
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
14708
  #: includes/settings/meta-box/wcj-settings-meta-box-crowdfunding.php:17
14709
  msgid "Goal"
14710
  msgstr ""
@@ -14758,23 +15111,15 @@ msgstr ""
14758
  msgid "Add to Cart Local Redirect URL"
14759
  msgstr ""
14760
 
14761
- #: includes/settings/meta-box/wcj-settings-meta-box-product-add-to-cart.php:59
14762
- msgid "Disable Add to Cart Button (Single Product Page)"
14763
- msgstr ""
14764
-
14765
- #: includes/settings/meta-box/wcj-settings-meta-box-product-add-to-cart.php:69
14766
- msgid "Disable Add to Cart Button (Category/Archives)"
14767
- msgstr ""
14768
-
14769
- #: includes/settings/meta-box/wcj-settings-meta-box-product-add-to-cart.php:79
14770
  msgid "Custom Add to Cart Button URL (Category/Archives)"
14771
  msgstr ""
14772
 
14773
- #: includes/settings/meta-box/wcj-settings-meta-box-product-add-to-cart.php:90
14774
  msgid "As shop default (no changes)"
14775
  msgstr ""
14776
 
14777
- #: includes/settings/meta-box/wcj-settings-meta-box-product-add-to-cart.php:94
14778
  msgid "Disable Add to Cart Button AJAX"
14779
  msgstr ""
14780
 
@@ -14812,10 +15157,6 @@ msgstr ""
14812
  msgid "Visible for User Roles"
14813
  msgstr ""
14814
 
14815
- #: includes/settings/meta-box/wcj-settings-meta-box-product-by-user-role.php:20
14816
- msgid "Hold Control (Ctrl) key to select multiple roles."
14817
- msgstr ""
14818
-
14819
  #: includes/settings/meta-box/wcj-settings-meta-box-product-custom-visibility.php:15
14820
  msgid "Visible"
14821
  msgstr ""
@@ -14981,11 +15322,11 @@ msgstr ""
14981
  msgid "Enable Custom Shipping"
14982
  msgstr ""
14983
 
14984
- #: includes/shortcodes/class-wcj-shortcodes-general.php:86
14985
  msgid "Tax toggle (incl.)"
14986
  msgstr ""
14987
 
14988
- #: includes/shortcodes/class-wcj-shortcodes-general.php:87
14989
  msgid "Tax toggle (excl.)"
14990
  msgstr ""
14991
 
@@ -14993,15 +15334,15 @@ msgstr ""
14993
  msgid "Attribute \"name\" is required!"
14994
  msgstr ""
14995
 
14996
- #: includes/shortcodes/class-wcj-shortcodes-order-items.php:187
14997
  msgid "Standard"
14998
  msgstr ""
14999
 
15000
- #: includes/shortcodes/class-wcj-shortcodes-orders.php:108
15001
  msgid "Dollars"
15002
  msgstr ""
15003
 
15004
- #: includes/shortcodes/class-wcj-shortcodes-orders.php:109
15005
  msgid "Cents"
15006
  msgstr ""
15007
 
@@ -15043,12 +15384,12 @@ msgstr ""
15043
  msgid "Edit Product"
15044
  msgstr ""
15045
 
15046
- #: includes/shortcodes/class-wcj-shortcodes-products.php:273
15047
  #, php-format
15048
  msgid "%s ago"
15049
  msgstr ""
15050
 
15051
- #: includes/shortcodes/class-wcj-shortcodes-products.php:289
15052
  msgid "No sales yet."
15053
  msgstr ""
15054
 
1
+ #: includes/class-wcj-add-to-cart-button-visibility.php:25
2
+ msgid "Add to Cart Button Visibility"
3
+ msgstr ""
4
+
5
+ #: includes/class-wcj-add-to-cart-button-visibility.php:26
6
+ msgid ""
7
+ "Enable/disable WooCommerce Add to Cart button globally or on per product "
8
+ "basis."
9
+ msgstr ""
10
+
11
+ #: includes/class-wcj-add-to-cart-button-visibility.php:28
12
+ #, php-format
13
+ msgid ""
14
+ "If you need to enable/disable Add to Cart button for some <strong>user "
15
+ "roles</strong> only, we suggest using this module in conjunction with "
16
+ "Booster's %s module."
17
+ msgstr ""
18
+
19
+ #: includes/class-wcj-add-to-cart-button-visibility.php:30
20
+ #: includes/class-wcj-modules-by-user-roles.php:25
21
+ msgid "Modules By User Roles"
22
+ msgstr ""
23
+
24
  #: includes/class-wcj-add-to-cart.php:23
25
+ msgid "Add to Cart Button Labels"
26
  msgstr ""
27
 
28
  #: includes/class-wcj-add-to-cart.php:24
72
  #: includes/class-wcj-admin-bar.php:166 includes/class-wcj-admin-bar.php:461
73
  #: includes/class-wcj-admin-bar.php:561
74
  #: includes/admin/class-wc-settings-jetpack.php:211
75
+ #: includes/admin/class-wc-settings-jetpack.php:397
76
+ #: includes/core/class-wcj-admin.php:121
77
  msgid "Settings"
78
  msgstr ""
79
 
80
  #: includes/class-wcj-admin-bar.php:170
81
+ #: includes/admin/class-wc-settings-jetpack.php:399
82
+ #: includes/classes/class-wcj-module.php:644
83
  msgid "Documentation"
84
  msgstr ""
85
 
98
 
99
  #: includes/class-wcj-admin-bar.php:237 includes/class-wcj-admin-bar.php:274
100
  #: includes/class-wcj-admin-bar.php:585
101
+ #: includes/classes/class-wcj-module.php:477
102
  #: includes/settings/wcj-settings-wpml.php:15
103
  msgid "Tools"
104
  msgstr ""
109
 
110
  #: includes/class-wcj-admin-bar.php:262
111
  #: includes/class-wcj-checkout-files-upload.php:145
112
+ #: includes/class-wcj-eu-vat-number.php:128 includes/class-wcj-orders.php:87
113
+ #: includes/class-wcj-payment-gateways.php:91
114
  #: includes/class-wcj-track-users.php:117
115
  #: includes/class-wcj-track-users.php:213
116
  #: includes/admin/class-wc-settings-jetpack.php:24
117
  #: includes/admin/class-wc-settings-jetpack.php:213
118
  #: includes/classes/class-wcj-module.php:295
119
+ #: includes/classes/class-wcj-module.php:504
120
  msgid "Booster"
121
  msgstr ""
122
 
226
  msgstr ""
227
 
228
  #: includes/class-wcj-admin-bar.php:405
229
+ #: includes/class-wcj-eu-vat-number.php:192
230
  msgid "Taxes"
231
  msgstr ""
232
 
319
  #: includes/settings/wcj-settings-checkout-custom-fields.php:170
320
  #: includes/settings/wcj-settings-checkout-custom-info.php:56
321
  #: includes/settings/wcj-settings-empty-cart.php:59
322
+ #: includes/settings/wcj-settings-left-to-free-shipping.php:121
323
  #: includes/settings/wcj-settings-price-by-user-role.php:46
324
  msgid "Shipping"
325
  msgstr ""
464
  msgid "Current PHP time limit: %s seconds."
465
  msgstr ""
466
 
467
+ #: includes/class-wcj-admin-tools.php:102
468
  #: includes/settings/wcj-settings-export.php:157
469
  #: includes/settings/wcj-settings-export.php:236
470
  msgid "Product Meta"
471
  msgstr ""
472
 
473
+ #: includes/class-wcj-admin-tools.php:119
474
  #: includes/settings/wcj-settings-export.php:86
475
  #: includes/settings/wcj-settings-export.php:154
476
  msgid "Order Meta"
477
  msgstr ""
478
 
479
+ #: includes/class-wcj-admin-tools.php:153
480
  msgid "Order Items Meta"
481
  msgstr ""
482
 
483
+ #: includes/class-wcj-admin-tools.php:155
484
  msgid "Item Key"
485
  msgstr ""
486
 
487
+ #: includes/class-wcj-admin-tools.php:155
488
  msgid "Item Meta Key"
489
  msgstr ""
490
 
491
+ #: includes/class-wcj-admin-tools.php:155
492
  msgid "Item Meta Value"
493
  msgstr ""
494
 
495
+ #: includes/class-wcj-admin-tools.php:181
496
  msgid "Delete Log"
497
  msgstr ""
498
 
499
+ #: includes/class-wcj-admin-tools.php:184
500
  #, php-format
501
  msgid "Now: %s"
502
  msgstr ""
503
 
504
+ #: includes/class-wcj-admin-tools.php:188
505
+ msgid "Log is empty."
506
+ msgstr ""
507
+
508
+ #: includes/class-wcj-admin-tools.php:218
509
  msgid "NOT DEFINED"
510
  msgstr ""
511
 
587
  "selected fields on checkout for logged users and more."
588
  msgstr ""
589
 
590
+ #: includes/class-wcj-checkout-customization.php:83
591
+ #: includes/settings/wcj-settings-checkout-customization.php:99
592
+ msgid "Returning customer?"
593
+ msgstr ""
594
+
595
+ #: includes/class-wcj-checkout-customization.php:98
596
  #: includes/settings/wcj-settings-checkout-customization.php:86
597
  msgid "Thank you. Your order has been received."
598
  msgstr ""
599
 
600
+ #: includes/class-wcj-checkout-customization.php:117
601
  #: includes/settings/wcj-settings-checkout-customization.php:72
602
  msgid "This field can not be changed"
603
  msgstr ""
762
  msgid "Display prices for WooCommerce products in different currencies."
763
  msgstr ""
764
 
765
+ #: includes/class-wcj-currency-per-product.php:172
766
  #: includes/settings/wcj-settings-currency-per-product.php:43
767
  msgid ""
768
  "Only one product can be added to the cart. Clear the cart or finish the "
769
  "order, before adding another product to the cart."
770
  msgstr ""
771
 
772
+ #: includes/class-wcj-currency-per-product.php:187
773
  #: includes/settings/wcj-settings-currency-per-product.php:50
774
  msgid ""
775
  "Only products with same currency can be added to the cart. Clear the cart or "
776
  "finish the order, before adding products with another currency to the cart."
777
  msgstr ""
778
 
779
+ #: includes/class-wcj-currency-per-product.php:233
780
  #, php-format
781
  msgctxt "Price range: from-to"
782
  msgid "%1$s&ndash;%2$s"
944
  msgstr ""
945
 
946
  #: includes/class-wcj-empty-cart-button.php:25
947
+ #: includes/shortcodes/class-wcj-shortcodes-general.php:331
948
  msgid "Empty Cart Button"
949
  msgstr ""
950
 
955
  msgstr ""
956
 
957
  #: includes/class-wcj-eu-vat-number.php:24
958
+ #: includes/class-wcj-eu-vat-number.php:271
959
  #: includes/settings/wcj-settings-eu-vat-number.php:22
960
  #: includes/settings/wcj-settings-eu-vat-number.php:29
961
  msgid "EU VAT Number"
976
  msgid "Add all EU countries VAT standard rates to WooCommerce."
977
  msgstr ""
978
 
979
+ #: includes/class-wcj-eu-vat-number.php:180
980
  msgid "Customer IP"
981
  msgstr ""
982
 
983
+ #: includes/class-wcj-eu-vat-number.php:184 includes/class-wcj-orders.php:87
984
+ #: includes/settings/wcj-settings-orders.php:65
985
  msgid "Country by IP"
986
  msgstr ""
987
 
988
+ #: includes/class-wcj-eu-vat-number.php:188
989
  msgid "Customer EU VAT Number"
990
  msgstr ""
991
 
992
+ #: includes/class-wcj-eu-vat-number.php:203
993
+ msgid "Validate VAT and remove taxes"
994
+ msgstr ""
995
+
996
+ #: includes/class-wcj-eu-vat-number.php:341
997
  #: includes/settings/wcj-settings-eu-vat-number.php:165
998
  msgid "Validating VAT. Please wait..."
999
  msgstr ""
1000
 
1001
+ #: includes/class-wcj-eu-vat-number.php:342
1002
  #: includes/settings/wcj-settings-eu-vat-number.php:172
1003
  msgid "VAT is valid."
1004
  msgstr ""
1005
 
1006
+ #: includes/class-wcj-eu-vat-number.php:343
1007
  #: includes/settings/wcj-settings-eu-vat-number.php:179
1008
  msgid "VAT is not valid."
1009
  msgstr ""
1010
 
1011
+ #: includes/class-wcj-eu-vat-number.php:344
1012
  #: includes/settings/wcj-settings-eu-vat-number.php:187
1013
  msgid "Validation failed. Please try again."
1014
  msgstr ""
1015
 
1016
+ #: includes/class-wcj-eu-vat-number.php:448
1017
  #: includes/settings/wcj-settings-eu-vat-number.php:83
1018
  msgid "<strong>EU VAT Number</strong> is not valid."
1019
  msgstr ""
1020
 
1021
  #: includes/class-wcj-export-import.php:26
1022
+ #: includes/admin/class-wc-settings-jetpack.php:286
1023
  msgid "Export"
1024
  msgstr ""
1025
 
1177
  #: includes/class-wcj-general.php:197 includes/class-wcj-general.php:210
1178
  #: includes/class-wcj-sku.php:333
1179
  #: includes/reports/wcj-class-reports-sales.php:192
1180
+ #: includes/settings/wcj-settings-order-numbers.php:132
1181
  #: includes/settings/wcj-settings-product-by-user.php:161
1182
  #: includes/settings/wcj-settings-related-products.php:30
1183
  msgid "ID"
1193
 
1194
  #: includes/class-wcj-general.php:197
1195
  #: includes/class-wcj-product-by-user.php:197
1196
+ #: includes/settings/wcj-settings-pdf-invoicing-advanced.php:92
1197
  #: includes/tools/class-wcj-order-statuses-tool.php:142
1198
  #: includes/tools/class-wcj-order-statuses-tool.php:214
1199
  msgid "Actions"
1200
  msgstr ""
1201
 
1202
  #: includes/class-wcj-general.php:203
1203
+ #: includes/class-wcj-payment-gateways.php:117
1204
  #: includes/class-wcj-product-bulk-meta-editor.php:367
1205
  #: includes/class-wcj-product-by-user.php:206
1206
  #: includes/pdf-invoices/submodules/class-wcj-pdf-invoicing-display.php:138
1207
+ #: includes/pdf-invoices/submodules/class-wcj-pdf-invoicing-display.php:306
1208
  #: includes/shortcodes/class-wcj-shortcodes-products-add-form.php:367
1209
  #: includes/tools/class-wcj-order-statuses-tool.php:157
1210
  msgid "Delete"
1219
  msgstr ""
1220
 
1221
  #: includes/class-wcj-general.php:215
1222
+ #: includes/settings/wcj-settings-admin-orders-list.php:134
1223
  #: includes/settings/wcj-settings-checkout-custom-fields.php:22
1224
  #: includes/settings/wcj-settings-checkout-custom-fields.php:29
1225
  #: includes/settings/wcj-settings-checkout-custom-fields.php:55
1232
  #: includes/settings/wcj-settings-order-custom-statuses.php:37
1233
  #: includes/settings/wcj-settings-order-custom-statuses.php:70
1234
  #: includes/settings/wcj-settings-order-min-amount.php:53
1235
+ #: includes/settings/wcj-settings-orders.php:71
1236
+ #: includes/settings/wcj-settings-orders.php:98
1237
+ #: includes/settings/wcj-settings-pdf-invoicing-advanced.php:117
1238
+ #: includes/settings/wcj-settings-pdf-invoicing-advanced.php:163
1239
  #: includes/settings/wcj-settings-product-by-country.php:110
1240
  #: includes/settings/wcj-settings-product-by-user.php:114
1241
+ #: includes/settings/wcj-settings-product-open-pricing.php:108
1242
  #: includes/settings/wcj-settings-product-tabs.php:227
1243
  #: includes/settings/wcj-settings-purchase-data.php:134
1244
  #: includes/settings/wcj-settings-purchase-data.php:143
1270
  msgstr ""
1271
 
1272
  #: includes/class-wcj-global-discount.php:27
1273
+ #: includes/admin/class-wc-settings-jetpack.php:450
1274
  msgid "Global Discount"
1275
  msgstr ""
1276
 
1289
  #: includes/class-wcj-left-to-free-shipping.php:62
1290
  #: includes/class-wcj-left-to-free-shipping.php:72
1291
  #: includes/class-wcj-left-to-free-shipping.php:82
1292
+ #: includes/functions/wcj-functions-general.php:485
1293
  #: includes/settings/wcj-settings-left-to-free-shipping.php:37
1294
+ #: includes/settings/wcj-settings-left-to-free-shipping.php:70
1295
+ #: includes/settings/wcj-settings-left-to-free-shipping.php:107
1296
  #: includes/widgets/class-wcj-widget-left-to-free-shipping.php:61
1297
  #, php-format
1298
  msgid "%left_to_free% left to free shipping"
1306
  msgid "Add custom info to WooCommerce mini cart widget."
1307
  msgstr ""
1308
 
1309
+ #: includes/class-wcj-modules-by-user-roles.php:26
1310
+ msgid "Enable/disable Booster for WooCommerce modules by user roles."
1311
+ msgstr ""
1312
+
1313
  #: includes/class-wcj-more-button-labels.php:24
1314
  msgid "More Button Labels"
1315
  msgstr ""
1358
  #: includes/class-wcj-my-account.php:75
1359
  #: includes/class-wcj-product-bulk-meta-editor.php:279
1360
  #: includes/class-wcj-product-by-user.php:206
1361
+ #: includes/class-wcj-purchase-data.php:94
1362
  #: includes/class-wcj-track-users.php:296
1363
+ #: includes/classes/class-wcj-module.php:613
1364
+ #: includes/functions/wcj-functions-general.php:21
1365
+ #: includes/functions/wcj-functions-html.php:97
1366
  #: includes/reports/wcj-class-reports-monthly-sales.php:341
1367
  #: includes/settings/wcj-settings-empty-cart.php:80
1368
  #: includes/shortcodes/class-wcj-shortcodes-products-add-form.php:367
1390
  #: includes/class-wcj-offer-price.php:113
1391
  #: includes/functions/wcj-functions-reports.php:21
1392
  #: includes/functions/wcj-functions-reports.php:24
1393
+ #: includes/settings/wcj-settings-order-numbers.php:133
1394
  #: includes/settings/wcj-settings-related-products.php:23
1395
  msgid "Date"
1396
  msgstr ""
1398
  #: includes/class-wcj-offer-price.php:114
1399
  #: includes/export/class-wcj-fields-helper.php:288
1400
  #: includes/reports/wcj-class-reports-stock.php:255
1401
+ #: includes/settings/wcj-settings-product-add-to-cart.php:302
1402
  #: includes/settings/wcj-settings-related-products.php:33
1403
  #: includes/settings/meta-box/wcj-settings-meta-box-wholesale-price.php:72
1404
  msgid "Price"
1415
  #: includes/class-wcj-offer-price.php:117
1416
  #: includes/export/class-wcj-fields-helper.php:75
1417
  #: includes/input-fields/wcj-product-input-fields-options.php:45
1418
+ #: includes/reports/wcj-class-reports-customers.php:93
1419
  #: includes/settings/wcj-settings-checkout-custom-fields.php:132
1420
  msgid "Email"
1421
  msgstr ""
1632
  msgid "Minimum WooCommerce order amount (optionally by user role)."
1633
  msgstr ""
1634
 
1635
+ #: includes/class-wcj-order-numbers.php:26
1636
+ #: includes/settings/wcj-settings-order-numbers.php:15
1637
  msgid "Order Numbers"
1638
  msgstr ""
1639
 
1640
+ #: includes/class-wcj-order-numbers.php:27
1641
  msgid ""
1642
  "WooCommerce sequential order numbering, custom order number prefix, suffix "
1643
  "and number width."
1644
  msgstr ""
1645
 
1646
+ #: includes/class-wcj-order-numbers.php:33
1647
  msgid "Orders Renumerate"
1648
  msgstr ""
1649
 
1650
+ #: includes/class-wcj-order-numbers.php:34
1651
  msgid "Tool renumerates all orders."
1652
  msgstr ""
1653
 
1654
+ #: includes/class-wcj-order-numbers.php:179
1655
  msgid "Orders successfully renumerated!"
1656
  msgstr ""
1657
 
1658
+ #: includes/class-wcj-order-numbers.php:182
1659
+ #, php-format
1660
+ msgid "Sequential number generation is enabled. Next order number will be %s."
1661
+ msgstr ""
1662
+
1663
+ #: includes/class-wcj-order-numbers.php:191
1664
  #, php-format
1665
  msgid ""
1666
  "Press the button below to renumerate all existing orders starting from order "
1667
  "counter settings in <a href=\"%s\">Order Numbers</a> module."
1668
  msgstr ""
1669
 
1670
+ #: includes/class-wcj-order-numbers.php:198
1671
  msgid "Renumerate orders"
1672
  msgstr ""
1673
 
1714
  msgstr ""
1715
 
1716
  #: includes/class-wcj-orders.php:114
1717
+ msgid "No data."
1718
+ msgstr ""
1719
+
1720
+ #: includes/class-wcj-orders.php:159
1721
  msgid "Regenerate download permissions"
1722
  msgstr ""
1723
 
1724
+ #: includes/class-wcj-orders.php:173
1725
  #, php-format
1726
  msgid "Download permissions regenerated for %s order."
1727
  msgid_plural "Download permissions regenerated for %s orders."
1809
  msgstr ""
1810
 
1811
  #: includes/class-wcj-payment-gateways-per-category.php:24
1812
+ #: includes/admin/class-wc-settings-jetpack.php:449
1813
  msgid "Gateways per Product or Category"
1814
  msgstr ""
1815
 
1827
  msgid "Add multiple custom payment gateways to WooCommerce."
1828
  msgstr ""
1829
 
1830
+ #: includes/class-wcj-payment-gateways.php:67
1831
  #, php-format
1832
  msgid "<strong>%s</strong> is a required field."
1833
  msgstr ""
1834
 
1835
+ #: includes/class-wcj-payment-gateways.php:91
1836
  #, php-format
1837
  msgid "%s Fields"
1838
  msgstr ""
1866
 
1867
  #: includes/class-wcj-pdf-invoicing.php:89
1868
  #: includes/class-wcj-pdf-invoicing.php:90
 
 
1869
  #: includes/settings/wcj-settings-price-by-country.php:174
1870
+ #: includes/settings/wcj-settings-price-by-country.php:179
1871
+ #: includes/settings/wcj-settings-price-by-country.php:184
1872
  msgid "Generate"
1873
  msgstr ""
1874
 
1875
  #: includes/class-wcj-pdf-invoicing.php:97
1876
  #: includes/class-wcj-pdf-invoicing.php:98
1877
+ #: includes/settings/wcj-settings-pdf-invoicing-advanced.php:95
1878
  msgid "Download"
1879
  msgstr ""
1880
 
1907
  msgid "You are not allowed to view the invoice."
1908
  msgstr ""
1909
 
1910
+ #: includes/class-wcj-price-by-country.php:24
1911
  msgid "Prices and Currencies by Country"
1912
  msgstr ""
1913
 
1914
+ #: includes/class-wcj-price-by-country.php:25
1915
  msgid ""
1916
  "Change WooCommerce product price and currency automatically by customer's "
1917
  "country."
1918
  msgstr ""
1919
 
1920
+ #: includes/class-wcj-price-by-country.php:96
1921
  msgid "Price filter widget product prices recalculated."
1922
  msgstr ""
1923
 
1956
  msgstr ""
1957
 
1958
  #: includes/class-wcj-price-labels.php:32
1959
+ #: includes/settings/wcj-settings-price-labels.php:99
1960
  msgid "Instead of the price"
1961
  msgstr ""
1962
 
1974
 
1975
  #: includes/class-wcj-price-labels.php:40
1976
  #: includes/class-wcj-product-info.php:254
1977
+ #: includes/class-wcj-shipping-options.php:175
1978
  #: includes/settings/wcj-settings-add-to-cart.php:52
1979
  #: includes/settings/wcj-settings-address-formats.php:20
1980
  #: includes/settings/wcj-settings-admin-bar.php:20
1985
  #: includes/settings/wcj-settings-admin-tools.php:34
1986
  #: includes/settings/wcj-settings-admin-tools.php:74
1987
  #: includes/settings/wcj-settings-admin-tools.php:81
1988
+ #: includes/settings/wcj-settings-admin-tools.php:88
1989
  #: includes/settings/wcj-settings-breadcrumbs.php:20
1990
  #: includes/settings/wcj-settings-call-for-price.php:79
1991
  #: includes/settings/wcj-settings-cart-customization.php:34
1993
  #: includes/settings/wcj-settings-checkout-custom-fields.php:107
1994
  #: includes/settings/wcj-settings-checkout-custom-fields.php:209
1995
  #: includes/settings/wcj-settings-checkout-customization.php:78
1996
+ #: includes/settings/wcj-settings-checkout-customization.php:92
1997
  #: includes/settings/wcj-settings-checkout-files-upload.php:291
1998
  #: includes/settings/wcj-settings-coupon-code-generator.php:32
1999
  #: includes/settings/wcj-settings-currency-exchange-rates.php:54
2003
  #: includes/settings/wcj-settings-currency-per-product.php:73
2004
  #: includes/settings/wcj-settings-currency-per-product.php:80
2005
  #: includes/settings/wcj-settings-currency-per-product.php:87
2006
+ #: includes/settings/wcj-settings-currency-per-product.php:241
2007
  #: includes/settings/wcj-settings-custom-css.php:34
2008
  #: includes/settings/wcj-settings-emails-verification.php:28
2009
  #: includes/settings/wcj-settings-emails-verification.php:36
2014
  #: includes/settings/wcj-settings-general.php:202
2015
  #: includes/settings/wcj-settings-global-discount.php:52
2016
  #: includes/settings/wcj-settings-left-to-free-shipping.php:27
2017
+ #: includes/settings/wcj-settings-left-to-free-shipping.php:58
2018
+ #: includes/settings/wcj-settings-left-to-free-shipping.php:95
2019
+ #: includes/settings/wcj-settings-more-button-labels.php:28
2020
  #: includes/settings/wcj-settings-multicurrency-base-price.php:40
2021
  #: includes/settings/wcj-settings-multicurrency-base-price.php:55
2022
  #: includes/settings/wcj-settings-multicurrency.php:39
2023
  #: includes/settings/wcj-settings-multicurrency.php:48
2024
  #: includes/settings/wcj-settings-offer-price.php:19
2025
  #: includes/settings/wcj-settings-order-custom-statuses.php:45
2026
+ #: includes/settings/wcj-settings-order-numbers.php:97
2027
+ #: includes/settings/wcj-settings-order-numbers.php:105
2028
+ #: includes/settings/wcj-settings-order-numbers.php:112
2029
  #: includes/settings/wcj-settings-order-quantities.php:53
2030
  #: includes/settings/wcj-settings-order-quantities.php:111
2031
  #: includes/settings/wcj-settings-order-quantities.php:137
2032
  #: includes/settings/wcj-settings-order-quantities.php:144
2033
  #: includes/settings/wcj-settings-orders.php:25
2034
  #: includes/settings/wcj-settings-orders.php:54
2035
+ #: includes/settings/wcj-settings-pdf-invoicing-advanced.php:54
2036
  #: includes/settings/wcj-settings-pdf-invoicing-display.php:113
2037
  #: includes/settings/wcj-settings-pdf-invoicing-footer.php:23
2038
  #: includes/settings/wcj-settings-pdf-invoicing-header.php:23
2039
  #: includes/settings/wcj-settings-pdf-invoicing-numbering.php:23
2040
  #: includes/settings/wcj-settings-pdf-invoicing-styling.php:73
 
2041
  #: includes/settings/wcj-settings-price-by-country.php:69
2042
  #: includes/settings/wcj-settings-price-by-country.php:89
2043
  #: includes/settings/wcj-settings-price-by-country.php:105
2044
+ #: includes/settings/wcj-settings-price-by-country.php:123
2045
+ #: includes/settings/wcj-settings-price-by-country.php:132
2046
  #: includes/settings/wcj-settings-price-by-user-role.php:20
2047
  #: includes/settings/wcj-settings-price-by-user-role.php:47
2048
  #: includes/settings/wcj-settings-price-formats.php:21
2049
+ #: includes/settings/wcj-settings-price-labels.php:23
2050
  #: includes/settings/wcj-settings-product-add-to-cart.php:25
2051
  #: includes/settings/wcj-settings-product-add-to-cart.php:41
2052
  #: includes/settings/wcj-settings-product-add-to-cart.php:80
2053
  #: includes/settings/wcj-settings-product-add-to-cart.php:132
2054
  #: includes/settings/wcj-settings-product-add-to-cart.php:162
2055
  #: includes/settings/wcj-settings-product-add-to-cart.php:178
2056
+ #: includes/settings/wcj-settings-product-add-to-cart.php:195
2057
+ #: includes/settings/wcj-settings-product-add-to-cart.php:236
2058
+ #: includes/settings/wcj-settings-product-add-to-cart.php:250
2059
+ #: includes/settings/wcj-settings-product-add-to-cart.php:280
2060
+ #: includes/settings/wcj-settings-product-add-to-cart.php:315
2061
+ #: includes/settings/wcj-settings-product-addons.php:32
2062
+ #: includes/settings/wcj-settings-product-addons.php:51
2063
+ #: includes/settings/wcj-settings-product-addons.php:75
2064
+ #: includes/settings/wcj-settings-product-addons.php:171
2065
  #: includes/settings/wcj-settings-product-bulk-meta-editor.php:21
2066
  #: includes/settings/wcj-settings-product-bulk-meta-editor.php:29
2067
  #: includes/settings/wcj-settings-product-by-country.php:21
2085
  #: includes/settings/wcj-settings-product-input-fields.php:317
2086
  #: includes/settings/wcj-settings-product-open-pricing.php:87
2087
  #: includes/settings/wcj-settings-product-open-pricing.php:94
 
2088
  #: includes/settings/wcj-settings-product-price-by-formula.php:30
2089
  #: includes/settings/wcj-settings-product-tabs.php:23
2090
  #: includes/settings/wcj-settings-product-tabs.php:212
2091
  #: includes/settings/wcj-settings-product-tabs.php:220
2092
+ #: includes/settings/wcj-settings-products-xml.php:73
2093
  #: includes/settings/wcj-settings-purchase-data.php:22
2094
  #: includes/settings/wcj-settings-purchase-data.php:29
2095
  #: includes/settings/wcj-settings-purchase-data.php:36
2118
  #: includes/settings/wcj-settings-wholesale-price.php:22
2119
  #: includes/settings/wcj-settings-wholesale-price.php:29
2120
  #: includes/settings/wcj-settings-wholesale-price.php:36
2121
+ #: includes/settings/wcj-settings-wholesale-price.php:44
2122
+ #: includes/settings/meta-box/wcj-settings-meta-box-product-add-to-cart.php:68
2123
  #: includes/settings/meta-box/wcj-settings-meta-box-product-addons.php:35
2124
  #: includes/settings/meta-box/wcj-settings-meta-box-related-products.php:17
2125
  #: includes/settings/meta-box/wcj-settings-meta-box-sale-flash.php:14
2158
  msgid "Booster: Custom Price Labels"
2159
  msgstr ""
2160
 
2161
+ #: includes/class-wcj-product-add-to-cart.php:26
2162
+ #: includes/settings/wcj-settings-product-add-to-cart.php:306
2163
+ msgid "Add to Cart"
2164
  msgstr ""
2165
 
2166
+ #: includes/class-wcj-product-add-to-cart.php:27
2167
  msgid "Set any local url to redirect to on WooCommerce Add to Cart."
2168
  msgstr ""
2169
 
2170
+ #: includes/class-wcj-product-add-to-cart.php:28
2171
  msgid "Automatically add to cart on product visit."
2172
  msgstr ""
2173
 
2174
+ #: includes/class-wcj-product-add-to-cart.php:29
2175
  msgid "Display radio buttons instead of drop box for variable products."
2176
  msgstr ""
2177
 
2178
+ #: includes/class-wcj-product-add-to-cart.php:30
2179
  msgid "Disable quantity input."
2180
  msgstr ""
2181
 
2182
+ #: includes/class-wcj-product-add-to-cart.php:31
 
 
 
 
2183
  msgid "Open external products on add to cart in new window."
2184
  msgstr ""
2185
 
2186
+ #: includes/class-wcj-product-add-to-cart.php:32
2187
  msgid ""
2188
  "Replace Add to Cart button on archives with button from single product pages."
2189
  msgstr ""
2190
 
2191
+ #: includes/class-wcj-product-add-to-cart.php:33
2192
  msgid "Customize Add to Cart messages."
2193
  msgstr ""
2194
 
2195
+ #: includes/class-wcj-product-add-to-cart.php:176
2196
  #, php-format
2197
  msgctxt "Item name in quotes"
2198
  msgid "&ldquo;%s&rdquo;"
2199
  msgstr ""
2200
 
2201
+ #: includes/class-wcj-product-add-to-cart.php:181
2202
  #, php-format
2203
  msgid "%s has been added to your cart."
2204
  msgid_plural "%s have been added to your cart."
2205
  msgstr[0] ""
2206
  msgstr[1] ""
2207
 
2208
+ #: includes/class-wcj-product-add-to-cart.php:185
2209
+ #: includes/settings/wcj-settings-product-add-to-cart.php:245
2210
  msgid "Continue shopping"
2211
  msgstr ""
2212
 
2213
+ #: includes/class-wcj-product-add-to-cart.php:187
2214
+ #: includes/settings/wcj-settings-product-add-to-cart.php:259
2215
  msgid "View cart"
2216
  msgstr ""
2217
 
2223
  msgid "Add (paid/free/discount) addons to WooCommerce products."
2224
  msgstr ""
2225
 
2226
+ #: includes/class-wcj-product-addons.php:163
2227
  msgid "Some of the required addons are not selected!"
2228
  msgstr ""
2229
 
2230
+ #: includes/class-wcj-product-addons.php:178
2231
  msgid ""
2232
  "Booster: Free plugin's version is limited to only three products with per "
2233
  "product addons enabled at a time. You will need to get <a href=\"http://"
2335
  msgstr ""
2336
 
2337
  #: includes/class-wcj-product-bulk-meta-editor.php:232
2338
+ #: includes/settings/wcj-settings-wholesale-price.php:51
2339
+ #: includes/settings/meta-box/wcj-settings-meta-box-add-to-cart-button-visibility.php:19
2340
+ #: includes/settings/meta-box/wcj-settings-meta-box-add-to-cart-button-visibility.php:38
2341
  msgid "Show"
2342
  msgstr ""
2343
 
2344
  #: includes/class-wcj-product-bulk-meta-editor.php:236
2345
  #: includes/class-wcj-product-bulk-meta-editor.php:340
2346
+ #: includes/settings/wcj-settings-product-add-to-cart.php:304
2347
  msgid "Meta"
2348
  msgstr ""
2349
 
2354
  msgstr ""
2355
 
2356
  #: includes/class-wcj-product-bulk-meta-editor.php:294
2357
+ #: includes/settings/wcj-settings-admin-orders-list.php:71
2358
  #: includes/settings/wcj-settings-admin-products-list.php:56
2359
  #: includes/settings/wcj-settings-export.php:91
2360
  #: includes/settings/wcj-settings-export.php:162
2384
  msgstr ""
2385
 
2386
  #: includes/class-wcj-product-bulk-meta-editor.php:389
2387
+ #: includes/class-wcj-purchase-data.php:77
2388
  #: includes/export/class-wcj-fields-helper.php:280
2389
  #: includes/functions/wcj-functions-reports.php:25
2390
  #: includes/settings/wcj-settings-product-bulk-meta-editor.php:42
2463
  msgstr ""
2464
 
2465
  #: includes/class-wcj-product-bulk-price-converter.php:260
2466
+ #: includes/shortcodes/class-wcj-shortcodes-products.php:346
2467
  msgid "Any"
2468
  msgstr ""
2469
 
2599
  #: includes/settings/wcj-settings-export.php:75
2600
  #: includes/settings/wcj-settings-export.php:143
2601
  #: includes/settings/wcj-settings-export.php:225
2602
+ #: includes/settings/wcj-settings-product-add-to-cart.php:300
2603
+ #: includes/settings/wcj-settings-product-addons.php:93
2604
  #: includes/settings/wcj-settings-product-by-user.php:167
2605
  #: includes/settings/wcj-settings-product-tabs.php:52
2606
  #: includes/settings/wcj-settings-product-tabs.php:368
2627
  msgstr ""
2628
 
2629
  #: includes/class-wcj-product-custom-info.php:24
2630
+ #: includes/admin/class-wc-settings-jetpack.php:451
2631
+ #: includes/functions/wcj-functions-general.php:286
2632
  msgid "Product Info"
2633
  msgstr ""
2634
 
2678
 
2679
  #: includes/class-wcj-product-info.php:123
2680
  #: includes/settings/wcj-settings-offer-price.php:91
2681
+ #: includes/settings/wcj-settings-product-add-to-cart.php:326
2682
  #: includes/settings/wcj-settings-product-custom-info.php:102
2683
  msgid "Before product"
2684
  msgstr ""
2685
 
2686
  #: includes/class-wcj-product-info.php:124
2687
+ #: includes/settings/wcj-settings-product-add-to-cart.php:327
2688
  #: includes/settings/wcj-settings-product-custom-info.php:103
2689
  msgid "Before product title"
2690
  msgstr ""
2691
 
2692
  #: includes/class-wcj-product-info.php:125
2693
  #: includes/settings/wcj-settings-offer-price.php:92
2694
+ #: includes/settings/wcj-settings-product-add-to-cart.php:328
2695
  #: includes/settings/wcj-settings-product-custom-info.php:106
2696
  msgid "After product"
2697
  msgstr ""
2698
 
2699
  #: includes/class-wcj-product-info.php:126
2700
+ #: includes/settings/wcj-settings-product-add-to-cart.php:329
2701
  #: includes/settings/wcj-settings-product-custom-info.php:105
2702
  msgid "After product title"
2703
  msgstr ""
2704
 
2705
  #: includes/class-wcj-product-info.php:138
2706
  #: includes/settings/wcj-settings-offer-price.php:72
2707
+ #: includes/settings/wcj-settings-product-add-to-cart.php:292
2708
  #: includes/settings/wcj-settings-product-custom-info.php:93
2709
  msgid "Inside single product summary"
2710
  msgstr ""
2711
 
2712
  #: includes/class-wcj-product-info.php:139
2713
  #: includes/settings/wcj-settings-offer-price.php:71
2714
+ #: includes/settings/wcj-settings-product-add-to-cart.php:291
2715
  #: includes/settings/wcj-settings-product-custom-info.php:92
2716
  msgid "Before single product summary"
2717
  msgstr ""
2718
 
2719
  #: includes/class-wcj-product-info.php:140
2720
  #: includes/settings/wcj-settings-offer-price.php:73
2721
+ #: includes/settings/wcj-settings-product-add-to-cart.php:293
2722
  #: includes/settings/wcj-settings-product-custom-info.php:94
2723
  msgid "After single product summary"
2724
  msgstr ""
2728
  #: includes/settings/wcj-settings-checkout-custom-info.php:47
2729
  #: includes/settings/wcj-settings-checkout-files-upload.php:51
2730
  #: includes/settings/wcj-settings-left-to-free-shipping.php:43
2731
+ #: includes/settings/wcj-settings-left-to-free-shipping.php:76
2732
+ #: includes/settings/wcj-settings-left-to-free-shipping.php:113
2733
  #: includes/settings/wcj-settings-mini-cart.php:46
2734
+ #: includes/settings/wcj-settings-product-add-to-cart.php:286
2735
+ #: includes/settings/wcj-settings-product-add-to-cart.php:321
2736
  #: includes/settings/wcj-settings-product-custom-info.php:85
2737
  #: includes/settings/wcj-settings-product-info.php:50
2738
  #: includes/settings/wcj-settings-product-info.php:83
2769
  msgstr ""
2770
 
2771
  #: includes/class-wcj-product-input-fields.php:24
2772
+ #: includes/admin/class-wc-settings-jetpack.php:452
2773
  #: includes/input-fields/class-wcj-product-input-fields-core.php:123
2774
  msgid "Product Input Fields"
2775
  msgstr ""
2890
  msgstr ""
2891
 
2892
  #: includes/class-wcj-product-tabs.php:591
2893
+ #: includes/settings/wcj-settings-add-to-cart-button-visibility.php:84
2894
+ #: includes/settings/wcj-settings-add-to-cart-button-visibility.php:100
2895
  #: includes/settings/wcj-settings-cart.php:44
2896
  #: includes/settings/wcj-settings-checkout-custom-info.php:40
2897
  #: includes/settings/wcj-settings-left-to-free-shipping.php:34
2898
+ #: includes/settings/wcj-settings-left-to-free-shipping.php:67
2899
+ #: includes/settings/wcj-settings-left-to-free-shipping.php:104
2900
  #: includes/settings/wcj-settings-mini-cart.php:39
2901
  #: includes/settings/wcj-settings-product-custom-info.php:77
2902
  #: includes/settings/wcj-settings-product-tabs.php:72
2924
 
2925
  #: includes/class-wcj-product-tabs.php:605
2926
  #: includes/input-fields/wcj-product-input-fields-options.php:95
2927
+ #: includes/settings/wcj-settings-admin-orders-list.php:84
2928
  #: includes/settings/wcj-settings-checkout-custom-fields.php:224
2929
  #: includes/settings/meta-box/wcj-settings-meta-box-custom-css.php:20
2930
  #: includes/settings/meta-box/wcj-settings-meta-box-offer-price.php:20
2931
+ #: includes/settings/meta-box/wcj-settings-meta-box-price-by-country.php:64
2932
  #: includes/settings/meta-box/wcj-settings-meta-box-price-by-user-role.php:35
2933
  #: includes/settings/meta-box/wcj-settings-meta-box-price-by-user-role.php:97
2934
  #: includes/settings/meta-box/wcj-settings-meta-box-product-add-to-cart.php:21
2935
  #: includes/settings/meta-box/wcj-settings-meta-box-product-add-to-cart.php:43
 
 
2936
  #: includes/settings/meta-box/wcj-settings-meta-box-product-addons.php:19
2937
  #: includes/settings/meta-box/wcj-settings-meta-box-product-addons.php:41
2938
  #: includes/settings/meta-box/wcj-settings-meta-box-product-addons.php:104
2960
  #: includes/settings/wcj-settings-eu-vat-number.php:130
2961
  #: includes/settings/meta-box/wcj-settings-meta-box-custom-css.php:19
2962
  #: includes/settings/meta-box/wcj-settings-meta-box-offer-price.php:19
2963
+ #: includes/settings/meta-box/wcj-settings-meta-box-price-by-country.php:65
2964
  #: includes/settings/meta-box/wcj-settings-meta-box-price-by-user-role.php:34
2965
  #: includes/settings/meta-box/wcj-settings-meta-box-price-by-user-role.php:96
2966
  #: includes/settings/meta-box/wcj-settings-meta-box-product-add-to-cart.php:20
2967
  #: includes/settings/meta-box/wcj-settings-meta-box-product-add-to-cart.php:42
 
 
2968
  #: includes/settings/meta-box/wcj-settings-meta-box-product-addons.php:18
2969
  #: includes/settings/meta-box/wcj-settings-meta-box-product-addons.php:40
2970
  #: includes/settings/meta-box/wcj-settings-meta-box-product-addons.php:103
2984
  #: includes/class-wcj-product-tabs.php:614
2985
  #: includes/settings/wcj-settings-checkout-core-fields.php:61
2986
  #: includes/settings/wcj-settings-currency-exchange-rates.php:141
2987
+ #: includes/settings/wcj-settings-order-numbers.php:46
2988
+ #: includes/settings/wcj-settings-orders.php:119
2989
  #: includes/settings/wcj-settings-product-add-to-cart.php:64
2990
  #: includes/settings/meta-box/wcj-settings-meta-box-product-by-date.php:19
2991
  #: includes/settings/meta-box/wcj-settings-meta-box-product-by-time.php:19
3021
  msgid "WooCommerce products XML feeds."
3022
  msgstr ""
3023
 
3024
+ #: includes/class-wcj-products-xml.php:95
3025
  #: includes/exchange-rates/class-wcj-exchange-rates-crons.php:211
3026
  msgid "Once Weekly"
3027
  msgstr ""
3028
 
3029
+ #: includes/class-wcj-products-xml.php:99
3030
  #: includes/exchange-rates/class-wcj-exchange-rates-crons.php:215
3031
  msgid "Once a Minute"
3032
  msgstr ""
3033
 
3034
+ #: includes/class-wcj-products-xml.php:114
3035
+ msgid "An error has occurred while creating products XML file."
3036
  msgstr ""
3037
 
3038
+ #: includes/class-wcj-products-xml.php:117
3039
+ #, php-format
3040
+ msgid "Products XML file #%s created successfully."
3041
  msgstr ""
3042
 
3043
+ #: includes/class-wcj-purchase-data.php:28
3044
  msgid "Cost of Goods"
3045
  msgstr ""
3046
 
3047
+ #: includes/class-wcj-purchase-data.php:29
3048
  msgid "Save WooCommerce product purchase costs data for admin reports."
3049
  msgstr ""
3050
 
3051
+ #: includes/class-wcj-purchase-data.php:35
3052
  msgid "\"WooCommerce Cost of Goods\" Data Import"
3053
  msgstr ""
3054
 
3055
+ #: includes/class-wcj-purchase-data.php:36
3056
  msgid "Import products costs from \"WooCommerce Cost of Goods\"."
3057
  msgstr ""
3058
 
3059
+ #: includes/class-wcj-purchase-data.php:78
3060
  msgid "Product Title"
3061
  msgstr ""
3062
 
3063
+ #: includes/class-wcj-purchase-data.php:79
3064
  msgid "WooCommerce Cost of Goods (source)"
3065
  msgstr ""
3066
 
3067
+ #: includes/class-wcj-purchase-data.php:80
3068
  msgid "Booster: Product cost (destination)"
3069
  msgstr ""
3070
 
3071
+ #: includes/class-wcj-purchase-data.php:93
3072
+ #: includes/admin/class-wc-settings-jetpack.php:290
3073
  msgid "Import"
3074
  msgstr ""
3075
 
3076
+ #: includes/class-wcj-purchase-data.php:115
3077
  #: includes/shipping/class-wc-shipping-wcj-custom-with-shipping-zones.php:105
3078
  #: includes/shipping/class-wc-shipping-wcj-custom-with-shipping-zones.php:172
3079
  #: includes/shipping/class-wc-shipping-wcj-custom.php:131
3081
  msgid "Cost"
3082
  msgstr ""
3083
 
3084
+ #: includes/class-wcj-purchase-data.php:118
3085
+ #: includes/class-wcj-purchase-data.php:151
3086
+ #: includes/class-wcj-purchase-data.php:238
3087
  #: includes/functions/wcj-functions-reports.php:29
3088
  #: includes/settings/wcj-settings-purchase-data.php:133
3089
  #: includes/settings/wcj-settings-purchase-data.php:161
3090
  msgid "Profit"
3091
  msgstr ""
3092
 
3093
+ #: includes/class-wcj-purchase-data.php:154
3094
  #: includes/settings/wcj-settings-purchase-data.php:142
3095
  #: includes/settings/wcj-settings-purchase-data.php:168
3096
  msgid "Purchase Cost"
3097
  msgstr ""
3098
 
3099
+ #: includes/class-wcj-purchase-data.php:236
3100
  msgid "Selling"
3101
  msgstr ""
3102
 
3103
+ #: includes/class-wcj-purchase-data.php:237
3104
  msgid "Buying"
3105
  msgstr ""
3106
 
3107
+ #: includes/class-wcj-purchase-data.php:241
3108
  msgid "Report"
3109
  msgstr ""
3110
 
3111
  #: includes/class-wcj-related-products.php:38
3112
+ #: includes/admin/class-wc-settings-jetpack.php:454
3113
  #: includes/settings/wcj-settings-free-price.php:20
3114
  #: includes/settings/meta-box/wcj-settings-meta-box-related-products.php:28
3115
  msgid "Related Products"
3301
  msgid "Customize WooCommerce shipping calculator on cart page."
3302
  msgstr ""
3303
 
3304
+ #: includes/class-wcj-shipping-options.php:27
3305
  msgid "Shipping Options"
3306
  msgstr ""
3307
 
3308
+ #: includes/class-wcj-shipping-options.php:28
3309
  msgid "Add descriptions and icons to shipping methods on frontend."
3310
  msgstr ""
3311
 
3312
+ #: includes/class-wcj-shipping-options.php:29
3313
  msgid "Hide WooCommerce shipping when free is available."
3314
  msgstr ""
3315
 
3316
+ #: includes/class-wcj-shipping-options.php:30
3317
  msgid "Grant free shipping on per product basis."
3318
  msgstr ""
3319
 
3320
+ #: includes/class-wcj-shipping-options.php:174
3321
  msgid "Booster: Hide when free is available"
3322
  msgstr ""
3323
 
3324
+ #: includes/class-wcj-shipping-options.php:182
3325
  #: includes/settings/wcj-settings-shipping-options.php:28
3326
  msgid ""
3327
  "Available options: hide all; hide all except \"Local Pickup\"; hide \"Flat "
3328
  "Rate\" only."
3329
  msgstr ""
3330
 
3331
+ #: includes/class-wcj-shipping-options.php:186
3332
  #: includes/settings/wcj-settings-shipping-options.php:32
3333
  msgid "Hide all"
3334
  msgstr ""
3335
 
3336
+ #: includes/class-wcj-shipping-options.php:187
3337
  #: includes/settings/wcj-settings-shipping-options.php:33
3338
  msgid "Hide all except \"Local Pickup\""
3339
  msgstr ""
3340
 
3341
+ #: includes/class-wcj-shipping-options.php:188
3342
  #: includes/settings/wcj-settings-shipping-options.php:34
3343
  msgid "Hide \"Flat Rate\" only"
3344
  msgstr ""
3459
  msgstr ""
3460
 
3461
  #: includes/class-wcj-track-users.php:159
3462
+ #: includes/settings/wcj-settings-products-xml.php:116
3463
  msgid "URL:"
3464
  msgstr ""
3465
 
3563
  "can be moved to paid plugin version."
3564
  msgstr ""
3565
 
3566
+ #: includes/admin/class-wc-settings-jetpack.php:262
3567
  msgid ""
3568
  "This section lets you export, import or reset all Booster's modules settings."
3569
  msgstr ""
3570
 
3571
+ #: includes/admin/class-wc-settings-jetpack.php:287
3572
  msgid "Export all Booster's options to a file."
3573
  msgstr ""
3574
 
3575
+ #: includes/admin/class-wc-settings-jetpack.php:292
3576
  msgid "Import all Booster's options from a file."
3577
  msgstr ""
3578
 
3579
+ #: includes/admin/class-wc-settings-jetpack.php:295
3580
  msgid ""
3581
  "This will reset settings to defaults for all Booster modules. Are you sure?"
3582
  msgstr ""
3583
 
3584
+ #: includes/admin/class-wc-settings-jetpack.php:295
3585
  msgid "Reset"
3586
  msgstr ""
3587
 
3588
+ #: includes/admin/class-wc-settings-jetpack.php:296
3589
  msgid "Reset all Booster's options."
3590
  msgstr ""
3591
 
3592
+ #: includes/admin/class-wc-settings-jetpack.php:333
3593
  msgid "Version"
3594
  msgstr ""
3595
 
3596
+ #: includes/admin/class-wc-settings-jetpack.php:354
3597
+ #: includes/admin/class-wc-settings-jetpack.php:361
3598
  msgid "Select All"
3599
  msgstr ""
3600
 
3601
+ #: includes/admin/class-wc-settings-jetpack.php:355
3602
+ #: includes/admin/class-wc-settings-jetpack.php:362
3603
  #: includes/admin/class-wcj-tools.php:72
3604
  msgid "Module"
3605
  msgstr ""
3606
 
3607
+ #: includes/admin/class-wc-settings-jetpack.php:356
3608
+ #: includes/admin/class-wc-settings-jetpack.php:363
3609
  #: includes/admin/class-wcj-tools.php:73
3610
  #: includes/export/class-wcj-fields-helper.php:293
3611
  #: includes/gateways/class-wc-gateway-wcj-custom.php:74
3616
  msgid "Description"
3617
  msgstr ""
3618
 
3619
+ #: includes/admin/class-wc-settings-jetpack.php:410
3620
  msgid "No active modules found."
3621
  msgstr ""
3622
 
3623
+ #: includes/admin/class-wc-settings-jetpack.php:413
3624
  msgid "Total Modules:"
3625
  msgstr ""
3626
 
3627
+ #: includes/admin/class-wc-settings-jetpack.php:439
3628
  msgid "Autoload Booster's Options"
3629
  msgstr ""
3630
 
3631
+ #: includes/admin/class-wc-settings-jetpack.php:441
3632
  msgid ""
3633
  "Choose if you want Booster's options to be autoloaded when calling "
3634
  "add_option. After saving this option, you need to Reset all Booster's "
3635
  "settings. Leave default value (i.e. Enabled) if not sure."
3636
  msgstr ""
3637
 
3638
+ #: includes/admin/class-wc-settings-jetpack.php:446
3639
  msgid "Use List Instead of Comma Separated Text for Products in Settings"
3640
  msgstr ""
3641
 
3642
+ #: includes/admin/class-wc-settings-jetpack.php:448
3643
  #, php-format
3644
  msgid "Supported modules: %s."
3645
  msgstr ""
3646
 
3647
+ #: includes/admin/class-wc-settings-jetpack.php:453
3648
  msgid "Products XML"
3649
  msgstr ""
3650
 
3651
+ #: includes/admin/class-wc-settings-jetpack.php:478
3652
+ #: includes/core/class-wcj-admin.php:105
3653
  msgid "Booster for WooCommerce"
3654
  msgstr ""
3655
 
3667
  msgid "Save changes"
3668
  msgstr ""
3669
 
3670
+ #: includes/admin/class-wcj-settings-manager.php:60
3671
  msgid "Please upload a file to import!"
3672
  msgstr ""
3673
 
3674
+ #: includes/admin/class-wcj-settings-manager.php:68
3675
+ #: includes/admin/class-wcj-settings-manager.php:73
3676
  msgid "Wrong file format!"
3677
  msgstr ""
3678
 
3679
+ #: includes/admin/class-wcj-settings-manager.php:82
3680
  #, php-format
3681
  msgid "%d options successfully imported."
3682
  msgstr ""
3683
 
3684
+ #: includes/admin/class-wcj-settings-manager.php:167
3685
  #, php-format
3686
  msgid "%d options and %d meta successfully deleted."
3687
  msgstr ""
3746
  "Listings, Product Tabs and more."
3747
  msgstr ""
3748
 
3749
+ #: includes/admin/wcj-modules-cats.php:93
3750
  msgid "Cart & Checkout"
3751
  msgstr ""
3752
 
3753
+ #: includes/admin/wcj-modules-cats.php:94
3754
  msgid ""
3755
  "Cart and Checkout Customization, Empty Cart Button, Mini Cart, Coupons and "
3756
  "more."
3757
  msgstr ""
3758
 
3759
+ #: includes/admin/wcj-modules-cats.php:112
3760
  #: includes/settings/wcj-settings-payment-gateways-by-country.php:14
3761
  #: includes/settings/wcj-settings-payment-gateways-by-currency.php:14
3762
  #: includes/settings/wcj-settings-payment-gateways-by-shipping.php:21
3765
  msgid "Payment Gateways"
3766
  msgstr ""
3767
 
3768
+ #: includes/admin/wcj-modules-cats.php:113
3769
  msgid ""
3770
  "Custom Payment Gateways, Gateways Currency, Gateways Fees and Discounts and "
3771
  "more."
3772
  msgstr ""
3773
 
3774
+ #: includes/admin/wcj-modules-cats.php:129
3775
  msgid "Shipping & Orders"
3776
  msgstr ""
3777
 
3778
+ #: includes/admin/wcj-modules-cats.php:130
3779
  msgid ""
3780
  "Order Custom Statuses, Order Minimum Amount, Order Numbers, Custom Shipping "
3781
  "Methods and more."
3782
  msgstr ""
3783
 
3784
+ #: includes/admin/wcj-modules-cats.php:150
3785
  msgid "PDF Invoicing & Packing Slips"
3786
  msgstr ""
3787
 
3788
+ #: includes/admin/wcj-modules-cats.php:151
3789
  msgid "PDF Documents"
3790
  msgstr ""
3791
 
3792
+ #: includes/admin/wcj-modules-cats.php:167
3793
  msgid "Emails & Misc."
3794
  msgstr ""
3795
 
3796
+ #: includes/admin/wcj-modules-cats.php:168
3797
  msgid "Emails, Reports, Export, Admin Tools, General Options and more."
3798
  msgstr ""
3799
 
3811
  msgid "Selected: %s."
3812
  msgstr ""
3813
 
3814
+ #: includes/classes/class-wcj-module.php:465
3815
  msgid "Back to Module Settings"
3816
  msgstr ""
3817
 
3818
+ #: includes/classes/class-wcj-module.php:483
3819
  #: includes/settings/wcj-settings-wpml.php:20
3820
  msgid "Module Tools"
3821
  msgstr ""
3822
 
3823
+ #: includes/classes/class-wcj-module.php:556
3824
  #: includes/settings/wcj-settings-checkout-core-fields.php:54
3825
  msgid "enabled"
3826
  msgstr ""
3827
 
3828
+ #: includes/classes/class-wcj-module.php:557
3829
  msgid "disabled"
3830
  msgstr ""
3831
 
3832
+ #: includes/classes/class-wcj-module.php:565
3833
  #: includes/settings/wcj-settings-product-tabs.php:152
3834
  #: includes/settings/wcj-settings-product-tabs.php:164
3835
  #: includes/settings/wcj-settings-product-tabs.php:176
3837
  msgid "Deprecated"
3838
  msgstr ""
3839
 
3840
+ #: includes/classes/class-wcj-module.php:603
3841
  msgid "Reset Settings"
3842
  msgstr ""
3843
 
3844
+ #: includes/classes/class-wcj-module.php:609
3845
  msgid "Reset Module to Default Settings"
3846
  msgstr ""
3847
 
3848
+ #: includes/classes/class-wcj-module.php:610
3849
  msgid "Reset Submodule to Default Settings"
3850
  msgstr ""
3851
 
3852
+ #: includes/classes/class-wcj-module.php:614
3853
  msgid "Reset settings"
3854
  msgstr ""
3855
 
3856
+ #: includes/classes/class-wcj-module.php:648
3857
  msgid "Module Options"
3858
  msgstr ""
3859
 
3860
+ #: includes/classes/class-wcj-module.php:655
3861
  msgid "Enable Module"
3862
  msgstr ""
3863
 
3867
  msgstr ""
3868
 
3869
  #: includes/classes/class-wcj-shortcodes.php:107
3870
+ #: includes/shortcodes/class-wcj-shortcodes-general.php:331
3871
  #, php-format
3872
  msgid "\"%s\" module is not enabled!"
3873
  msgstr ""
3877
  msgid "Page %page_number% / %total_pages%"
3878
  msgstr ""
3879
 
3880
+ #: includes/core/class-wcj-admin.php:65
3881
+ msgid "Please update <strong>Booster Plus for WooCommerce</strong> plugin."
3882
+ msgstr ""
3883
+
3884
+ #: includes/core/class-wcj-admin.php:67
3885
  #, php-format
3886
  msgid ""
3887
+ "Visit <a target=\"_blank\" href=\"%s\">your account page</a> on booster.io "
3888
+ "to download the latest Booster Plus version."
 
3889
  msgstr ""
3890
 
3891
+ #: includes/core/class-wcj-admin.php:71
3892
  #, php-format
3893
+ msgid "Click <a target=\"_blank\" href=\"%s\">here</a> for more info."
 
 
 
 
3894
  msgstr ""
3895
 
3896
+ #: includes/core/class-wcj-admin.php:89
3897
  #, php-format
3898
  msgid ""
3899
  "If you like <strong>Booster for WooCommerce</strong> please leave us a %s "
3900
  "rating. Thank you, we couldn't have done it without you!"
3901
  msgstr ""
3902
 
3903
+ #: includes/core/class-wcj-admin.php:106
3904
  msgid "Booster Settings"
3905
  msgstr ""
3906
 
3907
+ #: includes/core/class-wcj-admin.php:122
3908
  msgid "Docs"
3909
  msgstr ""
3910
 
3911
+ #: includes/core/class-wcj-admin.php:125
3912
  msgid "Unlock all"
3913
  msgstr ""
3914
 
4068
 
4069
  #: includes/exchange-rates/class-wcj-exchange-rates-crons.php:22
4070
  #: includes/settings/wcj-settings-currency-exchange-rates.php:38
4071
+ #: includes/settings/wcj-settings-products-xml.php:129
4072
  msgid "Update Every Minute"
4073
  msgstr ""
4074
 
4075
  #: includes/exchange-rates/class-wcj-exchange-rates-crons.php:23
4076
  #: includes/settings/wcj-settings-currency-exchange-rates.php:39
4077
+ #: includes/settings/wcj-settings-products-xml.php:130
4078
  msgid "Update Hourly"
4079
  msgstr ""
4080
 
4081
  #: includes/exchange-rates/class-wcj-exchange-rates-crons.php:24
4082
  #: includes/settings/wcj-settings-currency-exchange-rates.php:40
4083
+ #: includes/settings/wcj-settings-products-xml.php:131
4084
  msgid "Update Twice Daily"
4085
  msgstr ""
4086
 
4087
  #: includes/exchange-rates/class-wcj-exchange-rates-crons.php:25
4088
  #: includes/settings/wcj-settings-currency-exchange-rates.php:41
4089
+ #: includes/settings/wcj-settings-products-xml.php:132
4090
  msgid "Update Daily"
4091
  msgstr ""
4092
 
4093
  #: includes/exchange-rates/class-wcj-exchange-rates-crons.php:26
4094
  #: includes/settings/wcj-settings-currency-exchange-rates.php:42
4095
+ #: includes/settings/wcj-settings-products-xml.php:133
4096
  msgid "Update Weekly"
4097
  msgstr ""
4098
 
4199
  msgstr ""
4200
 
4201
  #: includes/export/class-wcj-fields-helper.php:81
4202
+ #: includes/reports/wcj-class-reports-customers.php:95
4203
  msgid "Registered"
4204
  msgstr ""
4205
 
4209
 
4210
  #: includes/export/class-wcj-fields-helper.php:110
4211
  #: includes/export/class-wcj-fields-helper.php:193
4212
+ #: includes/pdf-invoices/submodules/class-wcj-pdf-invoicing-advanced.php:40
4213
+ #: includes/pdf-invoices/submodules/class-wcj-pdf-invoicing-advanced.php:64
4214
+ #: includes/settings/wcj-settings-order-numbers.php:27
4215
  msgid "Order ID"
4216
  msgstr ""
4217
 
4242
 
4243
  #: includes/export/class-wcj-fields-helper.php:116
4244
  #: includes/export/class-wcj-fields-helper.php:201
4245
+ #: includes/pdf-invoices/submodules/class-wcj-pdf-invoicing-advanced.php:47
4246
+ #: includes/pdf-invoices/submodules/class-wcj-pdf-invoicing-advanced.php:77
4247
  #: includes/settings/meta-box/wcj-settings-meta-box-orders.php:19
4248
  msgid "Order Currency"
4249
  msgstr ""
4250
 
4251
  #: includes/export/class-wcj-fields-helper.php:117
4252
  #: includes/export/class-wcj-fields-helper.php:202
4253
+ #: includes/pdf-invoices/submodules/class-wcj-pdf-invoicing-advanced.php:46
4254
+ #: includes/pdf-invoices/submodules/class-wcj-pdf-invoicing-advanced.php:76
4255
  msgid "Order Total"
4256
  msgstr ""
4257
 
4393
  msgstr ""
4394
 
4395
  #: includes/export/class-wcj-fields-helper.php:286
4396
+ #: includes/price-by-country/class-wcj-price-by-country-local.php:128
4397
  #: includes/settings/wcj-settings-product-by-user.php:16
4398
  #: includes/settings/meta-box/wcj-settings-meta-box-multicurrency.php:37
4399
  #: includes/settings/meta-box/wcj-settings-meta-box-price-by-user-role.php:55
4403
  msgstr ""
4404
 
4405
  #: includes/export/class-wcj-fields-helper.php:287
4406
+ #: includes/price-by-country/class-wcj-price-by-country-local.php:135
4407
  #: includes/settings/wcj-settings-product-by-user.php:17
4408
  #: includes/settings/meta-box/wcj-settings-meta-box-multicurrency.php:46
4409
  #: includes/settings/meta-box/wcj-settings-meta-box-price-by-user-role.php:64
4419
  #: includes/settings/wcj-settings-export.php:149
4420
  #: includes/settings/wcj-settings-export.php:231
4421
  #: includes/settings/wcj-settings-global-discount.php:58
4422
+ #: includes/settings/wcj-settings-product-addons.php:81
4423
  #: includes/settings/wcj-settings-purchase-data.php:73
4424
  #: includes/settings/wcj-settings-shipping-options.php:77
4425
  #: includes/settings/meta-box/wcj-settings-meta-box-product-addons.php:45
4547
  msgid "Availability Class"
4548
  msgstr ""
4549
 
4550
+ #: includes/functions/wcj-functions-admin.php:100
4551
  #, php-format
4552
  msgid ""
4553
  "<strong>Booster for WooCommerce</strong> plugin was successfully updated to "
4554
  "version <strong>%s</strong>."
4555
  msgstr ""
4556
 
4557
+ #: includes/functions/wcj-functions-admin.php:123
4558
  msgid "Enter comma separated list of IDs."
4559
  msgstr ""
4560
 
4561
+ #: includes/functions/wcj-functions-admin.php:197
4562
  #: includes/settings/wcj-settings-emails-verification.php:59
4563
  #: includes/settings/wcj-settings-emails-verification.php:67
4564
  #: includes/settings/wcj-settings-emails-verification.php:107
4566
  msgid "Replaced value: %s"
4567
  msgstr ""
4568
 
4569
+ #: includes/functions/wcj-functions-admin.php:197
4570
  #, php-format
4571
  msgid "Replaced values: %s"
4572
  msgstr ""
4573
 
4574
+ #: includes/functions/wcj-functions-admin.php:226
4575
  msgid "Install Booster Plus to unlock all features"
4576
  msgstr ""
4577
 
4578
+ #: includes/functions/wcj-functions-admin.php:227
4579
  #, php-format
4580
  msgid ""
4581
  "Some settings fields are locked and you will need %s to modify all locked "
4582
  "fields."
4583
  msgstr ""
4584
 
4585
+ #: includes/functions/wcj-functions-admin.php:228
4586
  msgid "Buy now"
4587
  msgstr ""
4588
 
4589
+ #: includes/functions/wcj-functions-admin.php:228
4590
  msgid "Visit Booster Site"
4591
  msgstr ""
4592
 
4593
+ #: includes/functions/wcj-functions-admin.php:232
4594
  #, php-format
4595
  msgid "Get <a href=\"%s\" target=\"_blank\">Booster Plus</a> to change value."
4596
  msgstr ""
4597
 
4598
+ #: includes/functions/wcj-functions-admin.php:235
4599
  #, php-format
4600
  msgid ""
4601
  "Get <a href=\"%s\" target=\"_blank\">Booster Plus</a> to enable \"%s\" "
4602
  "option."
4603
  msgstr ""
4604
 
4605
+ #: includes/functions/wcj-functions-admin.php:238
4606
  #, php-format
4607
  msgid "Get Booster Plus to enable \"%s\" option."
4608
  msgstr ""
4609
 
4610
+ #: includes/functions/wcj-functions-admin.php:241
4611
  #, php-format
4612
  msgid ""
4613
  "Get <a href=\"%s\" target=\"_blank\">Booster Plus</a> to change values below."
4614
  msgstr ""
4615
 
4616
+ #: includes/functions/wcj-functions-admin.php:244
4617
  #, php-format
4618
  msgid ""
4619
  "Get <a href=\"%s\" target=\"_blank\">Booster Plus</a> to change values above."
4620
  msgstr ""
4621
 
4622
+ #: includes/functions/wcj-functions-admin.php:247
4623
  msgid "Get Booster Plus to change value."
4624
  msgstr ""
4625
 
5677
  msgid "Once a minute"
5678
  msgstr ""
5679
 
5680
+ #: includes/functions/wcj-functions-currencies.php:17
5681
  msgid "United Arab Emirates Dirham"
5682
  msgstr ""
5683
 
5684
+ #: includes/functions/wcj-functions-currencies.php:18
5685
  msgid "Afghan afghani"
5686
  msgstr ""
5687
 
5688
+ #: includes/functions/wcj-functions-currencies.php:19
5689
  msgid "Albanian lek"
5690
  msgstr ""
5691
 
5692
+ #: includes/functions/wcj-functions-currencies.php:20
5693
  msgid "Armenian dram"
5694
  msgstr ""
5695
 
5696
+ #: includes/functions/wcj-functions-currencies.php:21
5697
  msgid "Netherlands Antillean gulden"
5698
  msgstr ""
5699
 
5700
+ #: includes/functions/wcj-functions-currencies.php:22
5701
  msgid "Angolan kwanza"
5702
  msgstr ""
5703
 
5704
+ #: includes/functions/wcj-functions-currencies.php:23
5705
  msgid "Argentine Peso"
5706
  msgstr ""
5707
 
5708
+ #: includes/functions/wcj-functions-currencies.php:24
5709
  msgid "Australian Dollars"
5710
  msgstr ""
5711
 
5712
+ #: includes/functions/wcj-functions-currencies.php:25
5713
  msgid "Aruban florin"
5714
  msgstr ""
5715
 
5716
+ #: includes/functions/wcj-functions-currencies.php:26
5717
  msgid "Azerbaijani manat"
5718
  msgstr ""
5719
 
5720
+ #: includes/functions/wcj-functions-currencies.php:27
5721
  msgid "Bosnia and Herzegovina konvertibilna marka"
5722
  msgstr ""
5723
 
5724
+ #: includes/functions/wcj-functions-currencies.php:28
5725
  msgid "Barbadian dollar"
5726
  msgstr ""
5727
 
5728
+ #: includes/functions/wcj-functions-currencies.php:29
5729
  msgid "Bangladeshi Taka"
5730
  msgstr ""
5731
 
5732
+ #: includes/functions/wcj-functions-currencies.php:30
5733
  msgid "Bulgarian Lev"
5734
  msgstr ""
5735
 
5736
+ #: includes/functions/wcj-functions-currencies.php:31
5737
  msgid "Bahraini dinar"
5738
  msgstr ""
5739
 
5740
+ #: includes/functions/wcj-functions-currencies.php:32
5741
  msgid "Burundi franc"
5742
  msgstr ""
5743
 
5744
+ #: includes/functions/wcj-functions-currencies.php:33
5745
  msgid "Belarusian ruble"
5746
  msgstr ""
5747
 
5748
+ #: includes/functions/wcj-functions-currencies.php:34
5749
  msgid "Brunei dollar"
5750
  msgstr ""
5751
 
5752
+ #: includes/functions/wcj-functions-currencies.php:35
5753
  msgid "Bolivian boliviano"
5754
  msgstr ""
5755
 
5756
+ #: includes/functions/wcj-functions-currencies.php:36
5757
  msgid "Brazilian Real"
5758
  msgstr ""
5759
 
5760
+ #: includes/functions/wcj-functions-currencies.php:37
5761
  msgid "Bahamian dollar"
5762
  msgstr ""
5763
 
5764
+ #: includes/functions/wcj-functions-currencies.php:38
5765
  msgid "Bhutanese ngultrum"
5766
  msgstr ""
5767
 
5768
+ #: includes/functions/wcj-functions-currencies.php:39
5769
  msgid "Botswana pula"
5770
  msgstr ""
5771
 
5772
+ #: includes/functions/wcj-functions-currencies.php:40
5773
  msgid "Belize dollar"
5774
  msgstr ""
5775
 
5776
+ #: includes/functions/wcj-functions-currencies.php:41
5777
  msgid "Canadian Dollars"
5778
  msgstr ""
5779
 
5780
+ #: includes/functions/wcj-functions-currencies.php:42
5781
  msgid "Congolese franc"
5782
  msgstr ""
5783
 
5784
+ #: includes/functions/wcj-functions-currencies.php:43
5785
  msgid "Swiss Franc"
5786
  msgstr ""
5787
 
5788
+ #: includes/functions/wcj-functions-currencies.php:44
5789
  msgid "Chilean Peso"
5790
  msgstr ""
5791
 
5792
+ #: includes/functions/wcj-functions-currencies.php:45
5793
  msgid "Chinese Yuan"
5794
  msgstr ""
5795
 
5796
+ #: includes/functions/wcj-functions-currencies.php:46
5797
  msgid "Colombian Peso"
5798
  msgstr ""
5799
 
5800
+ #: includes/functions/wcj-functions-currencies.php:47
5801
  msgid "Costa Rican colon"
5802
  msgstr ""
5803
 
5804
+ #: includes/functions/wcj-functions-currencies.php:48
5805
  msgid "Cuban peso"
5806
  msgstr ""
5807
 
5808
+ #: includes/functions/wcj-functions-currencies.php:49
5809
  msgid "Cape Verdean escudo"
5810
  msgstr ""
5811
 
5812
+ #: includes/functions/wcj-functions-currencies.php:50
5813
  msgid "Czech Koruna"
5814
  msgstr ""
5815
 
5816
+ #: includes/functions/wcj-functions-currencies.php:51
5817
  msgid "Djiboutian franc"
5818
  msgstr ""
5819
 
5820
+ #: includes/functions/wcj-functions-currencies.php:52
5821
  msgid "Danish Krone"
5822
  msgstr ""
5823
 
5824
+ #: includes/functions/wcj-functions-currencies.php:53
5825
  msgid "Dominican Peso"
5826
  msgstr ""
5827
 
5828
+ #: includes/functions/wcj-functions-currencies.php:54
5829
  msgid "Algerian dinar"
5830
  msgstr ""
5831
 
5832
+ #: includes/functions/wcj-functions-currencies.php:55
5833
  msgid "Estonian kroon"
5834
  msgstr ""
5835
 
5836
+ #: includes/functions/wcj-functions-currencies.php:56
5837
  msgid "Egyptian Pound"
5838
  msgstr ""
5839
 
5840
+ #: includes/functions/wcj-functions-currencies.php:57
5841
  msgid "Eritrean nakfa"
5842
  msgstr ""
5843
 
5844
+ #: includes/functions/wcj-functions-currencies.php:58
5845
  msgid "Ethiopian birr"
5846
  msgstr ""
5847
 
5848
+ #: includes/functions/wcj-functions-currencies.php:59
5849
  msgid "Euros"
5850
  msgstr ""
5851
 
5852
+ #: includes/functions/wcj-functions-currencies.php:60
5853
  msgid "Fijian dollar"
5854
  msgstr ""
5855
 
5856
+ #: includes/functions/wcj-functions-currencies.php:61
5857
  msgid "Falkland Islands pound"
5858
  msgstr ""
5859
 
5860
+ #: includes/functions/wcj-functions-currencies.php:62
5861
  msgid "Pounds Sterling"
5862
  msgstr ""
5863
 
5864
+ #: includes/functions/wcj-functions-currencies.php:63
5865
  msgid "Georgian lari"
5866
  msgstr ""
5867
 
5868
+ #: includes/functions/wcj-functions-currencies.php:64
5869
  msgid "Ghanaian cedi"
5870
  msgstr ""
5871
 
5872
+ #: includes/functions/wcj-functions-currencies.php:65
5873
  msgid "Gibraltar pound"
5874
  msgstr ""
5875
 
5876
+ #: includes/functions/wcj-functions-currencies.php:66
5877
  msgid "Guyanese dollar"
5878
  msgstr ""
5879
 
5880
+ #: includes/functions/wcj-functions-currencies.php:67
5881
  msgid "Gambian dalasi"
5882
  msgstr ""
5883
 
5884
+ #: includes/functions/wcj-functions-currencies.php:68
5885
  msgid "Guinean franc"
5886
  msgstr ""
5887
 
5888
+ #: includes/functions/wcj-functions-currencies.php:69
5889
+ #: includes/functions/wcj-functions-currencies.php:172
5890
  msgid "Central African CFA franc"
5891
  msgstr ""
5892
 
5893
+ #: includes/functions/wcj-functions-currencies.php:70
5894
  msgid "Guatemalan quetzal"
5895
  msgstr ""
5896
 
5897
+ #: includes/functions/wcj-functions-currencies.php:71
5898
  msgid "Hong Kong Dollar"
5899
  msgstr ""
5900
 
5901
+ #: includes/functions/wcj-functions-currencies.php:72
5902
  msgid "Honduran lempira"
5903
  msgstr ""
5904
 
5905
+ #: includes/functions/wcj-functions-currencies.php:73
5906
  msgid "Croatia kuna"
5907
  msgstr ""
5908
 
5909
+ #: includes/functions/wcj-functions-currencies.php:74
5910
  msgid "Haitian gourde"
5911
  msgstr ""
5912
 
5913
+ #: includes/functions/wcj-functions-currencies.php:75
5914
  msgid "Hungarian Forint"
5915
  msgstr ""
5916
 
5917
+ #: includes/functions/wcj-functions-currencies.php:76
5918
  msgid "Indonesia Rupiah"
5919
  msgstr ""
5920
 
5921
+ #: includes/functions/wcj-functions-currencies.php:77
5922
  msgid "Israeli Shekel"
5923
  msgstr ""
5924
 
5925
+ #: includes/functions/wcj-functions-currencies.php:78
5926
  msgid "Indian Rupee"
5927
  msgstr ""
5928
 
5929
+ #: includes/functions/wcj-functions-currencies.php:79
5930
  msgid "Iraqi dinar"
5931
  msgstr ""
5932
 
5933
+ #: includes/functions/wcj-functions-currencies.php:80
5934
  msgid "Iranian rial"
5935
  msgstr ""
5936
 
5937
+ #: includes/functions/wcj-functions-currencies.php:81
5938
  msgid "Icelandic krona"
5939
  msgstr ""
5940
 
5941
+ #: includes/functions/wcj-functions-currencies.php:82
5942
  msgid "Yemeni rial"
5943
  msgstr ""
5944
 
5945
+ #: includes/functions/wcj-functions-currencies.php:83
5946
  msgid "Jamaican dollar"
5947
  msgstr ""
5948
 
5949
+ #: includes/functions/wcj-functions-currencies.php:84
5950
  msgid "Jordanian dinar"
5951
  msgstr ""
5952
 
5953
+ #: includes/functions/wcj-functions-currencies.php:85
5954
  msgid "Japanese Yen"
5955
  msgstr ""
5956
 
5957
+ #: includes/functions/wcj-functions-currencies.php:86
5958
  msgid "Kenyan shilling"
5959
  msgstr ""
5960
 
5961
+ #: includes/functions/wcj-functions-currencies.php:87
5962
  msgid "Kyrgyzstani som"
5963
  msgstr ""
5964
 
5965
+ #: includes/functions/wcj-functions-currencies.php:88
5966
  msgid "Cambodian riel"
5967
  msgstr ""
5968
 
5969
+ #: includes/functions/wcj-functions-currencies.php:89
5970
  msgid "Lao kip"
5971
  msgstr ""
5972
 
5973
+ #: includes/functions/wcj-functions-currencies.php:90
5974
  msgid "Cayman Islands dollar"
5975
  msgstr ""
5976
 
5977
+ #: includes/functions/wcj-functions-currencies.php:91
5978
  msgid "Comorian franc"
5979
  msgstr ""
5980
 
5981
+ #: includes/functions/wcj-functions-currencies.php:92
5982
  msgid "North Korean won"
5983
  msgstr ""
5984
 
5985
+ #: includes/functions/wcj-functions-currencies.php:93
5986
  msgid "South Korean Won"
5987
  msgstr ""
5988
 
5989
+ #: includes/functions/wcj-functions-currencies.php:94
5990
  msgid "Kuwaiti dinar"
5991
  msgstr ""
5992
 
5993
+ #: includes/functions/wcj-functions-currencies.php:95
5994
  msgid "Kazakhstani tenge"
5995
  msgstr ""
5996
 
5997
+ #: includes/functions/wcj-functions-currencies.php:96
5998
  msgid "Lao Kip"
5999
  msgstr ""
6000
 
6001
+ #: includes/functions/wcj-functions-currencies.php:97
6002
  msgid "Lebanese lira"
6003
  msgstr ""
6004
 
6005
+ #: includes/functions/wcj-functions-currencies.php:98
6006
  msgid "Libyan dinar"
6007
  msgstr ""
6008
 
6009
+ #: includes/functions/wcj-functions-currencies.php:99
6010
  msgid "Sri Lankan rupee"
6011
  msgstr ""
6012
 
6013
+ #: includes/functions/wcj-functions-currencies.php:100
6014
  msgid "Liberian dollar"
6015
  msgstr ""
6016
 
6017
+ #: includes/functions/wcj-functions-currencies.php:101
6018
  msgid "Lesotho loti"
6019
  msgstr ""
6020
 
6021
+ #: includes/functions/wcj-functions-currencies.php:102
6022
  msgid "Lithuanian litas"
6023
  msgstr ""
6024
 
6025
+ #: includes/functions/wcj-functions-currencies.php:103
6026
  msgid "Latvian lats"
6027
  msgstr ""
6028
 
6029
+ #: includes/functions/wcj-functions-currencies.php:104
6030
  msgid "Moroccan dirham"
6031
  msgstr ""
6032
 
6033
+ #: includes/functions/wcj-functions-currencies.php:105
6034
  msgid "Moldovan leu"
6035
  msgstr ""
6036
 
6037
+ #: includes/functions/wcj-functions-currencies.php:106
6038
  msgid "Malagasy ariary"
6039
  msgstr ""
6040
 
6041
+ #: includes/functions/wcj-functions-currencies.php:107
6042
  msgid "Malaysian ringgit"
6043
  msgstr ""
6044
 
6045
+ #: includes/functions/wcj-functions-currencies.php:108
6046
  msgid "Macedonian denar"
6047
  msgstr ""
6048
 
6049
+ #: includes/functions/wcj-functions-currencies.php:109
6050
  msgid "Myanma kyat"
6051
  msgstr ""
6052
 
6053
+ #: includes/functions/wcj-functions-currencies.php:110
6054
  msgid "Mongolian tugrik"
6055
  msgstr ""
6056
 
6057
+ #: includes/functions/wcj-functions-currencies.php:111
6058
  msgid "Macanese pataca"
6059
  msgstr ""
6060
 
6061
+ #: includes/functions/wcj-functions-currencies.php:112
6062
  msgid "Mauritanian ouguiya"
6063
  msgstr ""
6064
 
6065
+ #: includes/functions/wcj-functions-currencies.php:113
6066
  msgid "Mauritian rupee"
6067
  msgstr ""
6068
 
6069
+ #: includes/functions/wcj-functions-currencies.php:114
6070
  msgid "Maldivian rufiyaa"
6071
  msgstr ""
6072
 
6073
+ #: includes/functions/wcj-functions-currencies.php:115
6074
  msgid "Malawian kwacha"
6075
  msgstr ""
6076
 
6077
+ #: includes/functions/wcj-functions-currencies.php:116
6078
  msgid "Mexican Peso"
6079
  msgstr ""
6080
 
6081
+ #: includes/functions/wcj-functions-currencies.php:117
6082
  msgid "Malaysian Ringgits"
6083
  msgstr ""
6084
 
6085
+ #: includes/functions/wcj-functions-currencies.php:118
6086
  msgid "Mozambican metical"
6087
  msgstr ""
6088
 
6089
+ #: includes/functions/wcj-functions-currencies.php:119
6090
  msgid "Namibian dollar"
6091
  msgstr ""
6092
 
6093
+ #: includes/functions/wcj-functions-currencies.php:120
6094
  msgid "Nigerian Naira"
6095
  msgstr ""
6096
 
6097
+ #: includes/functions/wcj-functions-currencies.php:121
6098
  msgid "Nicaraguan cordoba"
6099
  msgstr ""
6100
 
6101
+ #: includes/functions/wcj-functions-currencies.php:122
6102
  msgid "Norwegian Krone"
6103
  msgstr ""
6104
 
6105
+ #: includes/functions/wcj-functions-currencies.php:123
6106
  msgid "Nepali Rupee"
6107
  msgstr ""
6108
 
6109
+ #: includes/functions/wcj-functions-currencies.php:124
6110
  msgid "New Zealand Dollar"
6111
  msgstr ""
6112
 
6113
+ #: includes/functions/wcj-functions-currencies.php:125
6114
  msgid "Omani rial"
6115
  msgstr ""
6116
 
6117
+ #: includes/functions/wcj-functions-currencies.php:126
6118
  msgid "Panamanian balboa"
6119
  msgstr ""
6120
 
6121
+ #: includes/functions/wcj-functions-currencies.php:127
6122
  msgid "Peruvian nuevo sol"
6123
  msgstr ""
6124
 
6125
+ #: includes/functions/wcj-functions-currencies.php:128
6126
  msgid "Papua New Guinean kina"
6127
  msgstr ""
6128
 
6129
+ #: includes/functions/wcj-functions-currencies.php:129
6130
  msgid "Philippine Pesos"
6131
  msgstr ""
6132
 
6133
+ #: includes/functions/wcj-functions-currencies.php:130
6134
  msgid "Paraguayan guarani"
6135
  msgstr ""
6136
 
6137
+ #: includes/functions/wcj-functions-currencies.php:131
6138
  msgid "Pakistani Rupee"
6139
  msgstr ""
6140
 
6141
+ #: includes/functions/wcj-functions-currencies.php:132
6142
  msgid "Polish Zloty"
6143
  msgstr ""
6144
 
6145
+ #: includes/functions/wcj-functions-currencies.php:133
6146
  msgid "Paraguayan Guaran"
6147
  msgstr ""
6148
 
6149
+ #: includes/functions/wcj-functions-currencies.php:134
6150
  msgid "Qatari riyal"
6151
  msgstr ""
6152
 
6153
+ #: includes/functions/wcj-functions-currencies.php:135
6154
  msgid "Chinese renminbi"
6155
  msgstr ""
6156
 
6157
+ #: includes/functions/wcj-functions-currencies.php:136
6158
  msgid "Romanian Leu"
6159
  msgstr ""
6160
 
6161
+ #: includes/functions/wcj-functions-currencies.php:137
6162
  msgid "Serbian dinar"
6163
  msgstr ""
6164
 
6165
+ #: includes/functions/wcj-functions-currencies.php:138
6166
  msgid "Russian Ruble"
6167
  msgstr ""
6168
 
6169
+ #: includes/functions/wcj-functions-currencies.php:139
6170
  msgid "Rwandan franc"
6171
  msgstr ""
6172
 
6173
+ #: includes/functions/wcj-functions-currencies.php:140
6174
  msgid "Saudi Riyal"
6175
  msgstr ""
6176
 
6177
+ #: includes/functions/wcj-functions-currencies.php:141
6178
  msgid "Solomon Islands dollar"
6179
  msgstr ""
6180
 
6181
+ #: includes/functions/wcj-functions-currencies.php:142
6182
  msgid "Seychellois rupee"
6183
  msgstr ""
6184
 
6185
+ #: includes/functions/wcj-functions-currencies.php:143
6186
  msgid "Sudanese pound"
6187
  msgstr ""
6188
 
6189
+ #: includes/functions/wcj-functions-currencies.php:144
6190
  msgid "Swedish Krona"
6191
  msgstr ""
6192
 
6193
+ #: includes/functions/wcj-functions-currencies.php:145
6194
  msgid "Singapore Dollar"
6195
  msgstr ""
6196
 
6197
+ #: includes/functions/wcj-functions-currencies.php:146
6198
  msgid "Saint Helena pound"
6199
  msgstr ""
6200
 
6201
+ #: includes/functions/wcj-functions-currencies.php:147
6202
  msgid "Syrian pound"
6203
  msgstr ""
6204
 
6205
+ #: includes/functions/wcj-functions-currencies.php:148
6206
  msgid "Slovak koruna"
6207
  msgstr ""
6208
 
6209
+ #: includes/functions/wcj-functions-currencies.php:149
6210
  msgid "Sierra Leonean leone"
6211
  msgstr ""
6212
 
6213
+ #: includes/functions/wcj-functions-currencies.php:150
6214
  msgid "Somali shilling"
6215
  msgstr ""
6216
 
6217
+ #: includes/functions/wcj-functions-currencies.php:151
6218
  msgid "Surinamese dollar"
6219
  msgstr ""
6220
 
6221
+ #: includes/functions/wcj-functions-currencies.php:152
6222
  msgid "Sao Tome and Principe dobra"
6223
  msgstr ""
6224
 
6225
+ #: includes/functions/wcj-functions-currencies.php:153
6226
  msgid "Swazi lilangeni"
6227
  msgstr ""
6228
 
6229
+ #: includes/functions/wcj-functions-currencies.php:154
6230
  msgid "Thai Baht"
6231
  msgstr ""
6232
 
6233
+ #: includes/functions/wcj-functions-currencies.php:155
6234
  msgid "Tajikistani somoni"
6235
  msgstr ""
6236
 
6237
+ #: includes/functions/wcj-functions-currencies.php:156
6238
  msgid "Turkmen manat"
6239
  msgstr ""
6240
 
6241
+ #: includes/functions/wcj-functions-currencies.php:157
6242
  msgid "Tunisian dinar"
6243
  msgstr ""
6244
 
6245
+ #: includes/functions/wcj-functions-currencies.php:158
6246
  msgid "Paanga"
6247
  msgstr ""
6248
 
6249
+ #: includes/functions/wcj-functions-currencies.php:159
6250
  msgid "Turkish Lira"
6251
  msgstr ""
6252
 
6253
+ #: includes/functions/wcj-functions-currencies.php:160
6254
  msgid "Trinidad and Tobago dollar"
6255
  msgstr ""
6256
 
6257
+ #: includes/functions/wcj-functions-currencies.php:161
6258
  msgid "Taiwan New Dollars"
6259
  msgstr ""
6260
 
6261
+ #: includes/functions/wcj-functions-currencies.php:162
6262
  msgid "Tanzanian shilling"
6263
  msgstr ""
6264
 
6265
+ #: includes/functions/wcj-functions-currencies.php:163
6266
  msgid "Ukrainian Hryvnia"
6267
  msgstr ""
6268
 
6269
+ #: includes/functions/wcj-functions-currencies.php:164
6270
  msgid "Ugandan shilling"
6271
  msgstr ""
6272
 
6273
+ #: includes/functions/wcj-functions-currencies.php:165
6274
  msgid "Uruguayan peso"
6275
  msgstr ""
6276
 
6277
+ #: includes/functions/wcj-functions-currencies.php:166
6278
  msgid "US Dollars"
6279
  msgstr ""
6280
 
6281
+ #: includes/functions/wcj-functions-currencies.php:167
6282
  msgid "Uzbekistani som"
6283
  msgstr ""
6284
 
6285
+ #: includes/functions/wcj-functions-currencies.php:168
6286
  msgid "Venezuelan bolivar"
6287
  msgstr ""
6288
 
6289
+ #: includes/functions/wcj-functions-currencies.php:169
6290
  msgid "Vietnamese Dong"
6291
  msgstr ""
6292
 
6293
+ #: includes/functions/wcj-functions-currencies.php:170
6294
  msgid "Vanuatu vatu"
6295
  msgstr ""
6296
 
6297
+ #: includes/functions/wcj-functions-currencies.php:171
6298
  msgid "Samoan tala"
6299
  msgstr ""
6300
 
6301
+ #: includes/functions/wcj-functions-currencies.php:173
6302
  msgid "East Caribbean dollar"
6303
  msgstr ""
6304
 
6305
+ #: includes/functions/wcj-functions-currencies.php:174
6306
  msgid "Special Drawing Rights"
6307
  msgstr ""
6308
 
6309
+ #: includes/functions/wcj-functions-currencies.php:175
6310
  msgid "West African CFA franc"
6311
  msgstr ""
6312
 
6313
+ #: includes/functions/wcj-functions-currencies.php:176
6314
  msgid "CFP franc"
6315
  msgstr ""
6316
 
6317
+ #: includes/functions/wcj-functions-currencies.php:177
6318
  msgid "South African rand"
6319
  msgstr ""
6320
 
6321
+ #: includes/functions/wcj-functions-currencies.php:178
6322
  msgid "Zambian kwacha"
6323
  msgstr ""
6324
 
6325
+ #: includes/functions/wcj-functions-currencies.php:179
6326
  msgid "Zimbabwean dollar"
6327
  msgstr ""
6328
 
6329
+ #: includes/functions/wcj-functions-currencies.php:181
6330
  msgid "Auroracoin"
6331
  msgstr ""
6332
 
6333
+ #: includes/functions/wcj-functions-currencies.php:182
6334
  msgid "BitConnect"
6335
  msgstr ""
6336
 
6337
+ #: includes/functions/wcj-functions-currencies.php:183
6338
  msgid "Bitcoin Cash"
6339
  msgstr ""
6340
 
6341
+ #: includes/functions/wcj-functions-currencies.php:184
6342
  msgid "Bitcoin"
6343
  msgstr ""
6344
 
6345
+ #: includes/functions/wcj-functions-currencies.php:185
6346
  msgid "Coinye"
6347
  msgstr ""
6348
 
6349
+ #: includes/functions/wcj-functions-currencies.php:186
6350
  msgid "DigitalNote"
6351
  msgstr ""
6352
 
6353
+ #: includes/functions/wcj-functions-currencies.php:187
6354
  msgid "Emercoin"
6355
  msgstr ""
6356
 
6357
+ #: includes/functions/wcj-functions-currencies.php:188
6358
  msgid "Ethereum Classic"
6359
  msgstr ""
6360
 
6361
+ #: includes/functions/wcj-functions-currencies.php:189
6362
  msgid "Ethereum"
6363
  msgstr ""
6364
 
6365
+ #: includes/functions/wcj-functions-currencies.php:190
6366
  msgid "Freemasoncoin"
6367
  msgstr ""
6368
 
6369
+ #: includes/functions/wcj-functions-currencies.php:191
6370
  msgid "Gridcoin"
6371
  msgstr ""
6372
 
6373
+ #: includes/functions/wcj-functions-currencies.php:192
6374
  msgid "IOTA"
6375
  msgstr ""
6376
 
6377
+ #: includes/functions/wcj-functions-currencies.php:193
6378
  msgid "Litecoin"
6379
  msgstr ""
6380
 
6381
+ #: includes/functions/wcj-functions-currencies.php:194
6382
  msgid "MazaCoin"
6383
  msgstr ""
6384
 
6385
+ #: includes/functions/wcj-functions-currencies.php:195
6386
  msgid "Monero"
6387
  msgstr ""
6388
 
6389
+ #: includes/functions/wcj-functions-currencies.php:196
6390
  msgid "Namecoin"
6391
  msgstr ""
6392
 
6393
+ #: includes/functions/wcj-functions-currencies.php:197
6394
  msgid "NEM"
6395
  msgstr ""
6396
 
6397
+ #: includes/functions/wcj-functions-currencies.php:198
6398
  msgid "Nxt"
6399
  msgstr ""
6400
 
6401
+ #: includes/functions/wcj-functions-currencies.php:199
6402
  msgid "Omni"
6403
  msgstr ""
6404
 
6405
+ #: includes/functions/wcj-functions-currencies.php:200
6406
  msgid "Peercoin"
6407
  msgstr ""
6408
 
6409
+ #: includes/functions/wcj-functions-currencies.php:201
6410
  msgid "PotCoin"
6411
  msgstr ""
6412
 
6413
+ #: includes/functions/wcj-functions-currencies.php:202
6414
  msgid "Primecoin"
6415
  msgstr ""
6416
 
6417
+ #: includes/functions/wcj-functions-currencies.php:203
6418
  msgid "Ripple"
6419
  msgstr ""
6420
 
6421
+ #: includes/functions/wcj-functions-currencies.php:204
6422
  msgid "SixEleven"
6423
  msgstr ""
6424
 
6425
+ #: includes/functions/wcj-functions-currencies.php:205
6426
  msgid "Synereo AMP"
6427
  msgstr ""
6428
 
6429
+ #: includes/functions/wcj-functions-currencies.php:206
6430
  msgid "Titcoin"
6431
  msgstr ""
6432
 
6433
+ #: includes/functions/wcj-functions-currencies.php:207
6434
  msgid "Ubiq"
6435
  msgstr ""
6436
 
6437
+ #: includes/functions/wcj-functions-currencies.php:208
6438
  msgid "Vertcoin"
6439
  msgstr ""
6440
 
6441
+ #: includes/functions/wcj-functions-currencies.php:209
6442
  msgid "Zcash"
6443
  msgstr ""
6444
 
6445
+ #: includes/functions/wcj-functions-currencies.php:211
6446
  msgid "myCred"
6447
  msgstr ""
6448
 
6449
+ #: includes/functions/wcj-functions-exchange-rates.php:69
6450
  msgid "Yahoo"
6451
  msgstr ""
6452
 
6453
+ #: includes/functions/wcj-functions-exchange-rates.php:70
6454
  msgid "European Central Bank (ECB)"
6455
  msgstr ""
6456
 
6457
+ #: includes/functions/wcj-functions-exchange-rates.php:71
6458
  msgid "TCMB"
6459
  msgstr ""
6460
 
6461
+ #: includes/functions/wcj-functions-exchange-rates.php:72
6462
  msgid "Fixer.io"
6463
  msgstr ""
6464
 
6465
+ #: includes/functions/wcj-functions-exchange-rates.php:73
6466
  msgid "Coinbase"
6467
  msgstr ""
6468
 
6469
+ #: includes/functions/wcj-functions-exchange-rates.php:74
6470
  msgid "CoinMarketCap"
6471
  msgstr ""
6472
 
6473
+ #: includes/functions/wcj-functions-general.php:479
6474
+ #: includes/functions/wcj-functions-general.php:525
6475
+ #: includes/settings/wcj-settings-left-to-free-shipping.php:141
6476
  msgid "You have Free delivery"
6477
  msgstr ""
6478
 
6479
+ #: includes/functions/wcj-functions-general.php:546
6480
  msgid "Before cart"
6481
  msgstr ""
6482
 
6483
+ #: includes/functions/wcj-functions-general.php:547
6484
  msgid "Before cart table"
6485
  msgstr ""
6486
 
6487
+ #: includes/functions/wcj-functions-general.php:548
6488
  msgid "Before cart contents"
6489
  msgstr ""
6490
 
6491
+ #: includes/functions/wcj-functions-general.php:549
6492
  msgid "Cart contents"
6493
  msgstr ""
6494
 
6495
+ #: includes/functions/wcj-functions-general.php:550
6496
  msgid "Cart coupon"
6497
  msgstr ""
6498
 
6499
+ #: includes/functions/wcj-functions-general.php:551
6500
  msgid "Cart actions"
6501
  msgstr ""
6502
 
6503
+ #: includes/functions/wcj-functions-general.php:552
6504
  msgid "After cart contents"
6505
  msgstr ""
6506
 
6507
+ #: includes/functions/wcj-functions-general.php:553
6508
  msgid "After cart table"
6509
  msgstr ""
6510
 
6511
+ #: includes/functions/wcj-functions-general.php:554
6512
  msgid "Cart collaterals"
6513
  msgstr ""
6514
 
6515
+ #: includes/functions/wcj-functions-general.php:555
6516
  msgid "After cart"
6517
  msgstr ""
6518
 
6519
+ #: includes/functions/wcj-functions-general.php:557
6520
  msgid "Before cart totals"
6521
  msgstr ""
6522
 
6523
+ #: includes/functions/wcj-functions-general.php:558
6524
  msgid "Cart totals: Before shipping"
6525
  msgstr ""
6526
 
6527
+ #: includes/functions/wcj-functions-general.php:559
6528
  msgid "Cart totals: After shipping"
6529
  msgstr ""
6530
 
6531
+ #: includes/functions/wcj-functions-general.php:560
6532
  msgid "Cart totals: Before order total"
6533
  msgstr ""
6534
 
6535
+ #: includes/functions/wcj-functions-general.php:561
6536
  msgid "Cart totals: After order total"
6537
  msgstr ""
6538
 
6539
+ #: includes/functions/wcj-functions-general.php:562
6540
  msgid "Proceed to checkout"
6541
  msgstr ""
6542
 
6543
+ #: includes/functions/wcj-functions-general.php:563
6544
  msgid "After cart totals"
6545
  msgstr ""
6546
 
6547
+ #: includes/functions/wcj-functions-general.php:565
6548
  msgid "Before shipping calculator"
6549
  msgstr ""
6550
 
6551
+ #: includes/functions/wcj-functions-general.php:566
6552
  msgid "After shipping calculator"
6553
  msgstr ""
6554
 
6555
+ #: includes/functions/wcj-functions-general.php:568
6556
  msgid "If cart is empty"
6557
  msgstr ""
6558
 
6589
  msgstr ""
6590
 
6591
  #: includes/functions/wcj-functions-reports.php:27
6592
+ #: includes/settings/wcj-settings-product-addons.php:149
6593
+ #: includes/settings/meta-box/wcj-settings-meta-box-product-addons.php:108
6594
  msgid "Quantity"
6595
  msgstr ""
6596
 
6835
  #: includes/settings/wcj-settings-export.php:220
6836
  #: includes/settings/wcj-settings-global-discount.php:50
6837
  #: includes/settings/wcj-settings-product-by-user.php:149
6838
+ #: includes/settings/wcj-settings-products-xml.php:72
6839
  #: includes/settings/meta-box/wcj-settings-meta-box-price-by-user-role.php:37
6840
  #: includes/settings/meta-box/wcj-settings-meta-box-product-addons.php:21
6841
  #: includes/settings/meta-box/wcj-settings-meta-box-product-bookings.php:14
6854
  #: includes/settings/wcj-settings-cart-customization.php:50
6855
  #: includes/settings/wcj-settings-checkout-custom-fields.php:120
6856
  #: includes/settings/wcj-settings-more-button-labels.php:19
6857
+ #: includes/settings/wcj-settings-product-addons.php:89
6858
  #: includes/settings/meta-box/wcj-settings-meta-box-product-addons.php:53
6859
  msgid "Text"
6860
  msgstr ""
6871
 
6872
  #: includes/input-fields/wcj-product-input-fields-options.php:35
6873
  #: includes/settings/wcj-settings-checkout-custom-fields.php:123
6874
+ #: includes/settings/wcj-settings-product-addons.php:86
6875
  #: includes/settings/meta-box/wcj-settings-meta-box-product-addons.php:50
6876
  msgid "Checkbox"
6877
  msgstr ""
6914
  #: includes/input-fields/wcj-product-input-fields-options.php:57
6915
  #: includes/settings/wcj-settings-checkout-custom-fields.php:150
6916
  #: includes/settings/wcj-settings-eu-vat-number.php:27
6917
+ #: includes/settings/wcj-settings-product-addons.php:128
6918
  #: includes/settings/meta-box/wcj-settings-meta-box-product-addons.php:91
6919
  msgid "Placeholder"
6920
  msgstr ""
7260
  msgid "No documents (%s) found for %d-%02d."
7261
  msgstr ""
7262
 
7263
+ #: includes/pdf-invoices/submodules/class-wcj-pdf-invoicing-advanced.php:25
7264
+ #: includes/settings/wcj-settings-order-min-amount.php:69
7265
+ #: includes/settings/wcj-settings-pdf-invoicing-advanced.php:60
7266
+ #: includes/settings/wcj-settings-pdf-invoicing-advanced.php:74
7267
+ msgid "Advanced"
7268
+ msgstr ""
7269
+
7270
+ #: includes/pdf-invoices/submodules/class-wcj-pdf-invoicing-advanced.php:38
7271
+ #: includes/pdf-invoices/submodules/class-wcj-pdf-invoicing-advanced.php:62
7272
  msgid "Document Number"
7273
  msgstr ""
7274
 
7275
+ #: includes/pdf-invoices/submodules/class-wcj-pdf-invoicing-advanced.php:39
7276
+ #: includes/pdf-invoices/submodules/class-wcj-pdf-invoicing-advanced.php:63
7277
  msgid "Document Date"
7278
  msgstr ""
7279
 
7280
+ #: includes/pdf-invoices/submodules/class-wcj-pdf-invoicing-advanced.php:41
7281
+ #: includes/pdf-invoices/submodules/class-wcj-pdf-invoicing-advanced.php:65
7282
  msgid "Customer Country"
7283
  msgstr ""
7284
 
7285
+ #: includes/pdf-invoices/submodules/class-wcj-pdf-invoicing-advanced.php:42
7286
+ #: includes/pdf-invoices/submodules/class-wcj-pdf-invoicing-advanced.php:66
7287
  msgid "Customer VAT ID"
7288
  msgstr ""
7289
 
7290
+ #: includes/pdf-invoices/submodules/class-wcj-pdf-invoicing-advanced.php:43
7291
+ #: includes/pdf-invoices/submodules/class-wcj-pdf-invoicing-advanced.php:67
7292
  msgid "Tax %"
7293
  msgstr ""
7294
 
7295
+ #: includes/pdf-invoices/submodules/class-wcj-pdf-invoicing-advanced.php:44
7296
+ #: includes/pdf-invoices/submodules/class-wcj-pdf-invoicing-advanced.php:68
7297
+ msgid "Order Total Excl. Tax"
7298
  msgstr ""
7299
 
7300
+ #: includes/pdf-invoices/submodules/class-wcj-pdf-invoicing-advanced.php:45
7301
+ #: includes/pdf-invoices/submodules/class-wcj-pdf-invoicing-advanced.php:69
7302
  msgid "Order Taxes"
7303
  msgstr ""
7304
 
7305
+ #: includes/pdf-invoices/submodules/class-wcj-pdf-invoicing-advanced.php:48
7306
+ #: includes/pdf-invoices/submodules/class-wcj-pdf-invoicing-advanced.php:78
7307
  msgid "Payment Gateway"
7308
  msgstr ""
7309
 
7310
+ #: includes/pdf-invoices/submodules/class-wcj-pdf-invoicing-advanced.php:49
7311
+ #: includes/pdf-invoices/submodules/class-wcj-pdf-invoicing-advanced.php:79
7312
  msgid "Refunds"
7313
  msgstr ""
7314
 
7315
+ #: includes/pdf-invoices/submodules/class-wcj-pdf-invoicing-advanced.php:70
7316
+ msgid "Cart Total Excl. Tax"
7317
+ msgstr ""
7318
+
7319
+ #: includes/pdf-invoices/submodules/class-wcj-pdf-invoicing-advanced.php:71
7320
+ msgid "Cart Tax"
7321
+ msgstr ""
7322
+
7323
+ #: includes/pdf-invoices/submodules/class-wcj-pdf-invoicing-advanced.php:72
7324
+ msgid "Cart Tax %"
7325
+ msgstr ""
7326
+
7327
+ #: includes/pdf-invoices/submodules/class-wcj-pdf-invoicing-advanced.php:73
7328
+ msgid "Shipping Total Excl. Tax"
7329
+ msgstr ""
7330
+
7331
+ #: includes/pdf-invoices/submodules/class-wcj-pdf-invoicing-advanced.php:74
7332
+ msgid "Shipping Tax"
7333
+ msgstr ""
7334
+
7335
+ #: includes/pdf-invoices/submodules/class-wcj-pdf-invoicing-advanced.php:75
7336
+ msgid "Shipping Tax %"
7337
+ msgstr ""
7338
+
7339
  #: includes/pdf-invoices/submodules/class-wcj-pdf-invoicing-display.php:24
7340
  msgid "Display & Misc."
7341
  msgstr ""
7342
 
7343
  #: includes/pdf-invoices/submodules/class-wcj-pdf-invoicing-display.php:129
7344
+ #: includes/pdf-invoices/submodules/class-wcj-pdf-invoicing-display.php:299
7345
  msgid "View"
7346
  msgstr ""
7347
 
7348
  #: includes/pdf-invoices/submodules/class-wcj-pdf-invoicing-display.php:148
7349
+ #: includes/pdf-invoices/submodules/class-wcj-pdf-invoicing-display.php:312
7350
  msgid "Create"
7351
  msgstr ""
7352
 
7354
  msgid "Booster: PDF Invoices"
7355
  msgstr ""
7356
 
7357
+ #: includes/pdf-invoices/submodules/class-wcj-pdf-invoicing-display.php:287
7358
+ msgid "You have no document types enabled."
7359
+ msgstr ""
7360
+
7361
+ #: includes/pdf-invoices/submodules/class-wcj-pdf-invoicing-display.php:318
7362
  msgid ""
7363
  "In case of partial refund, you need to reload the page to see created "
7364
  "document in this meta box."
7411
  msgid "Country Groups Generated."
7412
  msgstr ""
7413
 
7414
+ #: includes/price-by-country/class-wcj-price-by-country-local.php:142
7415
+ #: includes/settings/wcj-settings-price-by-country.php:315
7416
+ #: includes/settings/meta-box/wcj-settings-meta-box-price-by-country.php:67
7417
  msgid "Make empty price"
7418
  msgstr ""
7419
 
7420
+ #: includes/price-by-country/class-wcj-price-by-country-local.php:258
7421
+ #: includes/settings/wcj-settings-add-to-cart.php:51
7422
+ #: includes/settings/wcj-settings-price-by-country.php:200
7423
+ #: includes/settings/wcj-settings-price-by-country.php:201
7424
+ #: includes/settings/wcj-settings-price-by-country.php:206
7425
+ #: includes/settings/wcj-settings-price-by-country.php:254
7426
+ #: includes/settings/wcj-settings-price-by-country.php:297
7427
+ #: includes/settings/meta-box/wcj-settings-meta-box-price-by-country.php:17
7428
+ msgid "Group"
7429
  msgstr ""
7430
 
7431
  #: includes/reports/class-wcj-currency-reports.php:38
7437
  msgid "Show reports only in"
7438
  msgstr ""
7439
 
7440
+ #: includes/reports/wcj-class-reports-customers.php:38
7441
  msgid "No customers found."
7442
  msgstr ""
7443
 
7444
+ #: includes/reports/wcj-class-reports-customers.php:79
7445
+ msgid "Non Available"
7446
+ msgstr ""
7447
+
7448
+ #: includes/reports/wcj-class-reports-customers.php:92
7449
  #: includes/settings/wcj-settings-offer-price.php:162
7450
  msgid "Customer Name"
7451
  msgstr ""
7452
 
7453
+ #: includes/reports/wcj-class-reports-customers.php:94
7454
  msgid "Total Spent"
7455
  msgstr ""
7456
 
7457
+ #: includes/reports/wcj-class-reports-customers.php:134
7458
  msgid "Total customers"
7459
  msgstr ""
7460
 
7461
+ #: includes/reports/wcj-class-reports-customers.php:138
7462
  msgid "Country Code"
7463
  msgstr ""
7464
 
7465
+ #: includes/reports/wcj-class-reports-customers.php:139
7466
  msgid "Customers Count"
7467
  msgstr ""
7468
 
7469
+ #: includes/reports/wcj-class-reports-customers.php:140
7470
  msgid "Percent of total"
7471
  msgstr ""
7472
 
7473
+ #: includes/reports/wcj-class-reports-customers.php:162
7474
  msgid "Report for:"
7475
  msgstr ""
7476
 
7710
  msgid "Report was generated in: "
7711
  msgstr ""
7712
 
7713
+ #: includes/settings/wcj-settings-add-to-cart-button-visibility.php:17
7714
+ #: includes/settings/wcj-settings-add-to-cart-button-visibility.php:22
7715
+ #: includes/settings/wcj-settings-product-add-to-cart.php:24
7716
+ #: includes/settings/wcj-settings-product-by-date.php:20
7717
+ msgid "All Products"
7718
+ msgstr ""
7719
+
7720
+ #: includes/settings/wcj-settings-add-to-cart-button-visibility.php:23
7721
+ #: includes/settings/wcj-settings-add-to-cart-button-visibility.php:53
7722
+ #: includes/settings/wcj-settings-add-to-cart-button-visibility.php:70
7723
+ #: includes/settings/wcj-settings-admin-orders-list.php:21
7724
+ #: includes/settings/wcj-settings-admin-orders-list.php:109
7725
+ #: includes/settings/wcj-settings-admin-orders-list.php:150
7726
+ #: includes/settings/wcj-settings-admin-products-list.php:20
7727
+ #: includes/settings/wcj-settings-admin-products-list.php:76
7728
+ #: includes/settings/wcj-settings-order-quantities.php:21
7729
+ #: includes/settings/wcj-settings-order-quantities.php:79
7730
+ #: includes/settings/wcj-settings-orders.php:89
7731
+ #: includes/settings/wcj-settings-price-formats.php:37
7732
+ #: includes/settings/wcj-settings-product-add-to-cart.php:273
7733
+ #: includes/settings/wcj-settings-product-listings.php:128
7734
+ #: includes/settings/wcj-settings-sale-flash.php:20
7735
+ #: includes/settings/wcj-settings-sale-flash.php:65
7736
+ #: includes/settings/wcj-settings-sale-flash.php:90
7737
+ #: includes/settings/wcj-settings-shipping-by-condition.php:25
7738
+ #: includes/settings/wcj-settings-shipping-options.php:21
7739
+ #: includes/settings/wcj-settings-stock.php:23
7740
+ #: includes/settings/wcj-settings-tax-display.php:27
7741
+ #: includes/settings/wcj-settings-tax-display.php:44
7742
+ #: includes/settings/wcj-settings-tax-display.php:101
7743
+ msgid "Enable section"
7744
+ msgstr ""
7745
+
7746
+ #: includes/settings/wcj-settings-add-to-cart-button-visibility.php:29
7747
+ #: includes/settings/wcj-settings-add-to-cart-button-visibility.php:76
7748
+ msgid "Disable Buttons on Category/Archives Pages"
7749
+ msgstr ""
7750
+
7751
+ #: includes/settings/wcj-settings-add-to-cart-button-visibility.php:30
7752
+ #: includes/settings/wcj-settings-add-to-cart-button-visibility.php:37
7753
+ #: includes/settings/wcj-settings-general.php:51
7754
+ #: includes/settings/wcj-settings-general.php:100
7755
+ #: includes/settings/wcj-settings-general.php:114
7756
+ #: includes/settings/wcj-settings-general.php:121
7757
+ #: includes/settings/wcj-settings-general.php:128
7758
+ #: includes/settings/wcj-settings-general.php:135
7759
+ #: includes/settings/wcj-settings-pdf-invoicing-advanced.php:101
7760
+ #: includes/settings/wcj-settings-price-by-user-role.php:56
7761
+ #: includes/settings/wcj-settings-price-by-user-role.php:88
7762
+ #: includes/settings/wcj-settings-product-add-to-cart.php:131
7763
+ #: includes/settings/wcj-settings-product-open-pricing.php:80
7764
+ #: includes/settings/wcj-settings-sku.php:205
7765
+ #: includes/settings/meta-box/wcj-settings-meta-box-product-add-to-cart.php:67
7766
+ msgid "Disable"
7767
+ msgstr ""
7768
+
7769
+ #: includes/settings/wcj-settings-add-to-cart-button-visibility.php:36
7770
+ #: includes/settings/wcj-settings-add-to-cart-button-visibility.php:92
7771
+ msgid "Disable Buttons on Single Product Pages"
7772
+ msgstr ""
7773
+
7774
+ #: includes/settings/wcj-settings-add-to-cart-button-visibility.php:47
7775
+ #: includes/settings/wcj-settings-add-to-cart-button-visibility.php:52
7776
+ #: includes/settings/wcj-settings-price-labels.php:22
7777
+ #: includes/settings/wcj-settings-product-add-to-cart.php:39
7778
+ #: includes/settings/wcj-settings-product-by-date.php:52
7779
+ #: includes/settings/wcj-settings-product-by-time.php:52
7780
+ #: includes/settings/wcj-settings-sale-flash.php:59
7781
+ #: includes/settings/wcj-settings-sale-flash.php:64
7782
+ msgid "Per Product"
7783
+ msgstr ""
7784
+
7785
+ #: includes/settings/wcj-settings-add-to-cart-button-visibility.php:54
7786
+ #: includes/settings/wcj-settings-custom-css.php:36
7787
+ #: includes/settings/wcj-settings-product-add-to-cart.php:179
7788
+ #: includes/settings/wcj-settings-product-add-to-cart.php:196
7789
+ msgid "This will add meta box to each product's edit page"
7790
+ msgstr ""
7791
+
7792
+ #: includes/settings/wcj-settings-add-to-cart-button-visibility.php:64
7793
+ #: includes/settings/wcj-settings-add-to-cart-button-visibility.php:69
7794
+ #: includes/settings/wcj-settings-sale-flash.php:81
7795
+ msgid "Per Category"
7796
+ msgstr ""
7797
+
7798
+ #: includes/settings/wcj-settings-add-to-cart-button-visibility.php:85
7799
+ msgid ""
7800
+ "Content to replace with on archives (can be empty). You can use HTML and/or "
7801
+ "shortcodes here."
7802
+ msgstr ""
7803
+
7804
+ #: includes/settings/wcj-settings-add-to-cart-button-visibility.php:101
7805
+ msgid ""
7806
+ "Content to replace with on single product pages (can be empty). You can use "
7807
+ "HTML and/or shortcodes here."
7808
+ msgstr ""
7809
+
7810
  #: includes/settings/wcj-settings-add-to-cart.php:14
7811
  msgid "Per Category Options"
7812
  msgstr ""
7842
  msgid "Click \"Save changes\" after you change this number."
7843
  msgstr ""
7844
 
 
 
 
 
 
 
 
 
7845
  #: includes/settings/wcj-settings-add-to-cart.php:59
7846
  msgid "categories"
7847
  msgstr ""
7860
  msgstr ""
7861
 
7862
  #: includes/settings/wcj-settings-add-to-cart.php:92
7863
+ #: includes/settings/wcj-settings-product-addons.php:26
7864
  #: includes/settings/wcj-settings-product-by-date.php:47
7865
  #: includes/settings/wcj-settings-product-by-time.php:47
7866
  msgid "Per Product Options"
8010
  #: includes/settings/wcj-settings-payment-gateways-icons.php:14
8011
  #: includes/settings/wcj-settings-payment-gateways-per-category.php:18
8012
  #: includes/settings/wcj-settings-price-by-user-role.php:14
8013
+ #: includes/settings/wcj-settings-product-addons.php:165
8014
  #: includes/settings/wcj-settings-product-bookings.php:86
8015
  #: includes/settings/wcj-settings-product-by-user-role.php:14
8016
  #: includes/settings/wcj-settings-product-by-user.php:59
8025
  msgstr ""
8026
 
8027
  #: includes/settings/wcj-settings-admin-bar.php:19
8028
+ msgid "\"WooCommerce\" Admin Bar"
8029
+ msgstr ""
8030
+
8031
+ #: includes/settings/wcj-settings-admin-bar.php:26
8032
+ msgid "\"Booster\" Admin Bar"
8033
+ msgstr ""
8034
+
8035
+ #: includes/settings/wcj-settings-admin-bar.php:33
8036
+ msgid "\"Booster: Active\" Admin Bar"
8037
+ msgstr ""
8038
+
8039
+ #: includes/settings/wcj-settings-admin-orders-list.php:14
8040
+ #: includes/settings/wcj-settings-admin-orders-list.php:20
8041
+ #: includes/settings/wcj-settings-admin-products-list.php:14
8042
+ msgid "Custom Columns"
8043
+ msgstr ""
8044
+
8045
+ #: includes/settings/wcj-settings-admin-orders-list.php:16
8046
+ msgid "This section lets you add custom columns to WooCommerce orders list."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8047
  msgstr ""
8048
 
8049
  #: includes/settings/wcj-settings-admin-orders-list.php:28
8082
  msgid "Label"
8083
  msgstr ""
8084
 
8085
+ #: includes/settings/wcj-settings-admin-orders-list.php:72
8086
  #: includes/settings/wcj-settings-admin-products-list.php:57
8087
  msgid "You can use shortcodes and/or HTML here."
8088
  msgstr ""
8089
 
8090
+ #: includes/settings/wcj-settings-admin-orders-list.php:79
8091
  msgid "Sortable"
8092
  msgstr ""
8093
 
8094
+ #: includes/settings/wcj-settings-admin-orders-list.php:85
8095
  msgid "By meta (as text)"
8096
  msgstr ""
8097
 
8098
+ #: includes/settings/wcj-settings-admin-orders-list.php:86
8099
  msgid "By meta (as numbers)"
8100
  msgstr ""
8101
 
8102
+ #: includes/settings/wcj-settings-admin-orders-list.php:90
8103
  msgid "Key (if sortable)"
8104
  msgstr ""
8105
 
8106
+ #: includes/settings/wcj-settings-admin-orders-list.php:103
8107
+ #: includes/settings/wcj-settings-admin-orders-list.php:108
8108
  msgid "Multiple Status"
8109
  msgstr ""
8110
 
8111
+ #: includes/settings/wcj-settings-admin-orders-list.php:115
8112
  msgid "Multiple Status Filtering"
8113
  msgstr ""
8114
 
8115
+ #: includes/settings/wcj-settings-admin-orders-list.php:120
8116
  #: includes/settings/wcj-settings-empty-cart.php:40
8117
  #: includes/settings/wcj-settings-empty-cart.php:55
8118
  #: includes/settings/wcj-settings-offer-price.php:69
8120
  msgid "Do not add"
8121
  msgstr ""
8122
 
8123
+ #: includes/settings/wcj-settings-admin-orders-list.php:121
8124
  msgid "Add as multiple select"
8125
  msgstr ""
8126
 
8127
+ #: includes/settings/wcj-settings-admin-orders-list.php:122
8128
  msgid "Add as checkboxes"
8129
  msgstr ""
8130
 
8131
+ #: includes/settings/wcj-settings-admin-orders-list.php:126
8132
  msgid "Hide Default Statuses Menu"
8133
  msgstr ""
8134
 
8135
+ #: includes/settings/wcj-settings-admin-orders-list.php:127
8136
  #: includes/settings/wcj-settings-breadcrumbs.php:34
8137
  #: includes/settings/wcj-settings-cart-customization.php:20
8138
  #: includes/settings/wcj-settings-cart-customization.php:27
8139
  #: includes/settings/wcj-settings-checkout-customization.php:32
8140
  #: includes/settings/wcj-settings-currency.php:21
8141
  #: includes/settings/wcj-settings-order-custom-statuses.php:63
8142
+ #: includes/settings/wcj-settings-pdf-invoicing-advanced.php:47
8143
  #: includes/settings/wcj-settings-product-bookings.php:92
8144
  #: includes/settings/wcj-settings-product-images.php:20
8145
  #: includes/settings/wcj-settings-product-images.php:27
8151
  #: includes/settings/wcj-settings-sale-flash.php:42
8152
  #: includes/settings/wcj-settings-sale-flash.php:49
8153
  #: includes/settings/wcj-settings-shipping-calculator.php:54
8154
+ #: includes/settings/meta-box/wcj-settings-meta-box-add-to-cart-button-visibility.php:18
8155
+ #: includes/settings/meta-box/wcj-settings-meta-box-add-to-cart-button-visibility.php:37
8156
  msgid "Hide"
8157
  msgstr ""
8158
 
8159
+ #: includes/settings/wcj-settings-admin-orders-list.php:133
8160
  msgid "Add \"Not Completed\" Status Link to Default Statuses Menu"
8161
  msgstr ""
8162
 
8163
+ #: includes/settings/wcj-settings-admin-orders-list.php:144
8164
+ #: includes/settings/wcj-settings-admin-orders-list.php:149
8165
  #: includes/settings/wcj-settings-admin-products-list.php:70
8166
  msgid "Columns Order"
8167
  msgstr ""
8168
 
8169
+ #: includes/settings/wcj-settings-admin-orders-list.php:157
8170
  #: includes/settings/wcj-settings-admin-products-list.php:83
8171
  msgid "Default columns order"
8172
  msgstr ""
8227
  msgid "Show Product Meta"
8228
  msgstr ""
8229
 
8230
+ #: includes/settings/wcj-settings-admin-tools.php:87
8231
+ msgid "Show Variable Product Pricing Table"
8232
+ msgstr ""
8233
+
8234
  #: includes/settings/wcj-settings-breadcrumbs.php:19
8235
  msgid "Change Breadcrumbs Home URL"
8236
  msgstr ""
8366
  msgid "Info Block"
8367
  msgstr ""
8368
 
8369
+ #: includes/settings/wcj-settings-cart.php:58
8370
+ #: includes/settings/wcj-settings-checkout-custom-info.php:84
8371
  #: includes/settings/wcj-settings-mini-cart.php:58
8372
  #: includes/settings/wcj-settings-product-custom-info.php:112
8373
  msgid "Position Order (i.e. Priority)"
8374
  msgstr ""
8375
 
8376
+ #: includes/settings/wcj-settings-cart.php:72
8377
  msgid "Cart Items Table Custom Info"
8378
  msgstr ""
8379
 
8380
+ #: includes/settings/wcj-settings-cart.php:78
8381
  msgid "Add to Each Item Name"
8382
  msgstr ""
8383
 
8384
+ #: includes/settings/wcj-settings-cart.php:79
8385
  msgid ""
8386
  "You can use shortcodes here. E.g.: [wcj_product_sku]. Leave blank to disable."
8387
  msgstr ""
8538
  #: includes/settings/wcj-settings-checkout-custom-fields.php:169
8539
  #: includes/settings/wcj-settings-checkout-custom-info.php:55
8540
  #: includes/settings/wcj-settings-empty-cart.php:58
8541
+ #: includes/settings/wcj-settings-left-to-free-shipping.php:120
8542
  msgid "Billing"
8543
  msgstr ""
8544
 
8671
 
8672
  #: includes/settings/wcj-settings-checkout-custom-fields.php:319
8673
  #: includes/settings/wcj-settings-global-discount.php:137
8674
+ #: includes/settings/wcj-settings-product-addons.php:141
8675
  #: includes/settings/wcj-settings-related-products.php:223
8676
  msgid "Exclude Products"
8677
  msgstr ""
8717
  #: includes/settings/wcj-settings-checkout-custom-info.php:53
8718
  #: includes/settings/wcj-settings-checkout-files-upload.php:55
8719
  #: includes/settings/wcj-settings-empty-cart.php:56
8720
+ #: includes/settings/wcj-settings-left-to-free-shipping.php:118
8721
  msgid "Before checkout form"
8722
  msgstr ""
8723
 
8724
  #: includes/settings/wcj-settings-checkout-custom-info.php:54
8725
  #: includes/settings/wcj-settings-empty-cart.php:57
8726
+ #: includes/settings/wcj-settings-left-to-free-shipping.php:119
8727
  msgid "Before customer details"
8728
  msgstr ""
8729
 
8730
  #: includes/settings/wcj-settings-checkout-custom-info.php:57
8731
  #: includes/settings/wcj-settings-empty-cart.php:60
8732
+ #: includes/settings/wcj-settings-left-to-free-shipping.php:122
8733
  msgid "After customer details"
8734
  msgstr ""
8735
 
8736
  #: includes/settings/wcj-settings-checkout-custom-info.php:58
8737
  #: includes/settings/wcj-settings-empty-cart.php:61
8738
+ #: includes/settings/wcj-settings-left-to-free-shipping.php:123
8739
  msgid "Before order review"
8740
  msgstr ""
8741
 
8742
  #: includes/settings/wcj-settings-checkout-custom-info.php:59
8743
  #: includes/settings/wcj-settings-empty-cart.php:62
8744
+ #: includes/settings/wcj-settings-left-to-free-shipping.php:124
8745
  msgid "Order review"
8746
  msgstr ""
8747
 
8748
  #: includes/settings/wcj-settings-checkout-custom-info.php:60
8749
  #: includes/settings/wcj-settings-empty-cart.php:63
8750
+ #: includes/settings/wcj-settings-left-to-free-shipping.php:125
8751
  msgid "After order review"
8752
  msgstr ""
8753
 
8754
  #: includes/settings/wcj-settings-checkout-custom-info.php:61
8755
  #: includes/settings/wcj-settings-checkout-files-upload.php:56
8756
  #: includes/settings/wcj-settings-empty-cart.php:64
8757
+ #: includes/settings/wcj-settings-left-to-free-shipping.php:126
8758
  msgid "After checkout form"
8759
  msgstr ""
8760
 
8877
  #: includes/settings/wcj-settings-checkout-customization.php:84
8878
  #: includes/settings/wcj-settings-sale-flash.php:27
8879
  #: includes/settings/wcj-settings-sale-flash.php:102
8880
+ #: includes/settings/meta-box/wcj-settings-meta-box-add-to-cart-button-visibility.php:30
8881
+ #: includes/settings/meta-box/wcj-settings-meta-box-add-to-cart-button-visibility.php:49
8882
  msgid "You can use HTML and/or shortcodes here."
8883
  msgstr ""
8884
 
8885
+ #: includes/settings/wcj-settings-checkout-customization.php:91
8886
+ msgid "Customize \"Returning customer?\" message"
8887
+ msgstr ""
8888
+
8889
  #: includes/settings/wcj-settings-checkout-files-upload.php:22
8890
  #: includes/settings/wcj-settings-products-xml.php:23
8891
  msgid "Total Files"
9047
  msgstr ""
9048
 
9049
  #: includes/settings/wcj-settings-checkout-files-upload.php:249
9050
+ #: includes/settings/wcj-settings-product-addons.php:187
9051
+ #: includes/settings/wcj-settings-product-addons.php:207
9052
  msgid "Before"
9053
  msgstr ""
9054
 
9068
  msgstr ""
9069
 
9070
  #: includes/settings/wcj-settings-checkout-files-upload.php:272
9071
+ #: includes/settings/wcj-settings-product-addons.php:200
9072
+ #: includes/settings/wcj-settings-product-addons.php:220
9073
  msgid "After"
9074
  msgstr ""
9075
 
9076
  #: includes/settings/wcj-settings-checkout-files-upload.php:285
9077
+ #: includes/settings/wcj-settings-currency-per-product.php:234
9078
  #: includes/settings/wcj-settings-eu-vat-number.php:203
9079
  #: includes/settings/wcj-settings-general.php:77
9080
+ #: includes/settings/wcj-settings-payment-gateways.php:49
9081
+ #: includes/settings/wcj-settings-pdf-invoicing-advanced.php:42
9082
  #: includes/settings/wcj-settings-product-custom-info.php:188
9083
  #: includes/settings/wcj-settings-shipping-by-condition.php:78
9084
  msgid "Advanced Options"
9156
  msgstr ""
9157
 
9158
  #: includes/settings/wcj-settings-currency-exchange-rates.php:20
 
9159
  #, php-format
9160
  msgid "%s seconds till next update."
9161
  msgstr ""
9172
  #: includes/settings/wcj-settings-multicurrency-base-price.php:24
9173
  #: includes/settings/wcj-settings-multicurrency.php:22
9174
  #: includes/settings/wcj-settings-payment-gateways-currency.php:59
9175
+ #: includes/settings/wcj-settings-price-by-country.php:270
9176
  msgid "Exchange Rates Updates"
9177
  msgstr ""
9178
 
9243
  msgstr ""
9244
 
9245
  #: includes/settings/wcj-settings-currency-exchange-rates.php:156
9246
+ #: includes/settings/wcj-settings-price-by-country.php:265
9247
  msgid "Exchange Rates"
9248
  msgstr ""
9249
 
9255
  #: includes/settings/wcj-settings-currency-per-product.php:163
9256
  #: includes/settings/wcj-settings-multicurrency-base-price.php:94
9257
  #: includes/settings/wcj-settings-multicurrency.php:135
9258
+ #: includes/settings/wcj-settings-price-by-country.php:245
9259
  #: includes/settings/wcj-settings-price-formats.php:59
9260
  msgid "Currency"
9261
  msgstr ""
9330
  #: includes/settings/wcj-settings-multicurrency-base-price.php:29
9331
  #: includes/settings/wcj-settings-multicurrency.php:28
9332
  #: includes/settings/wcj-settings-payment-gateways-currency.php:64
9333
+ #: includes/settings/wcj-settings-price-by-country.php:275
9334
  msgid "Enter Rates Manually"
9335
  msgstr ""
9336
 
9338
  #: includes/settings/wcj-settings-multicurrency-base-price.php:30
9339
  #: includes/settings/wcj-settings-multicurrency.php:29
9340
  #: includes/settings/wcj-settings-payment-gateways-currency.php:65
9341
+ #: includes/settings/wcj-settings-price-by-country.php:276
9342
  msgid "Automatically via Currency Exchange Rates module"
9343
  msgstr ""
9344
 
9346
  #: includes/settings/wcj-settings-multicurrency-base-price.php:33
9347
  #: includes/settings/wcj-settings-multicurrency.php:32
9348
  #: includes/settings/wcj-settings-payment-gateways-currency.php:68
9349
+ #: includes/settings/wcj-settings-price-by-country.php:279
9350
  msgid "Visit"
9351
  msgstr ""
9352
 
9354
  #: includes/settings/wcj-settings-multicurrency-base-price.php:33
9355
  #: includes/settings/wcj-settings-multicurrency.php:32
9356
  #: includes/settings/wcj-settings-payment-gateways-currency.php:68
9357
+ #: includes/settings/wcj-settings-price-by-country.php:279
9358
  msgid "Currency Exchange Rates module"
9359
  msgstr ""
9360
 
9385
  msgid "Product Authors User Roles"
9386
  msgstr ""
9387
 
9388
+ #: includes/settings/wcj-settings-currency-per-product.php:239
9389
+ #: includes/settings/wcj-settings-multicurrency-base-price.php:53
9390
+ msgid "Advanced: Save Calculated Products Prices"
9391
+ msgstr ""
9392
+
9393
+ #: includes/settings/wcj-settings-currency-per-product.php:240
9394
+ #: includes/settings/wcj-settings-multicurrency-base-price.php:54
9395
+ msgid ""
9396
+ "This may help if you are experiencing compatibility issues with other "
9397
+ "plugins."
9398
+ msgstr ""
9399
+
9400
  #: includes/settings/wcj-settings-currency.php:15
9401
  msgid "Currency Symbol Options"
9402
  msgstr ""
9442
  "Set product specific CSS to be loaded only on specific product's single page."
9443
  msgstr ""
9444
 
 
 
 
 
 
 
 
9445
  #: includes/settings/wcj-settings-custom-css.php:42
9446
  msgid "Custom CSS on per Product Basis - Default Field Value"
9447
  msgstr ""
9736
  msgstr ""
9737
 
9738
  #: includes/settings/wcj-settings-export.php:20
9739
+ #: includes/settings/wcj-settings-pdf-invoicing-advanced.php:156
9740
  msgid "CSV Separator"
9741
  msgstr ""
9742
 
9880
  msgstr ""
9881
 
9882
  #: includes/settings/wcj-settings-free-price.php:16
9883
+ #: includes/settings/wcj-settings-product-add-to-cart.php:206
9884
  msgid "External Products"
9885
  msgstr ""
9886
 
9887
  #: includes/settings/wcj-settings-free-price.php:19
9888
+ #: includes/settings/meta-box/wcj-settings-meta-box-add-to-cart-button-visibility.php:21
9889
  msgid "Single Product Page"
9890
  msgstr ""
9891
 
9931
  msgid "Disable all Booster's shortcodes (for memory saving)."
9932
  msgstr ""
9933
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
9934
  #: includes/settings/wcj-settings-general.php:61
9935
  #: includes/settings/wcj-settings-general.php:66
9936
  msgid "Product Revisions"
10053
  #: includes/settings/wcj-settings-global-discount.php:64
10054
  #: includes/settings/wcj-settings-payment-gateways-fees.php:38
10055
  #: includes/settings/wcj-settings-purchase-data.php:78
10056
+ #: includes/settings/wcj-settings-wholesale-price.php:70
10057
  #: includes/settings/meta-box/wcj-settings-meta-box-wholesale-price.php:18
10058
  msgid "Percent"
10059
  msgstr ""
10062
  #: includes/settings/wcj-settings-payment-gateways-fees.php:37
10063
  #: includes/settings/wcj-settings-price-by-user-role.php:32
10064
  #: includes/settings/wcj-settings-purchase-data.php:77
10065
+ #: includes/settings/wcj-settings-wholesale-price.php:71
10066
  #: includes/settings/meta-box/wcj-settings-meta-box-wholesale-price.php:19
10067
  msgid "Fixed"
10068
  msgstr ""
10083
 
10084
  #: includes/settings/wcj-settings-global-discount.php:83
10085
  #: includes/settings/wcj-settings-product-add-to-cart.php:65
10086
+ #: includes/settings/wcj-settings-products-xml.php:200
10087
  msgid "All products"
10088
  msgstr ""
10089
 
10092
  msgstr ""
10093
 
10094
  #: includes/settings/wcj-settings-global-discount.php:85
10095
+ #: includes/settings/wcj-settings-products-xml.php:202
10096
  msgid "Only products that are not on sale"
10097
  msgstr ""
10098
 
10178
  msgstr ""
10179
 
10180
  #: includes/settings/wcj-settings-left-to-free-shipping.php:35
10181
+ #: includes/settings/wcj-settings-left-to-free-shipping.php:68
10182
+ #: includes/settings/wcj-settings-left-to-free-shipping.php:105
10183
+ #: includes/settings/wcj-settings-left-to-free-shipping.php:138
10184
  msgid "You can use HTML and/or shortcodes (e.g. [wcj_wpml]) here."
10185
  msgstr ""
10186
 
10187
+ #: includes/settings/wcj-settings-left-to-free-shipping.php:51
10188
+ #: includes/settings/wcj-settings-left-to-free-shipping.php:88
10189
+ #: includes/settings/wcj-settings-left-to-free-shipping.php:131
10190
  msgid "Position Order (Priority)"
10191
  msgstr ""
10192
 
10193
+ #: includes/settings/wcj-settings-left-to-free-shipping.php:57
10194
  msgid "Info on Mini Cart"
10195
  msgstr ""
10196
 
10197
+ #: includes/settings/wcj-settings-left-to-free-shipping.php:81
10198
  #: includes/settings/wcj-settings-mini-cart.php:51
10199
  msgid "Before mini cart"
10200
  msgstr ""
10201
 
10202
+ #: includes/settings/wcj-settings-left-to-free-shipping.php:82
10203
  #: includes/settings/wcj-settings-mini-cart.php:52
10204
  msgid "Before buttons"
10205
  msgstr ""
10206
 
10207
+ #: includes/settings/wcj-settings-left-to-free-shipping.php:83
10208
  #: includes/settings/wcj-settings-mini-cart.php:53
10209
  msgid "After mini cart"
10210
  msgstr ""
10211
 
10212
+ #: includes/settings/wcj-settings-left-to-free-shipping.php:94
10213
  msgid "Info on Checkout"
10214
  msgstr ""
10215
 
10216
+ #: includes/settings/wcj-settings-left-to-free-shipping.php:137
10217
  msgid "Message on Free Shipping Reached"
10218
  msgstr ""
10219
 
10220
+ #: includes/settings/wcj-settings-left-to-free-shipping.php:139
10221
  msgid "Set empty to disable."
10222
  msgstr ""
10223
 
10225
  msgid "Mini Cart Custom Info Blocks"
10226
  msgstr ""
10227
 
10228
+ #: includes/settings/wcj-settings-modules-by-user-roles.php:28
10229
+ msgid "Enable Modules"
10230
+ msgstr ""
10231
+
10232
+ #: includes/settings/wcj-settings-modules-by-user-roles.php:29
10233
+ msgid ""
10234
+ "Select modules which should be enabled for current user role. All other "
10235
+ "modules will be disabled. Ignored if left empty."
10236
+ msgstr ""
10237
+
10238
+ #: includes/settings/wcj-settings-modules-by-user-roles.php:37
10239
+ msgid "Disable Modules"
10240
+ msgstr ""
10241
+
10242
+ #: includes/settings/wcj-settings-modules-by-user-roles.php:38
10243
+ msgid ""
10244
+ "Select modules which should be disabled for current user role. All other "
10245
+ "modules will be enabled. Ignored if left empty."
10246
+ msgstr ""
10247
+
10248
  #: includes/settings/wcj-settings-more-button-labels.php:14
10249
  msgid "Place order (Order now) Button"
10250
  msgstr ""
10257
  msgid "Button on the checkout page."
10258
  msgstr ""
10259
 
10260
+ #: includes/settings/wcj-settings-more-button-labels.php:27
10261
+ msgid "Override Default Text"
10262
  msgstr ""
10263
 
10264
+ #: includes/settings/wcj-settings-more-button-labels.php:29
10265
+ msgid ""
10266
+ "Enable this if button text is not changing for some payment gateway (e.g. "
10267
+ "PayPal)."
10268
  msgstr ""
10269
 
10270
+ #: includes/settings/wcj-settings-multicurrency-base-price.php:39
10271
+ msgid "Round Prices"
10272
  msgstr ""
10273
 
10274
+ #: includes/settings/wcj-settings-multicurrency-base-price.php:46
10275
+ msgid "rounding precision"
 
 
10276
  msgstr ""
10277
 
10278
  #: includes/settings/wcj-settings-multicurrency.php:23
10390
  msgstr ""
10391
 
10392
  #: includes/settings/wcj-settings-multicurrency.php:168
10393
+ #: includes/settings/wcj-settings-wholesale-price.php:145
10394
  msgid "Save settings after you change this option. Leave blank to disable."
10395
  msgstr ""
10396
 
10685
  msgid "Message on cart page"
10686
  msgstr ""
10687
 
 
 
 
 
 
 
10688
  #: includes/settings/wcj-settings-order-min-amount.php:70
10689
  msgid "Cart notice method"
10690
  msgstr ""
10724
  msgid "Order Minimum Amount by User Role"
10725
  msgstr ""
10726
 
10727
+ #: includes/settings/wcj-settings-order-numbers.php:17
10728
  msgid ""
10729
  "This section lets you enable sequential order numbering, set custom number "
10730
  "prefix, suffix and width."
10731
  msgstr ""
10732
 
10733
+ #: includes/settings/wcj-settings-order-numbers.php:21
10734
  #: includes/settings/wcj-settings-sku.php:21
10735
  msgid "Number Generation"
10736
  msgstr ""
10737
 
10738
+ #: includes/settings/wcj-settings-order-numbers.php:26
10739
  #: includes/settings/wcj-settings-pdf-invoicing-numbering.php:22
10740
  #: includes/settings/wcj-settings-sku.php:27
10741
  msgid "Sequential"
10742
  msgstr ""
10743
 
10744
+ #: includes/settings/wcj-settings-order-numbers.php:28
10745
  #: includes/settings/wcj-settings-sku.php:28
10746
  msgid "Pseudorandom - Hash (max 10 digits)"
10747
  msgstr ""
10748
 
10749
+ #: includes/settings/wcj-settings-order-numbers.php:32
10750
+ msgid "Sequential: Next Order Number"
10751
  msgstr ""
10752
 
10753
+ #: includes/settings/wcj-settings-order-numbers.php:33
10754
  msgid "Next new order will be given this number."
10755
  msgstr ""
10756
 
10757
+ #: includes/settings/wcj-settings-order-numbers.php:33
10758
  msgid "Use Renumerate Orders tool for existing orders."
10759
  msgstr ""
10760
 
10761
+ #: includes/settings/wcj-settings-order-numbers.php:34
10762
+ #: includes/settings/wcj-settings-order-numbers.php:41
10763
  msgid "This will be ignored if sequential order numbering is disabled."
10764
  msgstr ""
10765
 
10766
+ #: includes/settings/wcj-settings-order-numbers.php:40
10767
+ msgid "Sequential: Reset Counter"
10768
+ msgstr ""
10769
+
10770
+ #: includes/settings/wcj-settings-order-numbers.php:47
10771
+ msgid "Daily"
10772
+ msgstr ""
10773
+
10774
+ #: includes/settings/wcj-settings-order-numbers.php:48
10775
+ msgid "Monthly"
10776
+ msgstr ""
10777
+
10778
+ #: includes/settings/wcj-settings-order-numbers.php:49
10779
+ msgid "Yearly"
10780
+ msgstr ""
10781
+
10782
+ #: includes/settings/wcj-settings-order-numbers.php:53
10783
  msgid "Order Number Custom Prefix"
10784
  msgstr ""
10785
 
10786
+ #: includes/settings/wcj-settings-order-numbers.php:54
10787
  msgid ""
10788
  "Prefix before order number (optional). This will change the prefixes for all "
10789
  "existing orders."
10790
  msgstr ""
10791
 
10792
+ #: includes/settings/wcj-settings-order-numbers.php:60
10793
  msgid "Order Number Date Prefix"
10794
  msgstr ""
10795
 
10796
+ #: includes/settings/wcj-settings-order-numbers.php:62
10797
  msgid ""
10798
  "Date prefix before order number (optional). This will change the prefixes "
10799
  "for all existing orders. Value is passed directly to PHP `date` function, so "
10802
  "d- or mdy."
10803
  msgstr ""
10804
 
10805
+ #: includes/settings/wcj-settings-order-numbers.php:69
10806
  msgid "Order Number Width"
10807
  msgstr ""
10808
 
10809
+ #: includes/settings/wcj-settings-order-numbers.php:71
10810
  msgid ""
10811
  "Minimum width of number without prefix (zeros will be added to the left "
10812
  "side). This will change the minimum width of order number for all existing "
10814
  "Leave zero to disable."
10815
  msgstr ""
10816
 
10817
+ #: includes/settings/wcj-settings-order-numbers.php:78
10818
  msgid "Order Number Custom Suffix"
10819
  msgstr ""
10820
 
10821
+ #: includes/settings/wcj-settings-order-numbers.php:80
10822
  msgid ""
10823
  "Suffix after order number (optional). This will change the suffixes for all "
10824
  "existing orders."
10825
  msgstr ""
10826
 
10827
+ #: includes/settings/wcj-settings-order-numbers.php:87
10828
  msgid "Order Number Date Suffix"
10829
  msgstr ""
10830
 
10831
+ #: includes/settings/wcj-settings-order-numbers.php:89
10832
  msgid ""
10833
  "Date suffix after order number (optional). This will change the suffixes for "
10834
  "all existing orders. Value is passed directly to PHP `date` function, so "
10837
  "d- or mdy."
10838
  msgstr ""
10839
 
10840
+ #: includes/settings/wcj-settings-order-numbers.php:96
10841
  msgid "Use MySQL Transaction"
10842
  msgstr ""
10843
 
10844
+ #: includes/settings/wcj-settings-order-numbers.php:98
10845
  msgid ""
10846
  "This should be enabled if you have a lot of simultaneous orders in your shop "
10847
  "- to prevent duplicate order numbers (sequential)."
10848
  msgstr ""
10849
 
10850
+ #: includes/settings/wcj-settings-order-numbers.php:104
10851
  msgid "Enable Order Tracking by Custom Number"
10852
  msgstr ""
10853
 
10854
+ #: includes/settings/wcj-settings-order-numbers.php:111
10855
  msgid "Enable Order Admin Search by Custom Number"
10856
  msgstr ""
10857
 
10858
+ #: includes/settings/wcj-settings-order-numbers.php:122
10859
  msgid "Orders Renumerate Tool Options"
10860
  msgstr ""
10861
 
10862
+ #: includes/settings/wcj-settings-order-numbers.php:127
10863
  msgid "Sort by"
10864
  msgstr ""
10865
 
10866
+ #: includes/settings/wcj-settings-order-numbers.php:134
10867
  msgid "Last modified date"
10868
  msgstr ""
10869
 
10870
+ #: includes/settings/wcj-settings-order-numbers.php:135
10871
  #: includes/settings/wcj-settings-related-products.php:22
10872
  msgid "Random"
10873
  msgstr ""
10874
 
10875
+ #: includes/settings/wcj-settings-order-numbers.php:139
10876
  msgid "Sort Ascending or Descending"
10877
  msgstr ""
10878
 
10879
+ #: includes/settings/wcj-settings-order-numbers.php:144
10880
  #: includes/settings/wcj-settings-related-products.php:90
10881
  msgid "Ascending"
10882
  msgstr ""
10883
 
10884
+ #: includes/settings/wcj-settings-order-numbers.php:145
10885
  #: includes/settings/wcj-settings-related-products.php:91
10886
  msgid "Descending"
10887
  msgstr ""
11025
  "may want auto-complete all your orders."
11026
  msgstr ""
11027
 
11028
+ #: includes/settings/wcj-settings-orders.php:70
11029
+ msgid "Add Country by IP Meta Box"
11030
+ msgstr ""
11031
+
11032
+ #: includes/settings/wcj-settings-orders.php:72
11033
+ msgid ""
11034
+ "When enabled this will add \"Booster: Country by IP\" metabox to each "
11035
+ "order's edit page."
11036
+ msgstr ""
11037
+
11038
+ #: includes/settings/wcj-settings-orders.php:82
11039
  msgid "Bulk Regenerate Download Permissions for Orders"
11040
  msgstr ""
11041
 
11042
+ #: includes/settings/wcj-settings-orders.php:87
11043
  msgid "Bulk Regenerate Download Permissions"
11044
  msgstr ""
11045
 
11046
+ #: includes/settings/wcj-settings-orders.php:96
11047
  msgid "Bulk Actions"
11048
  msgstr ""
11049
 
11050
+ #: includes/settings/wcj-settings-orders.php:97
11051
  msgid ""
11052
  "When enabled this will add \"Regenerate download permissions\" action to "
11053
  "\"Bulk Actions\" select box on admin orders page."
11054
  msgstr ""
11055
 
11056
+ #: includes/settings/wcj-settings-orders.php:105
11057
  msgid "All Orders - Now"
11058
  msgstr ""
11059
 
11060
+ #: includes/settings/wcj-settings-orders.php:106
11061
  msgid ""
11062
  "Check this box and press \"Save changes\" button to start regeneration. "
11063
  "Please note that both module and current section must be enabled before that."
11064
  msgstr ""
11065
 
11066
+ #: includes/settings/wcj-settings-orders.php:107
11067
  msgid "Regenerate now"
11068
  msgstr ""
11069
 
11070
+ #: includes/settings/wcj-settings-orders.php:114
11071
  msgid "All Orders - Periodically"
11072
  msgstr ""
11073
 
11074
+ #: includes/settings/wcj-settings-orders.php:120
11075
  msgid "Regenerate"
11076
  msgstr ""
11077
 
11078
+ #: includes/settings/wcj-settings-payment-gateways-by-country.php:16
11079
+ msgid "Country and state are defined from customer's entered billing address."
11080
+ msgstr ""
11081
+
11082
  #: includes/settings/wcj-settings-payment-gateways-by-country.php:16
11083
  #: includes/settings/wcj-settings-payment-gateways-by-currency.php:16
11084
  #: includes/settings/wcj-settings-payment-gateways-by-user-role.php:16
11104
 
11105
  #: includes/settings/wcj-settings-payment-gateways-by-currency.php:27
11106
  #, php-format
11107
+ msgid "PayPal allows only these currencies: %s."
11108
  msgstr ""
11109
 
11110
  #: includes/settings/wcj-settings-payment-gateways-by-currency.php:44
11293
  msgstr ""
11294
 
11295
  #: includes/settings/wcj-settings-payment-gateways-per-category.php:31
11296
+ #: includes/settings/wcj-settings-price-labels.php:125
11297
  #: includes/settings/wcj-settings-product-input-fields.php:109
11298
  msgid "Product Categories - Include"
11299
  msgstr ""
11305
  msgstr ""
11306
 
11307
  #: includes/settings/wcj-settings-payment-gateways-per-category.php:42
11308
+ #: includes/settings/wcj-settings-price-labels.php:134
11309
  #: includes/settings/wcj-settings-product-input-fields.php:120
11310
  msgid "Product Categories - Exclude"
11311
  msgstr ""
11317
  msgstr ""
11318
 
11319
  #: includes/settings/wcj-settings-payment-gateways-per-category.php:54
11320
+ #: includes/settings/wcj-settings-price-labels.php:107
11321
  #: includes/settings/wcj-settings-product-input-fields.php:154
11322
  msgid "Products - Include"
11323
  msgstr ""
11329
  msgstr ""
11330
 
11331
  #: includes/settings/wcj-settings-payment-gateways-per-category.php:67
11332
+ #: includes/settings/wcj-settings-price-labels.php:116
11333
  #: includes/settings/wcj-settings-product-input-fields.php:166
11334
  msgid "Products - Exclude"
11335
  msgstr ""
11371
  msgid "Admin Title Custom Gateway"
11372
  msgstr ""
11373
 
11374
+ #: includes/settings/wcj-settings-payment-gateways.php:54
11375
+ msgid "Gateways Input Fields"
11376
+ msgstr ""
11377
+
11378
+ #: includes/settings/wcj-settings-payment-gateways.php:55
11379
+ #: includes/settings/wcj-settings-pdf-invoicing-display.php:77
11380
+ msgid "Add \"Delete\" button"
11381
+ msgstr ""
11382
+
11383
+ #: includes/settings/wcj-settings-payment-gateways.php:56
11384
+ msgid ""
11385
+ "This will add \"Delete\" button to custom payment gateways input fields "
11386
+ "admin order meta box."
11387
+ msgstr ""
11388
+
11389
+ #: includes/settings/wcj-settings-pdf-invoicing-advanced.php:15
11390
+ msgid "Fonts download is disabled."
11391
+ msgstr ""
11392
+
11393
+ #: includes/settings/wcj-settings-pdf-invoicing-advanced.php:18
11394
+ msgid "Fonts are up to date."
11395
+ msgstr ""
11396
+
11397
+ #: includes/settings/wcj-settings-pdf-invoicing-advanced.php:19
11398
+ #, php-format
11399
+ msgid "Latest successful download or version check was on %s."
11400
+ msgstr ""
11401
+
11402
+ #: includes/settings/wcj-settings-pdf-invoicing-advanced.php:23
11403
+ msgid ""
11404
+ "Fonts are NOT up to date. Please try downloading by pressing the button "
11405
+ "below."
11406
+ msgstr ""
11407
+
11408
+ #: includes/settings/wcj-settings-pdf-invoicing-advanced.php:26
11409
+ #, php-format
11410
+ msgid "Latest successful downloaded version is %s."
11411
+ msgstr ""
11412
+
11413
+ #: includes/settings/wcj-settings-pdf-invoicing-advanced.php:32
11414
+ #, php-format
11415
+ msgid "Latest download executed on %s."
11416
+ msgstr ""
11417
+
11418
+ #: includes/settings/wcj-settings-pdf-invoicing-advanced.php:46
11419
+ msgid "Hide Disabled Docs Settings"
11420
+ msgstr ""
11421
+
11422
+ #: includes/settings/wcj-settings-pdf-invoicing-advanced.php:53
11423
+ msgid "Replace Admin Order Search with Invoice Search"
11424
+ msgstr ""
11425
+
11426
+ #: includes/settings/wcj-settings-pdf-invoicing-advanced.php:60
11427
+ msgid "Default Images Directory"
11428
+ msgstr ""
11429
+
11430
+ #: includes/settings/wcj-settings-pdf-invoicing-advanced.php:61
11431
+ msgid "Default images directory in TCPDF library (K_PATH_IMAGES)."
11432
+ msgstr ""
11433
+
11434
+ #: includes/settings/wcj-settings-pdf-invoicing-advanced.php:62
11435
+ msgid ""
11436
+ "Try changing this if you have issues displaying images in page background or "
11437
+ "header."
11438
+ msgstr ""
11439
+
11440
+ #: includes/settings/wcj-settings-pdf-invoicing-advanced.php:67
11441
+ msgid "Empty"
11442
+ msgstr ""
11443
+
11444
+ #: includes/settings/wcj-settings-pdf-invoicing-advanced.php:68
11445
+ msgid "TCPDF Default"
11446
+ msgstr ""
11447
+
11448
+ #: includes/settings/wcj-settings-pdf-invoicing-advanced.php:69
11449
+ msgid "ABSPATH"
11450
+ msgstr ""
11451
+
11452
+ #: includes/settings/wcj-settings-pdf-invoicing-advanced.php:70
11453
+ msgid "DOCUMENT_ROOT"
11454
+ msgstr ""
11455
+
11456
+ #: includes/settings/wcj-settings-pdf-invoicing-advanced.php:74
11457
+ msgid "Temp Directory"
11458
+ msgstr ""
11459
+
11460
+ #: includes/settings/wcj-settings-pdf-invoicing-advanced.php:75
11461
+ msgid "Leave blank to use the default temp directory."
11462
+ msgstr ""
11463
+
11464
+ #: includes/settings/wcj-settings-pdf-invoicing-advanced.php:86
11465
+ msgid "Fonts Manager"
11466
+ msgstr ""
11467
+
11468
+ #: includes/settings/wcj-settings-pdf-invoicing-advanced.php:95
11469
+ msgid "Re-download"
11470
+ msgstr ""
11471
+
11472
+ #: includes/settings/wcj-settings-pdf-invoicing-advanced.php:100
11473
+ msgid "Disable Fonts Download"
11474
+ msgstr ""
11475
+
11476
+ #: includes/settings/wcj-settings-pdf-invoicing-advanced.php:111
11477
+ msgid "General Display Options"
11478
+ msgstr ""
11479
+
11480
+ #: includes/settings/wcj-settings-pdf-invoicing-advanced.php:116
11481
+ msgid "Add PDF Invoices Meta Box to Admin Edit Order Page"
11482
+ msgstr ""
11483
+
11484
+ #: includes/settings/wcj-settings-pdf-invoicing-advanced.php:127
11485
+ msgid "Report Tool Options"
11486
+ msgstr ""
11487
+
11488
+ #: includes/settings/wcj-settings-pdf-invoicing-advanced.php:132
11489
+ msgid "Reports Filename"
11490
+ msgstr ""
11491
+
11492
+ #: includes/settings/wcj-settings-pdf-invoicing-advanced.php:140
11493
+ msgid "Report Columns"
11494
+ msgstr ""
11495
+
11496
+ #: includes/settings/wcj-settings-pdf-invoicing-advanced.php:141
11497
+ msgid "Leave blank to show all columns."
11498
+ msgstr ""
11499
+
11500
+ #: includes/settings/wcj-settings-pdf-invoicing-advanced.php:149
11501
+ msgid "Tax Percent Precision"
11502
+ msgstr ""
11503
+
11504
+ #: includes/settings/wcj-settings-pdf-invoicing-advanced.php:162
11505
+ msgid "CSV UTF-8 BOM"
11506
+ msgstr ""
11507
+
11508
+ #: includes/settings/wcj-settings-pdf-invoicing-advanced.php:169
11509
+ msgid "Replace Periods with Commas in CSV Data"
11510
+ msgstr ""
11511
+
11512
+ #: includes/settings/wcj-settings-pdf-invoicing-advanced.php:170
11513
+ msgid "Replace"
11514
+ msgstr ""
11515
+
11516
  #: includes/settings/wcj-settings-pdf-invoicing-display.php:25
11517
+ #: includes/settings/wcj-settings-price-by-country.php:252
11518
  #: includes/settings/wcj-settings-shipping.php:30
11519
  msgid "Admin Title"
11520
  msgstr ""
11539
  msgid "Add \"Create\" button"
11540
  msgstr ""
11541
 
 
 
 
 
11542
  #: includes/settings/wcj-settings-pdf-invoicing-display.php:84
11543
  msgid "\"Create\" button requires confirmation"
11544
  msgstr ""
11585
  msgid "If set to empty - Administrator role will be used."
11586
  msgstr ""
11587
 
 
 
 
 
 
 
 
 
11588
  #: includes/settings/wcj-settings-pdf-invoicing-emails.php:53
11589
  msgid "Attach PDF to emails"
11590
  msgstr ""
11758
  msgid "Make Font Shadowed"
11759
  msgstr ""
11760
 
11761
+ #: includes/settings/wcj-settings-pdf-invoicing-templates.php:12
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
11762
  #, php-format
11763
+ msgid "For the list of available shortcodes, please visit %s."
 
 
 
 
 
 
 
 
 
 
 
 
11764
  msgstr ""
11765
 
11766
+ #: includes/settings/wcj-settings-pdf-invoicing-templates.php:28
11767
  msgid "HTML Template"
11768
  msgstr ""
11769
 
11770
+ #: includes/settings/wcj-settings-pdf-invoicing-templates.php:36
11771
  msgid "Save all templates"
11772
  msgstr ""
11773
 
 
 
 
 
 
 
 
 
 
11774
  #: includes/settings/wcj-settings-pdf-invoicing.php:14
11775
+ msgid "Documents Options"
11776
  msgstr ""
11777
 
11778
  #: includes/settings/wcj-settings-pdf-invoicing.php:23
11805
  msgid "Do not create if order total equals zero"
11806
  msgstr ""
11807
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
11808
  #: includes/settings/wcj-settings-price-by-country.php:15
11809
  msgid "Price by Country Options"
11810
  msgstr ""
11905
  msgstr ""
11906
 
11907
  #: includes/settings/wcj-settings-price-by-country.php:112
11908
+ msgid "Per product options style"
11909
+ msgstr ""
11910
+
11911
+ #: includes/settings/wcj-settings-price-by-country.php:117
11912
+ msgid "Inline"
11913
+ msgstr ""
11914
+
11915
+ #: includes/settings/wcj-settings-price-by-country.php:118
11916
+ msgid "Separate meta box"
11917
+ msgstr ""
11918
+
11919
+ #: includes/settings/wcj-settings-price-by-country.php:122
11920
  msgid "Price Filter Widget and Sorting by Price Support"
11921
  msgstr ""
11922
 
11923
+ #: includes/settings/wcj-settings-price-by-country.php:125
11924
  msgid "Recalculate price filter widget and sorting by price product prices"
11925
  msgstr ""
11926
 
11927
+ #: includes/settings/wcj-settings-price-by-country.php:131
11928
  msgid "Add Countries Flags Images to Select Drop-Down Box"
11929
  msgstr ""
11930
 
11931
+ #: includes/settings/wcj-settings-price-by-country.php:133
11932
  msgid ""
11933
  "If you are using [wcj_country_select_drop_down_list] shortcode or \"Booster: "
11934
  "Country Switcher\" widget, this will add country flags to these select boxes."
11935
  msgstr ""
11936
 
11937
+ #: includes/settings/wcj-settings-price-by-country.php:139
11938
  #: includes/settings/wcj-settings-price-by-user-role.php:62
11939
  msgid "Search Engine Bots"
11940
  msgstr ""
11941
 
11942
+ #: includes/settings/wcj-settings-price-by-country.php:140
11943
  msgid "Disable Price by Country for Bots"
11944
  msgstr ""
11945
 
11946
+ #: includes/settings/wcj-settings-price-by-country.php:150
11947
  msgid "Country Groups"
11948
  msgstr ""
11949
 
11950
+ #: includes/settings/wcj-settings-price-by-country.php:155
11951
  msgid "Countries Selection"
11952
  msgstr ""
11953
 
11954
+ #: includes/settings/wcj-settings-price-by-country.php:156
11955
  msgid "Choose how do you want to enter countries groups in admin."
11956
  msgstr ""
11957
 
11958
+ #: includes/settings/wcj-settings-price-by-country.php:161
11959
  msgid "Comma separated list"
11960
  msgstr ""
11961
 
11962
+ #: includes/settings/wcj-settings-price-by-country.php:162
11963
  msgid "Multiselect"
11964
  msgstr ""
11965
 
11966
+ #: includes/settings/wcj-settings-price-by-country.php:163
11967
  msgid "Chosen select"
11968
  msgstr ""
11969
 
11970
+ #: includes/settings/wcj-settings-price-by-country.php:167
11971
  msgid "Autogenerate Groups"
11972
  msgstr ""
11973
 
11974
+ #: includes/settings/wcj-settings-price-by-country.php:172
11975
  msgid "Currencies supported in both PayPal and Yahoo Exchange Rates:"
11976
  msgstr ""
11977
 
11978
+ #: includes/settings/wcj-settings-price-by-country.php:177
11979
  msgid "Currencies supported in Yahoo Exchange Rates:"
11980
  msgstr ""
11981
 
11982
+ #: includes/settings/wcj-settings-price-by-country.php:182
11983
  msgid "All Countries and Currencies:"
11984
  msgstr ""
11985
 
11986
+ #: includes/settings/wcj-settings-price-by-country.php:188
11987
  msgid "Groups Number"
11988
  msgstr ""
11989
 
11990
+ #: includes/settings/wcj-settings-price-by-country.php:212
11991
  msgid ""
11992
  "Countries. List of comma separated country codes.<br>For country codes and "
11993
  "predifined sets visit <a href=\"http://booster.io/country-codes/\" target="
11994
  "\"_blank\">http://booster.io/country-codes/</a>"
11995
  msgstr ""
11996
 
11997
+ #: includes/settings/wcj-settings-price-by-country.php:298
11998
  msgid "Multiply Price by"
11999
  msgstr ""
12000
 
12135
  "comma separated list. Leave empty to disable."
12136
  msgstr ""
12137
 
12138
+ #: includes/settings/wcj-settings-price-labels.php:17
12139
+ msgid "Custom Price Labels - Per Product"
12140
  msgstr ""
12141
 
12142
  #: includes/settings/wcj-settings-price-labels.php:24
12143
+ msgid "This will add metaboxes to each product's admin edit page."
12144
+ msgstr ""
12145
+
12146
+ #: includes/settings/wcj-settings-price-labels.php:34
12147
+ msgid "Custom Price Labels - Globally"
12148
+ msgstr ""
12149
+
12150
+ #: includes/settings/wcj-settings-price-labels.php:36
12151
  msgid "This section lets you set price labels for all products globally."
12152
  msgstr ""
12153
 
12154
+ #: includes/settings/wcj-settings-price-labels.php:40
12155
  msgid "Add before the price"
12156
  msgstr ""
12157
 
12158
+ #: includes/settings/wcj-settings-price-labels.php:41
12159
  msgid "Enter text to add before all products prices. Leave blank to disable."
12160
  msgstr ""
12161
 
12162
+ #: includes/settings/wcj-settings-price-labels.php:50
12163
  msgid "Add after the price"
12164
  msgstr ""
12165
 
12166
+ #: includes/settings/wcj-settings-price-labels.php:51
12167
  msgid "Enter text to add after all products prices. Leave blank to disable."
12168
  msgstr ""
12169
 
12170
+ #: includes/settings/wcj-settings-price-labels.php:58
12171
  msgid "Add between regular and sale prices"
12172
  msgstr ""
12173
 
12174
+ #: includes/settings/wcj-settings-price-labels.php:59
12175
  msgid ""
12176
  "Enter text to add between regular and sale prices. Leave blank to disable."
12177
  msgstr ""
12178
 
12179
+ #: includes/settings/wcj-settings-price-labels.php:68
12180
  msgid "Remove from price"
12181
  msgstr ""
12182
 
12183
+ #: includes/settings/wcj-settings-price-labels.php:69
12184
  msgid "Enter text to remove from all products prices. Leave blank to disable."
12185
  msgstr ""
12186
 
12187
+ #: includes/settings/wcj-settings-price-labels.php:78
12188
  msgid "Replace in price"
12189
  msgstr ""
12190
 
12191
+ #: includes/settings/wcj-settings-price-labels.php:79
12192
  msgid "Enter text to replace in all products prices. Leave blank to disable."
12193
  msgstr ""
12194
 
12195
+ #: includes/settings/wcj-settings-price-labels.php:90
12196
  msgid "Enter text to replace with. Leave blank to disable."
12197
  msgstr ""
12198
 
12199
+ #: includes/settings/wcj-settings-price-labels.php:100
12200
  msgid "Enter text to display instead of the price. Leave blank to disable."
12201
  msgstr ""
12202
 
12203
+ #: includes/settings/wcj-settings-price-labels.php:108
12204
  msgid ""
12205
  "Apply global price labels only for selected products. Leave blank to disable "
12206
  "the option."
12207
  msgstr ""
12208
 
12209
+ #: includes/settings/wcj-settings-price-labels.php:117
12210
  msgid ""
12211
  "Do not apply global price labels only for selected products. Leave blank to "
12212
  "disable the option."
12213
  msgstr ""
12214
 
12215
+ #: includes/settings/wcj-settings-price-labels.php:126
12216
  msgid ""
12217
  "Apply global price labels only for selected product categories. Leave blank "
12218
  "to disable the option."
12219
  msgstr ""
12220
 
12221
+ #: includes/settings/wcj-settings-price-labels.php:135
12222
  msgid ""
12223
  "Do not apply global price labels only for selected product categories. Leave "
12224
  "blank to disable the option."
12225
  msgstr ""
12226
 
12227
+ #: includes/settings/wcj-settings-price-labels.php:143
12228
  msgid "Product Types - Include"
12229
  msgstr ""
12230
 
12231
+ #: includes/settings/wcj-settings-price-labels.php:144
12232
  msgid ""
12233
  "Apply global price labels only for selected product types. Leave blank to "
12234
  "disable the option."
12235
  msgstr ""
12236
 
12237
+ #: includes/settings/wcj-settings-price-labels.php:149
12238
  msgid "Variable product's variation"
12239
  msgstr ""
12240
 
 
 
 
 
 
 
 
 
12241
  #: includes/settings/wcj-settings-product-add-to-cart.php:14
12242
  #: includes/settings/meta-box/wcj-settings-meta-box-product-add-to-cart.php:23
12243
  msgid "Add to Cart Local Redirect"
12257
  "disabled."
12258
  msgstr ""
12259
 
 
 
 
 
 
12260
  #: includes/settings/wcj-settings-product-add-to-cart.php:31
12261
  msgid "URL - All Products"
12262
  msgstr ""
12268
  "page)."
12269
  msgstr ""
12270
 
 
 
 
 
 
 
 
 
12271
  #: includes/settings/wcj-settings-product-add-to-cart.php:40
12272
  #: includes/settings/wcj-settings-product-tabs.php:213
12273
  msgid "This will add meta boxes to each product's edit page."
12350
  msgstr ""
12351
 
12352
  #: includes/settings/wcj-settings-product-add-to-cart.php:172
12353
+ msgid "Add to Cart Button Custom URL"
12354
  msgstr ""
12355
 
12356
  #: includes/settings/wcj-settings-product-add-to-cart.php:177
12357
+ msgid "Custom Add to Cart Buttons URL on Archives on per Product Basis"
12358
  msgstr ""
12359
 
12360
+ #: includes/settings/wcj-settings-product-add-to-cart.php:189
12361
+ msgid "Add to Cart Button AJAX"
12362
  msgstr ""
12363
 
12364
+ #: includes/settings/wcj-settings-product-add-to-cart.php:194
12365
+ msgid "Disable/Enable Add to Cart Button AJAX on per Product Basis"
 
12366
  msgstr ""
12367
 
12368
+ #: includes/settings/wcj-settings-product-add-to-cart.php:211
12369
+ msgid "Open External Products on Add to Cart in New Window"
12370
  msgstr ""
12371
 
12372
+ #: includes/settings/wcj-settings-product-add-to-cart.php:212
12373
+ msgid "Enable on Single Product Pages"
12374
  msgstr ""
12375
 
12376
+ #: includes/settings/wcj-settings-product-add-to-cart.php:219
12377
+ msgid "Enable on Category/Archive Pages"
12378
  msgstr ""
12379
 
12380
+ #: includes/settings/wcj-settings-product-add-to-cart.php:230
12381
+ msgid "Add to Cart Message Options"
12382
  msgstr ""
12383
 
12384
+ #: includes/settings/wcj-settings-product-add-to-cart.php:235
12385
+ msgid "Change \"Continue shopping\" Text"
12386
  msgstr ""
12387
 
12388
+ #: includes/settings/wcj-settings-product-add-to-cart.php:249
12389
+ msgid "Change \"View cart\" Text"
12390
  msgstr ""
12391
 
12392
+ #: includes/settings/wcj-settings-product-add-to-cart.php:267
12393
+ msgid "Add to Cart Button Position Options"
12394
  msgstr ""
12395
 
12396
+ #: includes/settings/wcj-settings-product-add-to-cart.php:272
12397
+ msgid "Add to Cart Button Position"
12398
  msgstr ""
12399
 
12400
+ #: includes/settings/wcj-settings-product-add-to-cart.php:279
12401
+ msgid "Reposition Button on Single Product Pages"
12402
  msgstr ""
12403
 
12404
+ #: includes/settings/wcj-settings-product-add-to-cart.php:297
12405
+ #: includes/settings/wcj-settings-product-add-to-cart.php:333
12406
+ msgid "Priority"
12407
  msgstr ""
12408
 
12409
+ #: includes/settings/wcj-settings-product-add-to-cart.php:298
12410
+ #, php-format
12411
+ msgid ""
12412
+ "Here are the default WooCommerce priorities for \"Inside single product "
12413
+ "summary\" position: %s"
12414
+ msgstr ""
12415
+
12416
+ #: includes/settings/wcj-settings-product-add-to-cart.php:301
12417
+ msgid "Rating"
12418
+ msgstr ""
12419
+
12420
+ #: includes/settings/wcj-settings-product-add-to-cart.php:303
12421
+ msgid "Excerpt"
12422
+ msgstr ""
12423
+
12424
+ #: includes/settings/wcj-settings-product-add-to-cart.php:305
12425
+ msgid "Sharing"
12426
+ msgstr ""
12427
+
12428
+ #: includes/settings/wcj-settings-product-add-to-cart.php:314
12429
+ msgid "Reposition Button on Category/Archive Pages"
12430
+ msgstr ""
12431
+
12432
+ #: includes/settings/wcj-settings-product-addons.php:17
12433
+ msgid "New order"
12434
+ msgstr ""
12435
+
12436
+ #: includes/settings/wcj-settings-product-addons.php:20
12437
+ #, php-format
12438
+ msgid "Order status \"%s\""
12439
  msgstr ""
12440
 
12441
+ #: includes/settings/wcj-settings-product-addons.php:31
12442
  msgid "Enable per Product Addons"
12443
  msgstr ""
12444
 
12445
+ #: includes/settings/wcj-settings-product-addons.php:33
12446
  msgid ""
12447
  "When enabled, this will add new \"Booster: Product Addons\" meta box to each "
12448
  "product's edit page."
12449
  msgstr ""
12450
 
12451
+ #: includes/settings/wcj-settings-product-addons.php:45
12452
  msgid "All Product Options"
12453
  msgstr ""
12454
 
12455
+ #: includes/settings/wcj-settings-product-addons.php:50
12456
  msgid "Enable All Products Addons"
12457
  msgstr ""
12458
 
12459
+ #: includes/settings/wcj-settings-product-addons.php:52
12460
  msgid "When enabled, this will add addons below to all products."
12461
  msgstr ""
12462
 
12463
+ #: includes/settings/wcj-settings-product-addons.php:58
12464
  #: includes/settings/meta-box/wcj-settings-meta-box-product-addons.php:28
12465
  msgid "Product Addons Total Number"
12466
  msgstr ""
12467
 
12468
+ #: includes/settings/wcj-settings-product-addons.php:59
12469
  msgid "Save changes after you change this number."
12470
  msgstr ""
12471
 
12472
+ #: includes/settings/wcj-settings-product-addons.php:74
12473
  #: includes/settings/meta-box/wcj-settings-meta-box-product-addons.php:35
12474
  msgid "Product Addon"
12475
  msgstr ""
12476
 
12477
+ #: includes/settings/wcj-settings-product-addons.php:87
12478
  #: includes/settings/meta-box/wcj-settings-meta-box-product-addons.php:51
12479
  msgid "Radio Buttons"
12480
  msgstr ""
12481
 
12482
+ #: includes/settings/wcj-settings-product-addons.php:88
12483
  #: includes/settings/meta-box/wcj-settings-meta-box-product-addons.php:52
12484
  msgid "Select Box"
12485
  msgstr ""
12486
 
12487
+ #: includes/settings/wcj-settings-product-addons.php:99
12488
  #: includes/settings/meta-box/wcj-settings-meta-box-product-addons.php:63
12489
  msgid "Label(s)"
12490
  msgstr ""
12491
 
12492
+ #: includes/settings/wcj-settings-product-addons.php:100
12493
+ #: includes/settings/wcj-settings-product-addons.php:107
12494
  #: includes/settings/meta-box/wcj-settings-meta-box-product-addons.php:64
12495
  #: includes/settings/meta-box/wcj-settings-meta-box-product-addons.php:71
12496
  msgid "For radio and select enter one value per line."
12497
  msgstr ""
12498
 
12499
+ #: includes/settings/wcj-settings-product-addons.php:106
12500
  #: includes/settings/meta-box/wcj-settings-meta-box-product-addons.php:70
12501
  msgid "Price(s)"
12502
  msgstr ""
12503
 
12504
+ #: includes/settings/wcj-settings-product-addons.php:114
12505
  #: includes/settings/meta-box/wcj-settings-meta-box-product-addons.php:77
12506
  msgid "Tooltip(s)"
12507
  msgstr ""
12508
 
12509
+ #: includes/settings/wcj-settings-product-addons.php:115
12510
  #: includes/settings/meta-box/wcj-settings-meta-box-product-addons.php:78
12511
  msgid "For radio enter one value per line."
12512
  msgstr ""
12513
 
12514
+ #: includes/settings/wcj-settings-product-addons.php:121
12515
  #: includes/settings/wcj-settings-purchase-data.php:83
12516
  #: includes/settings/meta-box/wcj-settings-meta-box-product-addons.php:84
12517
  msgid "Default Value"
12518
  msgstr ""
12519
 
12520
+ #: includes/settings/wcj-settings-product-addons.php:122
12521
  #: includes/settings/meta-box/wcj-settings-meta-box-product-addons.php:85
12522
  msgid ""
12523
  "For checkbox use 'checked'; for radio and select enter default label. Leave "
12524
  "blank for no default value."
12525
  msgstr ""
12526
 
12527
+ #: includes/settings/wcj-settings-product-addons.php:129
12528
  #: includes/settings/meta-box/wcj-settings-meta-box-product-addons.php:92
12529
  msgid "For \"Select Box\" type only."
12530
  msgstr ""
12531
 
12532
+ #: includes/settings/wcj-settings-product-addons.php:135
12533
  #: includes/settings/wcj-settings-product-by-user.php:45
12534
  msgid "Is Required"
12535
  msgstr ""
12536
 
12537
+ #: includes/settings/wcj-settings-product-addons.php:150
12538
+ #: includes/settings/meta-box/wcj-settings-meta-box-product-addons.php:109
12539
+ msgid ""
12540
+ "Leave empty to disable quantity calculation for the addon. When set to zero "
12541
+ "- addon will be disabled."
12542
+ msgstr ""
12543
+
12544
+ #: includes/settings/wcj-settings-product-addons.php:170
12545
  msgid "Enable AJAX on Single Product Page"
12546
  msgstr ""
12547
 
12548
+ #: includes/settings/wcj-settings-product-addons.php:177
12549
+ msgid "Decrease Quantity"
12550
+ msgstr ""
12551
+
12552
+ #: includes/settings/wcj-settings-product-addons.php:178
12553
+ msgid ""
12554
+ "If you select multiple triggers to decrease quantity, it will be decreased "
12555
+ "only once (on whichever trigger is executed first)."
12556
+ msgstr ""
12557
+
12558
+ #: includes/settings/wcj-settings-product-addons.php:186
12559
  msgid "Addon in Cart Format"
12560
  msgstr ""
12561
 
12562
+ #: includes/settings/wcj-settings-product-addons.php:193
12563
+ #: includes/settings/wcj-settings-product-addons.php:213
12564
  msgid "Each Addon"
12565
  msgstr ""
12566
 
12567
+ #: includes/settings/wcj-settings-product-addons.php:194
12568
+ #: includes/settings/wcj-settings-product-addons.php:214
12569
  msgid "You can use %addon_label% and %addon_price%."
12570
  msgstr ""
12571
 
12572
+ #: includes/settings/wcj-settings-product-addons.php:206
12573
  msgid "Addon in Order Details Table Format"
12574
  msgstr ""
12575
 
12576
+ #: includes/settings/wcj-settings-product-addons.php:226
12577
  msgid "Admin Order Page"
12578
  msgstr ""
12579
 
12580
+ #: includes/settings/wcj-settings-product-addons.php:227
12581
  msgid "Hide all addons"
12582
  msgstr ""
12583
 
12584
+ #: includes/settings/wcj-settings-product-addons.php:233
12585
  msgid "Position Priority on Frontend"
12586
  msgstr ""
12587
 
12588
+ #: includes/settings/wcj-settings-product-addons.php:234
12589
  #: includes/settings/wcj-settings-shipping-by-condition.php:84
12590
  #: includes/settings/wcj-settings-shipping-options.php:41
12591
  msgid "Set to zero to use the default priority."
12971
  #: includes/settings/wcj-settings-product-images.php:49
12972
  #: includes/settings/wcj-settings-product-images.php:58
12973
  #: includes/settings/wcj-settings-product-images.php:67
12974
+ #: includes/settings/wcj-settings-products-xml.php:107
12975
  #: includes/settings/meta-box/wcj-settings-meta-box-product-images.php:18
12976
  #: includes/settings/meta-box/wcj-settings-meta-box-product-images.php:25
12977
  msgid "You can use shortcodes here."
13025
  msgstr ""
13026
 
13027
  #: includes/settings/wcj-settings-product-custom-info.php:160
13028
+ #: includes/settings/wcj-settings-products-xml.php:140
13029
  msgid "Products to Include"
13030
  msgstr ""
13031
 
13032
  #: includes/settings/wcj-settings-product-custom-info.php:171
13033
+ #: includes/settings/wcj-settings-products-xml.php:150
13034
  msgid "Products to Exclude"
13035
  msgstr ""
13036
 
13210
  #: includes/settings/wcj-settings-product-input-fields.php:144
13211
  #: includes/settings/wcj-settings-product-input-fields.php:156
13212
  #: includes/settings/wcj-settings-product-input-fields.php:168
13213
+ #: includes/settings/wcj-settings-wholesale-price.php:76
13214
  msgid "Leave blank to include all products."
13215
  msgstr ""
13216
 
13758
  "WP_Query call. Leave default value if not sure."
13759
  msgstr ""
13760
 
13761
+ #: includes/settings/wcj-settings-products-xml.php:52
13762
+ msgid ""
13763
+ "If you've made any changes in module's settings - don't forget to save "
13764
+ "changes before clicking this button."
13765
+ msgstr ""
13766
+
13767
+ #: includes/settings/wcj-settings-products-xml.php:53
13768
  msgid "Create Now"
13769
  msgstr ""
13770
 
13771
+ #: includes/settings/wcj-settings-products-xml.php:59
13772
  #, php-format
13773
  msgid "Recent file was created on %s"
13774
  msgstr ""
13775
 
13776
+ #: includes/settings/wcj-settings-products-xml.php:66
13777
  msgid "XML File"
13778
  msgstr ""
13779
 
13780
+ #: includes/settings/wcj-settings-products-xml.php:79
13781
  msgid "XML Header"
13782
  msgstr ""
13783
 
13784
+ #: includes/settings/wcj-settings-products-xml.php:80
13785
+ #, php-format
13786
+ msgid "You can use shortcodes here. For example %s."
13787
  msgstr ""
13788
 
13789
+ #: includes/settings/wcj-settings-products-xml.php:87
13790
  msgid "XML Item"
13791
  msgstr ""
13792
 
13793
+ #: includes/settings/wcj-settings-products-xml.php:89
13794
  #, php-format
13795
  msgid ""
13796
  "You can use shortcodes here. Please take a look at <a target=\"_blank\" href="
13797
  "\"%s\">Booster's products shortcodes</a>."
13798
  msgstr ""
13799
 
13800
+ #: includes/settings/wcj-settings-products-xml.php:106
13801
  msgid "XML Footer"
13802
  msgstr ""
13803
 
13804
+ #: includes/settings/wcj-settings-products-xml.php:114
13805
  msgid "XML File Path and Name"
13806
  msgstr ""
13807
 
13808
+ #: includes/settings/wcj-settings-products-xml.php:115
13809
  msgid "Path on server:"
13810
  msgstr ""
13811
 
13812
+ #: includes/settings/wcj-settings-products-xml.php:123
13813
  msgid "Update Period"
13814
  msgstr ""
13815
 
13816
+ #: includes/settings/wcj-settings-products-xml.php:135
13817
  msgid ""
13818
  "Possible update periods are: every minute, hourly, twice daily, daily and "
13819
  "weekly."
13820
  msgstr ""
13821
 
13822
+ #: includes/settings/wcj-settings-products-xml.php:141
13823
  msgid ""
13824
  "To include selected products only, enter products here. Leave blank to "
13825
  "include all products."
13826
  msgstr ""
13827
 
13828
+ #: includes/settings/wcj-settings-products-xml.php:151
13829
  msgid ""
13830
  "To exclude selected products, enter products here. Leave blank to include "
13831
  "all products."
13832
  msgstr ""
13833
 
13834
+ #: includes/settings/wcj-settings-products-xml.php:159
13835
  msgid "Categories to Include"
13836
  msgstr ""
13837
 
13838
+ #: includes/settings/wcj-settings-products-xml.php:160
13839
  msgid ""
13840
  "To include products from selected categories only, enter categories here. "
13841
  "Leave blank to include all products."
13842
  msgstr ""
13843
 
13844
+ #: includes/settings/wcj-settings-products-xml.php:168
13845
  msgid "Categories to Exclude"
13846
  msgstr ""
13847
 
13848
+ #: includes/settings/wcj-settings-products-xml.php:169
13849
  msgid ""
13850
  "To exclude products from selected categories, enter categories here. Leave "
13851
  "blank to include all products."
13852
  msgstr ""
13853
 
13854
+ #: includes/settings/wcj-settings-products-xml.php:177
13855
  msgid "Tags to Include"
13856
  msgstr ""
13857
 
13858
+ #: includes/settings/wcj-settings-products-xml.php:178
13859
  msgid ""
13860
  "To include products from selected tags only, enter tags here. Leave blank to "
13861
  "include all products."
13862
  msgstr ""
13863
 
13864
+ #: includes/settings/wcj-settings-products-xml.php:186
13865
  msgid "Tags to Exclude"
13866
  msgstr ""
13867
 
13868
+ #: includes/settings/wcj-settings-products-xml.php:187
13869
  msgid ""
13870
  "To exclude products from selected tags, enter tags here. Leave blank to "
13871
  "include all products."
13872
  msgstr ""
13873
 
13874
+ #: includes/settings/wcj-settings-products-xml.php:195
13875
  msgid "Products Scope"
13876
  msgstr ""
13877
 
13878
+ #: includes/settings/wcj-settings-products-xml.php:201
13879
  msgid "Only products that are on sale"
13880
  msgstr ""
13881
 
13882
+ #: includes/settings/wcj-settings-products-xml.php:203
13883
  msgid "Only products that are featured"
13884
  msgstr ""
13885
 
13886
+ #: includes/settings/wcj-settings-products-xml.php:204
13887
  msgid "Only products that are not featured"
13888
  msgstr ""
13889
 
14217
  msgid "Hide on Single Page Only"
14218
  msgstr ""
14219
 
 
 
 
 
14220
  #: includes/settings/wcj-settings-sale-flash.php:81
14221
  msgid "Per Tag"
14222
  msgstr ""
14949
  msgstr ""
14950
 
14951
  #: includes/settings/wcj-settings-wholesale-price.php:42
14952
+ msgid "Round single product price"
14953
+ msgstr ""
14954
+
14955
+ #: includes/settings/wcj-settings-wholesale-price.php:43
14956
+ msgid ""
14957
+ "If enabled will round single product price with precision set in WooCommerce "
14958
+ "> Settings > General > Number of decimals."
14959
+ msgstr ""
14960
+
14961
+ #: includes/settings/wcj-settings-wholesale-price.php:50
14962
  msgid "Show discount info on cart page"
14963
  msgstr ""
14964
 
14965
+ #: includes/settings/wcj-settings-wholesale-price.php:57
14966
  msgid "If show discount info on cart page is enabled, set format here"
14967
  msgstr ""
14968
 
14969
+ #: includes/settings/wcj-settings-wholesale-price.php:65
14970
  #: includes/settings/meta-box/wcj-settings-meta-box-wholesale-price.php:41
14971
  msgid "Discount Type"
14972
  msgstr ""
14973
 
14974
+ #: includes/settings/wcj-settings-wholesale-price.php:75
14975
  msgid "Products to include"
14976
  msgstr ""
14977
 
14978
+ #: includes/settings/wcj-settings-wholesale-price.php:84
14979
  msgid "Products to exclude"
14980
  msgstr ""
14981
 
14982
+ #: includes/settings/wcj-settings-wholesale-price.php:96
14983
  msgid "Wholesale Levels Options"
14984
  msgstr ""
14985
 
14986
+ #: includes/settings/wcj-settings-wholesale-price.php:101
14987
+ #: includes/settings/wcj-settings-wholesale-price.php:158
14988
  #: includes/settings/meta-box/wcj-settings-meta-box-wholesale-price.php:48
14989
  #: includes/settings/meta-box/wcj-settings-meta-box-wholesale-price.php:84
14990
  msgid "Number of levels"
14991
  msgstr ""
14992
 
14993
+ #: includes/settings/wcj-settings-wholesale-price.php:115
14994
+ #: includes/settings/wcj-settings-wholesale-price.php:172
14995
  #: includes/settings/meta-box/wcj-settings-meta-box-wholesale-price.php:65
14996
  #: includes/settings/meta-box/wcj-settings-meta-box-wholesale-price.php:101
14997
  msgid "Min quantity"
14998
  msgstr ""
14999
 
15000
+ #: includes/settings/wcj-settings-wholesale-price.php:116
15001
+ #: includes/settings/wcj-settings-wholesale-price.php:173
15002
  msgid "Minimum quantity to apply discount"
15003
  msgstr ""
15004
 
15005
+ #: includes/settings/wcj-settings-wholesale-price.php:123
15006
+ #: includes/settings/wcj-settings-wholesale-price.php:124
15007
+ #: includes/settings/wcj-settings-wholesale-price.php:180
15008
+ #: includes/settings/wcj-settings-wholesale-price.php:181
15009
  #: includes/settings/meta-box/wcj-settings-meta-box-wholesale-price.php:72
15010
  #: includes/settings/meta-box/wcj-settings-meta-box-wholesale-price.php:108
15011
  msgid "Discount"
15012
  msgstr ""
15013
 
15014
+ #: includes/settings/wcj-settings-wholesale-price.php:138
15015
  msgid "Additional User Roles Options"
15016
  msgstr ""
15017
 
15018
+ #: includes/settings/wcj-settings-wholesale-price.php:140
15019
  msgid ""
15020
  "If you want to set different wholesale pricing options for different user "
15021
  "roles, fill this section. Please note that you can also use Booster's "
15022
  "\"Price by User Role\" module without filling this section."
15023
  msgstr ""
15024
 
15025
+ #: includes/settings/wcj-settings-wholesale-price.php:144
15026
  msgid "User Roles Settings"
15027
  msgstr ""
15028
 
15031
  msgid "Regenerate wpml-config.xml file"
15032
  msgstr ""
15033
 
15034
+ #: includes/settings/meta-box/wcj-settings-meta-box-add-to-cart-button-visibility.php:29
15035
+ msgid "Content to replace add to cart button on single product page."
15036
+ msgstr ""
15037
+
15038
+ #: includes/settings/meta-box/wcj-settings-meta-box-add-to-cart-button-visibility.php:40
15039
+ msgid "Category/Archives"
15040
+ msgstr ""
15041
+
15042
+ #: includes/settings/meta-box/wcj-settings-meta-box-add-to-cart-button-visibility.php:48
15043
+ msgid "Content to replace add to cart button on category/archives."
15044
+ msgstr ""
15045
+
15046
+ #: includes/settings/meta-box/wcj-settings-meta-box-admin-tools.php:18
15047
+ #, php-format
15048
+ msgid "Product ID: %s"
15049
+ msgstr ""
15050
+
15051
+ #: includes/settings/meta-box/wcj-settings-meta-box-admin-tools.php:25
15052
+ #: includes/settings/meta-box/wcj-settings-meta-box-price-by-country.php:45
15053
+ msgid "Regular price"
15054
+ msgstr ""
15055
+
15056
+ #: includes/settings/meta-box/wcj-settings-meta-box-admin-tools.php:33
15057
+ #: includes/settings/meta-box/wcj-settings-meta-box-price-by-country.php:54
15058
+ msgid "Sale price"
15059
+ msgstr ""
15060
+
15061
  #: includes/settings/meta-box/wcj-settings-meta-box-crowdfunding.php:17
15062
  msgid "Goal"
15063
  msgstr ""
15111
  msgid "Add to Cart Local Redirect URL"
15112
  msgstr ""
15113
 
15114
+ #: includes/settings/meta-box/wcj-settings-meta-box-product-add-to-cart.php:55
 
 
 
 
 
 
 
 
15115
  msgid "Custom Add to Cart Button URL (Category/Archives)"
15116
  msgstr ""
15117
 
15118
+ #: includes/settings/meta-box/wcj-settings-meta-box-product-add-to-cart.php:66
15119
  msgid "As shop default (no changes)"
15120
  msgstr ""
15121
 
15122
+ #: includes/settings/meta-box/wcj-settings-meta-box-product-add-to-cart.php:70
15123
  msgid "Disable Add to Cart Button AJAX"
15124
  msgstr ""
15125
 
15157
  msgid "Visible for User Roles"
15158
  msgstr ""
15159
 
 
 
 
 
15160
  #: includes/settings/meta-box/wcj-settings-meta-box-product-custom-visibility.php:15
15161
  msgid "Visible"
15162
  msgstr ""
15322
  msgid "Enable Custom Shipping"
15323
  msgstr ""
15324
 
15325
+ #: includes/shortcodes/class-wcj-shortcodes-general.php:87
15326
  msgid "Tax toggle (incl.)"
15327
  msgstr ""
15328
 
15329
+ #: includes/shortcodes/class-wcj-shortcodes-general.php:88
15330
  msgid "Tax toggle (excl.)"
15331
  msgstr ""
15332
 
15334
  msgid "Attribute \"name\" is required!"
15335
  msgstr ""
15336
 
15337
+ #: includes/shortcodes/class-wcj-shortcodes-order-items.php:189
15338
  msgid "Standard"
15339
  msgstr ""
15340
 
15341
+ #: includes/shortcodes/class-wcj-shortcodes-orders.php:111
15342
  msgid "Dollars"
15343
  msgstr ""
15344
 
15345
+ #: includes/shortcodes/class-wcj-shortcodes-orders.php:112
15346
  msgid "Cents"
15347
  msgstr ""
15348
 
15384
  msgid "Edit Product"
15385
  msgstr ""
15386
 
15387
+ #: includes/shortcodes/class-wcj-shortcodes-products.php:314
15388
  #, php-format
15389
  msgid "%s ago"
15390
  msgstr ""
15391
 
15392
+ #: includes/shortcodes/class-wcj-shortcodes-products.php:330
15393
  msgid "No sales yet."
15394
  msgstr ""
15395
 
readme.txt CHANGED
@@ -3,7 +3,7 @@ Contributors: algoritmika, anbinder
3
  Tags: woocommerce, booster for woocommerce, woocommerce jetpack
4
  Requires at least: 4.4
5
  Tested up to: 4.9
6
- Stable tag: 3.2.4
7
  License: GNU General Public License v3.0
8
  License URI: http://www.gnu.org/licenses/gpl-3.0.html
9
 
@@ -35,7 +35,7 @@ Booster for WooCommerce is a WordPress plugin that supercharges your site with a
35
 
36
  **Button & Price Labels**
37
 
38
- * *Add to Cart Labels* - Change text for Add to Cart button by WooCommerce product type, by product category or for individual products.
39
  * *Call for Price* - Create any custom price label for all WooCommerce products with empty price.
40
  * *Custom Price Labels* - Create any custom price label for any WooCommerce product.
41
  * *Free Price Labels* - WooCommerce free price labels.
@@ -43,11 +43,12 @@ Booster for WooCommerce is a WordPress plugin that supercharges your site with a
43
 
44
  **Products**
45
 
 
 
46
  * *Admin Products List* - Customize WooCommerce admin products list.
47
  * *Bookings* - Add bookings products to WooCommerce.
48
  * *Cost of Goods* - Save WooCommerce product purchase costs data for admin reports.
49
  * *Crowdfunding* - Add crowdfunding products to WooCommerce.
50
- * *Product Add to Cart* - Set any local url to redirect to on WooCommerce Add to Cart. Automatically add to cart on product visit. Display radio buttons instead of drop box for variable products. Disable quantity input. Disable add to cart button on per product basis. Open external products on add to cart in new window. Replace Add to Cart button on archives with button from single product pages. Customize Add to Cart messages.
51
  * *Product Addons* - Add (paid/free/discount) addons to WooCommerce products.
52
  * *Product Availability by Date* - WooCommerce product availability by date.
53
  * *Product Availability by Time* - WooCommerce product availability by time.
@@ -132,6 +133,7 @@ Booster for WooCommerce is a WordPress plugin that supercharges your site with a
132
  * *Email Verification* - Add WooCommerce email verification.
133
  * *Export* - WooCommerce export tools.
134
  * *General* - Custom roles tool. Shortcodes in WordPress text widgets.
 
135
  * *My Account* - WooCommerce "My Account" page customization.
136
  * *Old Slugs* - Remove old WooCommerce products slugs.
137
  * *Reports* - WooCommerce stock, sales, customers etc. reports.
@@ -176,6 +178,78 @@ You can see the differences between versions in this [table](https://booster.io/
176
 
177
  == Changelog ==
178
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
179
  = 3.2.4 - 27/12/2017 =
180
  * Dev - PRICES & CURRENCIES - Currencies - More cryptocurrencies added.
181
  * Dev - PRICES & CURRENCIES - Currency Exchange Rates - Secondary "Exchange Rates Server" option added to each currency pair.
3
  Tags: woocommerce, booster for woocommerce, woocommerce jetpack
4
  Requires at least: 4.4
5
  Tested up to: 4.9
6
+ Stable tag: 3.3.0
7
  License: GNU General Public License v3.0
8
  License URI: http://www.gnu.org/licenses/gpl-3.0.html
9
 
35
 
36
  **Button & Price Labels**
37
 
38
+ * *Add to Cart Button Labels* - Change text for Add to Cart button by WooCommerce product type, by product category or for individual products.
39
  * *Call for Price* - Create any custom price label for all WooCommerce products with empty price.
40
  * *Custom Price Labels* - Create any custom price label for any WooCommerce product.
41
  * *Free Price Labels* - WooCommerce free price labels.
43
 
44
  **Products**
45
 
46
+ * *Add to Cart* - Set any local url to redirect to on WooCommerce Add to Cart. Automatically add to cart on product visit. Display radio buttons instead of drop box for variable products. Disable quantity input. Open external products on add to cart in new window. Replace Add to Cart button on archives with button from single product pages. Customize Add to Cart messages.
47
+ * *Add to Cart Button Visibility* - Enable/disable WooCommerce Add to Cart button globally or on per product basis.
48
  * *Admin Products List* - Customize WooCommerce admin products list.
49
  * *Bookings* - Add bookings products to WooCommerce.
50
  * *Cost of Goods* - Save WooCommerce product purchase costs data for admin reports.
51
  * *Crowdfunding* - Add crowdfunding products to WooCommerce.
 
52
  * *Product Addons* - Add (paid/free/discount) addons to WooCommerce products.
53
  * *Product Availability by Date* - WooCommerce product availability by date.
54
  * *Product Availability by Time* - WooCommerce product availability by time.
133
  * *Email Verification* - Add WooCommerce email verification.
134
  * *Export* - WooCommerce export tools.
135
  * *General* - Custom roles tool. Shortcodes in WordPress text widgets.
136
+ * *Modules By User Roles* - Enable/disable Booster for WooCommerce modules by user roles.
137
  * *My Account* - WooCommerce "My Account" page customization.
138
  * *Old Slugs* - Remove old WooCommerce products slugs.
139
  * *Reports* - WooCommerce stock, sales, customers etc. reports.
178
 
179
  == Changelog ==
180
 
181
+ = 3.3.0 - 11/01/2018 =
182
+ * Dev - PRICES & CURRENCIES - Currencies - Belarusian ruble code updated (from `BYR` to `BYN`).
183
+ * Dev - PRICES & CURRENCIES - Currency per Product - Advanced Options - "Save Converted Product Prices in Array" option added.
184
+ * Dev - PRICES & CURRENCIES - Prices and Currencies by Country - "Per product options style" option added.
185
+ * Dev - PRICES & CURRENCIES - Prices and Currencies by Country - Per product settings (`inline`) restyled.
186
+ * Dev - PRICES & CURRENCIES - Prices and Currencies by Country - Groups - "Admin Title" option added.
187
+ * Dev - PRICES & CURRENCIES - Product Open Pricing (Name Your Price) - Admin settings restyled.
188
+ * Dev - PRICES & CURRENCIES - Wholesale Price - "Round single product price" option added.
189
+ * Fix - PRICES & CURRENCIES - Wholesale Price - `wcj_is_product_wholesale_enabled()` - "Products to exclude" option fixed.
190
+ * Dev - BUTTON & PRICE LABELS - Add to Cart Button Labels - Module renamed (was "Add to Cart Labels").
191
+ * Dev - BUTTON & PRICE LABELS - Custom Price Labels - Passing product object to shortcodes (instead of product id).
192
+ * Dev - BUTTON & PRICE LABELS - Custom Price Labels - Admin settings restyled etc.
193
+ * Dev - BUTTON & PRICE LABELS - More Button Labels - "Override Default Text" option added.
194
+ * Dev - PRODUCTS - Add to Cart - "Add to Cart Button Position Options" section added.
195
+ * Dev - PRODUCTS - Add to Cart - Module renamed (was "Product Add to Cart").
196
+ * Dev - PRODUCTS - Add to Cart Button Visibility - Per Product - "Content" options added.
197
+ * Dev - PRODUCTS - Add to Cart Button Visibility - "Per Category" options added.
198
+ * Dev - PRODUCTS - Add to Cart Button Visibility - Initial module release (copied from "Product Add to Cart - Add to Cart Button Disabling").
199
+ * Dev - PRODUCTS - Product Addons - "Quantity" options added.
200
+ * Dev - PRODUCTS - Product Addons - Admin settings minor restyling.
201
+ * Dev - PRODUCTS - Product Visibility by User Role - Settings (meta box) restyled.
202
+ * Dev - PRODUCTS - Products XML Feeds - Admin settings - Minor changes.
203
+ * Dev - CART & CHECKOUT - Cart Custom Info - Admin settings minor restyling.
204
+ * Fix - CART & CHECKOUT - Checkout Core Fields - Override Fields - `required` added to options.
205
+ * Dev - CART & CHECKOUT - Checkout Custom Info - Admin settings minor restyling.
206
+ * Dev - CART & CHECKOUT - Checkout Customization - Customize "Returning customer?" message option added.
207
+ * Dev - CART & CHECKOUT - EU VAT Number - Admin order edit - Customer's VAT number added on admin customer select and on "Load billing address".
208
+ * Dev - CART & CHECKOUT - EU VAT Number - Admin order edit - "Validate VAT and remove taxes" button added.
209
+ * Dev - PAYMENT GATEWAYS - Custom Gateways - Advanced Options - Gateways Input Fields - "Add 'Delete' button" option added.
210
+ * Dev - PAYMENT GATEWAYS - Gateways by Country or State - Admin settings description updated. Minor code refactoring.
211
+ * Fix - PAYMENT GATEWAYS - Gateways by Currency - Admin settings - `$paypal_allowed_currencies_and_names` type fixed (changed to array).
212
+ * Dev - PAYMENT GATEWAYS - Gateways Fees and Discounts - "WooCommerce PayPal Express Checkout Payment Gateway" (by WooCommerce) plugin support added.
213
+ * Dev - SHIPPING & ORDERS - Admin Orders List - Admin settings - Minor restyling.
214
+ * Dev - SHIPPING & ORDERS - Left to Free Shipping - Outputting "You have Free delivery" if free shipping is available without order minimum amount (e.g. coupon).
215
+ * Dev - SHIPPING & ORDERS - Left to Free Shipping - Admin settings - Minor restyling.
216
+ * Fix - SHIPPING & ORDERS - Order Numbers - Orders Renumerate Tool - More info added when sequential number generation is enabled.
217
+ * Fix - SHIPPING & ORDERS - Order Numbers - `add_order_number_meta()` - Bug fixed (when "Number Generation" is set to "Order ID").
218
+ * Dev - SHIPPING & ORDERS - Order Numbers - Admin settings - Minor restyling.
219
+ * Dev - SHIPPING & ORDERS - Order Numbers - "Sequential: Reset Counter" option added.
220
+ * Dev - SHIPPING & ORDERS - Orders - "Country by IP" section added.
221
+ * Dev - PDF INVOICING & PACKING SLIPS - "Advanced" submodule added (some settings moved from "General", "Styling" and "Display & Misc." sections).
222
+ * Dev - PDF INVOICING & PACKING SLIPS - Display - Admin order meta box - Message if no document types are enabled added.
223
+ * Dev - PDF INVOICING & PACKING SLIPS - General - Admin settings minor restyling.
224
+ * Dev - PDF INVOICING & PACKING SLIPS - General - Report Tool Options - Report Columns - "Cart Total Excl. Tax", "Shipping Total Excl. Tax", "Cart Tax", "Shipping Tax", "Cart Tax %", "Shipping Tax %" columns added.
225
+ * Dev - PDF INVOICING & PACKING SLIPS - General - Report Tool Options - "Report Columns" option added.
226
+ * Dev - PDF INVOICING & PACKING SLIPS - General - Report Tool Options - "Tax Percent Precision" option added.
227
+ * Dev - PDF INVOICING & PACKING SLIPS - Templates - Admin settings minor restyling.
228
+ * Dev - EMAILS & MISC. - Admin Tools - Log tool restyled.
229
+ * Dev - EMAILS & MISC. - Admin Tools - "Show Variable Product Pricing Table" option added.
230
+ * Dev - EMAILS & MISC. - Modules By User Roles - Initial module release.
231
+ * Fix - EMAILS & MISC. - Reports - Customers - Flag images fixed.
232
+ * Dev - EMAILS & MISC. - Reports - Customers - Country sets updated.
233
+ * Dev - Shortcodes - General - `[wcj_tcpdf_rectangle]` shortcode added.
234
+ * Dev - Shortcodes - General - `[wcj_tcpdf_barcode]` and `[wcj_barcode]` - Code refactoring (corresponding functions added to `wcj-functions-general.php`).
235
+ * Dev - Shortcodes - Orders - `currency` attribute added to all shortcodes which use `wcj_price_shortcode()` function.
236
+ * Dev - Shortcodes - Orders - `[wcj_order_tcpdf_barcode]` shortcode added.
237
+ * Fix - Shortcodes - Orders - `[wcj_order_items_table]` - `item_subtotal_tax_excl`, `item_subtotal_tax_incl`, `line_subtotal_tax_excl`, `line_subtotal_tax_incl` and `line_subtax` columns fixed for "custom" items (i.e. "shipping and discount as item") for WC from v3.0.0.
238
+ * Dev - Shortcodes - Orders - `[wcj_order_items_table]` - `product_barcode` column added.
239
+ * Dev - Shortcodes - Orders - `[wcj_order_profit]` and `[wcj_order_items_cost]` shortcodes added.
240
+ * Dev - Shortcodes - Products - `[wcj_product_barcode]` shortcode added.
241
+ * Dev - Functions - General - `wcj_tcpdf_barcode()` - Border removed.
242
+ * Dev - Functions - Booster Core - `wcj-functions-core.php` file renamed to `wcj-functions-booster-core.php`.
243
+ * Dev - Functions - "Core" functions file added.
244
+ * Dev - Functions - Exchange Rates - `wcj_get_saved_exchange_rate()` - Returning `1` when `currency_from` equals `currency_to`.
245
+ * Fix - Functions - Price and Currency - `wcj_price_by_product_base_currency()` - Checking if currency exchange rate not equals zero (so no division by zero can happen).
246
+ * Dev - Settings - Readme generator `woojetpack_readme` removed.
247
+ * Dev - Classes - `WCJ_Module` - `create_meta_box()` - Tooltip restyled. Optional `css` attribute added to `title` type.
248
+ * Dev - Core - Options - Code refactoring.
249
+ * Dev - Core - Shortcodes - Code refactoring - Shortcodes objects saved in `WCJ()->shortcodes` array.
250
+ * Dev - Core - `wcj-constants.php` file moved to `core` directory.
251
+ * Dev - Version option name changed. Some filters renamed. "WC tested up to" added to plugin's header.
252
+
253
  = 3.2.4 - 27/12/2017 =
254
  * Dev - PRICES & CURRENCIES - Currencies - More cryptocurrencies added.
255
  * Dev - PRICES & CURRENCIES - Currency Exchange Rates - Secondary "Exchange Rates Server" option added to each currency pair.
woocommerce-jetpack.php CHANGED
@@ -3,12 +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.
6
- Version: 3.2.4
7
  Author: Algoritmika Ltd
8
  Author URI: https://booster.io
9
  Text Domain: woocommerce-jetpack
10
  Domain Path: /langs
11
- Copyright: © 2017 Algoritmika Ltd.
 
12
  License: GNU General Public License v3.0
13
  License URI: http://www.gnu.org/licenses/gpl-3.0.html
14
  */
@@ -17,21 +18,8 @@ if ( ! defined( 'ABSPATH' ) ) {
17
  exit; // Exit if accessed directly
18
  }
19
 
20
- if ( ! function_exists( 'wcj_is_plugin_active' ) ) {
21
- /**
22
- * wcj_is_plugin_active.
23
- *
24
- * @version 2.8.0
25
- * @since 2.8.0
26
- * @return bool
27
- */
28
- function wcj_is_plugin_active( $plugin ) {
29
- return (
30
- in_array( $plugin, apply_filters( 'active_plugins', get_option( 'active_plugins', array() ) ) ) ||
31
- ( is_multisite() && array_key_exists( $plugin, get_site_option( 'active_sitewide_plugins', array() ) ) )
32
- );
33
- }
34
- }
35
 
36
  // Check if WooCommerce is active
37
  if ( ! wcj_is_plugin_active( 'woocommerce/woocommerce.php' ) ) {
@@ -69,7 +57,7 @@ final class WC_Jetpack {
69
  * @var string
70
  * @since 2.4.7
71
  */
72
- public $version = '3.2.4';
73
 
74
  /**
75
  * @var WC_Jetpack The single instance of the class
3
  Plugin Name: Booster for WooCommerce
4
  Plugin URI: https://booster.io
5
  Description: Supercharge your WooCommerce site with these awesome powerful features.
6
+ Version: 3.3.0
7
  Author: Algoritmika Ltd
8
  Author URI: https://booster.io
9
  Text Domain: woocommerce-jetpack
10
  Domain Path: /langs
11
+ Copyright: © 2018 Algoritmika Ltd.
12
+ WC tested up to: 3.2
13
  License: GNU General Public License v3.0
14
  License URI: http://www.gnu.org/licenses/gpl-3.0.html
15
  */
18
  exit; // Exit if accessed directly
19
  }
20
 
21
+ // Core functions
22
+ require_once( 'includes/functions/wcj-functions-core.php' );
 
 
 
 
 
 
 
 
 
 
 
 
 
23
 
24
  // Check if WooCommerce is active
25
  if ( ! wcj_is_plugin_active( 'woocommerce/woocommerce.php' ) ) {
57
  * @var string
58
  * @since 2.4.7
59
  */
60
+ public $version = '3.3.0';
61
 
62
  /**
63
  * @var WC_Jetpack The single instance of the class