Version Description
16/11/2022 =
- FIXED - CART & CHECKOUT - EU VAT Number - Replace endpoint to validate EU VAT number for without soap method.
- FIXED - CART & CHECKOUT - EU VAT Number - Fixed tools UI.
- FIXED - EMAILS & MISC. - Admin Tools - Fixed admin order page issue when order item value is array.
- FIXED - EMAILS & MISC. - Reports - Fixed Product Sales (Monthly) report not highlight selected year.
- FIXED - BUTTON & PRICE LABELS - Custom Price Labels- Escape the HTML content from the "per page product meta box" value.
- FIXED - SHIPPING & ORDERS- Order Quantities - Fixed Maximum allowed quantity issue.
- FIXED - Added Security vulnerability fixes - Multiple CSRF.
- FIXED - Added Security vulnerability fixes.
- FIXED - Current timestamp issue - Created new function wcj_get_timestamp_date_from_gmt() and replace with gmdate( 'U' ).
- FIXED - PHP Warning: asort() expects parameter 1 to be array, string given in .../includes/shortcodes/class-wcj-general-shortcodes.php on line 501
- WooCommerce 7.1.0 tested
- WordPress 6.1 Tested
Download this release
Release Info
Developer | ronyp |
Plugin | Booster for WooCommerce |
Version | 5.6.8 |
Comparing to | |
See all releases |
Code changes from version 5.6.7 to 5.6.8
- includes/add-to-cart/class-wcj-add-to-cart-per-product.php +4 -4
- includes/admin/class-wc-settings-jetpack.php +46 -35
- includes/admin/class-wcj-settings-custom-fields.php +10 -13
- includes/admin/class-wcj-settings-manager.php +23 -8
- includes/admin/class-wcj-tools.php +12 -15
- includes/admin/class-wcj-welcome.php +6 -12
- includes/admin/wcj-welcome-screen-content.php +2 -2
- includes/class-wcj-admin-bar.php +14 -14
- includes/class-wcj-admin-orders-list.php +17 -24
- includes/class-wcj-admin-tools.php +8 -4
- includes/class-wcj-checkout-custom-fields.php +4 -3
- includes/class-wcj-checkout-files-upload.php +4 -4
- includes/class-wcj-coupon-by-user-role.php +2 -3
- includes/class-wcj-coupon-code-generator.php +5 -8
- includes/class-wcj-cross-sells.php +15 -11
- includes/class-wcj-crowdfunding.php +8 -8
- includes/class-wcj-currency-exchange-rates.php +12 -7
- includes/class-wcj-currency-per-product.php +5 -7
- includes/class-wcj-custom-php.php +11 -7
- includes/class-wcj-debug-tools.php +3 -6
- includes/class-wcj-emails-verification.php +16 -16
- includes/class-wcj-eu-vat-number.php +20 -14
- includes/class-wcj-export-import.php +18 -31
- includes/class-wcj-general.php +3 -3
- includes/class-wcj-global-discount.php +3 -3
- includes/class-wcj-max-products-per-user.php +8 -6
- includes/class-wcj-multicurrency-product-base-price.php +22 -18
- includes/class-wcj-multicurrency.php +11 -16
- includes/class-wcj-my-account.php +16 -12
- includes/class-wcj-offer-price.php +32 -40
- includes/class-wcj-old-slugs.php +4 -4
- includes/class-wcj-order-numbers.php +8 -10
- includes/class-wcj-order-quantities.php +4 -4
- includes/class-wcj-orders.php +33 -3
- includes/class-wcj-payment-gateways-by-country.php +10 -8
- includes/class-wcj-payment-gateways-fees.php +7 -5
- includes/class-wcj-payment-gateways.php +10 -9
- includes/class-wcj-pdf-invoicing.php +12 -10
- includes/class-wcj-price-by-user-role.php +4 -4
- includes/class-wcj-price-labels.php +6 -6
- includes/class-wcj-product-add-to-cart.php +5 -8
- includes/class-wcj-product-addons.php +29 -20
- includes/class-wcj-product-bookings.php +28 -24
- includes/class-wcj-product-bulk-meta-editor.php +29 -20
- includes/class-wcj-product-bulk-price-converter.php +28 -36
- includes/class-wcj-product-by-country.php +8 -6
- includes/class-wcj-product-by-date.php +3 -3
- includes/class-wcj-product-by-time.php +3 -4
- includes/class-wcj-product-by-user-role.php +3 -3
- includes/class-wcj-product-by-user.php +25 -11
- includes/class-wcj-product-custom-visibility.php +3 -6
- includes/class-wcj-product-msrp.php +8 -7
- includes/class-wcj-product-open-pricing.php +22 -25
- includes/class-wcj-product-price-by-formula.php +23 -14
- includes/class-wcj-product-tabs.php +10 -10
- includes/class-wcj-products-xml.php +20 -18
- includes/class-wcj-purchase-data.php +4 -6
- includes/class-wcj-related-products.php +16 -37
- includes/class-wcj-reports.php +26 -23
- includes/class-wcj-shipping-by-cities.php +14 -8
- includes/class-wcj-shipping-by-time.php +3 -3
- includes/class-wcj-shipping-by-user-role.php +3 -3
- includes/class-wcj-shipping.php +4 -4
- includes/class-wcj-sku.php +6 -9
- includes/class-wcj-sorting.php +8 -8
- includes/class-wcj-template-editor.php +6 -3
- includes/class-wcj-track-users.php +45 -29
- includes/class-wcj-wpml.php +5 -4
- includes/classes/class-wcj-dummy-term.php +37 -0
- includes/classes/class-wcj-invoice.php +3 -3
- includes/classes/class-wcj-module.php +7 -9
- includes/core/class-wcj-admin.php +8 -8
- includes/css/wcj-admin.css +5 -1
- includes/exchange-rates/class-wcj-exchange-rates.php +3 -2
- includes/export/class-wcj-exporter-orders.php +5 -11
- includes/functions/wcj-functions-admin.php +6 -8
- includes/functions/wcj-functions-date-time.php +37 -5
- includes/functions/wcj-functions-eu-vat.php +17 -9
- includes/functions/wcj-functions-general.php +33 -16
- includes/functions/wcj-functions-html.php +10 -3
- includes/functions/wcj-functions-invoicing.php +12 -9
- includes/functions/wcj-functions-reports.php +5 -5
- includes/gateways/{class-wc-gateway-wcj-custom.php → class-wc-gateway-wcj-custom-template.php} +7 -7
- includes/input-fields/class-wcj-product-input-fields-core.php +17 -25
- includes/js/wcj-ajax-exchange-rates.js +3 -2
- includes/js/wcj-bookings.js +4 -2
- includes/js/wcj-eu-vat-number.js +2 -1
- includes/js/wcj-product-addons.js +3 -1
- includes/js/wcj-track-users.js +2 -1
- includes/pdf-invoices/class-wcj-pdf-invoicing-renumerate-tool.php +8 -4
- includes/pdf-invoices/class-wcj-pdf-invoicing-report-tool.php +8 -8
- includes/pdf-invoices/submodules/class-wcj-pdf-invoicing-styling.php +6 -9
- includes/pdf-invoices/submodules/class-wcj-pdf-invoicing-templates.php +3 -3
- includes/price-by-country/class-wcj-price-by-country-core.php +17 -23
- includes/price-by-country/class-wcj-price-by-country-group-generator.php +9 -12
- includes/price-by-country/class-wcj-price-by-country-local.php +2 -2
- includes/reports/class-wcj-currency-reports.php +15 -12
- includes/reports/class-wcj-reports-monthly-sales.php +4 -7
- includes/reports/class-wcj-reports-product-sales-daily.php +13 -12
- includes/reports/{wcj-class-reports-sales-gateways.php → class-wcj-reports-sales-gateways.php} +20 -24
- includes/reports/class-wcj-reports-sales.php +19 -23
- includes/reports/class-wcj-reports-stock.php +3 -3
- includes/settings/pdf-invoicing/wcj-content-template-credit_note.html +60 -0
- includes/settings/pdf-invoicing/wcj-content-template-credit_note.php +0 -34
- includes/settings/pdf-invoicing/wcj-content-template-custom_doc.html +64 -0
- includes/settings/pdf-invoicing/wcj-content-template-custom_doc.php +0 -35
- includes/settings/pdf-invoicing/wcj-content-template-invoice.html +56 -0
- includes/settings/pdf-invoicing/wcj-content-template-invoice.php +0 -33
- includes/settings/pdf-invoicing/wcj-content-template-packing_slip.html +44 -0
- includes/settings/pdf-invoicing/wcj-content-template-packing_slip.php +0 -28
- includes/settings/pdf-invoicing/wcj-content-template-proforma_invoice.html +56 -0
- includes/settings/pdf-invoicing/wcj-content-template-proforma_invoice.php +0 -33
- includes/settings/wcj-settings-admin-orders-list.php +2 -2
- includes/settings/wcj-settings-checkout-files-upload.php +3 -3
- includes/settings/wcj-settings-currency-per-product.php +2 -2
- includes/settings/wcj-settings-debug-tools.php +10 -2
- includes/settings/wcj-settings-max-products-per-user.php +2 -2
- includes/settings/wcj-settings-multicurrency-base-price.php +2 -2
- includes/settings/wcj-settings-multicurrency.php +3 -3
- includes/settings/wcj-settings-order-min-amount.php +2 -2
- includes/settings/wcj-settings-payment-gateways-by-user-role.php +2 -2
- includes/settings/wcj-settings-payment-gateways-currency.php +2 -2
- includes/settings/wcj-settings-pdf-invoicing-advanced.php +9 -2
- includes/settings/wcj-settings-pdf-invoicing-header.php +2 -2
- includes/settings/wcj-settings-pdf-invoicing-page.php +2 -2
- includes/settings/wcj-settings-price-by-country.php +12 -4
- includes/settings/wcj-settings-price-by-user-role.php +2 -2
- includes/settings/wcj-settings-product-by-user.php +2 -2
- includes/settings/wcj-settings-related-products.php +2 -2
- includes/settings/wcj-settings-shipping-options.php +2 -2
- includes/settings/wcj-settings-url-coupons.php +2 -2
- includes/shipping/class-wc-shipping-wcj-custom-with-shipping-zones.php +6 -6
- includes/shortcodes/class-wcj-general-shortcodes.php +17 -15
- includes/shortcodes/class-wcj-invoices-shortcodes.php +5 -7
- includes/shortcodes/class-wcj-orders-shortcodes.php +8 -6
- includes/shortcodes/class-wcj-products-add-form-shortcodes.php +5 -7
- includes/shortcodes/class-wcj-products-crowdfunding-shortcodes.php +5 -5
- includes/shortcodes/class-wcj-products-shortcodes.php +5 -5
- includes/tools/class-wcj-eu-countries-vat-rates-tool.php +21 -18
- langs/woocommerce-jetpack.pot +754 -760
- readme.txt +18 -3
- tracking/README.md +0 -1
- tracking/class-example-settings.php +0 -203
- tracking/class-plugin-usage-tracker.php +138 -67
- version-details.json +6 -4
- woocommerce-jetpack.php +4 -4
includes/add-to-cart/class-wcj-add-to-cart-per-product.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce Add to Cart per Product
|
4 |
*
|
5 |
-
* @version 5.6.
|
6 |
* @author Pluggabl LLC.
|
7 |
* @package Booster_For_WooCommerce/includes
|
8 |
*/
|
@@ -71,15 +71,15 @@ if ( ! class_exists( 'WCJ_Add_To_Cart_Per_Product' ) ) :
|
|
71 |
/**
|
72 |
* Save_custom_add_to_cart_meta_box.
|
73 |
*
|
74 |
-
* @version 5.6.
|
75 |
*
|
76 |
* @param int $post_id Get post Id.
|
77 |
* @param Array $post Get post.
|
78 |
*/
|
79 |
public function save_custom_add_to_cart_meta_box( $post_id, $post ) {
|
80 |
-
$
|
81 |
// Check that we are saving with custom add to cart metabox displayed.
|
82 |
-
if ( ! $
|
83 |
return;
|
84 |
}
|
85 |
$option_name = 'wcj_custom_add_to_cart_local_single';
|
2 |
/**
|
3 |
* Booster for WooCommerce Add to Cart per Product
|
4 |
*
|
5 |
+
* @version 5.6.8
|
6 |
* @author Pluggabl LLC.
|
7 |
* @package Booster_For_WooCommerce/includes
|
8 |
*/
|
71 |
/**
|
72 |
* Save_custom_add_to_cart_meta_box.
|
73 |
*
|
74 |
+
* @version 5.6.8
|
75 |
*
|
76 |
* @param int $post_id Get post Id.
|
77 |
* @param Array $post Get post.
|
78 |
*/
|
79 |
public function save_custom_add_to_cart_meta_box( $post_id, $post ) {
|
80 |
+
$wpnonce = isset( $_POST['woocommerce_meta_nonce'] ) ? wp_verify_nonce( sanitize_text_field( wp_unslash( $_POST['woocommerce_meta_nonce'] ) ), 'woocommerce_save_data' ) : false;
|
81 |
// Check that we are saving with custom add to cart metabox displayed.
|
82 |
+
if ( ! $wpnonce || ! isset( $_POST['woojetpack_custom_add_to_cart_save_post'] ) ) {
|
83 |
return;
|
84 |
}
|
85 |
$option_name = 'wcj_custom_add_to_cart_local_single';
|
includes/admin/class-wc-settings-jetpack.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Settings
|
4 |
*
|
5 |
-
* @version 5.6.
|
6 |
* @since 1.0.0
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/admin
|
@@ -25,7 +25,7 @@ if ( ! class_exists( 'WC_Settings_Jetpack' ) ) :
|
|
25 |
/**
|
26 |
* Constructor.
|
27 |
*
|
28 |
-
* @version 5.
|
29 |
*/
|
30 |
public function __construct() {
|
31 |
|
@@ -52,10 +52,30 @@ if ( ! class_exists( 'WC_Settings_Jetpack' ) ) :
|
|
52 |
add_action( 'woocommerce_after_settings_' . $this->id, array( $this, 'create_pro_version_footer_review_notice' ) );
|
53 |
|
54 |
add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_admin_script' ) );
|
55 |
-
|
56 |
require_once 'class-wcj-settings-custom-fields.php';
|
57 |
}
|
58 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
59 |
/**
|
60 |
* Wcj_new_desing_dashboard.
|
61 |
*
|
@@ -63,9 +83,9 @@ if ( ! class_exists( 'WC_Settings_Jetpack' ) ) :
|
|
63 |
* @since 5.5.6
|
64 |
*/
|
65 |
public function wcj_new_desing_dashboard() {
|
66 |
-
$wpnonce =
|
67 |
-
if (
|
68 |
-
|
69 |
}
|
70 |
if ( $wpnonce && isset( $_GET['tab'] ) && 'jetpack' === $_GET['tab'] ) {
|
71 |
wp_enqueue_style( 'wcj-admin-wcj-new_desing', wcj_plugin_url() . '/includes/css/admin-style.css', array(), w_c_j()->version );
|
@@ -337,7 +357,7 @@ if ( ! class_exists( 'WC_Settings_Jetpack' ) ) :
|
|
337 |
/**
|
338 |
* Output the settings.
|
339 |
*
|
340 |
-
* @version 5.6.
|
341 |
* @todo (maybe) admin_notices
|
342 |
*/
|
343 |
public function output() {
|
@@ -360,7 +380,7 @@ if ( ! class_exists( 'WC_Settings_Jetpack' ) ) :
|
|
360 |
/* translators: %s: search term */
|
361 |
__( 'Please note that current <em>%1$s</em> module is deprecated and will be removed in future updates. Please use <em>%2$s</em> module instead.', 'woocommerce-jetpack' ),
|
362 |
w_c_j()->modules[ $current_section ]->short_desc,
|
363 |
-
'<a href="' . admin_url( '
|
364 |
$replacement_module['title'] . '</a>'
|
365 |
)
|
366 |
);
|
@@ -399,10 +419,7 @@ if ( ! class_exists( 'WC_Settings_Jetpack' ) ) :
|
|
399 |
break;
|
400 |
}
|
401 |
}
|
402 |
-
$wpnonce =
|
403 |
-
if ( function_exists( 'wp_verify_nonce' ) ) {
|
404 |
-
$wpnonce = isset( $_REQUEST['_wpnonce'] ) ? wp_verify_nonce( sanitize_key( isset( $_REQUEST['_wpnonce'] ) ? $_REQUEST['_wpnonce'] : '' ) ) : true;
|
405 |
-
}
|
406 |
if ( $wpnonce && $is_dashboard && isset( $_GET['wcj-cat'] ) && 'dashboard' !== $_GET['wcj-cat'] ) {
|
407 |
$breadcrumbs_html .= $this->cats[ sanitize_text_field( wp_unslash( $_GET['wcj-cat'] ) ) ]['label'];
|
408 |
}
|
@@ -429,7 +446,7 @@ if ( ! class_exists( 'WC_Settings_Jetpack' ) ) :
|
|
429 |
/**
|
430 |
* Output_dashboard.
|
431 |
*
|
432 |
-
* @version 5.6.
|
433 |
* @param array $current_section defines the current section.
|
434 |
*/
|
435 |
public function output_dashboard( $current_section ) {
|
@@ -456,11 +473,11 @@ if ( ! class_exists( 'WC_Settings_Jetpack' ) ) :
|
|
456 |
if ( 'dashboard' === $cat_id ) {
|
457 |
continue;
|
458 |
}
|
459 |
-
$wpnonce =
|
460 |
-
if (
|
461 |
-
|
462 |
}
|
463 |
-
if (
|
464 |
if ( $cat_id !== $_GET['wcj-cat'] ) {
|
465 |
continue;
|
466 |
}
|
@@ -562,7 +579,7 @@ if ( ! class_exists( 'WC_Settings_Jetpack' ) ) :
|
|
562 |
/**
|
563 |
* Output_dashboard_modules.
|
564 |
*
|
565 |
-
* @version 5.6.
|
566 |
* @param array $settings this defines title.
|
567 |
* @param string $cat_id this defines title.
|
568 |
*/
|
@@ -620,7 +637,7 @@ if ( ! class_exists( 'WC_Settings_Jetpack' ) ) :
|
|
620 |
$html .= '</th>';
|
621 |
$html .= '<td class="plugin-title"><strong>' . $the_feature['title'] . '</strong>';
|
622 |
$html .= '<div class="row-actions visible">';
|
623 |
-
$html .= '<span class="0"><a href="' . admin_url() . '
|
624 |
if ( isset( $the_feature['wcj_link'] ) && '' !== $the_feature['wcj_link'] ) {
|
625 |
$html .= ' | <span class="0"><a href="' . $the_feature['wcj_link'] . '?utm_source=module_documentation&utm_medium=dashboard_link&utm_campaign=booster_documentation" target="_blank">' . __( 'Documentation', 'woocommerce' ) . '</a></span>';
|
626 |
}
|
@@ -662,7 +679,7 @@ if ( ! class_exists( 'WC_Settings_Jetpack' ) ) :
|
|
662 |
/**
|
663 |
* Disable_autoload_options.
|
664 |
*
|
665 |
-
* @version 5.6.
|
666 |
* @since 5.3.3
|
667 |
*
|
668 |
* @param array $settings defines the settings.
|
@@ -676,7 +693,7 @@ if ( ! class_exists( 'WC_Settings_Jetpack' ) ) :
|
|
676 |
global $wpdb;
|
677 |
|
678 |
if ( count( $field_ids ) > 0 ) {
|
679 |
-
$wpdb->query( $wpdb->prepare( "UPDATE {$wpdb->options} SET autoload = 'no' WHERE option_name IN (" . implode( ', ', array_fill( 0, count( $field_ids ), '%s' ) ) . ") AND autoload != 'no'", $field_ids ) ); //
|
680 |
}
|
681 |
}
|
682 |
|
@@ -775,7 +792,7 @@ if ( ! class_exists( 'WC_Settings_Jetpack' ) ) :
|
|
775 |
/**
|
776 |
* Get settings array
|
777 |
*
|
778 |
-
* @version 5.6.
|
779 |
* @param array $current_section defines the current section array.
|
780 |
* @return array $current_section defines the current section.
|
781 |
*/
|
@@ -787,10 +804,7 @@ if ( ! class_exists( 'WC_Settings_Jetpack' ) ) :
|
|
787 |
} elseif ( isset( $this->custom_dashboard_modules[ $current_section ] ) ) {
|
788 |
return $this->custom_dashboard_modules[ $current_section ]['settings'];
|
789 |
} else {
|
790 |
-
$wpnonce
|
791 |
-
if ( function_exists( 'wp_verify_nonce' ) ) {
|
792 |
-
$wpnonce = isset( $_REQUEST['_wpnonce'] ) ? wp_verify_nonce( sanitize_key( isset( $_REQUEST['_wpnonce'] ) ? $_REQUEST['_wpnonce'] : '' ), 'woocommerce-settings' ) : true;
|
793 |
-
}
|
794 |
$cat_id = $wpnonce && ( isset( $_GET['wcj-cat'] ) && '' !== $_GET['wcj-cat'] ) ? sanitize_text_field( wp_unslash( $_GET['wcj-cat'] ) ) : 'dashboard';
|
795 |
$settings[] = array(
|
796 |
'title' => __( 'Booster for WooCommerce', 'woocommerce-jetpack' ) . ' - ' . $this->cats[ $cat_id ]['label'],
|
@@ -857,18 +871,15 @@ if ( ! class_exists( 'WC_Settings_Jetpack' ) ) :
|
|
857 |
/**
|
858 |
* Dasboard_menu.
|
859 |
*
|
860 |
-
* @version 5.6.
|
861 |
*/
|
862 |
public function dasboard_menu() {
|
863 |
global $current_section;
|
864 |
-
$wpnonce
|
865 |
-
|
866 |
-
|
867 |
-
|
868 |
-
|
869 |
-
$_wcj_cat = $wpnonce && isset( $_GET['wcj-cat'] ) ? sanitize_text_field( wp_unslash( $_GET['wcj-cat'] ) ) : '';
|
870 |
-
$_wcj_tab = $wpnonce && isset( $_GET['tab'] ) ? sanitize_text_field( wp_unslash( $_GET['tab'] ) ) : '';
|
871 |
-
if ( 'jetpack' === $_wcj_tab && ( '' === $_section || 'by_category' === $_section ) && ( '' === $_wcj_cat || 'dashboard' === $_wcj_cat ) ) {
|
872 |
?>
|
873 |
<style>
|
874 |
button.button-primary.woocommerce-save-button {
|
2 |
/**
|
3 |
* Booster for WooCommerce - Settings
|
4 |
*
|
5 |
+
* @version 5.6.8
|
6 |
* @since 1.0.0
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/admin
|
25 |
/**
|
26 |
* Constructor.
|
27 |
*
|
28 |
+
* @version 5.6.8
|
29 |
*/
|
30 |
public function __construct() {
|
31 |
|
52 |
add_action( 'woocommerce_after_settings_' . $this->id, array( $this, 'create_pro_version_footer_review_notice' ) );
|
53 |
|
54 |
add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_admin_script' ) );
|
55 |
+
add_action( 'admin_footer', array( $this, 'update_booster_tab_link' ), PHP_INT_MAX );
|
56 |
require_once 'class-wcj-settings-custom-fields.php';
|
57 |
}
|
58 |
|
59 |
+
/**
|
60 |
+
* Update_booster_tab_link.
|
61 |
+
*
|
62 |
+
* @version 5.6.7
|
63 |
+
*/
|
64 |
+
public function update_booster_tab_link() {
|
65 |
+
?>
|
66 |
+
<script type="text/javascript">
|
67 |
+
jQuery(function ($) {
|
68 |
+
var selector = $('.woocommerce #mainform .woo-nav-tab-wrapper a');
|
69 |
+
$( selector ).each(function( index ) {
|
70 |
+
if( this.text == 'Booster' && this.href.split("&").pop() == 'tab=jetpack' ){
|
71 |
+
this.href = this.href + '&wcj-cat-nonce=' + "<?php echo esc_html( wp_create_nonce( 'wcj-cat-nonce' ) ); ?>";
|
72 |
+
}
|
73 |
+
})
|
74 |
+
});
|
75 |
+
</script>
|
76 |
+
<?php
|
77 |
+
}
|
78 |
+
|
79 |
/**
|
80 |
* Wcj_new_desing_dashboard.
|
81 |
*
|
83 |
* @since 5.5.6
|
84 |
*/
|
85 |
public function wcj_new_desing_dashboard() {
|
86 |
+
$wpnonce = isset( $_REQUEST['wcj-cat-nonce'] ) ? wp_verify_nonce( sanitize_key( $_REQUEST['wcj-cat-nonce'] ), 'wcj-cat-nonce' ) : false;
|
87 |
+
if ( ! $wpnonce && isset( $_GET['tab'] ) && 'jetpack' === $_GET['tab'] ) {
|
88 |
+
wp_safe_redirect( admin_url( 'admin.php?page=wc-settings' ) );
|
89 |
}
|
90 |
if ( $wpnonce && isset( $_GET['tab'] ) && 'jetpack' === $_GET['tab'] ) {
|
91 |
wp_enqueue_style( 'wcj-admin-wcj-new_desing', wcj_plugin_url() . '/includes/css/admin-style.css', array(), w_c_j()->version );
|
357 |
/**
|
358 |
* Output the settings.
|
359 |
*
|
360 |
+
* @version 5.6.8
|
361 |
* @todo (maybe) admin_notices
|
362 |
*/
|
363 |
public function output() {
|
380 |
/* translators: %s: search term */
|
381 |
__( 'Please note that current <em>%1$s</em> module is deprecated and will be removed in future updates. Please use <em>%2$s</em> module instead.', 'woocommerce-jetpack' ),
|
382 |
w_c_j()->modules[ $current_section ]->short_desc,
|
383 |
+
'<a href="' . admin_url( wcj_admin_tab_url() . '&wcj-cat=' . $replacement_module['cat'] . '§ion=' . $replacement_module['module'] ) . '">' .
|
384 |
$replacement_module['title'] . '</a>'
|
385 |
)
|
386 |
);
|
419 |
break;
|
420 |
}
|
421 |
}
|
422 |
+
$wpnonce = isset( $_REQUEST['wcj-cat-nonce'] ) ? wp_verify_nonce( sanitize_key( $_REQUEST['wcj-cat-nonce'] ), 'wcj-cat-nonce' ) : false;
|
|
|
|
|
|
|
423 |
if ( $wpnonce && $is_dashboard && isset( $_GET['wcj-cat'] ) && 'dashboard' !== $_GET['wcj-cat'] ) {
|
424 |
$breadcrumbs_html .= $this->cats[ sanitize_text_field( wp_unslash( $_GET['wcj-cat'] ) ) ]['label'];
|
425 |
}
|
446 |
/**
|
447 |
* Output_dashboard.
|
448 |
*
|
449 |
+
* @version 5.6.8
|
450 |
* @param array $current_section defines the current section.
|
451 |
*/
|
452 |
public function output_dashboard( $current_section ) {
|
473 |
if ( 'dashboard' === $cat_id ) {
|
474 |
continue;
|
475 |
}
|
476 |
+
$wpnonce = isset( $_REQUEST['wcj-cat-nonce'] ) ? wp_verify_nonce( sanitize_key( $_REQUEST['wcj-cat-nonce'] ), 'wcj-cat-nonce' ) : false;
|
477 |
+
if ( ! $wpnonce ) {
|
478 |
+
continue;
|
479 |
}
|
480 |
+
if ( isset( $_GET['wcj-cat'] ) && 'dashboard' !== $_GET['wcj-cat'] ) {
|
481 |
if ( $cat_id !== $_GET['wcj-cat'] ) {
|
482 |
continue;
|
483 |
}
|
579 |
/**
|
580 |
* Output_dashboard_modules.
|
581 |
*
|
582 |
+
* @version 5.6.8
|
583 |
* @param array $settings this defines title.
|
584 |
* @param string $cat_id this defines title.
|
585 |
*/
|
637 |
$html .= '</th>';
|
638 |
$html .= '<td class="plugin-title"><strong>' . $the_feature['title'] . '</strong>';
|
639 |
$html .= '<div class="row-actions visible">';
|
640 |
+
$html .= '<span class="0"><a href="' . admin_url() . wcj_admin_tab_url() . '&wcj-cat=' . $this->get_cat_by_section( $section ) . '§ion=' . $section . '">' . __( 'Settings', 'woocommerce' ) . '</a></span>';
|
641 |
if ( isset( $the_feature['wcj_link'] ) && '' !== $the_feature['wcj_link'] ) {
|
642 |
$html .= ' | <span class="0"><a href="' . $the_feature['wcj_link'] . '?utm_source=module_documentation&utm_medium=dashboard_link&utm_campaign=booster_documentation" target="_blank">' . __( 'Documentation', 'woocommerce' ) . '</a></span>';
|
643 |
}
|
679 |
/**
|
680 |
* Disable_autoload_options.
|
681 |
*
|
682 |
+
* @version 5.6.8
|
683 |
* @since 5.3.3
|
684 |
*
|
685 |
* @param array $settings defines the settings.
|
693 |
global $wpdb;
|
694 |
|
695 |
if ( count( $field_ids ) > 0 ) {
|
696 |
+
$wpdb->query( $wpdb->prepare( "UPDATE {$wpdb->options} SET autoload = 'no' WHERE option_name IN (" . implode( ', ', array_fill( 0, count( $field_ids ), '%s' ) ) . ") AND autoload != 'no'", $field_ids ) ); // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching
|
697 |
}
|
698 |
}
|
699 |
|
792 |
/**
|
793 |
* Get settings array
|
794 |
*
|
795 |
+
* @version 5.6.8
|
796 |
* @param array $current_section defines the current section array.
|
797 |
* @return array $current_section defines the current section.
|
798 |
*/
|
804 |
} elseif ( isset( $this->custom_dashboard_modules[ $current_section ] ) ) {
|
805 |
return $this->custom_dashboard_modules[ $current_section ]['settings'];
|
806 |
} else {
|
807 |
+
$wpnonce = isset( $_REQUEST['wcj-cat-nonce'] ) ? wp_verify_nonce( sanitize_key( $_REQUEST['wcj-cat-nonce'] ), 'wcj-cat-nonce' ) : false;
|
|
|
|
|
|
|
808 |
$cat_id = $wpnonce && ( isset( $_GET['wcj-cat'] ) && '' !== $_GET['wcj-cat'] ) ? sanitize_text_field( wp_unslash( $_GET['wcj-cat'] ) ) : 'dashboard';
|
809 |
$settings[] = array(
|
810 |
'title' => __( 'Booster for WooCommerce', 'woocommerce-jetpack' ) . ' - ' . $this->cats[ $cat_id ]['label'],
|
871 |
/**
|
872 |
* Dasboard_menu.
|
873 |
*
|
874 |
+
* @version 5.6.8
|
875 |
*/
|
876 |
public function dasboard_menu() {
|
877 |
global $current_section;
|
878 |
+
$wpnonce = isset( $_REQUEST['wcj-cat-nonce'] ) ? wp_verify_nonce( sanitize_key( $_REQUEST['wcj-cat-nonce'] ), 'wcj-cat-nonce' ) : false;
|
879 |
+
$_section = isset( $_GET['section'] ) ? sanitize_text_field( wp_unslash( $_GET['section'] ) ) : '';
|
880 |
+
$_wcj_cat = isset( $_GET['wcj-cat'] ) ? sanitize_text_field( wp_unslash( $_GET['wcj-cat'] ) ) : '';
|
881 |
+
$_wcj_tab = isset( $_GET['tab'] ) ? sanitize_text_field( wp_unslash( $_GET['tab'] ) ) : '';
|
882 |
+
if ( $wpnonce && 'jetpack' === $_wcj_tab && ( '' === $_section || 'by_category' === $_section ) && ( '' === $_wcj_cat || 'dashboard' === $_wcj_cat ) ) {
|
|
|
|
|
|
|
883 |
?>
|
884 |
<style>
|
885 |
button.button-primary.woocommerce-save-button {
|
includes/admin/class-wcj-settings-custom-fields.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Settings Custom Fields
|
4 |
*
|
5 |
-
* @version 5.6.
|
6 |
* @since 2.8.0
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/admin
|
@@ -249,7 +249,7 @@ if ( ! class_exists( 'WCJ_Settings_Custom_Fields' ) ) :
|
|
249 |
/**
|
250 |
* Output_custom_textarea.
|
251 |
*
|
252 |
-
* @version 5.6.
|
253 |
* @since 2.2.6
|
254 |
* @param Array $value Get values.
|
255 |
*/
|
@@ -258,14 +258,14 @@ if ( ! class_exists( 'WCJ_Settings_Custom_Fields' ) ) :
|
|
258 |
$custom_attributes = ( isset( $value['custom_attributes'] ) && is_array( $value['custom_attributes'] ) ) ?
|
259 |
$value['custom_attributes'] : array();
|
260 |
$description = ' <p class="description">' . $value['desc'] . '</p>';
|
261 |
-
$tooltip_html = ( isset( $value['desc_tip'] ) && '' !== $value['desc_tip'] ) ?
|
262 |
'<span class="woocommerce-help-tip" data-tip="' . $value['desc_tip'] . '"></span>' : '';
|
263 |
// Output.
|
264 |
?>
|
265 |
<tr valign="top">
|
266 |
<th scope="row" class="titledesc">
|
267 |
<label for="<?php echo esc_attr( $value['id'] ); ?>"><?php echo esc_html( $value['title'] ); ?></label>
|
268 |
-
<?php echo $tooltip_html;
|
269 |
</th>
|
270 |
<td class="forminp forminp-<?php echo wp_kses_post( $value['type'] ); ?>">
|
271 |
<?php echo wp_kses_post( $description ); ?>
|
@@ -286,7 +286,7 @@ if ( ! class_exists( 'WCJ_Settings_Custom_Fields' ) ) :
|
|
286 |
/**
|
287 |
* Output_module_tools.
|
288 |
*
|
289 |
-
* @version 5.6.
|
290 |
* @since 2.2.3
|
291 |
* @param Array $value Get values.
|
292 |
*/
|
@@ -299,10 +299,7 @@ if ( ! class_exists( 'WCJ_Settings_Custom_Fields' ) ) :
|
|
299 |
</th>
|
300 |
<td class="forminp forminp-<?php echo wp_kses_post( $value['type'] ); ?>">
|
301 |
<?php
|
302 |
-
$wpnonce =
|
303 |
-
if ( function_exists( 'wp_verify_nonce' ) ) {
|
304 |
-
$wpnonce = isset( $_REQUEST['_wpnonce'] ) ? wp_verify_nonce( sanitize_key( isset( $_REQUEST['_wpnonce'] ) ? $_REQUEST['_wpnonce'] : '' ), 'woocommerce-settings' ) : true;
|
305 |
-
}
|
306 |
if ( $wpnonce && isset( $_GET['section'] ) ) {
|
307 |
do_action( 'wcj_module_tools_' . sanitize_text_field( wp_unslash( $_GET['section'] ) ) );}
|
308 |
?>
|
@@ -314,12 +311,12 @@ if ( ! class_exists( 'WCJ_Settings_Custom_Fields' ) ) :
|
|
314 |
/**
|
315 |
* Output_custom_link.
|
316 |
*
|
317 |
-
* @version
|
318 |
* @since 2.2.8
|
319 |
* @param Array $value Get values.
|
320 |
*/
|
321 |
public function output_custom_link( $value ) {
|
322 |
-
$tooltip_html = ( isset( $value['desc_tip'] ) && '' !== $value['desc_tip'] ) ?
|
323 |
'<span class="woocommerce-help-tip" data-tip="' . $value['desc_tip'] . '"></span>' : '';
|
324 |
?>
|
325 |
<tr valign="top">
|
@@ -336,13 +333,13 @@ if ( ! class_exists( 'WCJ_Settings_Custom_Fields' ) ) :
|
|
336 |
/**
|
337 |
* Output_custom_number.
|
338 |
*
|
339 |
-
* @version 5.
|
340 |
* @param Array $value Get values.
|
341 |
*/
|
342 |
public function output_custom_number( $value ) {
|
343 |
$type = 'number';
|
344 |
$option_value = get_option( $value['id'], $value['default'] );
|
345 |
-
$tooltip_html = ( isset( $value['desc_tip'] ) && '' !== $value['desc_tip'] ) ?
|
346 |
'<span class="woocommerce-help-tip" data-tip="' . $value['desc_tip'] . '"></span>' : '';
|
347 |
$description = ' <span class="description">' . $value['desc'] . '</span>';
|
348 |
$save_button = apply_filters(
|
2 |
/**
|
3 |
* Booster for WooCommerce - Settings Custom Fields
|
4 |
*
|
5 |
+
* @version 5.6.8
|
6 |
* @since 2.8.0
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/admin
|
249 |
/**
|
250 |
* Output_custom_textarea.
|
251 |
*
|
252 |
+
* @version 5.6.8
|
253 |
* @since 2.2.6
|
254 |
* @param Array $value Get values.
|
255 |
*/
|
258 |
$custom_attributes = ( isset( $value['custom_attributes'] ) && is_array( $value['custom_attributes'] ) ) ?
|
259 |
$value['custom_attributes'] : array();
|
260 |
$description = ' <p class="description">' . $value['desc'] . '</p>';
|
261 |
+
$tooltip_html = ( $value['desc_tip'] && isset( $value['desc_tip'] ) && '' !== $value['desc_tip'] ) ?
|
262 |
'<span class="woocommerce-help-tip" data-tip="' . $value['desc_tip'] . '"></span>' : '';
|
263 |
// Output.
|
264 |
?>
|
265 |
<tr valign="top">
|
266 |
<th scope="row" class="titledesc">
|
267 |
<label for="<?php echo esc_attr( $value['id'] ); ?>"><?php echo esc_html( $value['title'] ); ?></label>
|
268 |
+
<?php echo wp_kses_post( $tooltip_html ); ?>
|
269 |
</th>
|
270 |
<td class="forminp forminp-<?php echo wp_kses_post( $value['type'] ); ?>">
|
271 |
<?php echo wp_kses_post( $description ); ?>
|
286 |
/**
|
287 |
* Output_module_tools.
|
288 |
*
|
289 |
+
* @version 5.6.8
|
290 |
* @since 2.2.3
|
291 |
* @param Array $value Get values.
|
292 |
*/
|
299 |
</th>
|
300 |
<td class="forminp forminp-<?php echo wp_kses_post( $value['type'] ); ?>">
|
301 |
<?php
|
302 |
+
$wpnonce = isset( $_REQUEST['wcj-cat-nonce'] ) ? wp_verify_nonce( sanitize_key( $_REQUEST['wcj-cat-nonce'] ), 'wcj-cat-nonce' ) : false;
|
|
|
|
|
|
|
303 |
if ( $wpnonce && isset( $_GET['section'] ) ) {
|
304 |
do_action( 'wcj_module_tools_' . sanitize_text_field( wp_unslash( $_GET['section'] ) ) );}
|
305 |
?>
|
311 |
/**
|
312 |
* Output_custom_link.
|
313 |
*
|
314 |
+
* @version 5.6.8
|
315 |
* @since 2.2.8
|
316 |
* @param Array $value Get values.
|
317 |
*/
|
318 |
public function output_custom_link( $value ) {
|
319 |
+
$tooltip_html = ( $value['desc_tip'] && isset( $value['desc_tip'] ) && '' !== $value['desc_tip'] ) ?
|
320 |
'<span class="woocommerce-help-tip" data-tip="' . $value['desc_tip'] . '"></span>' : '';
|
321 |
?>
|
322 |
<tr valign="top">
|
333 |
/**
|
334 |
* Output_custom_number.
|
335 |
*
|
336 |
+
* @version 5.6.8
|
337 |
* @param Array $value Get values.
|
338 |
*/
|
339 |
public function output_custom_number( $value ) {
|
340 |
$type = 'number';
|
341 |
$option_value = get_option( $value['id'], $value['default'] );
|
342 |
+
$tooltip_html = ( $value['desc_tip'] && isset( $value['desc_tip'] ) && '' !== $value['desc_tip'] ) ?
|
343 |
'<span class="woocommerce-help-tip" data-tip="' . $value['desc_tip'] . '"></span>' : '';
|
344 |
$description = ' <span class="description">' . $value['desc'] . '</span>';
|
345 |
$save_button = apply_filters(
|
includes/admin/class-wcj-settings-manager.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Settings Manager - Import / Export / Reset Booster's settings
|
4 |
*
|
5 |
-
* @version 5.6.
|
6 |
* @since 2.9.0
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/admin
|
@@ -32,7 +32,7 @@ if ( ! class_exists( 'WCJ_Settings_Manager' ) ) :
|
|
32 |
/**
|
33 |
* Manage_options.
|
34 |
*
|
35 |
-
* @version 5.6.
|
36 |
* @since 2.5.2
|
37 |
*/
|
38 |
public function manage_options() {
|
@@ -40,6 +40,14 @@ if ( ! class_exists( 'WCJ_Settings_Manager' ) ) :
|
|
40 |
if ( ! function_exists( 'current_user_can' ) || ! current_user_can( 'manage_options' ) ) {
|
41 |
return;
|
42 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
43 |
$wpnonce = wp_verify_nonce( sanitize_key( isset( $_REQUEST['_wpnonce'] ) ? $_REQUEST['_wpnonce'] : '' ), 'woocommerce-settings' );
|
44 |
if ( $wpnonce && isset( $_POST['booster_import_settings'] ) ) {
|
45 |
$this->manage_options_import();
|
@@ -59,7 +67,7 @@ if ( ! class_exists( 'WCJ_Settings_Manager' ) ) :
|
|
59 |
/**
|
60 |
* Manage_options_import.
|
61 |
*
|
62 |
-
* @version 5.6.
|
63 |
* @since 2.5.2
|
64 |
*/
|
65 |
public function manage_options_import() {
|
@@ -72,8 +80,11 @@ if ( ! class_exists( 'WCJ_Settings_Manager' ) ) :
|
|
72 |
unset( $_POST['booster_import_settings'] );
|
73 |
}
|
74 |
} else {
|
|
|
|
|
|
|
75 |
$import_counter = 0;
|
76 |
-
$import_settings =
|
77 |
$bom = pack( 'H*', 'EFBBBF' );
|
78 |
$import_settings = preg_replace( "/^$bom/", '', $import_settings );
|
79 |
$import_settings = explode( PHP_EOL, preg_replace( '~(*BSR_ANYCRLF)\R~', PHP_EOL, $import_settings ) );
|
@@ -102,11 +113,14 @@ if ( ! class_exists( 'WCJ_Settings_Manager' ) ) :
|
|
102 |
/**
|
103 |
* Manage_options_export.
|
104 |
*
|
105 |
-
* @version 5.6.
|
106 |
* @since 2.5.2
|
107 |
* @see http://php.net/manual/en/function.header.php
|
108 |
*/
|
109 |
public function manage_options_export() {
|
|
|
|
|
|
|
110 |
$export_settings = array();
|
111 |
$export_counter = array();
|
112 |
$wpnonce = wp_verify_nonce( sanitize_key( isset( $_REQUEST['_wpnonce'] ) ? $_REQUEST['_wpnonce'] : '' ), 'woocommerce-settings' );
|
@@ -126,9 +140,10 @@ if ( ! class_exists( 'WCJ_Settings_Manager' ) ) :
|
|
126 |
}
|
127 |
$export_settings = wp_json_encode( $export_settings );
|
128 |
$export_settings = 'Booster for WooCommerce v' . wcj_get_option( WCJ_VERSION_OPTION, 'NA' ) . PHP_EOL . $export_settings;
|
129 |
-
|
130 |
-
|
131 |
-
|
|
|
132 |
die();
|
133 |
}
|
134 |
|
2 |
/**
|
3 |
* Booster for WooCommerce - Settings Manager - Import / Export / Reset Booster's settings
|
4 |
*
|
5 |
+
* @version 5.6.8
|
6 |
* @since 2.9.0
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/admin
|
32 |
/**
|
33 |
* Manage_options.
|
34 |
*
|
35 |
+
* @version 5.6.8
|
36 |
* @since 2.5.2
|
37 |
*/
|
38 |
public function manage_options() {
|
40 |
if ( ! function_exists( 'current_user_can' ) || ! current_user_can( 'manage_options' ) ) {
|
41 |
return;
|
42 |
}
|
43 |
+
require_once ABSPATH . '/wp-admin/includes/file.php';
|
44 |
+
global $wp_filesystem;
|
45 |
+
WP_Filesystem();
|
46 |
+
$file_name = 'booster_settings.txt';
|
47 |
+
$file_path = wcj_get_wcj_uploads_dir() . DIRECTORY_SEPARATOR . $file_name;
|
48 |
+
if ( $wp_filesystem->exists( $file_path ) ) {
|
49 |
+
$wp_filesystem->delete( $file_path, true );
|
50 |
+
}
|
51 |
$wpnonce = wp_verify_nonce( sanitize_key( isset( $_REQUEST['_wpnonce'] ) ? $_REQUEST['_wpnonce'] : '' ), 'woocommerce-settings' );
|
52 |
if ( $wpnonce && isset( $_POST['booster_import_settings'] ) ) {
|
53 |
$this->manage_options_import();
|
67 |
/**
|
68 |
* Manage_options_import.
|
69 |
*
|
70 |
+
* @version 5.6.8
|
71 |
* @since 2.5.2
|
72 |
*/
|
73 |
public function manage_options_import() {
|
80 |
unset( $_POST['booster_import_settings'] );
|
81 |
}
|
82 |
} else {
|
83 |
+
require_once ABSPATH . '/wp-admin/includes/file.php';
|
84 |
+
global $wp_filesystem;
|
85 |
+
WP_Filesystem();
|
86 |
$import_counter = 0;
|
87 |
+
$import_settings = $wp_filesystem->get_contents( sanitize_text_field( wp_unslash( $_FILES['booster_import_settings_file']['tmp_name'] ) ) );
|
88 |
$bom = pack( 'H*', 'EFBBBF' );
|
89 |
$import_settings = preg_replace( "/^$bom/", '', $import_settings );
|
90 |
$import_settings = explode( PHP_EOL, preg_replace( '~(*BSR_ANYCRLF)\R~', PHP_EOL, $import_settings ) );
|
113 |
/**
|
114 |
* Manage_options_export.
|
115 |
*
|
116 |
+
* @version 5.6.8
|
117 |
* @since 2.5.2
|
118 |
* @see http://php.net/manual/en/function.header.php
|
119 |
*/
|
120 |
public function manage_options_export() {
|
121 |
+
require_once ABSPATH . '/wp-admin/includes/file.php';
|
122 |
+
global $wp_filesystem;
|
123 |
+
WP_Filesystem();
|
124 |
$export_settings = array();
|
125 |
$export_counter = array();
|
126 |
$wpnonce = wp_verify_nonce( sanitize_key( isset( $_REQUEST['_wpnonce'] ) ? $_REQUEST['_wpnonce'] : '' ), 'woocommerce-settings' );
|
140 |
}
|
141 |
$export_settings = wp_json_encode( $export_settings );
|
142 |
$export_settings = 'Booster for WooCommerce v' . wcj_get_option( WCJ_VERSION_OPTION, 'NA' ) . PHP_EOL . $export_settings;
|
143 |
+
$file_name = 'booster_settings.txt';
|
144 |
+
$file_path = wcj_get_wcj_uploads_dir() . DIRECTORY_SEPARATOR . $file_name;
|
145 |
+
$wp_filesystem->put_contents( $file_path, $export_settings, FS_CHMOD_FILE );
|
146 |
+
WC_Download_Handler::download_file_force( $file_path, $file_name );
|
147 |
die();
|
148 |
}
|
149 |
|
includes/admin/class-wcj-tools.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce Tools
|
4 |
*
|
5 |
-
* @version 5.6.
|
6 |
* @author Pluggabl LLC.
|
7 |
* @package Booster_For_WooCommerce/admin
|
8 |
*/
|
@@ -32,15 +32,13 @@ if ( ! class_exists( 'WCJ_Tools' ) ) :
|
|
32 |
/**
|
33 |
* Wcj_new_desing_dashboard_enqueue.
|
34 |
*
|
35 |
-
* @version 5.6.
|
36 |
* @since 5.5.6
|
37 |
*/
|
38 |
public function wcj_new_desing_dashboard_enqueue() {
|
39 |
-
$
|
40 |
-
|
41 |
-
|
42 |
-
}
|
43 |
-
$page = ( $wpnonce && isset( $_GET['page'] ) ) ? sanitize_text_field( wp_unslash( $_GET['page'] ) ) : '';
|
44 |
if ( 'wcj-tools' === $page ) {
|
45 |
wp_enqueue_style( 'wcj-admin-wcj-new_desing', wcj_plugin_url() . '/includes/css/admin-style.css', array(), time() );
|
46 |
wp_enqueue_script( 'wcj-admin-script', wcj_plugin_url() . '/includes/js/admin-script.js', array( 'jquery' ), '5.0.0', true );
|
@@ -68,12 +66,12 @@ if ( ! class_exists( 'WCJ_Tools' ) ) :
|
|
68 |
/**
|
69 |
* Create_tools_page.
|
70 |
*
|
71 |
-
* @version 5.6.
|
72 |
*/
|
73 |
public function create_tools_page() {
|
74 |
|
75 |
// Tabs.
|
76 |
-
$tabs
|
77 |
'wcj_tools_tabs',
|
78 |
array(
|
79 |
array(
|
@@ -82,12 +80,11 @@ if ( ! class_exists( 'WCJ_Tools' ) ) :
|
|
82 |
),
|
83 |
)
|
84 |
);
|
85 |
-
$html
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
$active_tab = ( $wpnonce && isset( $_GET['tab'] ) ) ? sanitize_text_field( wp_unslash( $_GET['tab'] ) ) : 'dashboard';
|
91 |
foreach ( $tabs as $tab ) {
|
92 |
$is_active = ( $active_tab === $tab['id'] ) ? 'nav-tab-active' : '';
|
93 |
$html .= '<a href="' . esc_url(
|
2 |
/**
|
3 |
* Booster for WooCommerce Tools
|
4 |
*
|
5 |
+
* @version 5.6.8
|
6 |
* @author Pluggabl LLC.
|
7 |
* @package Booster_For_WooCommerce/admin
|
8 |
*/
|
32 |
/**
|
33 |
* Wcj_new_desing_dashboard_enqueue.
|
34 |
*
|
35 |
+
* @version 5.6.8
|
36 |
* @since 5.5.6
|
37 |
*/
|
38 |
public function wcj_new_desing_dashboard_enqueue() {
|
39 |
+
$_get = array();
|
40 |
+
parse_str( isset( $_SERVER['QUERY_STRING'] ) ? sanitize_text_field( wp_unslash( $_SERVER['QUERY_STRING'] ) ) : '', $_get );
|
41 |
+
$page = isset( $_get['page'] ) ? sanitize_text_field( wp_unslash( $_get['page'] ) ) : '';
|
|
|
|
|
42 |
if ( 'wcj-tools' === $page ) {
|
43 |
wp_enqueue_style( 'wcj-admin-wcj-new_desing', wcj_plugin_url() . '/includes/css/admin-style.css', array(), time() );
|
44 |
wp_enqueue_script( 'wcj-admin-script', wcj_plugin_url() . '/includes/js/admin-script.js', array( 'jquery' ), '5.0.0', true );
|
66 |
/**
|
67 |
* Create_tools_page.
|
68 |
*
|
69 |
+
* @version 5.6.8
|
70 |
*/
|
71 |
public function create_tools_page() {
|
72 |
|
73 |
// Tabs.
|
74 |
+
$tabs = apply_filters(
|
75 |
'wcj_tools_tabs',
|
76 |
array(
|
77 |
array(
|
80 |
),
|
81 |
)
|
82 |
);
|
83 |
+
$html = '<h2 class="nav-tab-wrapper woo-nav-tab-wrapper wcj_tool_tab_part">';
|
84 |
+
// phpcs:disable WordPress.Security.NonceVerification
|
85 |
+
$active_tab = ( isset( $_GET['tab'] ) ) ? sanitize_text_field( wp_unslash( $_GET['tab'] ) ) : 'dashboard';
|
86 |
+
// phpcs:enable WordPress.Security.NonceVerification
|
87 |
+
|
|
|
88 |
foreach ( $tabs as $tab ) {
|
89 |
$is_active = ( $active_tab === $tab['id'] ) ? 'nav-tab-active' : '';
|
90 |
$html .= '<a href="' . esc_url(
|
includes/admin/class-wcj-welcome.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster getting started
|
4 |
*
|
5 |
-
* @version 5.6.
|
6 |
* @author Pluggabl LLC.
|
7 |
* @package Booster_For_WooCommerce/admin
|
8 |
*/
|
@@ -22,10 +22,7 @@ if ( ! class_exists( 'WCJ_Welcome' ) ) :
|
|
22 |
public function __construct() {
|
23 |
if ( is_admin() ) {
|
24 |
|
25 |
-
$wpnonce =
|
26 |
-
if ( function_exists( 'wp_verify_nonce' ) ) {
|
27 |
-
$wpnonce = isset( $_REQUEST['_wpnonce'] ) ? wp_verify_nonce( sanitize_key( isset( $_REQUEST['_wpnonce'] ) ? $_REQUEST['_wpnonce'] : '' ) ) : true;
|
28 |
-
}
|
29 |
if ( $wpnonce && isset( $_GET['page'] ) && 'jetpack-getting-started' === $_GET['page'] ) {
|
30 |
add_action(
|
31 |
'in_admin_header',
|
@@ -73,20 +70,17 @@ if ( ! class_exists( 'WCJ_Welcome' ) ) :
|
|
73 |
/**
|
74 |
* Wcj_redirect_to_getting_started.
|
75 |
*
|
76 |
-
* @version 5.6.
|
77 |
*/
|
78 |
public function wcj_redirect_to_getting_started() {
|
79 |
-
$wpnonce =
|
80 |
-
if (
|
81 |
-
$wpnonce = isset( $_REQUEST['_wpnonce'] ) ? wp_verify_nonce( sanitize_key( isset( $_REQUEST['_wpnonce'] ) ? $_REQUEST['_wpnonce'] : '' ) ) : true;
|
82 |
-
}
|
83 |
-
if ( ! get_transient( '_wcj_activation_redirect' ) || isset( $_GET['wcj-redirect'] ) || ! $wpnonce ) {
|
84 |
return;
|
85 |
}
|
86 |
|
87 |
delete_transient( '_wcj_activation_redirect' );
|
88 |
|
89 |
-
$redirect = admin_url( 'index.php?page=jetpack-getting-started&wcj-redirect=1' );
|
90 |
wp_safe_redirect( $redirect );
|
91 |
exit;
|
92 |
}
|
2 |
/**
|
3 |
* Booster getting started
|
4 |
*
|
5 |
+
* @version 5.6.8
|
6 |
* @author Pluggabl LLC.
|
7 |
* @package Booster_For_WooCommerce/admin
|
8 |
*/
|
22 |
public function __construct() {
|
23 |
if ( is_admin() ) {
|
24 |
|
25 |
+
$wpnonce = isset( $_REQUEST['wcj-redirect-nonce'] ) ? wp_verify_nonce( sanitize_key( $_REQUEST['wcj-redirect-nonce'] ), 'wcj-redirect' ) : false;
|
|
|
|
|
|
|
26 |
if ( $wpnonce && isset( $_GET['page'] ) && 'jetpack-getting-started' === $_GET['page'] ) {
|
27 |
add_action(
|
28 |
'in_admin_header',
|
70 |
/**
|
71 |
* Wcj_redirect_to_getting_started.
|
72 |
*
|
73 |
+
* @version 5.6.8
|
74 |
*/
|
75 |
public function wcj_redirect_to_getting_started() {
|
76 |
+
$wpnonce = isset( $_REQUEST['wcj-redirect-nonce'] ) ? wp_verify_nonce( sanitize_key( $_REQUEST['wcj-redirect-nonce'] ), 'wcj-redirect' ) : false;
|
77 |
+
if ( ! get_transient( '_wcj_activation_redirect' ) || isset( $_GET['wcj-redirect'] ) || $wpnonce ) {
|
|
|
|
|
|
|
78 |
return;
|
79 |
}
|
80 |
|
81 |
delete_transient( '_wcj_activation_redirect' );
|
82 |
|
83 |
+
$redirect = admin_url( 'index.php?page=jetpack-getting-started&wcj-redirect=1&wcj-redirect-nonce=' . wp_create_nonce( 'wcj-redirect' ) );
|
84 |
wp_safe_redirect( $redirect );
|
85 |
exit;
|
86 |
}
|
includes/admin/wcj-welcome-screen-content.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Welcome Screen Content
|
4 |
*
|
5 |
-
* @version 5.6.
|
6 |
* @author Pluggabl LLC.
|
7 |
* @package Booster_For_WooCommerce/admin
|
8 |
*/
|
@@ -18,7 +18,7 @@
|
|
18 |
<div class="wcj-welcome-content-inner">
|
19 |
<h3> <?php esc_html_e( 'Welcome to booster.', 'woocommerce-jetpack' ); ?> </h3>
|
20 |
<p> <?php esc_html_e( 'Thank you for choosing Booster - Supercharge your WooCommerce site with these awesome powerful features. More than 100 modules. All in one WooCommerce plugin.', 'woocommerce-jetpack' ); ?> </p>
|
21 |
-
<a href="<?php echo wp_kses_post( admin_url(
|
22 |
</div>
|
23 |
</div>
|
24 |
<div class="wcj-welcome-content-main wcj-welcome-padding-top-0">
|
2 |
/**
|
3 |
* Booster for WooCommerce - Welcome Screen Content
|
4 |
*
|
5 |
+
* @version 5.6.8
|
6 |
* @author Pluggabl LLC.
|
7 |
* @package Booster_For_WooCommerce/admin
|
8 |
*/
|
18 |
<div class="wcj-welcome-content-inner">
|
19 |
<h3> <?php esc_html_e( 'Welcome to booster.', 'woocommerce-jetpack' ); ?> </h3>
|
20 |
<p> <?php esc_html_e( 'Thank you for choosing Booster - Supercharge your WooCommerce site with these awesome powerful features. More than 100 modules. All in one WooCommerce plugin.', 'woocommerce-jetpack' ); ?> </p>
|
21 |
+
<a href="<?php echo wp_kses_post( admin_url( wcj_admin_tab_url() ) ); ?>" class="wcj-buy-puls-btn"> <?php esc_html_e( 'Launch Booster Settings', 'woocommerce-jetpack' ); ?> </a>
|
22 |
</div>
|
23 |
</div>
|
24 |
<div class="wcj-welcome-content-main wcj-welcome-padding-top-0">
|
includes/class-wcj-admin-bar.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Admin Bar
|
4 |
*
|
5 |
-
* @version 5.6.
|
6 |
* @since 2.9.0
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/includes
|
@@ -131,7 +131,7 @@ if ( ! class_exists( 'WCJ_Admin_Bar' ) ) :
|
|
131 |
/**
|
132 |
* Get_nodes_booster_modules.
|
133 |
*
|
134 |
-
* @version 5.6.
|
135 |
* @since 2.9.0
|
136 |
* @todo (maybe) dashes instead of underscores
|
137 |
* @todo (maybe) dashboard > alphabetically - list all modules
|
@@ -144,7 +144,7 @@ if ( ! class_exists( 'WCJ_Admin_Bar' ) ) :
|
|
144 |
foreach ( $cats as $id => $label_info ) {
|
145 |
$nodes[ $id ] = array(
|
146 |
'title' => $label_info['label'],
|
147 |
-
'href' => admin_url( '
|
148 |
'meta' => array( 'title' => wp_strip_all_tags( $label_info['desc'] ) ),
|
149 |
);
|
150 |
if ( 'dashboard' === $id ) {
|
@@ -153,19 +153,19 @@ if ( ! class_exists( 'WCJ_Admin_Bar' ) ) :
|
|
153 |
array(
|
154 |
'alphabetically' => array(
|
155 |
'title' => __( 'Alphabetically', 'woocommerce-jetpack' ),
|
156 |
-
'href' => admin_url( '
|
157 |
),
|
158 |
'by_category' => array(
|
159 |
'title' => __( 'By Category', 'woocommerce-jetpack' ),
|
160 |
-
'href' => admin_url( '
|
161 |
),
|
162 |
'active' => array(
|
163 |
'title' => __( 'Active', 'woocommerce-jetpack' ),
|
164 |
-
'href' => admin_url( '
|
165 |
),
|
166 |
'manager' => array(
|
167 |
'title' => __( 'Manage Settings', 'woocommerce-jetpack' ),
|
168 |
-
'href' => admin_url( '
|
169 |
),
|
170 |
)
|
171 |
);
|
@@ -177,12 +177,12 @@ if ( ! class_exists( 'WCJ_Admin_Bar' ) ) :
|
|
177 |
}
|
178 |
$cat_nodes[ $link_id ] = array(
|
179 |
'title' => w_c_j()->modules[ $link_id ]->short_desc,
|
180 |
-
'href' => admin_url( '
|
181 |
'meta' => array( 'title' => w_c_j()->modules[ $link_id ]->desc ),
|
182 |
'nodes' => array(
|
183 |
'settings' => array(
|
184 |
'title' => __( 'Settings', 'woocommerce-jetpack' ),
|
185 |
-
'href' => admin_url( '
|
186 |
),
|
187 |
'docs' => array(
|
188 |
'title' => __( 'Documentation', 'woocommerce-jetpack' ),
|
@@ -251,7 +251,7 @@ if ( ! class_exists( 'WCJ_Admin_Bar' ) ) :
|
|
251 |
/**
|
252 |
* Add_booster_active_admin_bar.
|
253 |
*
|
254 |
-
* @version
|
255 |
* @since 3.1.0
|
256 |
* @param string $wp_admin_bar defines the wp_admin_bar.
|
257 |
*/
|
@@ -273,7 +273,7 @@ if ( ! class_exists( 'WCJ_Admin_Bar' ) ) :
|
|
273 |
$nodes = array(
|
274 |
'booster-active' => array(
|
275 |
'title' => '<span class="ab-icon"></span>' . __( 'Booster: Active', 'woocommerce-jetpack' ),
|
276 |
-
'href' => admin_url( '
|
277 |
'meta' => array(
|
278 |
'title' => __( 'Booster - Active', 'woocommerce-jetpack' ),
|
279 |
),
|
@@ -286,7 +286,7 @@ if ( ! class_exists( 'WCJ_Admin_Bar' ) ) :
|
|
286 |
/**
|
287 |
* Add_booster_admin_bar.
|
288 |
*
|
289 |
-
* @version
|
290 |
* @since 2.9.0
|
291 |
* @param string $wp_admin_bar defines the wp_admin_bar.
|
292 |
*/
|
@@ -297,14 +297,14 @@ if ( ! class_exists( 'WCJ_Admin_Bar' ) ) :
|
|
297 |
$nodes = array(
|
298 |
'booster' => array(
|
299 |
'title' => '<span class="ab-icon"></span>' . __( 'Booster', 'woocommerce-jetpack' ),
|
300 |
-
'href' => admin_url(
|
301 |
'meta' => array(
|
302 |
'title' => __( 'Booster - Settings', 'woocommerce-jetpack' ),
|
303 |
),
|
304 |
'nodes' => array(
|
305 |
'modules' => array(
|
306 |
'title' => __( 'Modules', 'woocommerce-jetpack' ),
|
307 |
-
'href' => admin_url(
|
308 |
'nodes' => $this->get_nodes_booster_modules(),
|
309 |
),
|
310 |
'tools' => array(
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Admin Bar
|
4 |
*
|
5 |
+
* @version 5.6.8
|
6 |
* @since 2.9.0
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/includes
|
131 |
/**
|
132 |
* Get_nodes_booster_modules.
|
133 |
*
|
134 |
+
* @version 5.6.8
|
135 |
* @since 2.9.0
|
136 |
* @todo (maybe) dashes instead of underscores
|
137 |
* @todo (maybe) dashboard > alphabetically - list all modules
|
144 |
foreach ( $cats as $id => $label_info ) {
|
145 |
$nodes[ $id ] = array(
|
146 |
'title' => $label_info['label'],
|
147 |
+
'href' => admin_url( wcj_admin_tab_url() . '&wcj-cat=' . $id ),
|
148 |
'meta' => array( 'title' => wp_strip_all_tags( $label_info['desc'] ) ),
|
149 |
);
|
150 |
if ( 'dashboard' === $id ) {
|
153 |
array(
|
154 |
'alphabetically' => array(
|
155 |
'title' => __( 'Alphabetically', 'woocommerce-jetpack' ),
|
156 |
+
'href' => admin_url( wcj_admin_tab_url() . '&wcj-cat=dashboard§ion=alphabetically' ),
|
157 |
),
|
158 |
'by_category' => array(
|
159 |
'title' => __( 'By Category', 'woocommerce-jetpack' ),
|
160 |
+
'href' => admin_url( wcj_admin_tab_url() . '&wcj-cat=dashboard§ion=by_category' ),
|
161 |
),
|
162 |
'active' => array(
|
163 |
'title' => __( 'Active', 'woocommerce-jetpack' ),
|
164 |
+
'href' => admin_url( wcj_admin_tab_url() . '&wcj-cat=dashboard§ion=active' ),
|
165 |
),
|
166 |
'manager' => array(
|
167 |
'title' => __( 'Manage Settings', 'woocommerce-jetpack' ),
|
168 |
+
'href' => admin_url( wcj_admin_tab_url() . '&wcj-cat=dashboard§ion=manager' ),
|
169 |
),
|
170 |
)
|
171 |
);
|
177 |
}
|
178 |
$cat_nodes[ $link_id ] = array(
|
179 |
'title' => w_c_j()->modules[ $link_id ]->short_desc,
|
180 |
+
'href' => admin_url( wcj_admin_tab_url() . '&wcj-cat=' . $id . '§ion=' . $link_id ),
|
181 |
'meta' => array( 'title' => w_c_j()->modules[ $link_id ]->desc ),
|
182 |
'nodes' => array(
|
183 |
'settings' => array(
|
184 |
'title' => __( 'Settings', 'woocommerce-jetpack' ),
|
185 |
+
'href' => admin_url( wcj_admin_tab_url() . '&wcj-cat=' . $id . '§ion=' . $link_id ),
|
186 |
),
|
187 |
'docs' => array(
|
188 |
'title' => __( 'Documentation', 'woocommerce-jetpack' ),
|
251 |
/**
|
252 |
* Add_booster_active_admin_bar.
|
253 |
*
|
254 |
+
* @version 5.6.8
|
255 |
* @since 3.1.0
|
256 |
* @param string $wp_admin_bar defines the wp_admin_bar.
|
257 |
*/
|
273 |
$nodes = array(
|
274 |
'booster-active' => array(
|
275 |
'title' => '<span class="ab-icon"></span>' . __( 'Booster: Active', 'woocommerce-jetpack' ),
|
276 |
+
'href' => admin_url( wcj_admin_tab_url() . 'wcj-cat=dashboard§ion=active' ),
|
277 |
'meta' => array(
|
278 |
'title' => __( 'Booster - Active', 'woocommerce-jetpack' ),
|
279 |
),
|
286 |
/**
|
287 |
* Add_booster_admin_bar.
|
288 |
*
|
289 |
+
* @version 5.6.8
|
290 |
* @since 2.9.0
|
291 |
* @param string $wp_admin_bar defines the wp_admin_bar.
|
292 |
*/
|
297 |
$nodes = array(
|
298 |
'booster' => array(
|
299 |
'title' => '<span class="ab-icon"></span>' . __( 'Booster', 'woocommerce-jetpack' ),
|
300 |
+
'href' => admin_url( wcj_admin_tab_url() ),
|
301 |
'meta' => array(
|
302 |
'title' => __( 'Booster - Settings', 'woocommerce-jetpack' ),
|
303 |
),
|
304 |
'nodes' => array(
|
305 |
'modules' => array(
|
306 |
'title' => __( 'Modules', 'woocommerce-jetpack' ),
|
307 |
+
'href' => admin_url( wcj_admin_tab_url() ),
|
308 |
'nodes' => $this->get_nodes_booster_modules(),
|
309 |
),
|
310 |
'tools' => array(
|
includes/class-wcj-admin-orders-list.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Admin Orders List
|
4 |
*
|
5 |
-
* @version 5.6.
|
6 |
* @since 3.2.4
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/includes
|
@@ -80,7 +80,7 @@ if ( ! class_exists( 'WCJ_Admin_Orders_List' ) ) :
|
|
80 |
/**
|
81 |
* Admin_menu_multiple_status.
|
82 |
*
|
83 |
-
* @version
|
84 |
* @since 3.7.0
|
85 |
* @todo add presets as links (same as "Not completed" link)
|
86 |
* @todo fix: custom (i.e. presets) menus are not highlighted
|
@@ -108,7 +108,7 @@ if ( ! class_exists( 'WCJ_Admin_Orders_List' ) ) :
|
|
108 |
foreach ( $statuses[ $i ] as $x => $status ) {
|
109 |
$order_count += wc_orders_count( substr( $status, 3 ) );
|
110 |
}
|
111 |
-
$orders_count_html = ' <span class="awaiting-mod update-plugins count-' . esc_attr( $order_count ) . ' wcj-order-count-wrapper"><span class="wcj-order-count">' . number_format_i18n( $order_count ) . '</span></span>';
|
112 |
}
|
113 |
add_submenu_page( 'woocommerce', $titles[ $i ], $titles[ $i ] . $orders_count_html, 'edit_shop_orders', $menu_slug );
|
114 |
}
|
@@ -231,17 +231,14 @@ if ( ! class_exists( 'WCJ_Admin_Orders_List' ) ) :
|
|
231 |
/**
|
232 |
* Filter_shop_order_multiple_statuses_not_completed_link.
|
233 |
*
|
234 |
-
* @version 5.6.
|
235 |
* @since 2.5.7
|
236 |
* @param string $query defines the query.
|
237 |
*/
|
238 |
public function filter_shop_order_multiple_statuses_not_completed_link( $query ) {
|
239 |
if ( isset( $_SERVER['REQUEST_URI'] ) && false !== strpos( sanitize_text_field( wp_unslash( $_SERVER['REQUEST_URI'] ) ), '/wp-admin/edit.php' ) && isset( $_GET['post_type'] ) && 'shop_order' === $_GET['post_type'] ) {
|
240 |
if ( wcj_current_user_can( 'edit_others_pages' ) ) {
|
241 |
-
$wpnonce = false;
|
242 |
-
if ( function_exists( 'wp_verify_nonce' ) ) {
|
243 |
-
$wpnonce = isset( $_REQUEST['multiple_statuses_not_completed_link_nonce'] ) ? wp_verify_nonce( sanitize_key( isset( $_REQUEST['multiple_statuses_not_completed_link_nonce'] ) ? $_REQUEST['multiple_statuses_not_completed_link_nonce'] : '' ), 'multiple_statuses_not_completed_link_nonce' ) : false;
|
244 |
-
}
|
245 |
if ( $wpnonce && isset( $_GET['post_status'] ) && false !== strpos( sanitize_text_field( wp_unslash( $_GET['post_status'] ) ), ',' ) ) {
|
246 |
$post_statuses = explode( ',', sanitize_text_field( wp_unslash( $_GET['post_status'] ) ) );
|
247 |
$query->query['post_status'] = $post_statuses;
|
@@ -300,7 +297,7 @@ if ( ! class_exists( 'WCJ_Admin_Orders_List' ) ) :
|
|
300 |
/**
|
301 |
* Filter_shop_order_multiple_statuses.
|
302 |
*
|
303 |
-
* @version 5.6.
|
304 |
* @since 2.5.7
|
305 |
* @param string $query defines the query.
|
306 |
*/
|
@@ -308,7 +305,7 @@ if ( ! class_exists( 'WCJ_Admin_Orders_List' ) ) :
|
|
308 |
if ( isset( $_SERVER['REQUEST_URI'] ) && ( false !== strpos( sanitize_text_field( wp_unslash( $_SERVER['REQUEST_URI'] ) ), '/wp-admin/edit.php' ) && isset( $_GET['post_type'] ) && 'shop_order' === $_GET['post_type'] ) ) {
|
309 |
if ( wcj_current_user_can( 'edit_others_pages' ) ) {
|
310 |
if ( isset( $_GET['wcj_admin_filter_statuses'] ) ) {
|
311 |
-
$wpnonce = isset( $_REQUEST['wcj_admin_filter_statuses_nonce'] ) ? wp_verify_nonce( sanitize_key(
|
312 |
if ( $wpnonce ) {
|
313 |
$post_statuses = array_map( 'sanitize_text_field', wp_unslash( $_GET['wcj_admin_filter_statuses'] ) );
|
314 |
$query->query['post_status'] = $post_statuses;
|
@@ -322,7 +319,7 @@ if ( ! class_exists( 'WCJ_Admin_Orders_List' ) ) :
|
|
322 |
/**
|
323 |
* Filter the orders in admin based on options.
|
324 |
*
|
325 |
-
* @version 5.6.
|
326 |
* @access public
|
327 |
* @param mixed $query defines the query.
|
328 |
* @return void
|
@@ -332,37 +329,32 @@ if ( ! class_exists( 'WCJ_Admin_Orders_List' ) ) :
|
|
332 |
if ( 'shop_order' !== $typenow ) {
|
333 |
return;
|
334 |
}
|
335 |
-
|
336 |
-
if (
|
337 |
-
$wpnonce = isset( $_REQUEST['_wpnonce'] ) ? wp_verify_nonce( sanitize_key( isset( $_REQUEST['_wpnonce'] ) ? $_REQUEST['_wpnonce'] : '' ), 'woocommerce-settings' ) : true;
|
338 |
-
}
|
339 |
-
if ( $wpnonce && 'yes' === wcj_get_option( 'wcj_orders_list_custom_columns_country', 'no' ) && isset( $_GET['country'] ) && 'all' !== $_GET['country'] ) {
|
340 |
$query->query_vars['meta_query'][] = array(
|
341 |
'key' => '_billing_country',
|
342 |
'value' => sanitize_text_field( wp_unslash( $_GET['country'] ) ),
|
343 |
);
|
344 |
}
|
345 |
-
if (
|
346 |
$query->query_vars['meta_query'][] = array(
|
347 |
'key' => '_order_currency',
|
348 |
'value' => sanitize_text_field( wp_unslash( $_GET['currency'] ) ),
|
349 |
);
|
350 |
}
|
|
|
351 |
}
|
352 |
|
353 |
/**
|
354 |
* Filters for post types.
|
355 |
*
|
356 |
-
* @version 5.6.
|
357 |
*/
|
358 |
public function restrict_manage_posts() {
|
359 |
global $typenow, $wp_query;
|
360 |
if ( in_array( $typenow, wc_get_order_types( 'order-meta-boxes' ), true ) ) {
|
361 |
-
|
362 |
-
if (
|
363 |
-
$wpnonce = isset( $_REQUEST['_wpnonce'] ) ? wp_verify_nonce( sanitize_key( isset( $_REQUEST['_wpnonce'] ) ? $_REQUEST['_wpnonce'] : '' ), 'woocommerce-settings' ) : true;
|
364 |
-
}
|
365 |
-
if ( $wpnonce && 'yes' === wcj_get_option( 'wcj_orders_list_custom_columns_country', 'no' ) ) {
|
366 |
$selected_coutry = isset( $_GET['country'] ) ? sanitize_text_field( wp_unslash( $_GET['country'] ) ) : 'all';
|
367 |
$countries = array_merge( array( 'all' => __( 'All countries', 'woocommerce-jetpack' ) ), wcj_get_countries() );
|
368 |
echo '<select id="country" name="country">';
|
@@ -371,7 +363,7 @@ if ( ! class_exists( 'WCJ_Admin_Orders_List' ) ) :
|
|
371 |
}
|
372 |
echo '</select>';
|
373 |
}
|
374 |
-
if (
|
375 |
$selected_currency = isset( $_GET['currency'] ) ? sanitize_text_field( wp_unslash( $_GET['currency'] ) ) : 'all';
|
376 |
$currencies = array_merge( array( 'all' => __( 'All currencies', 'woocommerce-jetpack' ) ), wcj_get_woocommerce_currencies_and_symbols() );
|
377 |
echo '<select id="currency" name="currency">';
|
@@ -380,6 +372,7 @@ if ( ! class_exists( 'WCJ_Admin_Orders_List' ) ) :
|
|
380 |
}
|
381 |
echo '</select>';
|
382 |
}
|
|
|
383 |
}
|
384 |
}
|
385 |
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Admin Orders List
|
4 |
*
|
5 |
+
* @version 5.6.8
|
6 |
* @since 3.2.4
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/includes
|
80 |
/**
|
81 |
* Admin_menu_multiple_status.
|
82 |
*
|
83 |
+
* @version 5.6.8
|
84 |
* @since 3.7.0
|
85 |
* @todo add presets as links (same as "Not completed" link)
|
86 |
* @todo fix: custom (i.e. presets) menus are not highlighted
|
108 |
foreach ( $statuses[ $i ] as $x => $status ) {
|
109 |
$order_count += wc_orders_count( substr( $status, 3 ) );
|
110 |
}
|
111 |
+
$orders_count_html = ' <span class="awaiting-mod update-plugins count-' . esc_attr( $order_count ) . ' wcj-order-count-wrapper"><span class="wcj-order-count">' . number_format_i18n( $order_count ) . '</span></span>';
|
112 |
}
|
113 |
add_submenu_page( 'woocommerce', $titles[ $i ], $titles[ $i ] . $orders_count_html, 'edit_shop_orders', $menu_slug );
|
114 |
}
|
231 |
/**
|
232 |
* Filter_shop_order_multiple_statuses_not_completed_link.
|
233 |
*
|
234 |
+
* @version 5.6.8
|
235 |
* @since 2.5.7
|
236 |
* @param string $query defines the query.
|
237 |
*/
|
238 |
public function filter_shop_order_multiple_statuses_not_completed_link( $query ) {
|
239 |
if ( isset( $_SERVER['REQUEST_URI'] ) && false !== strpos( sanitize_text_field( wp_unslash( $_SERVER['REQUEST_URI'] ) ), '/wp-admin/edit.php' ) && isset( $_GET['post_type'] ) && 'shop_order' === $_GET['post_type'] ) {
|
240 |
if ( wcj_current_user_can( 'edit_others_pages' ) ) {
|
241 |
+
$wpnonce = isset( $_REQUEST['multiple_statuses_not_completed_link_nonce'] ) ? wp_verify_nonce( sanitize_key( $_REQUEST['multiple_statuses_not_completed_link_nonce'] ), 'multiple_statuses_not_completed_link_nonce' ) : false;
|
|
|
|
|
|
|
242 |
if ( $wpnonce && isset( $_GET['post_status'] ) && false !== strpos( sanitize_text_field( wp_unslash( $_GET['post_status'] ) ), ',' ) ) {
|
243 |
$post_statuses = explode( ',', sanitize_text_field( wp_unslash( $_GET['post_status'] ) ) );
|
244 |
$query->query['post_status'] = $post_statuses;
|
297 |
/**
|
298 |
* Filter_shop_order_multiple_statuses.
|
299 |
*
|
300 |
+
* @version 5.6.8
|
301 |
* @since 2.5.7
|
302 |
* @param string $query defines the query.
|
303 |
*/
|
305 |
if ( isset( $_SERVER['REQUEST_URI'] ) && ( false !== strpos( sanitize_text_field( wp_unslash( $_SERVER['REQUEST_URI'] ) ), '/wp-admin/edit.php' ) && isset( $_GET['post_type'] ) && 'shop_order' === $_GET['post_type'] ) ) {
|
306 |
if ( wcj_current_user_can( 'edit_others_pages' ) ) {
|
307 |
if ( isset( $_GET['wcj_admin_filter_statuses'] ) ) {
|
308 |
+
$wpnonce = isset( $_REQUEST['wcj_admin_filter_statuses_nonce'] ) ? wp_verify_nonce( sanitize_key( $_REQUEST['wcj_admin_filter_statuses_nonce'] ), 'wcj_admin_filter_statuses_nonce' ) : false;
|
309 |
if ( $wpnonce ) {
|
310 |
$post_statuses = array_map( 'sanitize_text_field', wp_unslash( $_GET['wcj_admin_filter_statuses'] ) );
|
311 |
$query->query['post_status'] = $post_statuses;
|
319 |
/**
|
320 |
* Filter the orders in admin based on options.
|
321 |
*
|
322 |
+
* @version 5.6.8
|
323 |
* @access public
|
324 |
* @param mixed $query defines the query.
|
325 |
* @return void
|
329 |
if ( 'shop_order' !== $typenow ) {
|
330 |
return;
|
331 |
}
|
332 |
+
// phpcs:disable WordPress.Security.NonceVerification
|
333 |
+
if ( 'yes' === wcj_get_option( 'wcj_orders_list_custom_columns_country', 'no' ) && isset( $_GET['country'] ) && 'all' !== $_GET['country'] ) {
|
|
|
|
|
|
|
334 |
$query->query_vars['meta_query'][] = array(
|
335 |
'key' => '_billing_country',
|
336 |
'value' => sanitize_text_field( wp_unslash( $_GET['country'] ) ),
|
337 |
);
|
338 |
}
|
339 |
+
if ( 'yes' === wcj_get_option( 'wcj_orders_list_custom_columns_currency', 'no' ) && isset( $_GET['currency'] ) && 'all' !== $_GET['currency'] ) {
|
340 |
$query->query_vars['meta_query'][] = array(
|
341 |
'key' => '_order_currency',
|
342 |
'value' => sanitize_text_field( wp_unslash( $_GET['currency'] ) ),
|
343 |
);
|
344 |
}
|
345 |
+
// phpcs:enable WordPress.Security.NonceVerification
|
346 |
}
|
347 |
|
348 |
/**
|
349 |
* Filters for post types.
|
350 |
*
|
351 |
+
* @version 5.6.8
|
352 |
*/
|
353 |
public function restrict_manage_posts() {
|
354 |
global $typenow, $wp_query;
|
355 |
if ( in_array( $typenow, wc_get_order_types( 'order-meta-boxes' ), true ) ) {
|
356 |
+
// phpcs:disable WordPress.Security.NonceVerification
|
357 |
+
if ( 'yes' === wcj_get_option( 'wcj_orders_list_custom_columns_country', 'no' ) ) {
|
|
|
|
|
|
|
358 |
$selected_coutry = isset( $_GET['country'] ) ? sanitize_text_field( wp_unslash( $_GET['country'] ) ) : 'all';
|
359 |
$countries = array_merge( array( 'all' => __( 'All countries', 'woocommerce-jetpack' ) ), wcj_get_countries() );
|
360 |
echo '<select id="country" name="country">';
|
363 |
}
|
364 |
echo '</select>';
|
365 |
}
|
366 |
+
if ( 'yes' === wcj_get_option( 'wcj_orders_list_custom_columns_currency', 'no' ) ) {
|
367 |
$selected_currency = isset( $_GET['currency'] ) ? sanitize_text_field( wp_unslash( $_GET['currency'] ) ) : 'all';
|
368 |
$currencies = array_merge( array( 'all' => __( 'All currencies', 'woocommerce-jetpack' ) ), wcj_get_woocommerce_currencies_and_symbols() );
|
369 |
echo '<select id="currency" name="currency">';
|
372 |
}
|
373 |
echo '</select>';
|
374 |
}
|
375 |
+
// phpcs:enable WordPress.Security.NonceVerification
|
376 |
}
|
377 |
}
|
378 |
|
includes/class-wcj-admin-tools.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Admin Tools
|
4 |
*
|
5 |
-
* @version 5.6.
|
6 |
* @author Pluggabl LLC.
|
7 |
* @package Booster_For_WooCommerce/includes
|
8 |
*/
|
@@ -212,7 +212,7 @@ if ( ! class_exists( 'WCJ_Admin_Tools' ) ) :
|
|
212 |
/**
|
213 |
* Create_meta_meta_box.
|
214 |
*
|
215 |
-
* @version 5.6.
|
216 |
* @since 2.5.8
|
217 |
* @param string $post defines the post.
|
218 |
*/
|
@@ -223,7 +223,9 @@ if ( ! class_exists( 'WCJ_Admin_Tools' ) ) :
|
|
223 |
$meta = get_post_meta( $post_id );
|
224 |
$table_data = array();
|
225 |
foreach ( $meta as $meta_key => $meta_values ) {
|
226 |
-
$
|
|
|
|
|
227 |
}
|
228 |
$html .= wcj_get_table_html(
|
229 |
$table_data,
|
@@ -238,7 +240,9 @@ if ( ! class_exists( 'WCJ_Admin_Tools' ) ) :
|
|
238 |
$table_data = array();
|
239 |
foreach ( $_order->get_items() as $item_key => $item ) {
|
240 |
foreach ( $item['item_meta'] as $item_meta_key => $item_meta_value ) {
|
241 |
-
$
|
|
|
|
|
242 |
}
|
243 |
}
|
244 |
if ( ! empty( $table_data ) ) {
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Admin Tools
|
4 |
*
|
5 |
+
* @version 5.6.8
|
6 |
* @author Pluggabl LLC.
|
7 |
* @package Booster_For_WooCommerce/includes
|
8 |
*/
|
212 |
/**
|
213 |
* Create_meta_meta_box.
|
214 |
*
|
215 |
+
* @version 5.6.8
|
216 |
* @since 2.5.8
|
217 |
* @param string $post defines the post.
|
218 |
*/
|
223 |
$meta = get_post_meta( $post_id );
|
224 |
$table_data = array();
|
225 |
foreach ( $meta as $meta_key => $meta_values ) {
|
226 |
+
$meta_value = maybe_unserialize( $meta_values[0] );
|
227 |
+
$meta_value = is_array( $meta_value ) ? wp_json_encode( $meta_value ) : $meta_value;
|
228 |
+
$table_data[] = array( $meta_key, esc_html( $meta_value ) );
|
229 |
}
|
230 |
$html .= wcj_get_table_html(
|
231 |
$table_data,
|
240 |
$table_data = array();
|
241 |
foreach ( $_order->get_items() as $item_key => $item ) {
|
242 |
foreach ( $item['item_meta'] as $item_meta_key => $item_meta_value ) {
|
243 |
+
$item_meta_value = maybe_unserialize( $item_meta_value );
|
244 |
+
$item_meta_value = is_array( $item_meta_value ) ? wp_json_encode( $item_meta_value ) : $item_meta_value;
|
245 |
+
$table_data[] = array( $item_key, $item_meta_key, $item_meta_value );
|
246 |
}
|
247 |
}
|
248 |
if ( ! empty( $table_data ) ) {
|
includes/class-wcj-checkout-custom-fields.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Checkout Custom Fields
|
4 |
*
|
5 |
-
* @version 5.6.
|
6 |
* @author Pluggabl LLC.
|
7 |
* @package Booster_For_WooCommerce/includes
|
8 |
*/
|
@@ -405,14 +405,13 @@ if ( ! class_exists( 'WCJ_Checkout_Custom_Fields' ) ) :
|
|
405 |
/**
|
406 |
* Add_woocommerce_admin_fields.
|
407 |
*
|
408 |
-
* @version 5.6.
|
409 |
* @todo converting from before version 2.3.0: section?
|
410 |
* @todo add alternative way of displaying fields (e.g. new meta box), so we have more control over displaying fields' values (e.g. line breaks)
|
411 |
* @param string $fields defines the fields.
|
412 |
* @param string $section defines the section.
|
413 |
*/
|
414 |
public function add_woocommerce_admin_fields( $fields, $section ) {
|
415 |
-
$wpnonce = isset( $_REQUEST['_wpnonce'] ) ? wp_verify_nonce( sanitize_key( $_REQUEST['_wpnonce'] ), '' ) : false;
|
416 |
for ( $i = 1; $i <= $this->wcj_checkout_custom_fields_total_number; $i++ ) {
|
417 |
if ( 'yes' === wcj_get_option( 'wcj_checkout_custom_field_enabled_' . $i ) ) {
|
418 |
$the_section = wcj_get_option( 'wcj_checkout_custom_field_section_' . $i );
|
@@ -478,6 +477,7 @@ if ( ! class_exists( 'WCJ_Checkout_Custom_Fields' ) ) :
|
|
478 |
update_post_meta( get_the_ID(), '_' . $section . '_' . $the_key_label, $the_meta['label'] );
|
479 |
}
|
480 |
}
|
|
|
481 |
if ( ! isset( $_POST[ '_' . $section . '_' . $the_key ] ) ) {
|
482 |
$fields[ $the_key ] = array(
|
483 |
'type' => $the_type,
|
@@ -504,6 +504,7 @@ if ( ! class_exists( 'WCJ_Checkout_Custom_Fields' ) ) :
|
|
504 |
$fields[ $the_key ]['options'] = $options;
|
505 |
}
|
506 |
}
|
|
|
507 |
}
|
508 |
}
|
509 |
return $fields;
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Checkout Custom Fields
|
4 |
*
|
5 |
+
* @version 5.6.8
|
6 |
* @author Pluggabl LLC.
|
7 |
* @package Booster_For_WooCommerce/includes
|
8 |
*/
|
405 |
/**
|
406 |
* Add_woocommerce_admin_fields.
|
407 |
*
|
408 |
+
* @version 5.6.8
|
409 |
* @todo converting from before version 2.3.0: section?
|
410 |
* @todo add alternative way of displaying fields (e.g. new meta box), so we have more control over displaying fields' values (e.g. line breaks)
|
411 |
* @param string $fields defines the fields.
|
412 |
* @param string $section defines the section.
|
413 |
*/
|
414 |
public function add_woocommerce_admin_fields( $fields, $section ) {
|
|
|
415 |
for ( $i = 1; $i <= $this->wcj_checkout_custom_fields_total_number; $i++ ) {
|
416 |
if ( 'yes' === wcj_get_option( 'wcj_checkout_custom_field_enabled_' . $i ) ) {
|
417 |
$the_section = wcj_get_option( 'wcj_checkout_custom_field_section_' . $i );
|
477 |
update_post_meta( get_the_ID(), '_' . $section . '_' . $the_key_label, $the_meta['label'] );
|
478 |
}
|
479 |
}
|
480 |
+
// phpcs:disable WordPress.Security.NonceVerification
|
481 |
if ( ! isset( $_POST[ '_' . $section . '_' . $the_key ] ) ) {
|
482 |
$fields[ $the_key ] = array(
|
483 |
'type' => $the_type,
|
504 |
$fields[ $the_key ]['options'] = $options;
|
505 |
}
|
506 |
}
|
507 |
+
// phpcs:enable WordPress.Security.NonceVerification
|
508 |
}
|
509 |
}
|
510 |
return $fields;
|
includes/class-wcj-checkout-files-upload.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Checkout Files Upload
|
4 |
*
|
5 |
-
* @version 5.6.
|
6 |
* @since 2.4.5
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/includes
|
@@ -424,7 +424,7 @@ if ( ! class_exists( 'WCJ_Checkout_Files_Upload' ) ) :
|
|
424 |
/**
|
425 |
* Process_checkout_files_upload.
|
426 |
*
|
427 |
-
* @version 5.6.
|
428 |
* @since 2.4.5
|
429 |
* @todo add option for admin to delete files one by one (i.e. not all at once)
|
430 |
* @todo `$this->additional_admin_emails_settings` - more customization options, e.g.: admin email, subject, content, from
|
@@ -653,9 +653,9 @@ if ( ! class_exists( 'WCJ_Checkout_Files_Upload' ) ) :
|
|
653 |
$real_base_path = realpath( wcj_get_wcj_uploads_dir( 'checkout_files_upload' ) ) . DIRECTORY_SEPARATOR;
|
654 |
|
655 |
if ( false === $real_file_path || 0 !== strpos( $real_file_path, $real_base_path ) ) {
|
656 |
-
|
657 |
} else {
|
658 |
-
|
659 |
}
|
660 |
}
|
661 |
delete_post_meta( $order_id, '_wcj_checkout_files_upload_' . $i );
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Checkout Files Upload
|
4 |
*
|
5 |
+
* @version 5.6.8
|
6 |
* @since 2.4.5
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/includes
|
424 |
/**
|
425 |
* Process_checkout_files_upload.
|
426 |
*
|
427 |
+
* @version 5.6.8
|
428 |
* @since 2.4.5
|
429 |
* @todo add option for admin to delete files one by one (i.e. not all at once)
|
430 |
* @todo `$this->additional_admin_emails_settings` - more customization options, e.g.: admin email, subject, content, from
|
653 |
$real_base_path = realpath( wcj_get_wcj_uploads_dir( 'checkout_files_upload' ) ) . DIRECTORY_SEPARATOR;
|
654 |
|
655 |
if ( false === $real_file_path || 0 !== strpos( $real_file_path, $real_base_path ) ) {
|
656 |
+
continue;
|
657 |
} else {
|
658 |
+
unlink( $tmp_file_name );
|
659 |
}
|
660 |
}
|
661 |
delete_post_meta( $order_id, '_wcj_checkout_files_upload_' . $i );
|
includes/class-wcj-coupon-by-user-role.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Coupon by User Role
|
4 |
*
|
5 |
-
* @version 5.6.
|
6 |
* @since 3.6.0
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/includes
|
@@ -68,7 +68,7 @@ if ( ! class_exists( 'WCJ_Coupon_By_User_Role' ) ) :
|
|
68 |
/**
|
69 |
* Coupon_valid.
|
70 |
*
|
71 |
-
* @version
|
72 |
* @since 3.6.0
|
73 |
* @todo (maybe) check if `$coupon->get_id()` is working in WC below v3.0.0
|
74 |
* @param string | bool $valid defines the valid.
|
@@ -96,7 +96,6 @@ if ( ! class_exists( 'WCJ_Coupon_By_User_Role' ) ) :
|
|
96 |
),
|
97 |
10000
|
98 |
);
|
99 |
-
return false; // phpcs:ignore
|
100 |
}
|
101 |
return $valid;
|
102 |
}
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Coupon by User Role
|
4 |
*
|
5 |
+
* @version 5.6.8
|
6 |
* @since 3.6.0
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/includes
|
68 |
/**
|
69 |
* Coupon_valid.
|
70 |
*
|
71 |
+
* @version 5.6.8
|
72 |
* @since 3.6.0
|
73 |
* @todo (maybe) check if `$coupon->get_id()` is working in WC below v3.0.0
|
74 |
* @param string | bool $valid defines the valid.
|
96 |
),
|
97 |
10000
|
98 |
);
|
|
|
99 |
}
|
100 |
return $valid;
|
101 |
}
|
includes/class-wcj-coupon-code-generator.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Coupon Code Generator
|
4 |
*
|
5 |
-
* @version 5.6.
|
6 |
* @since 3.2.3
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/includes
|
@@ -47,20 +47,17 @@ if ( ! class_exists( 'WCJ_Coupon_Code_Generator' ) ) :
|
|
47 |
/**
|
48 |
* Enqueue_generate_coupon_code_script.
|
49 |
*
|
50 |
-
* @version 5.6.
|
51 |
* @since 3.1.3
|
52 |
*/
|
53 |
public function enqueue_generate_coupon_code_script() {
|
54 |
global $pagenow;
|
55 |
-
|
56 |
-
$
|
57 |
-
if ( function_exists( 'wp_verify_nonce' ) ) {
|
58 |
-
$wpnonce = isset( $_REQUEST['_wpnonce'] ) ? wp_verify_nonce( sanitize_key( isset( $_REQUEST['_wpnonce'] ) ? $_REQUEST['_wpnonce'] : '' ) ) : true;
|
59 |
-
}
|
60 |
-
if ( 'post-new.php' === $pagenow && isset( $_GET['post_type'] ) && 'shop_coupon' === $_GET['post_type'] && $wpnonce ) {
|
61 |
wp_enqueue_script( 'wcj-coupons-code-generator', wcj_plugin_url() . '/includes/js/wcj-coupons-code-generator.js', array( 'jquery' ), w_c_j()->version, true );
|
62 |
wp_localize_script( 'wcj-coupons-code-generator', 'ajax_object', array( 'ajax_url' => admin_url( 'admin-ajax.php' ) ) );
|
63 |
}
|
|
|
64 |
}
|
65 |
|
66 |
/**
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Coupon Code Generator
|
4 |
*
|
5 |
+
* @version 5.6.8
|
6 |
* @since 3.2.3
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/includes
|
47 |
/**
|
48 |
* Enqueue_generate_coupon_code_script.
|
49 |
*
|
50 |
+
* @version 5.6.8
|
51 |
* @since 3.1.3
|
52 |
*/
|
53 |
public function enqueue_generate_coupon_code_script() {
|
54 |
global $pagenow;
|
55 |
+
// phpcs:disable WordPress.Security.NonceVerification
|
56 |
+
if ( ! empty( $_GET ) && 'post-new.php' === $pagenow && isset( $_GET['post_type'] ) && 'shop_coupon' === $_GET['post_type'] ) {
|
|
|
|
|
|
|
|
|
57 |
wp_enqueue_script( 'wcj-coupons-code-generator', wcj_plugin_url() . '/includes/js/wcj-coupons-code-generator.js', array( 'jquery' ), w_c_j()->version, true );
|
58 |
wp_localize_script( 'wcj-coupons-code-generator', 'ajax_object', array( 'ajax_url' => admin_url( 'admin-ajax.php' ) ) );
|
59 |
}
|
60 |
+
// phpcs:enable WordPress.Security.NonceVerification
|
61 |
}
|
62 |
|
63 |
/**
|
includes/class-wcj-cross-sells.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Cross-sells
|
4 |
*
|
5 |
-
* @version 5.6.
|
6 |
* @since 3.5.3
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/includes
|
@@ -35,7 +35,7 @@ if ( ! class_exists( 'WCJ_Cross_Sells' ) ) :
|
|
35 |
/* translators: %s: translation added */
|
36 |
__( 'You can also use %1$s shortcode to display cross-sells anywhere on your site, for example on checkout page with %2$s module.', 'woocommerce-jetpack' ),
|
37 |
'<code>[wcj_cross_sell_display]</code>',
|
38 |
-
'<a href="' . admin_url( '
|
39 |
__( 'Checkout Custom Info', 'woocommerce-jetpack' ) . '</a>'
|
40 |
);
|
41 |
$this->desc = __( 'Customize cross-sells products display. Global Cross-sells (Plus); Exclude "Not in Stock" Products (Plus); Replace Cart Products with Cross-sells (Plus).', 'woocommerce-jetpack' );
|
@@ -75,7 +75,7 @@ if ( ! class_exists( 'WCJ_Cross_Sells' ) ) :
|
|
75 |
/**
|
76 |
* Replace_with_cross_sells_to_url.
|
77 |
*
|
78 |
-
* @version 5.6.
|
79 |
* @since 3.9.0
|
80 |
* @todo [dev] re-check variable products
|
81 |
* @param string $url defines the url.
|
@@ -94,7 +94,15 @@ if ( ! class_exists( 'WCJ_Cross_Sells' ) ) :
|
|
94 |
}
|
95 |
}
|
96 |
if ( ! empty( $product_ids_to_remove ) ) {
|
97 |
-
$url =
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
98 |
}
|
99 |
}
|
100 |
return $url;
|
@@ -103,17 +111,13 @@ if ( ! class_exists( 'WCJ_Cross_Sells' ) ) :
|
|
103 |
/**
|
104 |
* Remove_from_cart_by_product_id.
|
105 |
*
|
106 |
-
* @version 5.6.
|
107 |
* @since 3.9.0
|
108 |
* @todo [dev] AJAX
|
109 |
*/
|
110 |
public function remove_from_cart_by_product_id() {
|
111 |
$_cart = WC()->cart;
|
112 |
-
$wpnonce =
|
113 |
-
if ( function_exists( 'wp_verify_nonce' ) ) {
|
114 |
-
$wpnonce = isset( $_REQUEST['_wpnonce'] ) ? wp_verify_nonce( sanitize_key( isset( $_REQUEST['_wpnonce'] ) ? $_REQUEST['_wpnonce'] : '' ) ) : true;
|
115 |
-
}
|
116 |
-
|
117 |
if ( isset( $_GET['wcj-remove-from-cart'] ) && $wpnonce ) {
|
118 |
if ( isset( $_cart ) ) {
|
119 |
$product_ids_to_remove = explode( ',', sanitize_text_field( wp_unslash( $_GET['wcj-remove-from-cart'] ) ) );
|
@@ -123,7 +127,7 @@ if ( ! class_exists( 'WCJ_Cross_Sells' ) ) :
|
|
123 |
}
|
124 |
}
|
125 |
}
|
126 |
-
wp_safe_redirect( remove_query_arg( 'wcj-remove-from-cart' ) );
|
127 |
exit;
|
128 |
}
|
129 |
}
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Cross-sells
|
4 |
*
|
5 |
+
* @version 5.6.8
|
6 |
* @since 3.5.3
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/includes
|
35 |
/* translators: %s: translation added */
|
36 |
__( 'You can also use %1$s shortcode to display cross-sells anywhere on your site, for example on checkout page with %2$s module.', 'woocommerce-jetpack' ),
|
37 |
'<code>[wcj_cross_sell_display]</code>',
|
38 |
+
'<a href="' . admin_url( wcj_admin_tab_url() . '&wcj-cat=cart_and_checkout§ion=checkout_custom_info' ) . '">' .
|
39 |
__( 'Checkout Custom Info', 'woocommerce-jetpack' ) . '</a>'
|
40 |
);
|
41 |
$this->desc = __( 'Customize cross-sells products display. Global Cross-sells (Plus); Exclude "Not in Stock" Products (Plus); Replace Cart Products with Cross-sells (Plus).', 'woocommerce-jetpack' );
|
75 |
/**
|
76 |
* Replace_with_cross_sells_to_url.
|
77 |
*
|
78 |
+
* @version 5.6.8
|
79 |
* @since 3.9.0
|
80 |
* @todo [dev] re-check variable products
|
81 |
* @param string $url defines the url.
|
94 |
}
|
95 |
}
|
96 |
if ( ! empty( $product_ids_to_remove ) ) {
|
97 |
+
$url = esc_url_raw(
|
98 |
+
add_query_arg(
|
99 |
+
array(
|
100 |
+
'wcj-remove-from-cart' => implode( ',', array_unique( $product_ids_to_remove ) ),
|
101 |
+
'wcj-remove-from-cart-nonce' => wp_create_nonce( 'wcj-remove-from-cart' ),
|
102 |
+
),
|
103 |
+
$url
|
104 |
+
)
|
105 |
+
);
|
106 |
}
|
107 |
}
|
108 |
return $url;
|
111 |
/**
|
112 |
* Remove_from_cart_by_product_id.
|
113 |
*
|
114 |
+
* @version 5.6.8
|
115 |
* @since 3.9.0
|
116 |
* @todo [dev] AJAX
|
117 |
*/
|
118 |
public function remove_from_cart_by_product_id() {
|
119 |
$_cart = WC()->cart;
|
120 |
+
$wpnonce = isset( $_GET['wcj-remove-from-cart-nonce'] ) ? wp_verify_nonce( sanitize_key( $_GET['wcj-remove-from-cart-nonce'] ), 'wcj-remove-from-cart' ) : false;
|
|
|
|
|
|
|
|
|
121 |
if ( isset( $_GET['wcj-remove-from-cart'] ) && $wpnonce ) {
|
122 |
if ( isset( $_cart ) ) {
|
123 |
$product_ids_to_remove = explode( ',', sanitize_text_field( wp_unslash( $_GET['wcj-remove-from-cart'] ) ) );
|
127 |
}
|
128 |
}
|
129 |
}
|
130 |
+
wp_safe_redirect( remove_query_arg( array( 'wcj-remove-from-cart', 'wcj-remove-from-cart-nonce' ) ) );
|
131 |
exit;
|
132 |
}
|
133 |
}
|
includes/class-wcj-crowdfunding.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Crowdfunding
|
4 |
*
|
5 |
-
* @version 5.6.
|
6 |
* @since 2.2.6
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/includes
|
@@ -21,7 +21,7 @@ if ( ! class_exists( 'WCJ_Crowdfunding' ) ) :
|
|
21 |
/**
|
22 |
* Constructor.
|
23 |
*
|
24 |
-
* @version 5.
|
25 |
* @since 2.2.6
|
26 |
*/
|
27 |
public function __construct() {
|
@@ -43,21 +43,21 @@ if ( ! class_exists( 'WCJ_Crowdfunding' ) ) :
|
|
43 |
sprintf(
|
44 |
/* translators: %s: translation added */
|
45 |
__( 'Shortcodes could be used for example in <a href="%s">Product Info module</a>.', 'woocommerce-jetpack' ),
|
46 |
-
admin_url( '
|
47 |
) .
|
48 |
'</li>' .
|
49 |
'<li>' .
|
50 |
sprintf(
|
51 |
/* translators: %s: translation added */
|
52 |
__( 'To change add to cart button labels use <a href="%s">Add to Cart Labels module</a>.', 'woocommerce-jetpack' ),
|
53 |
-
admin_url( '
|
54 |
) .
|
55 |
'</li>' .
|
56 |
'<li>' .
|
57 |
sprintf(
|
58 |
/* translators: %s: translation added */
|
59 |
__( 'If you want to allow customers to choose dynamic price, Use <a href="%s">Product Open Pricing (Name Your Price) module</a>.', 'woocommerce-jetpack' ),
|
60 |
-
admin_url( '
|
61 |
) .
|
62 |
'</li>' .
|
63 |
'</ol>';
|
@@ -75,7 +75,7 @@ if ( ! class_exists( 'WCJ_Crowdfunding' ) ) :
|
|
75 |
/**
|
76 |
* Check_dates.
|
77 |
*
|
78 |
-
* @version 5.6.
|
79 |
* @since 2.2.6
|
80 |
* @param bool $purchasable defines the purchasable.
|
81 |
* @param string | array $_product defines the _product.
|
@@ -88,10 +88,10 @@ if ( ! class_exists( 'WCJ_Crowdfunding' ) ) :
|
|
88 |
$end_date_str = get_post_meta( $_product_id, '_wcj_crowdfunding_deadline', true );
|
89 |
$start_date = ( '' !== $start_date_str ) ? strtotime( $start_date_str ) : 0;
|
90 |
$end_date = ( '' !== $end_date_str ) ? strtotime( $end_date_str ) : 0;
|
91 |
-
if ( $start_date > 0 && ( $start_date - (
|
92 |
$purchasable = false;
|
93 |
}
|
94 |
-
if ( $end_date > 0 && ( $end_date - (
|
95 |
$purchasable = false;
|
96 |
}
|
97 |
}
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Crowdfunding
|
4 |
*
|
5 |
+
* @version 5.6.8
|
6 |
* @since 2.2.6
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/includes
|
21 |
/**
|
22 |
* Constructor.
|
23 |
*
|
24 |
+
* @version 5.6.8
|
25 |
* @since 2.2.6
|
26 |
*/
|
27 |
public function __construct() {
|
43 |
sprintf(
|
44 |
/* translators: %s: translation added */
|
45 |
__( 'Shortcodes could be used for example in <a href="%s">Product Info module</a>.', 'woocommerce-jetpack' ),
|
46 |
+
admin_url( wcj_admin_tab_url() . '&wcj-cat=products§ion=product_custom_info' )
|
47 |
) .
|
48 |
'</li>' .
|
49 |
'<li>' .
|
50 |
sprintf(
|
51 |
/* translators: %s: translation added */
|
52 |
__( 'To change add to cart button labels use <a href="%s">Add to Cart Labels module</a>.', 'woocommerce-jetpack' ),
|
53 |
+
admin_url( wcj_admin_tab_url() . '&wcj-cat=labels§ion=add_to_cart' )
|
54 |
) .
|
55 |
'</li>' .
|
56 |
'<li>' .
|
57 |
sprintf(
|
58 |
/* translators: %s: translation added */
|
59 |
__( 'If you want to allow customers to choose dynamic price, Use <a href="%s">Product Open Pricing (Name Your Price) module</a>.', 'woocommerce-jetpack' ),
|
60 |
+
admin_url( wcj_admin_tab_url() . '&wcj-cat=prices_and_currencies§ion=product_open_pricing' )
|
61 |
) .
|
62 |
'</li>' .
|
63 |
'</ol>';
|
75 |
/**
|
76 |
* Check_dates.
|
77 |
*
|
78 |
+
* @version 5.6.8
|
79 |
* @since 2.2.6
|
80 |
* @param bool $purchasable defines the purchasable.
|
81 |
* @param string | array $_product defines the _product.
|
88 |
$end_date_str = get_post_meta( $_product_id, '_wcj_crowdfunding_deadline', true );
|
89 |
$start_date = ( '' !== $start_date_str ) ? strtotime( $start_date_str ) : 0;
|
90 |
$end_date = ( '' !== $end_date_str ) ? strtotime( $end_date_str ) : 0;
|
91 |
+
if ( $start_date > 0 && ( $start_date - wcj_get_timestamp_date_from_gmt() ) > 0 ) {
|
92 |
$purchasable = false;
|
93 |
}
|
94 |
+
if ( $end_date > 0 && ( $end_date - wcj_get_timestamp_date_from_gmt() ) < 0 ) {
|
95 |
$purchasable = false;
|
96 |
}
|
97 |
}
|
includes/class-wcj-currency-exchange-rates.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Currency Exchange Rates
|
4 |
*
|
5 |
-
* @version 5.6.
|
6 |
* @since 2.3.0
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/includes
|
@@ -64,11 +64,12 @@ if ( ! class_exists( 'WCJ_Currency_Exchange_Rates' ) ) :
|
|
64 |
/**
|
65 |
* Maybe_update_all_rates.
|
66 |
*
|
67 |
-
* @version 5.6.
|
68 |
* @since 3.4.5
|
69 |
*/
|
70 |
public function maybe_update_all_rates() {
|
71 |
-
|
|
|
72 |
do_action( 'auto_update_exchange_rates_hook' );
|
73 |
wp_safe_redirect( remove_query_arg( 'wcj_currency_exchange_rates_update_now' ) );
|
74 |
}
|
@@ -77,14 +78,18 @@ if ( ! class_exists( 'WCJ_Currency_Exchange_Rates' ) ) :
|
|
77 |
/**
|
78 |
* Wcj_ajax_get_exchange_rates.
|
79 |
*
|
80 |
-
* @version 5.6.
|
81 |
* @since 2.6.0
|
82 |
* @todo (maybe) move this to `class-wcj-exchange-rates.php`
|
83 |
*/
|
84 |
public function wcj_ajax_get_exchange_rates() {
|
85 |
-
$
|
86 |
-
|
87 |
-
|
|
|
|
|
|
|
|
|
88 |
die();
|
89 |
}
|
90 |
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Currency Exchange Rates
|
4 |
*
|
5 |
+
* @version 5.6.8
|
6 |
* @since 2.3.0
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/includes
|
64 |
/**
|
65 |
* Maybe_update_all_rates.
|
66 |
*
|
67 |
+
* @version 5.6.8
|
68 |
* @since 3.4.5
|
69 |
*/
|
70 |
public function maybe_update_all_rates() {
|
71 |
+
$wpnonce = isset( $_REQUEST['wcj-cat-nonce'] ) ? wp_verify_nonce( sanitize_key( $_REQUEST['wcj-cat-nonce'] ), 'wcj-cat-nonce' ) : false;
|
72 |
+
if ( $wpnonce && isset( $_GET['wcj_currency_exchange_rates_update_now'] ) ) {
|
73 |
do_action( 'auto_update_exchange_rates_hook' );
|
74 |
wp_safe_redirect( remove_query_arg( 'wcj_currency_exchange_rates_update_now' ) );
|
75 |
}
|
78 |
/**
|
79 |
* Wcj_ajax_get_exchange_rates.
|
80 |
*
|
81 |
+
* @version 5.6.8
|
82 |
* @since 2.6.0
|
83 |
* @todo (maybe) move this to `class-wcj-exchange-rates.php`
|
84 |
*/
|
85 |
public function wcj_ajax_get_exchange_rates() {
|
86 |
+
$wpnonce = isset( $_POST['wpnonce'] ) ? wp_verify_nonce( sanitize_key( $_POST['wpnonce'] ), 'ajax-nonce' ) : false;
|
87 |
+
if ( ! $wpnonce ) {
|
88 |
+
die();
|
89 |
+
}
|
90 |
+
$wcj_currency_from = isset( $_POST['wcj_currency_from'] ) ? sanitize_text_field( wp_unslash( $_POST['wcj_currency_from'] ) ) : '';
|
91 |
+
$wcj_currency_to = isset( $_POST['wcj_currency_to'] ) ? sanitize_text_field( wp_unslash( $_POST['wcj_currency_to'] ) ) : '';
|
92 |
+
echo esc_html( wcj_get_exchange_rate( $wcj_currency_from, $wcj_currency_to ) );
|
93 |
die();
|
94 |
}
|
95 |
|
includes/class-wcj-currency-per-product.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Currency per Product
|
4 |
*
|
5 |
-
* @version 5.6.
|
6 |
* @since 2.5.2
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/includes
|
@@ -424,20 +424,17 @@ if ( ! class_exists( 'WCJ_Currency_Per_Product' ) ) :
|
|
424 |
/**
|
425 |
* Get_current_product_id_and_currency.
|
426 |
*
|
427 |
-
* @version 5.6.
|
428 |
* @since 2.7.0
|
429 |
*/
|
430 |
public function get_current_product_id_and_currency() {
|
431 |
-
$wpnonce = true;
|
432 |
-
if ( function_exists( 'wp_verify_nonce' ) ) {
|
433 |
-
$wpnonce = isset( $_REQUEST['_wpnonce'] ) ? wp_verify_nonce( sanitize_key( isset( $_REQUEST['_wpnonce'] ) ? $_REQUEST['_wpnonce'] : '' ) ) : true;
|
434 |
-
}
|
435 |
// Get ID.
|
436 |
$the_id = false;
|
437 |
global $product;
|
438 |
-
if ( $product
|
439 |
$the_id = wcj_get_product_id_or_variation_parent_id( $product );
|
440 |
}
|
|
|
441 |
if ( ! $the_id && isset( $_REQUEST['product_id'] ) ) {
|
442 |
$the_id = isset( $_REQUEST['product_id'] ) ? sanitize_text_field( wp_unslash( $_REQUEST['product_id'] ) ) : '';
|
443 |
}
|
@@ -447,6 +444,7 @@ if ( ! class_exists( 'WCJ_Currency_Per_Product' ) ) :
|
|
447 |
parse_str( $post_form, $posted );
|
448 |
$the_id = isset( $posted['add-to-cart'] ) ? $posted['add-to-cart'] : 0;
|
449 |
}
|
|
|
450 |
$eventon_wc_product_id = get_post_meta( get_the_ID(), 'tx_woocommerce_product_id', true );
|
451 |
if ( ! $the_id && '' !== ( $eventon_wc_product_id ) ) { // EventON plugin.
|
452 |
$the_id = $eventon_wc_product_id;
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Currency per Product
|
4 |
*
|
5 |
+
* @version 5.6.8
|
6 |
* @since 2.5.2
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/includes
|
424 |
/**
|
425 |
* Get_current_product_id_and_currency.
|
426 |
*
|
427 |
+
* @version 5.6.8
|
428 |
* @since 2.7.0
|
429 |
*/
|
430 |
public function get_current_product_id_and_currency() {
|
|
|
|
|
|
|
|
|
431 |
// Get ID.
|
432 |
$the_id = false;
|
433 |
global $product;
|
434 |
+
if ( $product ) {
|
435 |
$the_id = wcj_get_product_id_or_variation_parent_id( $product );
|
436 |
}
|
437 |
+
// phpcs:disable WordPress.Security.NonceVerification
|
438 |
if ( ! $the_id && isset( $_REQUEST['product_id'] ) ) {
|
439 |
$the_id = isset( $_REQUEST['product_id'] ) ? sanitize_text_field( wp_unslash( $_REQUEST['product_id'] ) ) : '';
|
440 |
}
|
444 |
parse_str( $post_form, $posted );
|
445 |
$the_id = isset( $posted['add-to-cart'] ) ? $posted['add-to-cart'] : 0;
|
446 |
}
|
447 |
+
// phpcs:enable WordPress.Security.NonceVerification
|
448 |
$eventon_wc_product_id = get_post_meta( get_the_ID(), 'tx_woocommerce_product_id', true );
|
449 |
if ( ! $the_id && '' !== ( $eventon_wc_product_id ) ) { // EventON plugin.
|
450 |
$the_id = $eventon_wc_product_id;
|
includes/class-wcj-custom-php.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Custom PHP
|
4 |
*
|
5 |
-
* @version 5.6.
|
6 |
* @since 4.0.0
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/includes
|
@@ -21,7 +21,7 @@ if ( ! class_exists( 'WCJ_Custom_PHP' ) ) :
|
|
21 |
/**
|
22 |
* Constructor.
|
23 |
*
|
24 |
-
* @version 5.6.
|
25 |
* @since 4.0.0
|
26 |
* @todo [dev] maybe remove `wcj_disable_custom_php` from URL on settings save
|
27 |
* @todo [dev] allow tab in content (i.e. settings (textarea))
|
@@ -38,10 +38,10 @@ if ( ! class_exists( 'WCJ_Custom_PHP' ) ) :
|
|
38 |
'<strong>wp-login.php</strong>'
|
39 |
) . ' ' .
|
40 |
sprintf(
|
41 |
-
|
42 |
__( 'E.g.: %s', 'woocommerce-jetpack' ),
|
43 |
-
'<a href="' . admin_url( '
|
44 |
-
admin_url( '
|
45 |
);
|
46 |
$this->link_slug = 'woocommerce-booster-custom-php';
|
47 |
parent::__construct();
|
@@ -76,7 +76,7 @@ if ( ! class_exists( 'WCJ_Custom_PHP' ) ) :
|
|
76 |
/**
|
77 |
* Create_php_file.
|
78 |
*
|
79 |
-
* @version 5.6.
|
80 |
* @since 4.0.0
|
81 |
* @todo [dev] `unlink` and `rmdir` on settings reset
|
82 |
* @todo [dev] on empty content - delete dir also (`rmdir`).
|
@@ -84,11 +84,15 @@ if ( ! class_exists( 'WCJ_Custom_PHP' ) ) :
|
|
84 |
* @param string | array $current_section defines the current_section.
|
85 |
*/
|
86 |
public function create_php_file( $sections, $current_section ) {
|
|
|
|
|
|
|
87 |
if ( $this->id === $current_section ) {
|
88 |
$file_content = wcj_get_option( 'wcj_custom_php', '' );
|
89 |
if ( '' !== $file_content ) {
|
90 |
$file_path = wcj_get_wcj_uploads_dir( 'custom_php' ) . DIRECTORY_SEPARATOR . 'booster.php';
|
91 |
-
|
|
|
92 |
} else {
|
93 |
$file_path = wcj_get_wcj_uploads_dir( 'custom_php', false ) . DIRECTORY_SEPARATOR . 'booster.php';
|
94 |
if ( file_exists( $file_path ) ) {
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Custom PHP
|
4 |
*
|
5 |
+
* @version 5.6.8
|
6 |
* @since 4.0.0
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/includes
|
21 |
/**
|
22 |
* Constructor.
|
23 |
*
|
24 |
+
* @version 5.6.8
|
25 |
* @since 4.0.0
|
26 |
* @todo [dev] maybe remove `wcj_disable_custom_php` from URL on settings save
|
27 |
* @todo [dev] allow tab in content (i.e. settings (textarea))
|
38 |
'<strong>wp-login.php</strong>'
|
39 |
) . ' ' .
|
40 |
sprintf(
|
41 |
+
/* translators: %s: translation added */
|
42 |
__( 'E.g.: %s', 'woocommerce-jetpack' ),
|
43 |
+
'<a href="' . admin_url( wcj_admin_tab_url() . '&wcj-cat=emails_and_misc§ion=custom_php&wcj_disable_custom_php&wcj_disable_custom_php_nonce=' . wp_create_nonce( 'wcj-disable-custom-php' ) ) . '">' .
|
44 |
+
admin_url( wcj_admin_tab_url() . '&wcj-cat=emails_and_misc§ion=custom_php&wcj_disable_custom_php&wcj_disable_custom_php_nonce=' . wp_create_nonce( 'wcj-disable-custom-php' ) ) . '</a>'
|
45 |
);
|
46 |
$this->link_slug = 'woocommerce-booster-custom-php';
|
47 |
parent::__construct();
|
76 |
/**
|
77 |
* Create_php_file.
|
78 |
*
|
79 |
+
* @version 5.6.8
|
80 |
* @since 4.0.0
|
81 |
* @todo [dev] `unlink` and `rmdir` on settings reset
|
82 |
* @todo [dev] on empty content - delete dir also (`rmdir`).
|
84 |
* @param string | array $current_section defines the current_section.
|
85 |
*/
|
86 |
public function create_php_file( $sections, $current_section ) {
|
87 |
+
require_once ABSPATH . '/wp-admin/includes/file.php';
|
88 |
+
global $wp_filesystem;
|
89 |
+
|
90 |
if ( $this->id === $current_section ) {
|
91 |
$file_content = wcj_get_option( 'wcj_custom_php', '' );
|
92 |
if ( '' !== $file_content ) {
|
93 |
$file_path = wcj_get_wcj_uploads_dir( 'custom_php' ) . DIRECTORY_SEPARATOR . 'booster.php';
|
94 |
+
WP_Filesystem();
|
95 |
+
$wp_filesystem->put_contents( $file_path, '<?php' . PHP_EOL . $file_content, FS_CHMOD_FILE );
|
96 |
} else {
|
97 |
$file_path = wcj_get_wcj_uploads_dir( 'custom_php', false ) . DIRECTORY_SEPARATOR . 'booster.php';
|
98 |
if ( file_exists( $file_path ) ) {
|
includes/class-wcj-debug-tools.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Debug Tools
|
4 |
*
|
5 |
-
* @version 5.6.
|
6 |
* @author Pluggabl LLC.
|
7 |
* @package Booster_For_WooCommerce/includes
|
8 |
*/
|
@@ -91,7 +91,7 @@ if ( ! class_exists( 'WCJ_Debug_Tools' ) ) :
|
|
91 |
/**
|
92 |
* Get_system_info_table_array.
|
93 |
*
|
94 |
-
* @version 5.6.
|
95 |
* @since 2.5.7
|
96 |
* @todo [feature] (maybe) 'DB_NAME', 'DB_USER', 'DB_PASSWORD', 'DB_HOST', 'DB_CHARSET', 'DB_COLLATE'
|
97 |
*/
|
@@ -110,10 +110,7 @@ if ( ! class_exists( 'WCJ_Debug_Tools' ) ) :
|
|
110 |
foreach ( $constants_array as $the_constant ) {
|
111 |
$system_info[] = array( $the_constant, ( defined( $the_constant ) ? constant( $the_constant ) : __( 'NOT DEFINED', 'woocommerce-jetpack' ) ) );
|
112 |
}
|
113 |
-
$wpnonce =
|
114 |
-
if ( function_exists( 'wp_verify_nonce' ) ) {
|
115 |
-
$wpnonce = isset( $_REQUEST['_wpnonce'] ) ? wp_verify_nonce( sanitize_key( isset( $_REQUEST['_wpnonce'] ) ? $_REQUEST['_wpnonce'] : '' ) ) : true;
|
116 |
-
}
|
117 |
if ( isset( $_GET['wcj_debug'] ) && $wpnonce ) {
|
118 |
foreach ( $_SERVER as $server_var_id => $server_var_value ) {
|
119 |
$system_info[] = array( $server_var_id, esc_html( $server_var_value ) );
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Debug Tools
|
4 |
*
|
5 |
+
* @version 5.6.8
|
6 |
* @author Pluggabl LLC.
|
7 |
* @package Booster_For_WooCommerce/includes
|
8 |
*/
|
91 |
/**
|
92 |
* Get_system_info_table_array.
|
93 |
*
|
94 |
+
* @version 5.6.8
|
95 |
* @since 2.5.7
|
96 |
* @todo [feature] (maybe) 'DB_NAME', 'DB_USER', 'DB_PASSWORD', 'DB_HOST', 'DB_CHARSET', 'DB_COLLATE'
|
97 |
*/
|
110 |
foreach ( $constants_array as $the_constant ) {
|
111 |
$system_info[] = array( $the_constant, ( defined( $the_constant ) ? constant( $the_constant ) : __( 'NOT DEFINED', 'woocommerce-jetpack' ) ) );
|
112 |
}
|
113 |
+
$wpnonce = isset( $_REQUEST['wcj_debug-nonce'] ) ? wp_verify_nonce( sanitize_key( $_REQUEST['wcj_debug-nonce'] ), 'wcj_debug' ) : false;
|
|
|
|
|
|
|
114 |
if ( isset( $_GET['wcj_debug'] ) && $wpnonce ) {
|
115 |
foreach ( $_SERVER as $server_var_id => $server_var_value ) {
|
116 |
$system_info[] = array( $server_var_id, esc_html( $server_var_value ) );
|
includes/class-wcj-emails-verification.php
CHANGED
@@ -1,8 +1,8 @@
|
|
1 |
-
<?php
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Email Verification
|
4 |
*
|
5 |
-
* @version 5.6.
|
6 |
* @since 2.8.0
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/includes
|
@@ -12,11 +12,11 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
12 |
exit; // Exit if accessed directly.
|
13 |
}
|
14 |
|
15 |
-
if ( ! class_exists( '
|
16 |
/**
|
17 |
* WCJ_Currencies.
|
18 |
*/
|
19 |
-
class
|
20 |
|
21 |
/**
|
22 |
* Constructor.
|
@@ -191,7 +191,7 @@ if ( ! class_exists( 'WCJ_Email_Verification' ) ) :
|
|
191 |
/**
|
192 |
* Reset_and_mail_activation_link.
|
193 |
*
|
194 |
-
* @version 5.6.
|
195 |
* @since 2.8.0
|
196 |
* @todo %site_name% etc. in `wcj_emails_verification_email_subject`
|
197 |
* @param int $user_id defines the user_id.
|
@@ -202,7 +202,7 @@ if ( ! class_exists( 'WCJ_Email_Verification' ) ) :
|
|
202 |
$url = wp_nonce_url(
|
203 |
add_query_arg(
|
204 |
'wcj_verify_email',
|
205 |
-
base64_encode(
|
206 |
wp_json_encode(
|
207 |
array(
|
208 |
'id' => $user_id,
|
@@ -248,13 +248,13 @@ if ( ! class_exists( 'WCJ_Email_Verification' ) ) :
|
|
248 |
/**
|
249 |
* Process_email_verification.
|
250 |
*
|
251 |
-
* @version 5.6.
|
252 |
* @since 2.8.0
|
253 |
*/
|
254 |
public function process_email_verification() {
|
255 |
-
if ( isset( $_GET['wcj_verified_email'] ) ) {
|
256 |
if ( function_exists( 'wc_add_notice' ) ) {
|
257 |
-
$data = json_decode( base64_decode( $_GET['wcj_verified_email'] ), true );
|
258 |
if ( ! empty( $data['id'] ) && ! empty( $data['code'] ) && get_user_meta( $data['id'], 'wcj_activation_code', true ) === $data['code'] ) {
|
259 |
wc_add_notice(
|
260 |
do_shortcode(
|
@@ -266,8 +266,8 @@ if ( ! class_exists( 'WCJ_Email_Verification' ) ) :
|
|
266 |
);
|
267 |
}
|
268 |
}
|
269 |
-
} elseif ( isset( $_GET['wcj_verify_email'] ) ) {
|
270 |
-
$data = json_decode( base64_decode( sanitize_text_field( wp_unslash( $_GET['wcj_verify_email'] ) ) ), true );
|
271 |
if ( ! empty( $data['id'] ) && ! empty( $data['code'] ) && get_user_meta( $data['id'], 'wcj_activation_code', true ) === $data['code'] ) {
|
272 |
update_user_meta( $data['id'], 'wcj_is_activated', '1' );
|
273 |
if ( 'yes' === wcj_get_option( 'wcj_emails_verification_redirect_on_success', 'yes' ) ) {
|
@@ -276,7 +276,7 @@ if ( ! class_exists( 'WCJ_Email_Verification' ) ) :
|
|
276 |
}
|
277 |
$custom_url = wcj_get_option( 'wcj_emails_verification_redirect_on_success_custom_url', '' );
|
278 |
$url = ( '' !== ( $custom_url ) ? $custom_url : wc_get_page_permalink( 'myaccount' ) );
|
279 |
-
wp_safe_redirect( add_query_arg( 'wcj_verified_email', sanitize_text_field( wp_unslash( $_GET['wcj_verify_email'] ) ), $url ) );
|
280 |
exit;
|
281 |
} elseif ( ! empty( $data['id'] ) ) {
|
282 |
$_notice = do_shortcode(
|
@@ -294,7 +294,7 @@ if ( ! class_exists( 'WCJ_Email_Verification' ) ) :
|
|
294 |
);
|
295 |
wc_add_notice( $_notice, 'error' );
|
296 |
}
|
297 |
-
} elseif ( isset( $_GET['wcj_activate_account_message'] ) ) {
|
298 |
wc_add_notice(
|
299 |
do_shortcode(
|
300 |
wcj_get_option(
|
@@ -303,8 +303,8 @@ if ( ! class_exists( 'WCJ_Email_Verification' ) ) :
|
|
303 |
)
|
304 |
)
|
305 |
);
|
306 |
-
} elseif ( isset( $_GET['wcj_user_id'] ) ) {
|
307 |
-
$this->reset_and_mail_activation_link( sanitize_text_field( wp_unslash( $_GET['wcj_user_id'] ) ) );
|
308 |
wc_add_notice(
|
309 |
do_shortcode(
|
310 |
wcj_get_option(
|
@@ -320,4 +320,4 @@ if ( ! class_exists( 'WCJ_Email_Verification' ) ) :
|
|
320 |
|
321 |
endif;
|
322 |
|
323 |
-
return new
|
1 |
+
<?php
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Email Verification
|
4 |
*
|
5 |
+
* @version 5.6.8
|
6 |
* @since 2.8.0
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/includes
|
12 |
exit; // Exit if accessed directly.
|
13 |
}
|
14 |
|
15 |
+
if ( ! class_exists( 'WCJ_Emails_Verification' ) ) :
|
16 |
/**
|
17 |
* WCJ_Currencies.
|
18 |
*/
|
19 |
+
class WCJ_Emails_Verification extends WCJ_Module {
|
20 |
|
21 |
/**
|
22 |
* Constructor.
|
191 |
/**
|
192 |
* Reset_and_mail_activation_link.
|
193 |
*
|
194 |
+
* @version 5.6.8
|
195 |
* @since 2.8.0
|
196 |
* @todo %site_name% etc. in `wcj_emails_verification_email_subject`
|
197 |
* @param int $user_id defines the user_id.
|
202 |
$url = wp_nonce_url(
|
203 |
add_query_arg(
|
204 |
'wcj_verify_email',
|
205 |
+
base64_encode(
|
206 |
wp_json_encode(
|
207 |
array(
|
208 |
'id' => $user_id,
|
248 |
/**
|
249 |
* Process_email_verification.
|
250 |
*
|
251 |
+
* @version 5.6.8
|
252 |
* @since 2.8.0
|
253 |
*/
|
254 |
public function process_email_verification() {
|
255 |
+
if ( isset( $_GET['wcj_verified_email'] ) ) {
|
256 |
if ( function_exists( 'wc_add_notice' ) ) {
|
257 |
+
$data = json_decode( base64_decode( sanitize_email( wp_unslash( $_GET['wcj_verified_email'] ) ) ), true );
|
258 |
if ( ! empty( $data['id'] ) && ! empty( $data['code'] ) && get_user_meta( $data['id'], 'wcj_activation_code', true ) === $data['code'] ) {
|
259 |
wc_add_notice(
|
260 |
do_shortcode(
|
266 |
);
|
267 |
}
|
268 |
}
|
269 |
+
} elseif ( isset( $_GET['wcj_verify_email'] ) ) {
|
270 |
+
$data = json_decode( base64_decode( sanitize_text_field( wp_unslash( $_GET['wcj_verify_email'] ) ) ), true );
|
271 |
if ( ! empty( $data['id'] ) && ! empty( $data['code'] ) && get_user_meta( $data['id'], 'wcj_activation_code', true ) === $data['code'] ) {
|
272 |
update_user_meta( $data['id'], 'wcj_is_activated', '1' );
|
273 |
if ( 'yes' === wcj_get_option( 'wcj_emails_verification_redirect_on_success', 'yes' ) ) {
|
276 |
}
|
277 |
$custom_url = wcj_get_option( 'wcj_emails_verification_redirect_on_success_custom_url', '' );
|
278 |
$url = ( '' !== ( $custom_url ) ? $custom_url : wc_get_page_permalink( 'myaccount' ) );
|
279 |
+
wp_safe_redirect( add_query_arg( 'wcj_verified_email', sanitize_text_field( wp_unslash( $_GET['wcj_verify_email'] ) ), $url ) );
|
280 |
exit;
|
281 |
} elseif ( ! empty( $data['id'] ) ) {
|
282 |
$_notice = do_shortcode(
|
294 |
);
|
295 |
wc_add_notice( $_notice, 'error' );
|
296 |
}
|
297 |
+
} elseif ( isset( $_GET['wcj_activate_account_message'] ) ) {
|
298 |
wc_add_notice(
|
299 |
do_shortcode(
|
300 |
wcj_get_option(
|
303 |
)
|
304 |
)
|
305 |
);
|
306 |
+
} elseif ( isset( $_GET['wcj_user_id'] ) ) {
|
307 |
+
$this->reset_and_mail_activation_link( sanitize_text_field( wp_unslash( $_GET['wcj_user_id'] ) ) );
|
308 |
wc_add_notice(
|
309 |
do_shortcode(
|
310 |
wcj_get_option(
|
320 |
|
321 |
endif;
|
322 |
|
323 |
+
return new WCJ_Emails_Verification();
|
includes/class-wcj-eu-vat-number.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - EU VAT Number
|
4 |
*
|
5 |
-
* @version 5.6.
|
6 |
* @since 2.3.9
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/includes
|
@@ -119,14 +119,11 @@ if ( ! class_exists( 'WCJ_EU_VAT_Number' ) ) :
|
|
119 |
/**
|
120 |
* Admin_validate_vat_and_maybe_remove_taxes.
|
121 |
*
|
122 |
-
* @version 5.6.
|
123 |
* @since 3.3.0
|
124 |
*/
|
125 |
public function admin_validate_vat_and_maybe_remove_taxes() {
|
126 |
-
$wpnonce =
|
127 |
-
if ( function_exists( 'wp_verify_nonce' ) ) {
|
128 |
-
$wpnonce = isset( $_REQUEST['_wpnonce'] ) ? wp_verify_nonce( sanitize_key( isset( $_REQUEST['_wpnonce'] ) ? $_REQUEST['_wpnonce'] : '' ) ) : true;
|
129 |
-
}
|
130 |
if ( $wpnonce && isset( $_GET['validate_vat_and_maybe_remove_taxes'] ) ) {
|
131 |
$order_id = sanitize_text_field( wp_unslash( $_GET['validate_vat_and_maybe_remove_taxes'] ) );
|
132 |
$order = wc_get_order( $order_id );
|
@@ -145,7 +142,7 @@ if ( ! class_exists( 'WCJ_EU_VAT_Number' ) ) :
|
|
145 |
}
|
146 |
}
|
147 |
}
|
148 |
-
wp_safe_redirect(
|
149 |
exit;
|
150 |
}
|
151 |
}
|
@@ -187,7 +184,7 @@ if ( ! class_exists( 'WCJ_EU_VAT_Number' ) ) :
|
|
187 |
/**
|
188 |
* Create_meta_box.
|
189 |
*
|
190 |
-
* @version 5.
|
191 |
* @since 2.6.0
|
192 |
*/
|
193 |
public function create_meta_box() {
|
@@ -253,7 +250,14 @@ if ( ! class_exists( 'WCJ_EU_VAT_Number' ) ) :
|
|
253 |
)
|
254 |
)
|
255 |
);
|
256 |
-
echo '<p><a href="' . esc_url(
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
257 |
wp_kses_post( 'Validate VAT and remove taxes', 'woocommerce-jetpack' ) . '</a></p>';
|
258 |
}
|
259 |
|
@@ -426,7 +430,7 @@ if ( ! class_exists( 'WCJ_EU_VAT_Number' ) ) :
|
|
426 |
/**
|
427 |
* Enqueue_scripts.
|
428 |
*
|
429 |
-
* @version 5.
|
430 |
*/
|
431 |
public function enqueue_scripts() {
|
432 |
if (
|
@@ -449,6 +453,7 @@ if ( ! class_exists( 'WCJ_EU_VAT_Number' ) ) :
|
|
449 |
'progress_text_valid' => do_shortcode( wcj_get_option( 'wcj_eu_vat_number_progress_text_valid', __( 'VAT is valid.', 'woocommerce-jetpack' ) ) ),
|
450 |
'progress_text_not_valid' => do_shortcode( wcj_get_option( 'wcj_eu_vat_number_progress_text_not_valid', __( 'VAT is not valid.', 'woocommerce-jetpack' ) ) ),
|
451 |
'progress_text_validation_failed' => do_shortcode( wcj_get_option( 'wcj_eu_vat_number_progress_text_validation_failed', __( 'Validation failed. Please try again.', 'woocommerce-jetpack' ) ) ),
|
|
|
452 |
)
|
453 |
);
|
454 |
}
|
@@ -456,7 +461,7 @@ if ( ! class_exists( 'WCJ_EU_VAT_Number' ) ) :
|
|
456 |
/**
|
457 |
* Wcj_validate_eu_vat_number.
|
458 |
*
|
459 |
-
* @version 5.6.
|
460 |
* @param array $param defines the param.
|
461 |
*/
|
462 |
public function wcj_validate_eu_vat_number( $param ) {
|
@@ -467,8 +472,9 @@ if ( ! class_exists( 'WCJ_EU_VAT_Number' ) ) :
|
|
467 |
'echo' => true,
|
468 |
)
|
469 |
);
|
|
|
470 |
$eu_vat_number = isset( $param['wcj_eu_vat_number_to_check'] ) && '' !== $param['wcj_eu_vat_number_to_check'] && null !== $param['wcj_eu_vat_number_to_check'] ? sanitize_text_field( wp_unslash( $param['wcj_eu_vat_number_to_check'] ) ) : '';
|
471 |
-
$eu_vat_number = empty( $eu_vat_number ) && isset( $_POST['wcj_eu_vat_number_to_check'] ) && '' !== $_POST['wcj_eu_vat_number_to_check'] && null !== $_POST['wcj_eu_vat_number_to_check'] ? sanitize_text_field( wp_unslash( $_POST['wcj_eu_vat_number_to_check'] ) ) : $eu_vat_number;
|
472 |
if ( ! empty( $eu_vat_number ) ) {
|
473 |
$eu_vat_number_to_check = substr( $eu_vat_number, 2 );
|
474 |
$eu_vat_number_country_to_check = substr( $eu_vat_number, 0, 2 );
|
@@ -506,7 +512,7 @@ if ( ! class_exists( 'WCJ_EU_VAT_Number' ) ) :
|
|
506 |
/**
|
507 |
* Need_to_exclude_vat.
|
508 |
*
|
509 |
-
* @version 5.6.
|
510 |
* @since 4.6.0
|
511 |
*
|
512 |
* @return bool
|
@@ -524,7 +530,7 @@ if ( ! class_exists( 'WCJ_EU_VAT_Number' ) ) :
|
|
524 |
'yes' === wcj_get_option( 'wcj_eu_vat_number_disable_for_valid', 'yes' ) &&
|
525 |
(
|
526 |
( true === wcj_session_get( 'wcj_is_eu_vat_number_valid' ) && null !== ( $eu_vat_number ) ) ||
|
527 |
-
( 'yes' === wcj_get_option( 'wcj_eu_vat_number_disable_for_valid_by_user_vat', 'no' ) && is_user_logged_in() && ! empty( $eu_vat_number = get_user_meta( get_current_user_id(), 'billing_eu_vat_number', true ) ) && '1' === $this->wcj_validate_eu_vat_number(// phpcs:ignore
|
528 |
array(
|
529 |
'wcj_eu_vat_number_to_check' => $eu_vat_number,
|
530 |
'echo' => false,
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - EU VAT Number
|
4 |
*
|
5 |
+
* @version 5.6.8
|
6 |
* @since 2.3.9
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/includes
|
119 |
/**
|
120 |
* Admin_validate_vat_and_maybe_remove_taxes.
|
121 |
*
|
122 |
+
* @version 5.6.8
|
123 |
* @since 3.3.0
|
124 |
*/
|
125 |
public function admin_validate_vat_and_maybe_remove_taxes() {
|
126 |
+
$wpnonce = isset( $_REQUEST['validate_vat_and_maybe_remove_taxes-nonce'] ) ? wp_verify_nonce( sanitize_key( $_REQUEST['validate_vat_and_maybe_remove_taxes-nonce'] ), 'validate_vat_and_maybe_remove_taxes' ) : false;
|
|
|
|
|
|
|
127 |
if ( $wpnonce && isset( $_GET['validate_vat_and_maybe_remove_taxes'] ) ) {
|
128 |
$order_id = sanitize_text_field( wp_unslash( $_GET['validate_vat_and_maybe_remove_taxes'] ) );
|
129 |
$order = wc_get_order( $order_id );
|
142 |
}
|
143 |
}
|
144 |
}
|
145 |
+
wp_safe_redirect( esc_url_raw( remove_query_arg( array( 'validate_vat_and_maybe_remove_taxes', 'validate_vat_and_maybe_remove_taxes-nonce' ) ) ) );
|
146 |
exit;
|
147 |
}
|
148 |
}
|
184 |
/**
|
185 |
* Create_meta_box.
|
186 |
*
|
187 |
+
* @version 5.6.8
|
188 |
* @since 2.6.0
|
189 |
*/
|
190 |
public function create_meta_box() {
|
250 |
)
|
251 |
)
|
252 |
);
|
253 |
+
echo '<p><a href="' . esc_url(
|
254 |
+
add_query_arg(
|
255 |
+
array(
|
256 |
+
'validate_vat_and_maybe_remove_taxes' => $order_id,
|
257 |
+
'validate_vat_and_maybe_remove_taxes-nonce' => wp_create_nonce( 'validate_vat_and_maybe_remove_taxes' ),
|
258 |
+
)
|
259 |
+
)
|
260 |
+
) . '">' .
|
261 |
wp_kses_post( 'Validate VAT and remove taxes', 'woocommerce-jetpack' ) . '</a></p>';
|
262 |
}
|
263 |
|
430 |
/**
|
431 |
* Enqueue_scripts.
|
432 |
*
|
433 |
+
* @version 5.6.8
|
434 |
*/
|
435 |
public function enqueue_scripts() {
|
436 |
if (
|
453 |
'progress_text_valid' => do_shortcode( wcj_get_option( 'wcj_eu_vat_number_progress_text_valid', __( 'VAT is valid.', 'woocommerce-jetpack' ) ) ),
|
454 |
'progress_text_not_valid' => do_shortcode( wcj_get_option( 'wcj_eu_vat_number_progress_text_not_valid', __( 'VAT is not valid.', 'woocommerce-jetpack' ) ) ),
|
455 |
'progress_text_validation_failed' => do_shortcode( wcj_get_option( 'wcj_eu_vat_number_progress_text_validation_failed', __( 'Validation failed. Please try again.', 'woocommerce-jetpack' ) ) ),
|
456 |
+
'_wpnonce' => wp_create_nonce( 'wcj_eu_vat_number_to_check' ),
|
457 |
)
|
458 |
);
|
459 |
}
|
461 |
/**
|
462 |
* Wcj_validate_eu_vat_number.
|
463 |
*
|
464 |
+
* @version 5.6.8
|
465 |
* @param array $param defines the param.
|
466 |
*/
|
467 |
public function wcj_validate_eu_vat_number( $param ) {
|
472 |
'echo' => true,
|
473 |
)
|
474 |
);
|
475 |
+
$wpnonce = isset( $_REQUEST['_wpnonce'] ) ? wp_verify_nonce( sanitize_key( $_REQUEST['_wpnonce'] ), 'wcj_eu_vat_number_to_check' ) : false;
|
476 |
$eu_vat_number = isset( $param['wcj_eu_vat_number_to_check'] ) && '' !== $param['wcj_eu_vat_number_to_check'] && null !== $param['wcj_eu_vat_number_to_check'] ? sanitize_text_field( wp_unslash( $param['wcj_eu_vat_number_to_check'] ) ) : '';
|
477 |
+
$eu_vat_number = $wpnonce && empty( $eu_vat_number ) && isset( $_POST['wcj_eu_vat_number_to_check'] ) && '' !== $_POST['wcj_eu_vat_number_to_check'] && null !== $_POST['wcj_eu_vat_number_to_check'] ? sanitize_text_field( wp_unslash( $_POST['wcj_eu_vat_number_to_check'] ) ) : $eu_vat_number;
|
478 |
if ( ! empty( $eu_vat_number ) ) {
|
479 |
$eu_vat_number_to_check = substr( $eu_vat_number, 2 );
|
480 |
$eu_vat_number_country_to_check = substr( $eu_vat_number, 0, 2 );
|
512 |
/**
|
513 |
* Need_to_exclude_vat.
|
514 |
*
|
515 |
+
* @version 5.6.8
|
516 |
* @since 4.6.0
|
517 |
*
|
518 |
* @return bool
|
530 |
'yes' === wcj_get_option( 'wcj_eu_vat_number_disable_for_valid', 'yes' ) &&
|
531 |
(
|
532 |
( true === wcj_session_get( 'wcj_is_eu_vat_number_valid' ) && null !== ( $eu_vat_number ) ) ||
|
533 |
+
( 'yes' === wcj_get_option( 'wcj_eu_vat_number_disable_for_valid_by_user_vat', 'no' ) && is_user_logged_in() && ! empty( $eu_vat_number = get_user_meta( get_current_user_id(), 'billing_eu_vat_number', true ) ) && '1' === $this->wcj_validate_eu_vat_number( // phpcs:ignore Squiz.PHP.DisallowMultipleAssignments.FoundInControlStructure, WordPress.CodeAnalysis.AssignmentInCondition.Found
|
534 |
array(
|
535 |
'wcj_eu_vat_number_to_check' => $eu_vat_number,
|
536 |
'echo' => false,
|
includes/class-wcj-export-import.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Export
|
4 |
*
|
5 |
-
* @version 5.6.
|
6 |
* @since 2.5.4
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/includes
|
@@ -72,7 +72,7 @@ if ( ! class_exists( 'WCJ_Export_Import' ) ) :
|
|
72 |
/**
|
73 |
* Export.
|
74 |
*
|
75 |
-
* @version 5.6.
|
76 |
* @since 2.4.8
|
77 |
* @todo [dev] when filtering now using `strpos`, but other options would be `stripos` (case-insensitive) or strict equality
|
78 |
* @todo [dev] (maybe) do filtering directly in WP_Query
|
@@ -102,10 +102,7 @@ if ( ! class_exists( 'WCJ_Export_Import' ) ) :
|
|
102 |
$data = $exporter->export_products( $this->fields_helper );
|
103 |
break;
|
104 |
}
|
105 |
-
$wpnonce =
|
106 |
-
if ( function_exists( 'wp_verify_nonce' ) ) {
|
107 |
-
$wpnonce = isset( $_REQUEST['_wpnonce'] ) ? wp_verify_nonce( sanitize_key( isset( $_REQUEST['_wpnonce'] ) ? $_REQUEST['_wpnonce'] : '' ) ) : true;
|
108 |
-
}
|
109 |
if ( $wpnonce && isset( $_POST['wcj_export_filter_all_columns'] ) && '' !== $_POST['wcj_export_filter_all_columns'] ) {
|
110 |
foreach ( $data as $row_id => $row ) {
|
111 |
if ( 0 === $row_id ) {
|
@@ -129,16 +126,13 @@ if ( ! class_exists( 'WCJ_Export_Import' ) ) :
|
|
129 |
/**
|
130 |
* Export_xml.
|
131 |
*
|
132 |
-
* @version 5.6.
|
133 |
* @since 2.5.9
|
134 |
* @todo [dev] templates for xml_start, xml_end, xml_item.
|
135 |
* @todo [dev] `strip_tags`
|
136 |
*/
|
137 |
public function export_xml() {
|
138 |
-
$wpnonce =
|
139 |
-
if ( function_exists( 'wp_verify_nonce' ) ) {
|
140 |
-
$wpnonce = isset( $_REQUEST['_wpnonce'] ) ? wp_verify_nonce( sanitize_key( isset( $_REQUEST['_wpnonce'] ) ? $_REQUEST['_wpnonce'] : '' ) ) : true;
|
141 |
-
}
|
142 |
if ( $wpnonce && isset( $_POST['wcj_export_xml'] ) ) {
|
143 |
$data = $this->export( sanitize_text_field( wp_unslash( $_POST['wcj_export_xml'] ) ) );
|
144 |
if ( is_array( $data ) ) {
|
@@ -203,14 +197,11 @@ if ( ! class_exists( 'WCJ_Export_Import' ) ) :
|
|
203 |
/**
|
204 |
* Export_csv.
|
205 |
*
|
206 |
-
* @version 5.6.
|
207 |
* @since 2.4.8
|
208 |
*/
|
209 |
public function export_csv() {
|
210 |
-
$wpnonce =
|
211 |
-
if ( function_exists( 'wp_verify_nonce' ) ) {
|
212 |
-
$wpnonce = isset( $_REQUEST['_wpnonce'] ) ? wp_verify_nonce( sanitize_key( isset( $_REQUEST['_wpnonce'] ) ? $_REQUEST['_wpnonce'] : '' ) ) : true;
|
213 |
-
}
|
214 |
if ( $wpnonce && isset( $_POST['wcj_export'] ) ) {
|
215 |
$data = $this->export( sanitize_text_field( wp_unslash( $_POST['wcj_export'] ) ) );
|
216 |
if ( is_array( $data ) ) {
|
@@ -238,17 +229,14 @@ if ( ! class_exists( 'WCJ_Export_Import' ) ) :
|
|
238 |
/**
|
239 |
* Export_filter_fields.
|
240 |
*
|
241 |
-
* @version 5.6.
|
242 |
* @since 2.5.5
|
243 |
* @todo [dev] filter each field separately
|
244 |
* @param int $tool_id defines the tool_id.
|
245 |
*/
|
246 |
public function export_filter_fields( $tool_id ) {
|
247 |
$fields = array();
|
248 |
-
$wpnonce =
|
249 |
-
if ( function_exists( 'wp_verify_nonce' ) ) {
|
250 |
-
$wpnonce = isset( $_REQUEST['_wpnonce'] ) ? wp_verify_nonce( sanitize_key( isset( $_REQUEST['_wpnonce'] ) ? $_REQUEST['_wpnonce'] : '' ) ) : true;
|
251 |
-
}
|
252 |
switch ( $tool_id ) {
|
253 |
case 'orders':
|
254 |
$fields = array(
|
@@ -289,17 +277,14 @@ if ( ! class_exists( 'WCJ_Export_Import' ) ) :
|
|
289 |
/**
|
290 |
* Export_date_fields.
|
291 |
*
|
292 |
-
* @version 5.6.
|
293 |
* @since 3.0.0
|
294 |
* @todo [dev] maybe make `$dateformat` optional
|
295 |
* @todo [dev] mark current (i.e. active) link (if exists)
|
296 |
* @param int $tool_id defines the tool_id.
|
297 |
*/
|
298 |
public function export_date_fields( $tool_id ) {
|
299 |
-
$wpnonce
|
300 |
-
if ( function_exists( 'wp_verify_nonce' ) ) {
|
301 |
-
$wpnonce = isset( $_REQUEST['_wpnonce'] ) ? wp_verify_nonce( sanitize_key( isset( $_REQUEST['_wpnonce'] ) ? $_REQUEST['_wpnonce'] : '' ) ) : true;
|
302 |
-
}
|
303 |
$current_start_date = ( $wpnonce && isset( $_GET['start_date'] ) ? sanitize_text_field( wp_unslash( $_GET['start_date'] ) ) : '' );
|
304 |
$current_end_date = ( $wpnonce && isset( $_GET['end_date'] ) ? sanitize_text_field( wp_unslash( $_GET['end_date'] ) ) : '' );
|
305 |
$predefined_ranges = array();
|
@@ -328,6 +313,7 @@ if ( ! class_exists( 'WCJ_Export_Import' ) ) :
|
|
328 |
'<strong> - </strong>' .
|
329 |
'<input name="end_date" id="end_date" type="text" display="date"' . $dateformat . ' value="' . $current_end_date . '">' .
|
330 |
' ' .
|
|
|
331 |
'<button class="button-primary" name="range" id="range" type="submit" value="custom">' . __( 'Go', 'woocommerce-jetpack' ) . '</button>' .
|
332 |
'</form>';
|
333 |
return $predefined_ranges . '<br>' . $date_input_fields;
|
@@ -336,19 +322,20 @@ if ( ! class_exists( 'WCJ_Export_Import' ) ) :
|
|
336 |
/**
|
337 |
* Create_export_tool.
|
338 |
*
|
339 |
-
* @version 5.6.
|
340 |
* @since 2.4.8
|
341 |
* @param int $tool_id defines the tool_id.
|
342 |
*/
|
343 |
public function create_export_tool( $tool_id ) {
|
344 |
-
$wpnonce =
|
345 |
-
if (
|
346 |
-
|
|
|
347 |
}
|
348 |
echo '<div class="wcj-setting-jetpack-body wcj_tools_cnt_main">';
|
349 |
echo wp_kses_post( $this->get_tool_header_html( 'export_' . $tool_id ) );
|
350 |
echo '<p>' . wp_kses_post( $this->export_date_fields( $tool_id ) ) . '</p>';
|
351 |
-
if (
|
352 |
echo '</div>';
|
353 |
return;
|
354 |
}
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Export
|
4 |
*
|
5 |
+
* @version 5.6.8
|
6 |
* @since 2.5.4
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/includes
|
72 |
/**
|
73 |
* Export.
|
74 |
*
|
75 |
+
* @version 5.6.8
|
76 |
* @since 2.4.8
|
77 |
* @todo [dev] when filtering now using `strpos`, but other options would be `stripos` (case-insensitive) or strict equality
|
78 |
* @todo [dev] (maybe) do filtering directly in WP_Query
|
102 |
$data = $exporter->export_products( $this->fields_helper );
|
103 |
break;
|
104 |
}
|
105 |
+
$wpnonce = isset( $_REQUEST['wcj_tools_nonce'] ) ? wp_verify_nonce( sanitize_key( $_REQUEST['wcj_tools_nonce'] ), 'wcj_tools' ) : false;
|
|
|
|
|
|
|
106 |
if ( $wpnonce && isset( $_POST['wcj_export_filter_all_columns'] ) && '' !== $_POST['wcj_export_filter_all_columns'] ) {
|
107 |
foreach ( $data as $row_id => $row ) {
|
108 |
if ( 0 === $row_id ) {
|
126 |
/**
|
127 |
* Export_xml.
|
128 |
*
|
129 |
+
* @version 5.6.8
|
130 |
* @since 2.5.9
|
131 |
* @todo [dev] templates for xml_start, xml_end, xml_item.
|
132 |
* @todo [dev] `strip_tags`
|
133 |
*/
|
134 |
public function export_xml() {
|
135 |
+
$wpnonce = isset( $_REQUEST['wcj_tools_nonce'] ) ? wp_verify_nonce( sanitize_key( $_REQUEST['wcj_tools_nonce'] ), 'wcj_tools' ) : false;
|
|
|
|
|
|
|
136 |
if ( $wpnonce && isset( $_POST['wcj_export_xml'] ) ) {
|
137 |
$data = $this->export( sanitize_text_field( wp_unslash( $_POST['wcj_export_xml'] ) ) );
|
138 |
if ( is_array( $data ) ) {
|
197 |
/**
|
198 |
* Export_csv.
|
199 |
*
|
200 |
+
* @version 5.6.8
|
201 |
* @since 2.4.8
|
202 |
*/
|
203 |
public function export_csv() {
|
204 |
+
$wpnonce = isset( $_REQUEST['wcj_tools_nonce'] ) ? wp_verify_nonce( sanitize_key( $_REQUEST['wcj_tools_nonce'] ), 'wcj_tools' ) : false;
|
|
|
|
|
|
|
205 |
if ( $wpnonce && isset( $_POST['wcj_export'] ) ) {
|
206 |
$data = $this->export( sanitize_text_field( wp_unslash( $_POST['wcj_export'] ) ) );
|
207 |
if ( is_array( $data ) ) {
|
229 |
/**
|
230 |
* Export_filter_fields.
|
231 |
*
|
232 |
+
* @version 5.6.8
|
233 |
* @since 2.5.5
|
234 |
* @todo [dev] filter each field separately
|
235 |
* @param int $tool_id defines the tool_id.
|
236 |
*/
|
237 |
public function export_filter_fields( $tool_id ) {
|
238 |
$fields = array();
|
239 |
+
$wpnonce = isset( $_REQUEST['wcj_tools_nonce'] ) ? wp_verify_nonce( sanitize_key( $_REQUEST['wcj_tools_nonce'] ), 'wcj_tools' ) : false;
|
|
|
|
|
|
|
240 |
switch ( $tool_id ) {
|
241 |
case 'orders':
|
242 |
$fields = array(
|
277 |
/**
|
278 |
* Export_date_fields.
|
279 |
*
|
280 |
+
* @version 5.6.8
|
281 |
* @since 3.0.0
|
282 |
* @todo [dev] maybe make `$dateformat` optional
|
283 |
* @todo [dev] mark current (i.e. active) link (if exists)
|
284 |
* @param int $tool_id defines the tool_id.
|
285 |
*/
|
286 |
public function export_date_fields( $tool_id ) {
|
287 |
+
$wpnonce = isset( $_REQUEST['wcj_tools_nonce'] ) ? wp_verify_nonce( sanitize_key( $_REQUEST['wcj_tools_nonce'] ), 'wcj_tools' ) : false;
|
|
|
|
|
|
|
288 |
$current_start_date = ( $wpnonce && isset( $_GET['start_date'] ) ? sanitize_text_field( wp_unslash( $_GET['start_date'] ) ) : '' );
|
289 |
$current_end_date = ( $wpnonce && isset( $_GET['end_date'] ) ? sanitize_text_field( wp_unslash( $_GET['end_date'] ) ) : '' );
|
290 |
$predefined_ranges = array();
|
313 |
'<strong> - </strong>' .
|
314 |
'<input name="end_date" id="end_date" type="text" display="date"' . $dateformat . ' value="' . $current_end_date . '">' .
|
315 |
' ' .
|
316 |
+
'<input name="wcj_tools_nonce" id="wcj_tools_nonce" type="hidden" value="' . wp_create_nonce( 'wcj_tools' ) . '">' .
|
317 |
'<button class="button-primary" name="range" id="range" type="submit" value="custom">' . __( 'Go', 'woocommerce-jetpack' ) . '</button>' .
|
318 |
'</form>';
|
319 |
return $predefined_ranges . '<br>' . $date_input_fields;
|
322 |
/**
|
323 |
* Create_export_tool.
|
324 |
*
|
325 |
+
* @version 5.6.8
|
326 |
* @since 2.4.8
|
327 |
* @param int $tool_id defines the tool_id.
|
328 |
*/
|
329 |
public function create_export_tool( $tool_id ) {
|
330 |
+
$wpnonce = isset( $_REQUEST['wcj_tools_nonce'] ) ? wp_verify_nonce( sanitize_key( $_REQUEST['wcj_tools_nonce'] ), 'wcj_tools' ) : false;
|
331 |
+
if ( ! $wpnonce ) {
|
332 |
+
wp_safe_redirect( admin_url( 'admin.php?page=wcj-tools' ) );
|
333 |
+
exit;
|
334 |
}
|
335 |
echo '<div class="wcj-setting-jetpack-body wcj_tools_cnt_main">';
|
336 |
echo wp_kses_post( $this->get_tool_header_html( 'export_' . $tool_id ) );
|
337 |
echo '<p>' . wp_kses_post( $this->export_date_fields( $tool_id ) ) . '</p>';
|
338 |
+
if ( ! isset( $_GET['range'] ) ) {
|
339 |
echo '</div>';
|
340 |
return;
|
341 |
}
|
includes/class-wcj-general.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - General
|
4 |
*
|
5 |
-
* @version 5.6.
|
6 |
* @author Pluggabl LLC.
|
7 |
* @package Booster_For_WooCommerce/includes
|
8 |
*/
|
@@ -20,7 +20,7 @@ if ( ! class_exists( 'WCJ_General' ) ) :
|
|
20 |
/**
|
21 |
* Constructor.
|
22 |
*
|
23 |
-
* @version 5.6.
|
24 |
* @todo [dev] maybe expand `$this->desc` (e.g.: Custom roles tool, shortcodes in WordPress text widgets etc.)
|
25 |
*/
|
26 |
public function __construct() {
|
@@ -49,7 +49,7 @@ if ( ! class_exists( 'WCJ_General' ) ) :
|
|
49 |
$php_time_limit = wcj_get_option( 'wcj_admin_tools_php_time_limit', '0' );
|
50 |
// PHP Memory Limit.
|
51 |
if ( '0' !== ( $php_memory_limit ) ) {
|
52 |
-
ini_set( 'memory_limit', $php_memory_limit . 'M' ); //phpcs:ignore
|
53 |
}
|
54 |
/* translators: %s: translation added */
|
55 |
$this->current_php_memory_limit = sprintf( ' ' . __( 'Current PHP memory limit: %s.', 'woocommerce-jetpack' ), ini_get( 'memory_limit' ) );
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - General
|
4 |
*
|
5 |
+
* @version 5.6.8
|
6 |
* @author Pluggabl LLC.
|
7 |
* @package Booster_For_WooCommerce/includes
|
8 |
*/
|
20 |
/**
|
21 |
* Constructor.
|
22 |
*
|
23 |
+
* @version 5.6.8
|
24 |
* @todo [dev] maybe expand `$this->desc` (e.g.: Custom roles tool, shortcodes in WordPress text widgets etc.)
|
25 |
*/
|
26 |
public function __construct() {
|
49 |
$php_time_limit = wcj_get_option( 'wcj_admin_tools_php_time_limit', '0' );
|
50 |
// PHP Memory Limit.
|
51 |
if ( '0' !== ( $php_memory_limit ) ) {
|
52 |
+
ini_set( 'memory_limit', $php_memory_limit . 'M' ); // phpcs:ignore WordPress.PHP.IniSet
|
53 |
}
|
54 |
/* translators: %s: translation added */
|
55 |
$this->current_php_memory_limit = sprintf( ' ' . __( 'Current PHP memory limit: %s.', 'woocommerce-jetpack' ), ini_get( 'memory_limit' ) );
|
includes/class-wcj-global-discount.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Global Discount
|
4 |
*
|
5 |
-
* @version 5.6.
|
6 |
* @since 2.5.7
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/includes
|
@@ -103,7 +103,7 @@ if ( ! class_exists( 'WCJ_Global_Discount' ) ) :
|
|
103 |
/**
|
104 |
* Get_wcj_sale_products.
|
105 |
*
|
106 |
-
* @version 5.6.
|
107 |
* @since 4.8.0
|
108 |
*
|
109 |
* @return array|mixed
|
@@ -178,7 +178,7 @@ if ( ! class_exists( 'WCJ_Global_Discount' ) ) :
|
|
178 |
|
179 |
// Tax Query.
|
180 |
if ( ! empty( $cats ) || ! empty( $tags ) ) {
|
181 |
-
$args['tax_query'] = array(// phpcs:ignore
|
182 |
'relation' => 'AND',
|
183 |
);
|
184 |
if ( ! empty( $cats ) ) {
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Global Discount
|
4 |
*
|
5 |
+
* @version 5.6.8
|
6 |
* @since 2.5.7
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/includes
|
103 |
/**
|
104 |
* Get_wcj_sale_products.
|
105 |
*
|
106 |
+
* @version 5.6.8
|
107 |
* @since 4.8.0
|
108 |
*
|
109 |
* @return array|mixed
|
178 |
|
179 |
// Tax Query.
|
180 |
if ( ! empty( $cats ) || ! empty( $tags ) ) {
|
181 |
+
$args['tax_query'] = array(// phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_tax_query
|
182 |
'relation' => 'AND',
|
183 |
);
|
184 |
if ( ! empty( $cats ) ) {
|
includes/class-wcj-max-products-per-user.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Max Products per User
|
4 |
*
|
5 |
-
* @version 5.6.
|
6 |
* @since 3.5.0
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/includes
|
@@ -149,15 +149,16 @@ if ( ! class_exists( 'WCJ_Max_Products_Per_User' ) ) :
|
|
149 |
/**
|
150 |
* Calculate_data_notice.
|
151 |
*
|
152 |
-
* @version 5.6.
|
153 |
* @since 3.5.0
|
154 |
*/
|
155 |
public function calculate_data_notice() {
|
156 |
-
|
|
|
157 |
$class = 'notice notice-info';
|
158 |
$message = __( 'Data re-calculated.', 'woocommerce-jetpack' ) . ' ' .
|
159 |
/* translators: %s: translation added */
|
160 |
-
sprintf( __( '%s order(s) processed.', 'woocommerce-jetpack' ), sanitize_text_field( wp_unslash( $_GET['wcj_max_products_per_user_calculate_data_finished'] ) ) );
|
161 |
printf( '<div class="%1$s"><p>%2$s</p></div>', esc_attr( $class ), esc_html( $message ) );
|
162 |
}
|
163 |
}
|
@@ -165,12 +166,13 @@ if ( ! class_exists( 'WCJ_Max_Products_Per_User' ) ) :
|
|
165 |
/**
|
166 |
* Calculate_data.
|
167 |
*
|
168 |
-
* @version 5.6.
|
169 |
* @since 3.5.0
|
170 |
* @todo reset `wcj_max_products_per_user_report` and `wcj_max_products_per_user_saved` meta
|
171 |
*/
|
172 |
public function calculate_data() {
|
173 |
-
|
|
|
174 |
$offset = 0;
|
175 |
$block_size = 512;
|
176 |
$total_orders = 0;
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Max Products per User
|
4 |
*
|
5 |
+
* @version 5.6.8
|
6 |
* @since 3.5.0
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/includes
|
149 |
/**
|
150 |
* Calculate_data_notice.
|
151 |
*
|
152 |
+
* @version 5.6.8
|
153 |
* @since 3.5.0
|
154 |
*/
|
155 |
public function calculate_data_notice() {
|
156 |
+
$wpnonce = isset( $_REQUEST['wcj-cat-nonce'] ) ? wp_verify_nonce( sanitize_key( $_REQUEST['wcj-cat-nonce'] ), 'wcj-cat-nonce' ) : false;
|
157 |
+
if ( $wpnonce && isset( $_GET['wcj_max_products_per_user_calculate_data_finished'] ) ) {
|
158 |
$class = 'notice notice-info';
|
159 |
$message = __( 'Data re-calculated.', 'woocommerce-jetpack' ) . ' ' .
|
160 |
/* translators: %s: translation added */
|
161 |
+
sprintf( __( '%s order(s) processed.', 'woocommerce-jetpack' ), sanitize_text_field( wp_unslash( $_GET['wcj_max_products_per_user_calculate_data_finished'] ) ) );
|
162 |
printf( '<div class="%1$s"><p>%2$s</p></div>', esc_attr( $class ), esc_html( $message ) );
|
163 |
}
|
164 |
}
|
166 |
/**
|
167 |
* Calculate_data.
|
168 |
*
|
169 |
+
* @version 5.6.8
|
170 |
* @since 3.5.0
|
171 |
* @todo reset `wcj_max_products_per_user_report` and `wcj_max_products_per_user_saved` meta
|
172 |
*/
|
173 |
public function calculate_data() {
|
174 |
+
$wpnonce = isset( $_REQUEST['wcj-cat-nonce'] ) ? wp_verify_nonce( sanitize_key( $_REQUEST['wcj-cat-nonce'] ), 'wcj-cat-nonce' ) : false;
|
175 |
+
if ( $wpnonce && isset( $_GET['wcj_max_products_per_user_calculate_data'] ) ) {
|
176 |
$offset = 0;
|
177 |
$block_size = 512;
|
178 |
$total_orders = 0;
|
includes/class-wcj-multicurrency-product-base-price.php
CHANGED
@@ -1,8 +1,8 @@
|
|
1 |
-
<?php
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Multicurrency Product Base Price
|
4 |
*
|
5 |
-
* @version 5.6.
|
6 |
* @since 2.4.8
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/includes
|
@@ -12,11 +12,11 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
12 |
exit;
|
13 |
}
|
14 |
|
15 |
-
if ( ! class_exists( '
|
16 |
/**
|
17 |
-
*
|
18 |
*/
|
19 |
-
class
|
20 |
|
21 |
/**
|
22 |
* Constructor.
|
@@ -110,7 +110,7 @@ if ( ! class_exists( 'WCJ_Multicurrency_Base_Price' ) ) :
|
|
110 |
/**
|
111 |
* Modify_default_price_filter_hook.
|
112 |
*
|
113 |
-
* @version 5.6.
|
114 |
* @since 4.8.0
|
115 |
*
|
116 |
* @param string $query defines the query.
|
@@ -118,13 +118,15 @@ if ( ! class_exists( 'WCJ_Multicurrency_Base_Price' ) ) :
|
|
118 |
* @return mixed
|
119 |
*/
|
120 |
public function modify_default_price_filter_hook( $query ) {
|
|
|
121 |
if (
|
122 |
'no' === wcj_get_option( 'wcj_multicurrency_base_price_advanced_price_filter_comp', 'no' ) ||
|
123 |
-
! isset( $_GET['min_price'] ) ||
|
124 |
-
! isset( $_GET['max_price'] )
|
125 |
) {
|
126 |
return $query;
|
127 |
}
|
|
|
128 |
|
129 |
// Remove Price Filter Meta Query.
|
130 |
$meta_query = $query->get( 'meta_query' );
|
@@ -153,7 +155,7 @@ if ( ! class_exists( 'WCJ_Multicurrency_Base_Price' ) ) :
|
|
153 |
/**
|
154 |
* Price_filter_post_clauses.
|
155 |
*
|
156 |
-
* @version 5.6.
|
157 |
* @since 4.8.0
|
158 |
*
|
159 |
* @see WC_Query::price_filter_post_clauses
|
@@ -165,11 +167,13 @@ if ( ! class_exists( 'WCJ_Multicurrency_Base_Price' ) ) :
|
|
165 |
*/
|
166 |
public function price_filter_post_clauses( $args, $wp_query ) {
|
167 |
global $wpdb;
|
168 |
-
|
|
|
169 |
return $args;
|
170 |
}
|
171 |
-
$current_min_price = isset( $_GET['min_price'] ) ? floatval( wp_unslash( $_GET['min_price'] ) ) : 0;
|
172 |
-
$current_max_price = isset( $_GET['max_price'] ) ? floatval( wp_unslash( $_GET['max_price'] ) ) : PHP_INT_MAX;
|
|
|
173 |
if ( wc_tax_enabled() && 'incl' === wcj_get_option( 'woocommerce_tax_display_shop' ) && ! wc_prices_include_tax() ) {
|
174 |
$tax_class = apply_filters( 'woocommerce_price_filter_widget_tax_class', '' ); // Uses standard tax class.
|
175 |
$tax_rates = WC_Tax::get_rates( $tax_class );
|
@@ -389,7 +393,7 @@ if ( ! class_exists( 'WCJ_Multicurrency_Base_Price' ) ) :
|
|
389 |
/**
|
390 |
* Gets products by base price currency.
|
391 |
*
|
392 |
-
* @version
|
393 |
* @since 4.3.1
|
394 |
*
|
395 |
* @param string $compare defines the compare.
|
@@ -408,7 +412,7 @@ if ( ! class_exists( 'WCJ_Multicurrency_Base_Price' ) ) :
|
|
408 |
'update_post_meta_cache' => false,
|
409 |
'update_post_term_cache' => false,
|
410 |
'fields' => 'ids',
|
411 |
-
'meta_query' => array( //phpcs:ignore
|
412 |
array(
|
413 |
'key' => '_wcj_multicurrency_base_price_currency',
|
414 |
'value' => $currency,
|
@@ -504,19 +508,18 @@ if ( ! class_exists( 'WCJ_Multicurrency_Base_Price' ) ) :
|
|
504 |
/**
|
505 |
* Change_currency_symbol_on_product_edit.
|
506 |
*
|
507 |
-
* @version
|
508 |
* @since 2.4.8
|
509 |
* @param string $currency_symbol defines the currency_symbol.
|
510 |
* @param string | int $currency defines the currency.
|
511 |
*/
|
512 |
public function change_currency_symbol_on_product_edit( $currency_symbol, $currency ) {
|
513 |
-
$nonce = wp_create_nonce();
|
514 |
if ( is_admin() ) {
|
515 |
global $pagenow;
|
|
|
516 |
if (
|
517 |
( 'post.php' === $pagenow && isset( $_GET['action'] ) && 'edit' === $_GET['action'] ) || // admin product edit page.
|
518 |
( ! $this->do_convert_in_back_end && 'edit.php' === $pagenow && isset( $_GET['post_type'] ) && 'product' === $_GET['post_type'] ) // admin products list.
|
519 |
-
&& wp_verify_nonce( $nonce )
|
520 |
) {
|
521 |
$multicurrency_base_price_currency = get_post_meta( get_the_ID(), '_wcj_multicurrency_base_price_currency', true );
|
522 |
if ( '' !== $multicurrency_base_price_currency ) {
|
@@ -526,6 +529,7 @@ if ( ! class_exists( 'WCJ_Multicurrency_Base_Price' ) ) :
|
|
526 |
return $return;
|
527 |
}
|
528 |
}
|
|
|
529 |
}
|
530 |
return $currency_symbol;
|
531 |
}
|
@@ -534,4 +538,4 @@ if ( ! class_exists( 'WCJ_Multicurrency_Base_Price' ) ) :
|
|
534 |
|
535 |
endif;
|
536 |
|
537 |
-
return new
|
1 |
+
<?php
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Multicurrency Product Base Price
|
4 |
*
|
5 |
+
* @version 5.6.8
|
6 |
* @since 2.4.8
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/includes
|
12 |
exit;
|
13 |
}
|
14 |
|
15 |
+
if ( ! class_exists( 'WCJ_Multicurrency_Product_Base_Price' ) ) :
|
16 |
/**
|
17 |
+
* WCJ_Multicurrency_Product_Base_Price.
|
18 |
*/
|
19 |
+
class WCJ_Multicurrency_Product_Base_Price extends WCJ_Module {
|
20 |
|
21 |
/**
|
22 |
* Constructor.
|
110 |
/**
|
111 |
* Modify_default_price_filter_hook.
|
112 |
*
|
113 |
+
* @version 5.6.8
|
114 |
* @since 4.8.0
|
115 |
*
|
116 |
* @param string $query defines the query.
|
118 |
* @return mixed
|
119 |
*/
|
120 |
public function modify_default_price_filter_hook( $query ) {
|
121 |
+
// phpcs:disable WordPress.Security.NonceVerification
|
122 |
if (
|
123 |
'no' === wcj_get_option( 'wcj_multicurrency_base_price_advanced_price_filter_comp', 'no' ) ||
|
124 |
+
! isset( $_GET['min_price'] ) ||
|
125 |
+
! isset( $_GET['max_price'] )
|
126 |
) {
|
127 |
return $query;
|
128 |
}
|
129 |
+
// phpcs:enable WordPress.Security.NonceVerification
|
130 |
|
131 |
// Remove Price Filter Meta Query.
|
132 |
$meta_query = $query->get( 'meta_query' );
|
155 |
/**
|
156 |
* Price_filter_post_clauses.
|
157 |
*
|
158 |
+
* @version 5.6.8
|
159 |
* @since 4.8.0
|
160 |
*
|
161 |
* @see WC_Query::price_filter_post_clauses
|
167 |
*/
|
168 |
public function price_filter_post_clauses( $args, $wp_query ) {
|
169 |
global $wpdb;
|
170 |
+
// phpcs:disable WordPress.Security.NonceVerification
|
171 |
+
if ( ! $wp_query->is_main_query() || ( ! isset( $_GET['max_price'] ) && ! isset( $_GET['min_price'] ) ) ) {
|
172 |
return $args;
|
173 |
}
|
174 |
+
$current_min_price = isset( $_GET['min_price'] ) ? floatval( wp_unslash( $_GET['min_price'] ) ) : 0;
|
175 |
+
$current_max_price = isset( $_GET['max_price'] ) ? floatval( wp_unslash( $_GET['max_price'] ) ) : PHP_INT_MAX;
|
176 |
+
// phpcs:enable WordPress.Security.NonceVerification
|
177 |
if ( wc_tax_enabled() && 'incl' === wcj_get_option( 'woocommerce_tax_display_shop' ) && ! wc_prices_include_tax() ) {
|
178 |
$tax_class = apply_filters( 'woocommerce_price_filter_widget_tax_class', '' ); // Uses standard tax class.
|
179 |
$tax_rates = WC_Tax::get_rates( $tax_class );
|
393 |
/**
|
394 |
* Gets products by base price currency.
|
395 |
*
|
396 |
+
* @version 5.6.8
|
397 |
* @since 4.3.1
|
398 |
*
|
399 |
* @param string $compare defines the compare.
|
412 |
'update_post_meta_cache' => false,
|
413 |
'update_post_term_cache' => false,
|
414 |
'fields' => 'ids',
|
415 |
+
'meta_query' => array( // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_meta_query
|
416 |
array(
|
417 |
'key' => '_wcj_multicurrency_base_price_currency',
|
418 |
'value' => $currency,
|
508 |
/**
|
509 |
* Change_currency_symbol_on_product_edit.
|
510 |
*
|
511 |
+
* @version 5.6.8
|
512 |
* @since 2.4.8
|
513 |
* @param string $currency_symbol defines the currency_symbol.
|
514 |
* @param string | int $currency defines the currency.
|
515 |
*/
|
516 |
public function change_currency_symbol_on_product_edit( $currency_symbol, $currency ) {
|
|
|
517 |
if ( is_admin() ) {
|
518 |
global $pagenow;
|
519 |
+
// phpcs:disable WordPress.Security.NonceVerification
|
520 |
if (
|
521 |
( 'post.php' === $pagenow && isset( $_GET['action'] ) && 'edit' === $_GET['action'] ) || // admin product edit page.
|
522 |
( ! $this->do_convert_in_back_end && 'edit.php' === $pagenow && isset( $_GET['post_type'] ) && 'product' === $_GET['post_type'] ) // admin products list.
|
|
|
523 |
) {
|
524 |
$multicurrency_base_price_currency = get_post_meta( get_the_ID(), '_wcj_multicurrency_base_price_currency', true );
|
525 |
if ( '' !== $multicurrency_base_price_currency ) {
|
529 |
return $return;
|
530 |
}
|
531 |
}
|
532 |
+
// phpcs:enable WordPress.Security.NonceVerification
|
533 |
}
|
534 |
return $currency_symbol;
|
535 |
}
|
538 |
|
539 |
endif;
|
540 |
|
541 |
+
return new WCJ_Multicurrency_Product_Base_Price();
|
includes/class-wcj-multicurrency.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Multicurrency (Currency Switcher)
|
4 |
*
|
5 |
-
* @version 5.6.
|
6 |
* @since 2.4.3
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/includes
|
@@ -534,7 +534,7 @@ if ( ! class_exists( 'WCJ_Multicurrency' ) ) :
|
|
534 |
* First it removes products witch `_wcj_multicurrency_per_product_regular_price_{$current_currency_code}` meta don't match min and max.
|
535 |
* Then it adds products witch `_wcj_multicurrency_per_product_regular_price_{$current_currency_code}` meta match min and max.
|
536 |
*
|
537 |
-
* @version 5.6.
|
538 |
* @since 4.5.0
|
539 |
*
|
540 |
* @see WC_Query::price_filter_post_clauses()
|
@@ -560,14 +560,11 @@ if ( ! class_exists( 'WCJ_Multicurrency' ) ) :
|
|
560 |
}
|
561 |
|
562 |
global $wpdb;
|
563 |
-
|
564 |
-
if ( function_exists( 'wp_verify_nonce' ) ) {
|
565 |
-
$wpnonce = isset( $_REQUEST['_wpnonce'] ) ? wp_verify_nonce( sanitize_key( isset( $_REQUEST['_wpnonce'] ) ? $_REQUEST['_wpnonce'] : '' ), 'woocommerce-settings' ) : true;
|
566 |
-
}
|
567 |
$current_currency_code = $this->get_current_currency_code();
|
568 |
$exchange_rate = $this->get_currency_exchange_rate( $current_currency_code );
|
569 |
-
$min_price = (
|
570 |
-
$max_price = (
|
571 |
$min_max_join = "LEFT JOIN {$wpdb->postmeta} AS pm on pm.post_id = {$wpdb->posts}.ID AND (pm.meta_key IN ('_wcj_multicurrency_per_product_min_price_{$current_currency_code}','_wcj_multicurrency_per_product_max_price_{$current_currency_code}') and pm.meta_value!='')";
|
572 |
if ( false === strpos( $args['join'], $min_max_join ) ) {
|
573 |
$args['join'] .= " {$min_max_join} ";
|
@@ -576,6 +573,7 @@ if ( ! class_exists( 'WCJ_Multicurrency' ) ) :
|
|
576 |
$args['fields'] .= ", (IFNULL(MAX((pm.meta_value +0))/{$exchange_rate},max_price) +0) AS wcj_max_price ";
|
577 |
$args['where'] = preg_replace( '/and wc_product_meta_lookup.min_price >= \d.* and wc_product_meta_lookup.max_price <= \d.*\s/i', '', $args['where'] );
|
578 |
$args['groupby'] .= " having wcj_min_price >= $min_price AND wcj_min_price <= $max_price ";
|
|
|
579 |
return $args;
|
580 |
}
|
581 |
|
@@ -952,14 +950,14 @@ if ( ! class_exists( 'WCJ_Multicurrency' ) ) :
|
|
952 |
/**
|
953 |
* Updates min and max prices.
|
954 |
*
|
955 |
-
* @version 5.6.
|
956 |
* @since 4.5.0
|
957 |
*
|
958 |
* @param int $post_id defines the post_id.
|
959 |
* @param int | string $currency_code_param defines the currency_code_param.
|
960 |
*/
|
961 |
public function save_min_max_prices_per_product( $post_id, $currency_code_param = '' ) {
|
962 |
-
$wpnonce =
|
963 |
$product = wc_get_product( $post_id );
|
964 |
$products = array();
|
965 |
if ( $product->is_type( 'variable' ) ) {
|
@@ -1031,15 +1029,12 @@ if ( ! class_exists( 'WCJ_Multicurrency' ) ) :
|
|
1031 |
/**
|
1032 |
* Init.
|
1033 |
*
|
1034 |
-
* @version 5.6.
|
1035 |
* @since 3.4.5
|
1036 |
*/
|
1037 |
public function init() {
|
1038 |
wcj_session_maybe_start();
|
1039 |
-
$wpnonce
|
1040 |
-
if ( function_exists( 'wp_verify_nonce' ) ) {
|
1041 |
-
$wpnonce = isset( $_REQUEST['_wpnonce'] ) ? wp_verify_nonce( sanitize_key( isset( $_REQUEST['_wpnonce'] ) ? $_REQUEST['_wpnonce'] : '' ) ) : true;
|
1042 |
-
}
|
1043 |
$session_value = wcj_session_get( 'wcj-currency' );
|
1044 |
if ( null === ( $session_value ) ) {
|
1045 |
$currency = $this->get_default_currency();
|
@@ -1050,7 +1045,7 @@ if ( ! class_exists( 'WCJ_Multicurrency' ) ) :
|
|
1050 |
if ( 'yes' === wcj_get_option( 'wcj_multicurrency_default_currency_force', 'no' ) ) {
|
1051 |
$currency = $this->get_default_currency();
|
1052 |
}
|
1053 |
-
if (
|
1054 |
wcj_session_set( 'wcj-currency', $currency );
|
1055 |
}
|
1056 |
}
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Multicurrency (Currency Switcher)
|
4 |
*
|
5 |
+
* @version 5.6.8
|
6 |
* @since 2.4.3
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/includes
|
534 |
* First it removes products witch `_wcj_multicurrency_per_product_regular_price_{$current_currency_code}` meta don't match min and max.
|
535 |
* Then it adds products witch `_wcj_multicurrency_per_product_regular_price_{$current_currency_code}` meta match min and max.
|
536 |
*
|
537 |
+
* @version 5.6.8
|
538 |
* @since 4.5.0
|
539 |
*
|
540 |
* @see WC_Query::price_filter_post_clauses()
|
560 |
}
|
561 |
|
562 |
global $wpdb;
|
563 |
+
// phpcs:disable WordPress.Security.NonceVerification
|
|
|
|
|
|
|
564 |
$current_currency_code = $this->get_current_currency_code();
|
565 |
$exchange_rate = $this->get_currency_exchange_rate( $current_currency_code );
|
566 |
+
$min_price = ( isset( $_GET['min_price'] ) ) ? floatval( wp_unslash( $_GET['min_price'] ) ) : 0;
|
567 |
+
$max_price = ( isset( $_GET['max_price'] ) ) ? floatval( wp_unslash( $_GET['max_price'] ) ) : PHP_INT_MAX;
|
568 |
$min_max_join = "LEFT JOIN {$wpdb->postmeta} AS pm on pm.post_id = {$wpdb->posts}.ID AND (pm.meta_key IN ('_wcj_multicurrency_per_product_min_price_{$current_currency_code}','_wcj_multicurrency_per_product_max_price_{$current_currency_code}') and pm.meta_value!='')";
|
569 |
if ( false === strpos( $args['join'], $min_max_join ) ) {
|
570 |
$args['join'] .= " {$min_max_join} ";
|
573 |
$args['fields'] .= ", (IFNULL(MAX((pm.meta_value +0))/{$exchange_rate},max_price) +0) AS wcj_max_price ";
|
574 |
$args['where'] = preg_replace( '/and wc_product_meta_lookup.min_price >= \d.* and wc_product_meta_lookup.max_price <= \d.*\s/i', '', $args['where'] );
|
575 |
$args['groupby'] .= " having wcj_min_price >= $min_price AND wcj_min_price <= $max_price ";
|
576 |
+
// phpcs:enable WordPress.Security.NonceVerification
|
577 |
return $args;
|
578 |
}
|
579 |
|
950 |
/**
|
951 |
* Updates min and max prices.
|
952 |
*
|
953 |
+
* @version 5.6.8
|
954 |
* @since 4.5.0
|
955 |
*
|
956 |
* @param int $post_id defines the post_id.
|
957 |
* @param int | string $currency_code_param defines the currency_code_param.
|
958 |
*/
|
959 |
public function save_min_max_prices_per_product( $post_id, $currency_code_param = '' ) {
|
960 |
+
$wpnonce = isset( $_POST['woocommerce_meta_nonce'] ) ? wp_verify_nonce( sanitize_text_field( wp_unslash( $_POST['woocommerce_meta_nonce'] ) ), 'woocommerce_save_data' ) : false;
|
961 |
$product = wc_get_product( $post_id );
|
962 |
$products = array();
|
963 |
if ( $product->is_type( 'variable' ) ) {
|
1029 |
/**
|
1030 |
* Init.
|
1031 |
*
|
1032 |
+
* @version 5.6.8
|
1033 |
* @since 3.4.5
|
1034 |
*/
|
1035 |
public function init() {
|
1036 |
wcj_session_maybe_start();
|
1037 |
+
$wpnonce = isset( $_REQUEST['wcj-currency-nonce'] ) ? wp_verify_nonce( sanitize_key( $_REQUEST['wcj-currency-nonce'] ), 'wcj-currency' ) : false;
|
|
|
|
|
|
|
1038 |
$session_value = wcj_session_get( 'wcj-currency' );
|
1039 |
if ( null === ( $session_value ) ) {
|
1040 |
$currency = $this->get_default_currency();
|
1045 |
if ( 'yes' === wcj_get_option( 'wcj_multicurrency_default_currency_force', 'no' ) ) {
|
1046 |
$currency = $this->get_default_currency();
|
1047 |
}
|
1048 |
+
if ( isset( $currency ) ) {
|
1049 |
wcj_session_set( 'wcj-currency', $currency );
|
1050 |
}
|
1051 |
}
|
includes/class-wcj-my-account.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - My Account
|
4 |
*
|
5 |
-
* @version 5.6.
|
6 |
* @since 2.9.0
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/includes
|
@@ -169,14 +169,14 @@ if ( ! class_exists( 'WCJ_My_Account' ) ) :
|
|
169 |
/**
|
170 |
* Set_custom_page_title.
|
171 |
*
|
172 |
-
* @version 5.6.
|
173 |
* @since 4.3.0
|
174 |
* @param string $title defines the title.
|
175 |
*/
|
176 |
public function set_custom_page_title( $title ) {
|
177 |
-
$wpnonce = isset( $_REQUEST['
|
178 |
if (
|
179 |
-
$wpnonce
|
180 |
! isset( $_GET['section'] ) ||
|
181 |
is_admin() ||
|
182 |
! in_the_loop() ||
|
@@ -228,7 +228,7 @@ if ( ! class_exists( 'WCJ_My_Account' ) ) :
|
|
228 |
/**
|
229 |
* Set_custom_page_url.
|
230 |
*
|
231 |
-
* @version 5.
|
232 |
* @since 4.3.0
|
233 |
* @todo [dev] (maybe) customizable `section` (e.g. `wcj-section`)
|
234 |
* @param string $url defines the url.
|
@@ -241,7 +241,11 @@ if ( ! class_exists( 'WCJ_My_Account' ) ) :
|
|
241 |
if ( ! isset( $this->custom_pages ) ) {
|
242 |
$this->get_custom_pages();
|
243 |
}
|
244 |
-
|
|
|
|
|
|
|
|
|
245 |
}
|
246 |
|
247 |
/**
|
@@ -283,7 +287,7 @@ if ( ! class_exists( 'WCJ_My_Account' ) ) :
|
|
283 |
/**
|
284 |
* Customize_dashboard.
|
285 |
*
|
286 |
-
* @version 5.6.
|
287 |
* @since 3.8.0
|
288 |
* @see woocommerce/templates/myaccount/dashboard.php
|
289 |
* @param string | array $value defines the value.
|
@@ -299,7 +303,7 @@ if ( ! class_exists( 'WCJ_My_Account' ) ) :
|
|
299 |
if ( false !== $endpoint ) {
|
300 |
$endpoint_tab = wp_list_filter( $this->custom_pages, array( 'endpoint' => $endpoint ) );
|
301 |
}
|
302 |
-
$wpnonce = isset( $_REQUEST['
|
303 |
$page_id = $wpnonce && sanitize_text_field( wp_unslash( ( $_GET['section'] ) ) ) ? sanitize_text_field( wp_unslash( ( $_GET['section'] ) ) ) : ( false !== $endpoint ? array_keys( wp_list_pluck( $endpoint_tab, 'endpoint' ) )[0] : '' );
|
304 |
if ( isset( $this->custom_pages[ $page_id ] ) ) {
|
305 |
echo do_shortcode( $this->custom_pages[ $page_id ]['content'] );
|
@@ -431,7 +435,7 @@ if ( ! class_exists( 'WCJ_My_Account' ) ) :
|
|
431 |
/**
|
432 |
* Add_registration_extra_fields.
|
433 |
*
|
434 |
-
* @version 5.6.
|
435 |
* @since 3.6.0
|
436 |
* @todo (maybe) more fields to choose from (i.e. not only "user role" field)
|
437 |
* @todo (maybe) customizable position (check for other hooks or at least customizable priority on `woocommerce_register_form`)
|
@@ -439,7 +443,7 @@ if ( ! class_exists( 'WCJ_My_Account' ) ) :
|
|
439 |
*/
|
440 |
public function add_registration_extra_fields() {
|
441 |
$user_roles_options_html = '';
|
442 |
-
$wpnonce = isset( $_REQUEST['woocommerce-register-nonce'] ) ? wp_verify_nonce( sanitize_key( $_REQUEST['woocommerce-register-nonce'] ), 'woocommerce-register' ) :
|
443 |
$current_user_role_input = ( $wpnonce && ! empty( $_POST['wcj_user_role'] ) ) ? sanitize_text_field( wp_unslash( $_POST['wcj_user_role'] ) ) :
|
444 |
get_option( 'wcj_my_account_registration_extra_fields_user_role_default', 'customer' );
|
445 |
$user_roles_options = wcj_get_option( 'wcj_my_account_registration_extra_fields_user_role_options', array( 'customer' ) );
|
@@ -458,7 +462,7 @@ if ( ! class_exists( 'WCJ_My_Account' ) ) :
|
|
458 |
/**
|
459 |
* Process_registration_extra_fields.
|
460 |
*
|
461 |
-
* @version 5.6.
|
462 |
* @since 3.6.0
|
463 |
* @todo (maybe) optional admin confirmation for some user roles (probably will need to create additional `...-pending` user roles)
|
464 |
* @param id $customer_id defines the customer_id.
|
@@ -466,7 +470,7 @@ if ( ! class_exists( 'WCJ_My_Account' ) ) :
|
|
466 |
* @param string $password_generated defines the password_generated.
|
467 |
*/
|
468 |
public function process_registration_extra_fields( $customer_id, $new_customer_data, $password_generated ) {
|
469 |
-
$wpnonce = isset( $_REQUEST['woocommerce-register-nonce'] ) ? wp_verify_nonce( sanitize_key( $_REQUEST['woocommerce-register-nonce'] ), 'woocommerce-register' ) :
|
470 |
if ( $wpnonce && isset( $_POST['wcj_user_role'] ) && '' !== $_POST['wcj_user_role'] ) {
|
471 |
$user_roles_options = wcj_get_option( 'wcj_my_account_registration_extra_fields_user_role_options', array( 'customer' ) );
|
472 |
if ( ! empty( $user_roles_options ) && in_array( $_POST['wcj_user_role'], $user_roles_options, true ) ) {
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - My Account
|
4 |
*
|
5 |
+
* @version 5.6.8
|
6 |
* @since 2.9.0
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/includes
|
169 |
/**
|
170 |
* Set_custom_page_title.
|
171 |
*
|
172 |
+
* @version 5.6.8
|
173 |
* @since 4.3.0
|
174 |
* @param string $title defines the title.
|
175 |
*/
|
176 |
public function set_custom_page_title( $title ) {
|
177 |
+
$wpnonce = isset( $_REQUEST['wcj_section_nonce'] ) ? wp_verify_nonce( sanitize_key( $_REQUEST['wcj_section_nonce'] ), 'wcj_section' ) : false;
|
178 |
if (
|
179 |
+
! $wpnonce || (
|
180 |
! isset( $_GET['section'] ) ||
|
181 |
is_admin() ||
|
182 |
! in_the_loop() ||
|
228 |
/**
|
229 |
* Set_custom_page_url.
|
230 |
*
|
231 |
+
* @version 5.6.8
|
232 |
* @since 4.3.0
|
233 |
* @todo [dev] (maybe) customizable `section` (e.g. `wcj-section`)
|
234 |
* @param string $url defines the url.
|
241 |
if ( ! isset( $this->custom_pages ) ) {
|
242 |
$this->get_custom_pages();
|
243 |
}
|
244 |
+
$section_link_arg = array(
|
245 |
+
'section' => $endpoint,
|
246 |
+
'wcj_section_nonce' => wp_create_nonce( 'wcj_section' ),
|
247 |
+
);
|
248 |
+
return ( isset( $this->custom_pages[ $endpoint ] ) && empty( $this->custom_pages[ $endpoint ]['endpoint'] ) && ( $myaccount_page_id ) ? esc_url( add_query_arg( $section_link_arg, get_permalink( $myaccount_page_id ) ) ) : esc_url( $url ) );
|
249 |
}
|
250 |
|
251 |
/**
|
287 |
/**
|
288 |
* Customize_dashboard.
|
289 |
*
|
290 |
+
* @version 5.6.8
|
291 |
* @since 3.8.0
|
292 |
* @see woocommerce/templates/myaccount/dashboard.php
|
293 |
* @param string | array $value defines the value.
|
303 |
if ( false !== $endpoint ) {
|
304 |
$endpoint_tab = wp_list_filter( $this->custom_pages, array( 'endpoint' => $endpoint ) );
|
305 |
}
|
306 |
+
$wpnonce = isset( $_REQUEST['wcj_section_nonce'] ) ? wp_verify_nonce( sanitize_key( $_REQUEST['wcj_section_nonce'] ), 'wcj_section' ) : false;
|
307 |
$page_id = $wpnonce && sanitize_text_field( wp_unslash( ( $_GET['section'] ) ) ) ? sanitize_text_field( wp_unslash( ( $_GET['section'] ) ) ) : ( false !== $endpoint ? array_keys( wp_list_pluck( $endpoint_tab, 'endpoint' ) )[0] : '' );
|
308 |
if ( isset( $this->custom_pages[ $page_id ] ) ) {
|
309 |
echo do_shortcode( $this->custom_pages[ $page_id ]['content'] );
|
435 |
/**
|
436 |
* Add_registration_extra_fields.
|
437 |
*
|
438 |
+
* @version 5.6.8
|
439 |
* @since 3.6.0
|
440 |
* @todo (maybe) more fields to choose from (i.e. not only "user role" field)
|
441 |
* @todo (maybe) customizable position (check for other hooks or at least customizable priority on `woocommerce_register_form`)
|
443 |
*/
|
444 |
public function add_registration_extra_fields() {
|
445 |
$user_roles_options_html = '';
|
446 |
+
$wpnonce = isset( $_REQUEST['woocommerce-register-nonce'] ) ? wp_verify_nonce( sanitize_key( $_REQUEST['woocommerce-register-nonce'] ), 'woocommerce-register' ) : false;
|
447 |
$current_user_role_input = ( $wpnonce && ! empty( $_POST['wcj_user_role'] ) ) ? sanitize_text_field( wp_unslash( $_POST['wcj_user_role'] ) ) :
|
448 |
get_option( 'wcj_my_account_registration_extra_fields_user_role_default', 'customer' );
|
449 |
$user_roles_options = wcj_get_option( 'wcj_my_account_registration_extra_fields_user_role_options', array( 'customer' ) );
|
462 |
/**
|
463 |
* Process_registration_extra_fields.
|
464 |
*
|
465 |
+
* @version 5.6.8
|
466 |
* @since 3.6.0
|
467 |
* @todo (maybe) optional admin confirmation for some user roles (probably will need to create additional `...-pending` user roles)
|
468 |
* @param id $customer_id defines the customer_id.
|
470 |
* @param string $password_generated defines the password_generated.
|
471 |
*/
|
472 |
public function process_registration_extra_fields( $customer_id, $new_customer_data, $password_generated ) {
|
473 |
+
$wpnonce = isset( $_REQUEST['woocommerce-register-nonce'] ) ? wp_verify_nonce( sanitize_key( $_REQUEST['woocommerce-register-nonce'] ), 'woocommerce-register' ) : false;
|
474 |
if ( $wpnonce && isset( $_POST['wcj_user_role'] ) && '' !== $_POST['wcj_user_role'] ) {
|
475 |
$user_roles_options = wcj_get_option( 'wcj_my_account_registration_extra_fields_user_role_options', array( 'customer' ) );
|
476 |
if ( ! empty( $user_roles_options ) && in_array( $_POST['wcj_user_role'], $user_roles_options, true ) ) {
|
includes/class-wcj-offer-price.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Offer Price
|
4 |
*
|
5 |
-
* @version 5.6.
|
6 |
* @since 2.9.0
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/includes
|
@@ -92,7 +92,7 @@ if ( ! class_exists( 'WCJ_Offer_Price' ) ) :
|
|
92 |
/**
|
93 |
* Add_styling.
|
94 |
*
|
95 |
-
* @version 5.6.
|
96 |
* @since 3.7.0
|
97 |
*/
|
98 |
public function add_styling() {
|
@@ -110,25 +110,13 @@ if ( ! class_exists( 'WCJ_Offer_Price' ) ) :
|
|
110 |
}
|
111 |
}
|
112 |
$css = "<style type=\"text/css\">
|
113 |
-
.wcj-offer-price-modal-content {
|
114 |
-
|
115 |
-
}
|
116 |
-
.wcj-offer-modal-
|
117 |
-
|
118 |
-
color: {$styling_options['form_header_text_color']};
|
119 |
-
}
|
120 |
-
.wcj-offer-modal-header h1, .wcj-offer-modal-header h2, .wcj-offer-modal-header h3, .wcj-offer-modal-header h4, .wcj-offer-modal-header h5, .wcj-offer-modal-header h6 {
|
121 |
-
color: {$styling_options['form_header_text_color']};
|
122 |
-
}
|
123 |
-
.wcj-offer-price-modal-footer {
|
124 |
-
background-color: {$styling_options['form_footer_back_color']};
|
125 |
-
color: {$styling_options['form_footer_text_color']};
|
126 |
-
}
|
127 |
-
.wcj-offer-price-modal-footer h1, .wcj-offer-price-modal-footer h2, .wcj-offer-price-modal-footer h3, .wcj-offer-price-modal-footer h4, .wcj-offer-price-modal-footer h5, .wcj-offer-price-modal-footer h6 {
|
128 |
-
color: {$styling_options['form_footer_text_color']};
|
129 |
-
}
|
130 |
</style>";
|
131 |
-
echo $css;
|
132 |
}
|
133 |
|
134 |
/**
|
@@ -188,7 +176,7 @@ if ( ! class_exists( 'WCJ_Offer_Price' ) ) :
|
|
188 |
/**
|
189 |
* Create_offer_price_history_meta_box.
|
190 |
*
|
191 |
-
* @version 5.6.
|
192 |
* @since 2.9.0
|
193 |
*/
|
194 |
public function create_offer_price_history_meta_box() {
|
@@ -255,12 +243,14 @@ if ( ! class_exists( 'WCJ_Offer_Price' ) ) :
|
|
255 |
}
|
256 |
echo wp_kses_post( wcj_get_table_html( $table_data, array( 'table_class' => 'widefat striped' ) ) );
|
257 |
foreach ( $average_offers as $average_offer_currency_code => $average_offer_data ) {
|
258 |
-
echo
|
259 |
-
|
260 |
-
|
261 |
-
|
262 |
-
|
263 |
-
|
|
|
|
|
264 |
}
|
265 |
echo '<p>' .
|
266 |
'<input type="checkbox" id="wcj_offer_price_delete_history" name="wcj_offer_price_delete_history">' .
|
@@ -472,7 +462,7 @@ if ( ! class_exists( 'WCJ_Offer_Price' ) ) :
|
|
472 |
/**
|
473 |
* Add_offer_price_button.
|
474 |
*
|
475 |
-
* @version 5.6.
|
476 |
* @since 2.9.0
|
477 |
*/
|
478 |
public function add_offer_price_button() {
|
@@ -486,17 +476,19 @@ if ( ! class_exists( 'WCJ_Offer_Price' ) ) :
|
|
486 |
if ( '' !== $additional_class ) {
|
487 |
$additional_class = ' ' . $additional_class;
|
488 |
}
|
489 |
-
echo
|
490 |
-
|
491 |
-
'
|
492 |
-
|
493 |
-
|
494 |
-
|
495 |
-
|
496 |
-
|
497 |
-
|
498 |
-
|
499 |
-
|
|
|
|
|
500 |
}
|
501 |
|
502 |
/**
|
@@ -540,7 +532,7 @@ if ( ! class_exists( 'WCJ_Offer_Price' ) ) :
|
|
540 |
}
|
541 |
// Price offer array.
|
542 |
$price_offer = array(
|
543 |
-
'offer_timestamp' =>
|
544 |
'product_title' => $_product->get_title(),
|
545 |
'product_edit_link' => get_edit_post_link( $_product->get_id() ),
|
546 |
'offered_price' => isset( $_POST['wcj-offer-price-price'] ) ? sanitize_text_field( wp_unslash( $_POST['wcj-offer-price-price'] ) ) : '',
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Offer Price
|
4 |
*
|
5 |
+
* @version 5.6.8
|
6 |
* @since 2.9.0
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/includes
|
92 |
/**
|
93 |
* Add_styling.
|
94 |
*
|
95 |
+
* @version 5.6.8
|
96 |
* @since 3.7.0
|
97 |
*/
|
98 |
public function add_styling() {
|
110 |
}
|
111 |
}
|
112 |
$css = "<style type=\"text/css\">
|
113 |
+
.wcj-offer-price-modal-content {width: {$styling_options['form_content_width']};}
|
114 |
+
.wcj-offer-modal-header {background-color: {$styling_options['form_header_back_color']};color: {$styling_options['form_header_text_color']};}
|
115 |
+
.wcj-offer-modal-header h1, .wcj-offer-modal-header h2, .wcj-offer-modal-header h3, .wcj-offer-modal-header h4, .wcj-offer-modal-header h5, .wcj-offer-modal-header h6 {color: {$styling_options['form_header_text_color']};}
|
116 |
+
.wcj-offer-price-modal-footer {background-color: {$styling_options['form_footer_back_color']};color: {$styling_options['form_footer_text_color']};}
|
117 |
+
.wcj-offer-price-modal-footer h1, .wcj-offer-price-modal-footer h2, .wcj-offer-price-modal-footer h3, .wcj-offer-price-modal-footer h4, .wcj-offer-price-modal-footer h5, .wcj-offer-price-modal-footer h6 {color: {$styling_options['form_footer_text_color']};}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
118 |
</style>";
|
119 |
+
echo wp_kses_post( $css );
|
120 |
}
|
121 |
|
122 |
/**
|
176 |
/**
|
177 |
* Create_offer_price_history_meta_box.
|
178 |
*
|
179 |
+
* @version 5.6.8
|
180 |
* @since 2.9.0
|
181 |
*/
|
182 |
public function create_offer_price_history_meta_box() {
|
243 |
}
|
244 |
echo wp_kses_post( wcj_get_table_html( $table_data, array( 'table_class' => 'widefat striped' ) ) );
|
245 |
foreach ( $average_offers as $average_offer_currency_code => $average_offer_data ) {
|
246 |
+
echo wp_kses_post(
|
247 |
+
'<p>' . sprintf(
|
248 |
+
/* translators: %s: search term */
|
249 |
+
esc_html__( 'Average offer: %1$s (from %2$s offer(s))', 'woocommerce-jetpack' ),
|
250 |
+
wc_price( ( $average_offer_data['offers_sum'] / $average_offer_data['total_offers'] ), array( 'currency' => $average_offer_currency_code ) ),
|
251 |
+
$average_offer_data['total_offers']
|
252 |
+
) . '</p>'
|
253 |
+
);
|
254 |
}
|
255 |
echo '<p>' .
|
256 |
'<input type="checkbox" id="wcj_offer_price_delete_history" name="wcj_offer_price_delete_history">' .
|
462 |
/**
|
463 |
* Add_offer_price_button.
|
464 |
*
|
465 |
+
* @version 5.6.8
|
466 |
* @since 2.9.0
|
467 |
*/
|
468 |
public function add_offer_price_button() {
|
476 |
if ( '' !== $additional_class ) {
|
477 |
$additional_class = ' ' . $additional_class;
|
478 |
}
|
479 |
+
echo wp_kses_post(
|
480 |
+
'<p>' .
|
481 |
+
'<button type="submit"' .
|
482 |
+
' name="wcj-offer-price-button"' .
|
483 |
+
' class="wcj-offer-price-button' . $additional_class . '"' .
|
484 |
+
' value="' . esc_html( $product_id ) . '"' .
|
485 |
+
' style="' . wcj_get_option( 'wcj_offer_price_button_style', '' ) . '"' .
|
486 |
+
' wcj_data=\'' . wp_json_encode( $this->get_wcj_data_array( $product_id ) ) . '\'' .
|
487 |
+
'>' .
|
488 |
+
get_option( 'wcj_offer_price_button_label', __( 'Make an offer', 'woocommerce-jetpack' ) ) .
|
489 |
+
'</button>' .
|
490 |
+
'</p>'
|
491 |
+
);
|
492 |
}
|
493 |
|
494 |
/**
|
532 |
}
|
533 |
// Price offer array.
|
534 |
$price_offer = array(
|
535 |
+
'offer_timestamp' => wcj_get_timestamp_date_from_gmt(),
|
536 |
'product_title' => $_product->get_title(),
|
537 |
'product_edit_link' => get_edit_post_link( $_product->get_id() ),
|
538 |
'offered_price' => isset( $_POST['wcj-offer-price-price'] ) ? sanitize_text_field( wp_unslash( $_POST['wcj-offer-price-price'] ) ) : '',
|
includes/class-wcj-old-slugs.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Old Slugs
|
4 |
*
|
5 |
-
* @version 5.6.
|
6 |
* @author Pluggabl LLC.
|
7 |
* @package Booster_For_WooCommerce/includes
|
8 |
*/
|
@@ -43,7 +43,7 @@ if ( ! class_exists( 'WCJ_Old_Slugs' ) ) :
|
|
43 |
/**
|
44 |
* Create_old_slugs_tool.
|
45 |
*
|
46 |
-
* @version 5.6.
|
47 |
*/
|
48 |
public function create_old_slugs_tool() {
|
49 |
|
@@ -89,8 +89,8 @@ if ( ! class_exists( 'WCJ_Old_Slugs' ) ) :
|
|
89 |
|
90 |
if ( ( isset( $_POST['remove_old_products_slugs'] ) && $remove_old_products_slugs_wpnonce ) || ( isset( $_POST['remove_old_non_products_slugs'] ) && $remove_old_non_products_slugs_wpnonce ) ) {
|
91 |
$post_ids_to_delete = join( ',', ( isset( $_POST['remove_old_products_slugs'] ) ? $posts_ids['products'] : $posts_ids['non_products'] ) );
|
92 |
-
$delete_result = $wpdb->get_results( "DELETE FROM $
|
93 |
-
$recheck_result = $wpdb->get_results( "SELECT * FROM $
|
94 |
$recheck_result_count = count( $recheck_result );
|
95 |
$remove_result_html = '<div class="updated"><p>' .
|
96 |
sprintf(
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Old Slugs
|
4 |
*
|
5 |
+
* @version 5.6.8
|
6 |
* @author Pluggabl LLC.
|
7 |
* @package Booster_For_WooCommerce/includes
|
8 |
*/
|
43 |
/**
|
44 |
* Create_old_slugs_tool.
|
45 |
*
|
46 |
+
* @version 5.6.8
|
47 |
*/
|
48 |
public function create_old_slugs_tool() {
|
49 |
|
89 |
|
90 |
if ( ( isset( $_POST['remove_old_products_slugs'] ) && $remove_old_products_slugs_wpnonce ) || ( isset( $_POST['remove_old_non_products_slugs'] ) && $remove_old_non_products_slugs_wpnonce ) ) {
|
91 |
$post_ids_to_delete = join( ',', ( isset( $_POST['remove_old_products_slugs'] ) ? $posts_ids['products'] : $posts_ids['non_products'] ) );
|
92 |
+
$delete_result = $wpdb->get_results( "DELETE FROM {$wpdb->prefix}postmeta WHERE meta_key = '_wp_old_slug' AND post_id IN ($post_ids_to_delete)" ); // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching, WordPress.DB.PreparedSQL.InterpolatedNotPrepared
|
93 |
+
$recheck_result = $wpdb->get_results( "SELECT * FROM {$wpdb->prefix}postmeta WHERE meta_key = '_wp_old_slug'" ); // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching
|
94 |
$recheck_result_count = count( $recheck_result );
|
95 |
$remove_result_html = '<div class="updated"><p>' .
|
96 |
sprintf(
|
includes/class-wcj-order-numbers.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Order Numbers
|
4 |
*
|
5 |
-
* @version 5.6.
|
6 |
* @author Pluggabl LLC.
|
7 |
* @package Booster_For_WooCommerce/includes
|
8 |
*/
|
@@ -192,7 +192,7 @@ if ( ! class_exists( 'WCJ_Order_Numbers' ) ) :
|
|
192 |
/**
|
193 |
* Search_by_custom_number.
|
194 |
*
|
195 |
-
* @version 5.6.
|
196 |
* @since 2.6.0
|
197 |
* @todo `_wcj_order_number` is used for `sequential` and `hash` only
|
198 |
* @param array | string $query defines the query.
|
@@ -230,11 +230,9 @@ if ( ! class_exists( 'WCJ_Order_Numbers' ) ) :
|
|
230 |
}
|
231 |
}
|
232 |
// Post Status.
|
233 |
-
$
|
234 |
-
|
235 |
-
|
236 |
-
}
|
237 |
-
$post_status = ( $wpnonce && isset( $_GET['post_status'] ) ) ? sanitize_text_field( wp_unslash( $_GET['post_status'] ) ) : 'any';
|
238 |
|
239 |
// Try to search post by '_wcj_order_number' meta key.
|
240 |
$meta_query_args = array(
|
@@ -251,7 +249,7 @@ if ( ! class_exists( 'WCJ_Order_Numbers' ) ) :
|
|
251 |
'update_post_term_cache' => false,
|
252 |
'post_status' => $post_status,
|
253 |
'post_type' => 'shop_order',
|
254 |
-
'meta_query' => $meta_query_args, //phpcs:ignore
|
255 |
)
|
256 |
);
|
257 |
|
@@ -342,7 +340,7 @@ if ( ! class_exists( 'WCJ_Order_Numbers' ) ) :
|
|
342 |
/**
|
343 |
* Add Renumerate Orders tool to WooCommerce menu (the content).
|
344 |
*
|
345 |
-
* @version 5.6.
|
346 |
* @todo restyle
|
347 |
* @todo add more result info (e.g. number of regenerated orders etc.)
|
348 |
*/
|
@@ -372,7 +370,7 @@ if ( ! class_exists( 'WCJ_Order_Numbers' ) ) :
|
|
372 |
'Press the button below to renumerate all existing orders starting from order counter settings in <a href="%s">Order Numbers</a> module.',
|
373 |
'woocommerce-jetpack'
|
374 |
),
|
375 |
-
admin_url( '
|
376 |
);
|
377 |
$html .= '</p>';
|
378 |
$html .= $result_message;
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Order Numbers
|
4 |
*
|
5 |
+
* @version 5.6.8
|
6 |
* @author Pluggabl LLC.
|
7 |
* @package Booster_For_WooCommerce/includes
|
8 |
*/
|
192 |
/**
|
193 |
* Search_by_custom_number.
|
194 |
*
|
195 |
+
* @version 5.6.8
|
196 |
* @since 2.6.0
|
197 |
* @todo `_wcj_order_number` is used for `sequential` and `hash` only
|
198 |
* @param array | string $query defines the query.
|
230 |
}
|
231 |
}
|
232 |
// Post Status.
|
233 |
+
$get_data = array();
|
234 |
+
parse_str( isset( $_SERVER['QUERY_STRING'] ) ? sanitize_text_field( wp_unslash( $_SERVER['QUERY_STRING'] ) ) : '', $get_data );
|
235 |
+
$post_status = isset( $get_data['post_status'] ) ? sanitize_text_field( wp_unslash( $get_data['post_status'] ) ) : 'any';
|
|
|
|
|
236 |
|
237 |
// Try to search post by '_wcj_order_number' meta key.
|
238 |
$meta_query_args = array(
|
249 |
'update_post_term_cache' => false,
|
250 |
'post_status' => $post_status,
|
251 |
'post_type' => 'shop_order',
|
252 |
+
'meta_query' => $meta_query_args, // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_meta_query
|
253 |
)
|
254 |
);
|
255 |
|
340 |
/**
|
341 |
* Add Renumerate Orders tool to WooCommerce menu (the content).
|
342 |
*
|
343 |
+
* @version 5.6.8
|
344 |
* @todo restyle
|
345 |
* @todo add more result info (e.g. number of regenerated orders etc.)
|
346 |
*/
|
370 |
'Press the button below to renumerate all existing orders starting from order counter settings in <a href="%s">Order Numbers</a> module.',
|
371 |
'woocommerce-jetpack'
|
372 |
),
|
373 |
+
admin_url( wcj_admin_tab_url() . '&wcj-cat=shipping_and_orders§ion=order_numbers' )
|
374 |
);
|
375 |
$html .= '</p>';
|
376 |
$html .= $result_message;
|
includes/class-wcj-order-quantities.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Order Min/Max Quantities
|
4 |
*
|
5 |
-
* @version 5.6.
|
6 |
* @since 2.9.0
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/includes
|
@@ -629,7 +629,7 @@ if ( ! class_exists( 'WCJ_Order_Quantities' ) ) :
|
|
629 |
/**
|
630 |
* Check_quantities.
|
631 |
*
|
632 |
-
* @version 5.6.
|
633 |
* @since 2.9.0
|
634 |
* @param string $min_or_max defines the min_or_max.
|
635 |
* @param int $cart_item_quantities defines the cart_item_quantities.
|
@@ -654,7 +654,7 @@ if ( ! class_exists( 'WCJ_Order_Quantities' ) ) :
|
|
654 |
if ( 'yes' === apply_filters( 'booster_option', 'no', wcj_get_option( 'wcj_order_quantities_' . $min_or_max . '_per_item_quantity_per_product', 'no' ) ) ) {
|
655 |
foreach ( $cart_item_quantities as $_product_id => $cart_item_quantity ) {
|
656 |
$max_or_max_per_item_quantity = get_post_meta( $_product_id, '_wcj_order_quantities_' . $min_or_max, true );
|
657 |
-
if (
|
658 |
if (
|
659 |
( 'max' === $min_or_max && $cart_item_quantity > $max_or_max_per_item_quantity ) ||
|
660 |
( 'min' === $min_or_max && $cart_item_quantity < $max_or_max_per_item_quantity )
|
@@ -669,7 +669,7 @@ if ( ! class_exists( 'WCJ_Order_Quantities' ) ) :
|
|
669 |
}
|
670 |
}
|
671 |
$max_or_max_per_item_quantity = apply_filters( 'booster_option', 0, wcj_get_option( 'wcj_order_quantities_' . $min_or_max . '_per_item_quantity', 0 ) );
|
672 |
-
if (
|
673 |
foreach ( $cart_item_quantities as $_product_id => $cart_item_quantity ) {
|
674 |
if (
|
675 |
'yes' === apply_filters( 'booster_option', 'no', wcj_get_option( 'wcj_order_quantities_' . $min_or_max . '_per_item_quantity_per_product', 'no' ) ) &&
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Order Min/Max Quantities
|
4 |
*
|
5 |
+
* @version 5.6.8
|
6 |
* @since 2.9.0
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/includes
|
629 |
/**
|
630 |
* Check_quantities.
|
631 |
*
|
632 |
+
* @version 5.6.8
|
633 |
* @since 2.9.0
|
634 |
* @param string $min_or_max defines the min_or_max.
|
635 |
* @param int $cart_item_quantities defines the cart_item_quantities.
|
654 |
if ( 'yes' === apply_filters( 'booster_option', 'no', wcj_get_option( 'wcj_order_quantities_' . $min_or_max . '_per_item_quantity_per_product', 'no' ) ) ) {
|
655 |
foreach ( $cart_item_quantities as $_product_id => $cart_item_quantity ) {
|
656 |
$max_or_max_per_item_quantity = get_post_meta( $_product_id, '_wcj_order_quantities_' . $min_or_max, true );
|
657 |
+
if ( 0 !== ( $max_or_max_per_item_quantity ) ) {
|
658 |
if (
|
659 |
( 'max' === $min_or_max && $cart_item_quantity > $max_or_max_per_item_quantity ) ||
|
660 |
( 'min' === $min_or_max && $cart_item_quantity < $max_or_max_per_item_quantity )
|
669 |
}
|
670 |
}
|
671 |
$max_or_max_per_item_quantity = apply_filters( 'booster_option', 0, wcj_get_option( 'wcj_order_quantities_' . $min_or_max . '_per_item_quantity', 0 ) );
|
672 |
+
if ( 0 !== ( $max_or_max_per_item_quantity ) ) {
|
673 |
foreach ( $cart_item_quantities as $_product_id => $cart_item_quantity ) {
|
674 |
if (
|
675 |
'yes' === apply_filters( 'booster_option', 'no', wcj_get_option( 'wcj_order_quantities_' . $min_or_max . '_per_item_quantity_per_product', 'no' ) ) &&
|
includes/class-wcj-orders.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Orders
|
4 |
*
|
5 |
-
* @version 5.6.
|
6 |
* @author Pluggabl LLC.
|
7 |
* @package Booster_For_WooCommerce/includes
|
8 |
*/
|
@@ -20,7 +20,7 @@ if ( ! class_exists( 'WCJ_Orders' ) ) :
|
|
20 |
/**
|
21 |
* Constructor.
|
22 |
*
|
23 |
-
* @version 5.6.
|
24 |
* @todo Bulk Regenerate Download Permissions - copy "cron" to plugin
|
25 |
* @todo Bulk Regenerate Download Permissions - maybe move "bulk actions" to free
|
26 |
* @todo Bulk Regenerate Download Permissions - maybe as new module
|
@@ -68,7 +68,7 @@ if ( ! class_exists( 'WCJ_Orders' ) ) :
|
|
68 |
if ( 'disabled' !== apply_filters( 'booster_option', 'disabled', wcj_get_option( 'wcj_order_bulk_regenerate_download_permissions_all_orders_cron', 'disabled' ) ) ) {
|
69 |
add_action( 'init', array( $this, 'schedule_bulk_regenerate_download_permissions_all_orders_cron' ) );
|
70 |
add_action( 'admin_init', array( $this, 'schedule_bulk_regenerate_download_permissions_all_orders_cron' ) );
|
71 |
-
add_filter( 'cron_schedules', 'wcj_crons_add_custom_intervals' );
|
72 |
add_action( 'wcj_bulk_regenerate_download_permissions_all_orders_cron', array( $this, 'bulk_regenerate_download_permissions_all_orders' ) );
|
73 |
}
|
74 |
}
|
@@ -352,6 +352,36 @@ if ( ! class_exists( 'WCJ_Orders' ) ) :
|
|
352 |
$order->update_status( 'completed' );
|
353 |
}
|
354 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
355 |
}
|
356 |
|
357 |
endif;
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Orders
|
4 |
*
|
5 |
+
* @version 5.6.8
|
6 |
* @author Pluggabl LLC.
|
7 |
* @package Booster_For_WooCommerce/includes
|
8 |
*/
|
20 |
/**
|
21 |
* Constructor.
|
22 |
*
|
23 |
+
* @version 5.6.8
|
24 |
* @todo Bulk Regenerate Download Permissions - copy "cron" to plugin
|
25 |
* @todo Bulk Regenerate Download Permissions - maybe move "bulk actions" to free
|
26 |
* @todo Bulk Regenerate Download Permissions - maybe as new module
|
68 |
if ( 'disabled' !== apply_filters( 'booster_option', 'disabled', wcj_get_option( 'wcj_order_bulk_regenerate_download_permissions_all_orders_cron', 'disabled' ) ) ) {
|
69 |
add_action( 'init', array( $this, 'schedule_bulk_regenerate_download_permissions_all_orders_cron' ) );
|
70 |
add_action( 'admin_init', array( $this, 'schedule_bulk_regenerate_download_permissions_all_orders_cron' ) );
|
71 |
+
add_filter( 'cron_schedules', array( $this, 'wcj_crons_add_custom_intervals' ) );
|
72 |
add_action( 'wcj_bulk_regenerate_download_permissions_all_orders_cron', array( $this, 'bulk_regenerate_download_permissions_all_orders' ) );
|
73 |
}
|
74 |
}
|
352 |
$order->update_status( 'completed' );
|
353 |
}
|
354 |
|
355 |
+
/**
|
356 |
+
* Wcj_crons_add_custom_intervals.
|
357 |
+
*
|
358 |
+
* @version 5.6.8
|
359 |
+
* @since 3.2.4
|
360 |
+
* @param array $schedules defines the schedules.
|
361 |
+
*/
|
362 |
+
public function wcj_crons_add_custom_intervals( $schedules ) {
|
363 |
+
$schedules['weekly'] = array(
|
364 |
+
'interval' => 604800,
|
365 |
+
'display' => __( 'Once weekly', 'woocommerce-jetpack' ),
|
366 |
+
);
|
367 |
+
$schedules['minute_30'] = array(
|
368 |
+
'interval' => 1800,
|
369 |
+
'display' => __( 'Once every 30 minutes', 'woocommerce-jetpack' ),
|
370 |
+
);
|
371 |
+
$schedules['minute_15'] = array(
|
372 |
+
'interval' => 900,
|
373 |
+
'display' => __( 'Once every 15 minutes', 'woocommerce-jetpack' ),
|
374 |
+
);
|
375 |
+
$schedules['minute_5'] = array(
|
376 |
+
'interval' => 300,
|
377 |
+
'display' => __( 'Once every 5 minutes', 'woocommerce-jetpack' ),
|
378 |
+
);
|
379 |
+
$schedules['minutely'] = array(
|
380 |
+
'interval' => 60,
|
381 |
+
'display' => __( 'Once a minute', 'woocommerce-jetpack' ),
|
382 |
+
);
|
383 |
+
return $schedules;
|
384 |
+
}
|
385 |
}
|
386 |
|
387 |
endif;
|
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 5.6.
|
6 |
* @since 2.4.1
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/includes
|
@@ -39,12 +39,13 @@ if ( ! class_exists( 'WCJ_Payment_Gateways_By_Country' ) ) :
|
|
39 |
/**
|
40 |
* Get_location.
|
41 |
*
|
42 |
-
* @version 5.6.
|
43 |
* @since 3.4.0
|
44 |
* @todo on `WCJ_IS_WC_VERSION_BELOW_3` recheck if `get_shipping_country()` and `get_shipping_state()` work correctly
|
45 |
* @param string $type defines the type.
|
46 |
*/
|
47 |
public function get_location( $type ) {
|
|
|
48 |
switch ( $type ) {
|
49 |
case 'country':
|
50 |
$country_type = wcj_get_option( 'wcj_gateways_by_location_country_type', 'billing' );
|
@@ -53,27 +54,28 @@ if ( ! class_exists( 'WCJ_Payment_Gateways_By_Country' ) ) :
|
|
53 |
case 'by_ip':
|
54 |
return wcj_get_country_by_ip();
|
55 |
case 'shipping':
|
56 |
-
return ( ( ! empty( $_REQUEST['s_country'] ) ) ? sanitize_text_field( wp_unslash( $_REQUEST['s_country'] ) ) : ( isset( WC()->customer ) ? WC()->customer->get_shipping_country() : '' ) );
|
57 |
default: // 'billing'
|
58 |
-
return ( ! empty( $_REQUEST['country'] ) ? sanitize_text_field( wp_unslash( $_REQUEST['country'] ) ) : ( isset( WC()->customer ) ? wcj_customer_get_country() : '' ) );
|
59 |
}
|
60 |
case 'state':
|
61 |
$state_type = wcj_get_option( 'wcj_gateways_by_location_state_type', 'billing' );
|
62 |
switch ( $state_type ) {
|
63 |
case 'shipping':
|
64 |
-
return ( ! empty( $_REQUEST['s_state'] ) ? sanitize_text_field( wp_unslash( $_REQUEST['s_state'] ) ) : ( isset( WC()->customer ) ? WC()->customer->get_shipping_state() : '' ) );
|
65 |
default: // 'billing'
|
66 |
-
return ( ! empty( $_REQUEST['state'] ) ? sanitize_text_field( wp_unslash( $_REQUEST['state'] ) ) : ( isset( WC()->customer ) ? wcj_customer_get_country_state() : '' ) );
|
67 |
}
|
68 |
case 'postcode':
|
69 |
$postcodes_type = wcj_get_option( 'wcj_gateways_by_location_postcodes_type', 'billing' );
|
70 |
switch ( $postcodes_type ) {
|
71 |
case 'shipping':
|
72 |
-
return ( ! empty( $_REQUEST['s_postcode'] ) ? strtoupper( sanitize_text_field( wp_unslash( $_REQUEST['s_postcode'] ) ) ) : ( ! empty( $_REQUEST['shipping_postcode'] ) ? strtoupper( sanitize_text_field( wp_unslash( $_REQUEST['shipping_postcode'] ) ) ) : strtoupper( WC()->countries->get_base_postcode() ) ) );
|
73 |
default: // 'billing'
|
74 |
-
return ( ! empty( $_REQUEST['postcode'] ) ? strtoupper( sanitize_text_field( wp_unslash( $_REQUEST['postcode'] ) ) ) : ( ! empty( $_REQUEST['billing_postcode'] ) ? strtoupper( sanitize_text_field( wp_unslash( $_REQUEST['billing_postcode'] ) ) ) : strtoupper( WC()->countries->get_base_postcode() ) ) );
|
75 |
}
|
76 |
}
|
|
|
77 |
}
|
78 |
|
79 |
/**
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Payment Gateways by Country
|
4 |
*
|
5 |
+
* @version 5.6.8
|
6 |
* @since 2.4.1
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/includes
|
39 |
/**
|
40 |
* Get_location.
|
41 |
*
|
42 |
+
* @version 5.6.8
|
43 |
* @since 3.4.0
|
44 |
* @todo on `WCJ_IS_WC_VERSION_BELOW_3` recheck if `get_shipping_country()` and `get_shipping_state()` work correctly
|
45 |
* @param string $type defines the type.
|
46 |
*/
|
47 |
public function get_location( $type ) {
|
48 |
+
// phpcs:disable WordPress.Security.NonceVerification
|
49 |
switch ( $type ) {
|
50 |
case 'country':
|
51 |
$country_type = wcj_get_option( 'wcj_gateways_by_location_country_type', 'billing' );
|
54 |
case 'by_ip':
|
55 |
return wcj_get_country_by_ip();
|
56 |
case 'shipping':
|
57 |
+
return ( ( ! empty( $_REQUEST['s_country'] ) ) ? sanitize_text_field( wp_unslash( $_REQUEST['s_country'] ) ) : ( isset( WC()->customer ) ? WC()->customer->get_shipping_country() : '' ) );
|
58 |
default: // 'billing'
|
59 |
+
return ( ! empty( $_REQUEST['country'] ) ? sanitize_text_field( wp_unslash( $_REQUEST['country'] ) ) : ( isset( WC()->customer ) ? wcj_customer_get_country() : '' ) );
|
60 |
}
|
61 |
case 'state':
|
62 |
$state_type = wcj_get_option( 'wcj_gateways_by_location_state_type', 'billing' );
|
63 |
switch ( $state_type ) {
|
64 |
case 'shipping':
|
65 |
+
return ( ! empty( $_REQUEST['s_state'] ) ? sanitize_text_field( wp_unslash( $_REQUEST['s_state'] ) ) : ( isset( WC()->customer ) ? WC()->customer->get_shipping_state() : '' ) );
|
66 |
default: // 'billing'
|
67 |
+
return ( ! empty( $_REQUEST['state'] ) ? sanitize_text_field( wp_unslash( $_REQUEST['state'] ) ) : ( isset( WC()->customer ) ? wcj_customer_get_country_state() : '' ) );
|
68 |
}
|
69 |
case 'postcode':
|
70 |
$postcodes_type = wcj_get_option( 'wcj_gateways_by_location_postcodes_type', 'billing' );
|
71 |
switch ( $postcodes_type ) {
|
72 |
case 'shipping':
|
73 |
+
return ( ! empty( $_REQUEST['s_postcode'] ) ? strtoupper( sanitize_text_field( wp_unslash( $_REQUEST['s_postcode'] ) ) ) : ( ! empty( $_REQUEST['shipping_postcode'] ) ? strtoupper( sanitize_text_field( wp_unslash( $_REQUEST['shipping_postcode'] ) ) ) : strtoupper( WC()->countries->get_base_postcode() ) ) );
|
74 |
default: // 'billing'
|
75 |
+
return ( ! empty( $_REQUEST['postcode'] ) ? strtoupper( sanitize_text_field( wp_unslash( $_REQUEST['postcode'] ) ) ) : ( ! empty( $_REQUEST['billing_postcode'] ) ? strtoupper( sanitize_text_field( wp_unslash( $_REQUEST['billing_postcode'] ) ) ) : strtoupper( WC()->countries->get_base_postcode() ) ) );
|
76 |
}
|
77 |
}
|
78 |
+
// phpcs:enable WordPress.Security.NonceVerification
|
79 |
}
|
80 |
|
81 |
/**
|
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 5.6.
|
6 |
* @since 2.2.2
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/includes
|
@@ -143,21 +143,23 @@ if ( ! class_exists( 'WCJ_Payment_Gateways_Fees' ) ) :
|
|
143 |
/**
|
144 |
* Get_current_gateway.
|
145 |
*
|
146 |
-
* @version 5.6.
|
147 |
* @since 3.3.0
|
148 |
*/
|
149 |
public function get_current_gateway() {
|
150 |
$gateway = '';
|
151 |
-
|
|
|
152 |
$gateway = 'paypal_express'; // PayPal for WooCommerce (By Angell EYE).
|
153 |
} elseif (
|
154 |
-
( isset( $_GET['wc-ajax'] ) && 'wc_ppec_generate_cart' === $_GET['wc-ajax'] ) ||
|
155 |
-
( isset( $_GET['startcheckout'] ) && 'true' === $_GET['startcheckout'] )
|
156 |
) {
|
157 |
$gateway = 'ppec_paypal'; // WooCommerce PayPal Express Checkout Payment Gateway (By WooCommerce).
|
158 |
} else {
|
159 |
$gateway = WC()->session->get( 'chosen_payment_method' );
|
160 |
}
|
|
|
161 |
|
162 |
// Pre-sets the default available payment gateway on cart and checkout pages.
|
163 |
if (
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Gateways Fees and Discounts
|
4 |
*
|
5 |
+
* @version 5.6.8
|
6 |
* @since 2.2.2
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/includes
|
143 |
/**
|
144 |
* Get_current_gateway.
|
145 |
*
|
146 |
+
* @version 5.6.8
|
147 |
* @since 3.3.0
|
148 |
*/
|
149 |
public function get_current_gateway() {
|
150 |
$gateway = '';
|
151 |
+
// phpcs:disable WordPress.Security.NonceVerification
|
152 |
+
if ( isset( $_GET['wc-api'] ) && 'WC_Gateway_PayPal_Express_AngellEYE' === $_GET['wc-api'] ) {
|
153 |
$gateway = 'paypal_express'; // PayPal for WooCommerce (By Angell EYE).
|
154 |
} elseif (
|
155 |
+
( isset( $_GET['wc-ajax'] ) && 'wc_ppec_generate_cart' === $_GET['wc-ajax'] ) ||
|
156 |
+
( isset( $_GET['startcheckout'] ) && 'true' === $_GET['startcheckout'] )
|
157 |
) {
|
158 |
$gateway = 'ppec_paypal'; // WooCommerce PayPal Express Checkout Payment Gateway (By WooCommerce).
|
159 |
} else {
|
160 |
$gateway = WC()->session->get( 'chosen_payment_method' );
|
161 |
}
|
162 |
+
// phpcs:enable WordPress.Security.NonceVerification
|
163 |
|
164 |
// Pre-sets the default available payment gateway on cart and checkout pages.
|
165 |
if (
|
includes/class-wcj-payment-gateways.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Custom Gateways
|
4 |
*
|
5 |
-
* @version 5.6.
|
6 |
* @author Pluggabl LLC.
|
7 |
* @package Booster_For_WooCommerce/includes
|
8 |
*/
|
@@ -20,7 +20,7 @@ if ( ! class_exists( 'WCJ_Payment_Gateways' ) ) :
|
|
20 |
/**
|
21 |
* Constructor.
|
22 |
*
|
23 |
-
* @version 5.6.
|
24 |
*/
|
25 |
public function __construct() {
|
26 |
|
@@ -32,7 +32,7 @@ if ( ! class_exists( 'WCJ_Payment_Gateways' ) ) :
|
|
32 |
parent::__construct();
|
33 |
|
34 |
if ( $this->is_enabled() ) {
|
35 |
-
include_once 'gateways/class-wc-gateway-wcj-custom.php';
|
36 |
add_action( 'woocommerce_after_checkout_validation', array( $this, 'check_required_wcj_input_fields' ), PHP_INT_MAX, 2 );
|
37 |
add_action( 'woocommerce_checkout_update_order_meta', array( $this, 'update_custom_payment_gateways_fields_order_meta' ), PHP_INT_MAX, 2 );
|
38 |
add_action( 'add_meta_boxes', array( $this, 'add_custom_payment_gateways_fields_admin_order_meta_box' ) );
|
@@ -43,14 +43,15 @@ if ( ! class_exists( 'WCJ_Payment_Gateways' ) ) :
|
|
43 |
/**
|
44 |
* Maybe_delete_payment_gateway_input_fields.
|
45 |
*
|
46 |
-
* @version 5.6.
|
47 |
* @since 3.3.0
|
48 |
*/
|
49 |
public function maybe_delete_payment_gateway_input_fields() {
|
50 |
-
|
51 |
-
|
|
|
52 |
delete_post_meta( $order_id, '_wcj_custom_payment_gateway_input_fields' );
|
53 |
-
wp_safe_redirect(
|
54 |
exit;
|
55 |
}
|
56 |
}
|
@@ -111,7 +112,7 @@ if ( ! class_exists( 'WCJ_Payment_Gateways' ) ) :
|
|
111 |
/**
|
112 |
* Create_custom_payment_gateways_fields_admin_order_meta_box.
|
113 |
*
|
114 |
-
* @version 5.
|
115 |
* @since 2.5.2
|
116 |
*/
|
117 |
public function create_custom_payment_gateways_fields_admin_order_meta_box() {
|
@@ -130,7 +131,7 @@ if ( ! class_exists( 'WCJ_Payment_Gateways' ) ) :
|
|
130 |
)
|
131 |
);
|
132 |
if ( 'yes' === wcj_get_option( 'wcj_custom_payment_gateways_input_fields_delete_button', 'no' ) ) {
|
133 |
-
$html .= '<p><a style="color:#a00;" href="' . esc_url( add_query_arg( 'wcj_delete_payment_gateway_input_fields', $order_id ) ) . '"' . wcj_get_js_confirmation() . '>' .
|
134 |
__( 'Delete', 'woocommerce-jetpack' ) . '</a></p>';
|
135 |
}
|
136 |
echo wp_kses_post( $html );
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Custom Gateways
|
4 |
*
|
5 |
+
* @version 5.6.8
|
6 |
* @author Pluggabl LLC.
|
7 |
* @package Booster_For_WooCommerce/includes
|
8 |
*/
|
20 |
/**
|
21 |
* Constructor.
|
22 |
*
|
23 |
+
* @version 5.6.8
|
24 |
*/
|
25 |
public function __construct() {
|
26 |
|
32 |
parent::__construct();
|
33 |
|
34 |
if ( $this->is_enabled() ) {
|
35 |
+
include_once 'gateways/class-wc-gateway-wcj-custom-template.php';
|
36 |
add_action( 'woocommerce_after_checkout_validation', array( $this, 'check_required_wcj_input_fields' ), PHP_INT_MAX, 2 );
|
37 |
add_action( 'woocommerce_checkout_update_order_meta', array( $this, 'update_custom_payment_gateways_fields_order_meta' ), PHP_INT_MAX, 2 );
|
38 |
add_action( 'add_meta_boxes', array( $this, 'add_custom_payment_gateways_fields_admin_order_meta_box' ) );
|
43 |
/**
|
44 |
* Maybe_delete_payment_gateway_input_fields.
|
45 |
*
|
46 |
+
* @version 5.6.8
|
47 |
* @since 3.3.0
|
48 |
*/
|
49 |
public function maybe_delete_payment_gateway_input_fields() {
|
50 |
+
$wpnonce = isset( $_GET['_wpnonce'] ) ? wp_verify_nonce( sanitize_key( $_GET['_wpnonce'] ), 'wcj_delete_payment_gateway_input_fields' ) : false;
|
51 |
+
if ( $wpnonce && isset( $_GET['wcj_delete_payment_gateway_input_fields'] ) ) {
|
52 |
+
$order_id = sanitize_text_field( wp_unslash( $_GET['wcj_delete_payment_gateway_input_fields'] ) );
|
53 |
delete_post_meta( $order_id, '_wcj_custom_payment_gateway_input_fields' );
|
54 |
+
wp_safe_redirect( esc_url_raw( remove_query_arg( array( 'wcj_delete_payment_gateway_input_fields', '_wpnonce' ) ) ) );
|
55 |
exit;
|
56 |
}
|
57 |
}
|
112 |
/**
|
113 |
* Create_custom_payment_gateways_fields_admin_order_meta_box.
|
114 |
*
|
115 |
+
* @version 5.6.8
|
116 |
* @since 2.5.2
|
117 |
*/
|
118 |
public function create_custom_payment_gateways_fields_admin_order_meta_box() {
|
131 |
)
|
132 |
);
|
133 |
if ( 'yes' === wcj_get_option( 'wcj_custom_payment_gateways_input_fields_delete_button', 'no' ) ) {
|
134 |
+
$html .= '<p><a style="color:#a00;" href="' . esc_url( wp_nonce_url( add_query_arg( 'wcj_delete_payment_gateway_input_fields', $order_id ), 'wcj_delete_payment_gateway_input_fields' ) ) . '"' . wcj_get_js_confirmation() . '>' .
|
135 |
__( 'Delete', 'woocommerce-jetpack' ) . '</a></p>';
|
136 |
}
|
137 |
echo wp_kses_post( $html );
|
includes/class-wcj-pdf-invoicing.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - PDF Invoicing
|
4 |
*
|
5 |
-
* @version 5.6.
|
6 |
* @author Pluggabl LLC.
|
7 |
* @package Booster_For_WooCommerce/includes
|
8 |
*/
|
@@ -114,13 +114,13 @@ if ( ! class_exists( 'WCJ_PDF_Invoicing' ) ) :
|
|
114 |
/**
|
115 |
* Bulk_actions_pdfs_notices.
|
116 |
*
|
117 |
-
* @version 5.6.
|
118 |
* @since 2.5.7
|
119 |
*/
|
120 |
public function bulk_actions_pdfs_notices() {
|
121 |
global $post_type, $pagenow;
|
122 |
if ( 'edit.php' === $pagenow && 'shop_order' === $post_type ) {
|
123 |
-
$wpnonce = isset( $_REQUEST['
|
124 |
if ( $wpnonce && isset( $_REQUEST['generated'] ) && (int) $_REQUEST['generated'] ) {
|
125 |
/* translators: %s: translation added */
|
126 |
$message = sprintf( wp_kses_post( 'Document generated.', '%s documents generated.', sanitize_text_field( wp_unslash( $_REQUEST['generated'] ) ) ), number_format_i18n( sanitize_text_field( wp_unslash( $_REQUEST['generated'] ) ) ) );
|
@@ -167,7 +167,7 @@ if ( ! class_exists( 'WCJ_PDF_Invoicing' ) ) :
|
|
167 |
/**
|
168 |
* Processes the PDF bulk actions.
|
169 |
*
|
170 |
-
* @version 5.6.
|
171 |
* @since 2.5.7
|
172 |
* @todo on `generate` (and maybe other actions) validate user permissions/capabilities - `if ( ! current_user_can( $post_type_object->cap->export_post, $post_id ) ) { wp_die( __( 'You are not allowed to export this post.' ) ); }`
|
173 |
*
|
@@ -206,14 +206,15 @@ if ( ! class_exists( 'WCJ_PDF_Invoicing' ) ) :
|
|
206 |
}
|
207 |
}
|
208 |
// Build the redirect url.
|
209 |
-
$redirect_to =
|
210 |
add_query_arg(
|
211 |
array(
|
212 |
-
'generated'
|
213 |
-
'generated_type'
|
214 |
'generated_' . $the_type => 1,
|
215 |
-
'ids'
|
216 |
-
'post_status'
|
|
|
217 |
),
|
218 |
$redirect_to
|
219 |
)
|
@@ -226,7 +227,7 @@ if ( ! class_exists( 'WCJ_PDF_Invoicing' ) ) :
|
|
226 |
}
|
227 |
}
|
228 |
// Build the redirect url.
|
229 |
-
$redirect_to =
|
230 |
add_query_arg(
|
231 |
array(
|
232 |
'generated' => $generated,
|
@@ -234,6 +235,7 @@ if ( ! class_exists( 'WCJ_PDF_Invoicing' ) ) :
|
|
234 |
'generated_' . $the_type => 1,
|
235 |
'ids' => join( ',', $post_ids ),
|
236 |
'post_status' => isset( $_GET['post_status'] ) ? sanitize_text_field( wp_unslash( $_GET['post_status'] ) ) : '',
|
|
|
237 |
),
|
238 |
$redirect_to
|
239 |
)
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - PDF Invoicing
|
4 |
*
|
5 |
+
* @version 5.6.8
|
6 |
* @author Pluggabl LLC.
|
7 |
* @package Booster_For_WooCommerce/includes
|
8 |
*/
|
114 |
/**
|
115 |
* Bulk_actions_pdfs_notices.
|
116 |
*
|
117 |
+
* @version 5.6.8
|
118 |
* @since 2.5.7
|
119 |
*/
|
120 |
public function bulk_actions_pdfs_notices() {
|
121 |
global $post_type, $pagenow;
|
122 |
if ( 'edit.php' === $pagenow && 'shop_order' === $post_type ) {
|
123 |
+
$wpnonce = isset( $_REQUEST['pdf-generated-nonce'] ) ? wp_verify_nonce( sanitize_key( $_REQUEST['pdf-generated-nonce'] ), 'pdf-generated' ) : false;
|
124 |
if ( $wpnonce && isset( $_REQUEST['generated'] ) && (int) $_REQUEST['generated'] ) {
|
125 |
/* translators: %s: translation added */
|
126 |
$message = sprintf( wp_kses_post( 'Document generated.', '%s documents generated.', sanitize_text_field( wp_unslash( $_REQUEST['generated'] ) ) ), number_format_i18n( sanitize_text_field( wp_unslash( $_REQUEST['generated'] ) ) ) );
|
167 |
/**
|
168 |
* Processes the PDF bulk actions.
|
169 |
*
|
170 |
+
* @version 5.6.8
|
171 |
* @since 2.5.7
|
172 |
* @todo on `generate` (and maybe other actions) validate user permissions/capabilities - `if ( ! current_user_can( $post_type_object->cap->export_post, $post_id ) ) { wp_die( __( 'You are not allowed to export this post.' ) ); }`
|
173 |
*
|
206 |
}
|
207 |
}
|
208 |
// Build the redirect url.
|
209 |
+
$redirect_to = esc_url_raw(
|
210 |
add_query_arg(
|
211 |
array(
|
212 |
+
'generated' => $generated,
|
213 |
+
'generated_type' => $the_type,
|
214 |
'generated_' . $the_type => 1,
|
215 |
+
'ids' => join( ',', $invoice_num ),
|
216 |
+
'post_status' => isset( $_GET['post_status'] ) ? sanitize_text_field( wp_unslash( $_GET['post_status'] ) ) : '',
|
217 |
+
'pdf-generated-nonce' => wp_create_nonce( 'pdf-generated' ),
|
218 |
),
|
219 |
$redirect_to
|
220 |
)
|
227 |
}
|
228 |
}
|
229 |
// Build the redirect url.
|
230 |
+
$redirect_to = esc_url_raw(
|
231 |
add_query_arg(
|
232 |
array(
|
233 |
'generated' => $generated,
|
235 |
'generated_' . $the_type => 1,
|
236 |
'ids' => join( ',', $post_ids ),
|
237 |
'post_status' => isset( $_GET['post_status'] ) ? sanitize_text_field( wp_unslash( $_GET['post_status'] ) ) : '',
|
238 |
+
'pdf-generated-nonce' => wp_create_nonce( 'pdf-generated' ),
|
239 |
),
|
240 |
$redirect_to
|
241 |
)
|
includes/class-wcj-price-by-user-role.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Price based on User Role
|
4 |
*
|
5 |
-
* @version 5.6.
|
6 |
* @since 2.5.0
|
7 |
* @author Pluggabl LLC.
|
8 |
* @todo Fix "Make Empty Price" option for variable products
|
@@ -194,7 +194,7 @@ if ( ! class_exists( 'WCJ_Price_By_User_Role' ) ) :
|
|
194 |
/**
|
195 |
* Save_meta_box_value.
|
196 |
*
|
197 |
-
* @version
|
198 |
* @since 2.5.0
|
199 |
* @param string $option_value defines the option_value.
|
200 |
* @param string $option_name defines the option_name.
|
@@ -212,8 +212,8 @@ if ( ! class_exists( 'WCJ_Price_By_User_Role' ) ) :
|
|
212 |
'post_type' => 'product',
|
213 |
'post_status' => 'any',
|
214 |
'posts_per_page' => 1,
|
215 |
-
'meta_key' => '_wcj_price_by_user_role_per_product_settings_enabled', // phpcs:ignore
|
216 |
-
'meta_value' => 'yes', // phpcs:ignore
|
217 |
'post__not_in' => array( get_the_ID() ),
|
218 |
);
|
219 |
$loop = new WP_Query( $args );
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Price based on User Role
|
4 |
*
|
5 |
+
* @version 5.6.8
|
6 |
* @since 2.5.0
|
7 |
* @author Pluggabl LLC.
|
8 |
* @todo Fix "Make Empty Price" option for variable products
|
194 |
/**
|
195 |
* Save_meta_box_value.
|
196 |
*
|
197 |
+
* @version 5.6.8
|
198 |
* @since 2.5.0
|
199 |
* @param string $option_value defines the option_value.
|
200 |
* @param string $option_name defines the option_name.
|
212 |
'post_type' => 'product',
|
213 |
'post_status' => 'any',
|
214 |
'posts_per_page' => 1,
|
215 |
+
'meta_key' => '_wcj_price_by_user_role_per_product_settings_enabled', // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_meta_key
|
216 |
+
'meta_value' => 'yes', // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_meta_value
|
217 |
'post__not_in' => array( get_the_ID() ),
|
218 |
);
|
219 |
$loop = new WP_Query( $args );
|
includes/class-wcj-price-labels.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Custom Price Labels
|
4 |
*
|
5 |
-
* @version 5.6.
|
6 |
* @author Pluggabl LLC.
|
7 |
* @package Booster_For_WooCommerce/includes
|
8 |
*/
|
@@ -153,14 +153,14 @@ if ( ! class_exists( 'WCJ_Price_Labels' ) ) :
|
|
153 |
/**
|
154 |
* Create_price_label_meta_box - back end.
|
155 |
*
|
156 |
-
* @version
|
157 |
*/
|
158 |
public function create_price_label_meta_box() {
|
159 |
$current_post_id = get_the_ID();
|
160 |
echo '<table style="width:100%;">';
|
161 |
echo '<tr>';
|
162 |
foreach ( $this->custom_tab_sections as $custom_tab_section ) {
|
163 |
-
echo '<td style="width:25%;"><h4>' .
|
164 |
}
|
165 |
echo '</tr>';
|
166 |
echo '<tr>';
|
@@ -177,7 +177,7 @@ if ( ! class_exists( 'WCJ_Price_Labels' ) ) :
|
|
177 |
}
|
178 |
$label_text = get_post_meta( $current_post_id, '_' . $option_name, true );
|
179 |
$label_text = str_replace( '"', '"', $label_text );
|
180 |
-
echo '<li>' . wp_kses_post( $this->custom_tab_section_variations_titles[ $custom_tab_section_variation ] ) . '<textarea style="width:95%;min-width:100px;height:100px;" ' .
|
181 |
} else {
|
182 |
if ( '_home' === $custom_tab_section_variation ) {
|
183 |
echo '<li><h5>Hide by page type</h5></li>';
|
@@ -190,8 +190,8 @@ if ( ! class_exists( 'WCJ_Price_Labels' ) ) :
|
|
190 |
} else {
|
191 |
$disabled_if_no_plus = '';
|
192 |
}
|
193 |
-
echo '<li><input class="checkbox" type="checkbox" ' .
|
194 |
-
checked( get_post_meta( $current_post_id, '_' . $option_name, true ), 'on', false ) . ' /> ' .
|
195 |
}
|
196 |
}
|
197 |
echo '</ul>';
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Custom Price Labels
|
4 |
*
|
5 |
+
* @version 5.6.8
|
6 |
* @author Pluggabl LLC.
|
7 |
* @package Booster_For_WooCommerce/includes
|
8 |
*/
|
153 |
/**
|
154 |
* Create_price_label_meta_box - back end.
|
155 |
*
|
156 |
+
* @version 5.6.8
|
157 |
*/
|
158 |
public function create_price_label_meta_box() {
|
159 |
$current_post_id = get_the_ID();
|
160 |
echo '<table style="width:100%;">';
|
161 |
echo '<tr>';
|
162 |
foreach ( $this->custom_tab_sections as $custom_tab_section ) {
|
163 |
+
echo '<td style="width:25%;"><h4>' . esc_html( $this->custom_tab_sections_titles[ $custom_tab_section ] ) . '</h4></td>';
|
164 |
}
|
165 |
echo '</tr>';
|
166 |
echo '<tr>';
|
177 |
}
|
178 |
$label_text = get_post_meta( $current_post_id, '_' . $option_name, true );
|
179 |
$label_text = str_replace( '"', '"', $label_text );
|
180 |
+
echo '<li>' . wp_kses_post( $this->custom_tab_section_variations_titles[ $custom_tab_section_variation ] ) . '<textarea style="width:95%;min-width:100px;height:100px;" ' . esc_html( $disabled_if_no_plus ) . ' name="' . esc_html( $option_name ) . '">' . esc_html( $label_text ) . '</textarea></li>';
|
181 |
} else {
|
182 |
if ( '_home' === $custom_tab_section_variation ) {
|
183 |
echo '<li><h5>Hide by page type</h5></li>';
|
190 |
} else {
|
191 |
$disabled_if_no_plus = '';
|
192 |
}
|
193 |
+
echo '<li><input class="checkbox" type="checkbox" ' . esc_html( $disabled_if_no_plus ) . ' name="' . esc_html( $option_name ) . '" id="' . esc_html( $option_name ) . '" ' .
|
194 |
+
checked( get_post_meta( $current_post_id, '_' . $option_name, true ), 'on', false ) . ' /> ' . esc_html( $this->custom_tab_section_variations_titles[ $custom_tab_section_variation ] ) . '</li>';
|
195 |
}
|
196 |
}
|
197 |
echo '</ul>';
|
includes/class-wcj-product-add-to-cart.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Product Add To Cart
|
4 |
*
|
5 |
-
* @version 5.6.
|
6 |
* @since 2.2.0
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/includes
|
@@ -377,17 +377,13 @@ if ( ! class_exists( 'WCJ_Product_Add_To_Cart' ) ) :
|
|
377 |
/**
|
378 |
* Maybe_redirect_to_url.
|
379 |
*
|
380 |
-
* @version 5.6.
|
381 |
* @param string $url defines the url.
|
382 |
* @param bool | int $product_id defines the product_id.
|
383 |
*/
|
384 |
public function maybe_redirect_to_url( $url, $product_id = false ) {
|
385 |
-
|
386 |
-
if (
|
387 |
-
$wpnonce = isset( $_REQUEST['_wpnonce'] ) ? wp_verify_nonce( sanitize_key( isset( $_REQUEST['_wpnonce'] ) ? $_REQUEST['_wpnonce'] : '' ) ) : true;
|
388 |
-
}
|
389 |
-
|
390 |
-
if ( 'yes' === apply_filters( 'booster_option', 'no', wcj_get_option( 'wcj_add_to_cart_redirect_per_product_enabled', 'no' ) ) && ( $product_id || isset( $_REQUEST['add-to-cart'] ) ) && $wpnonce ) {
|
391 |
if ( ! $product_id ) {
|
392 |
$product_id = apply_filters( 'woocommerce_add_to_cart_product_id', absint( $_REQUEST['add-to-cart'] ) );
|
393 |
}
|
@@ -399,6 +395,7 @@ if ( ! class_exists( 'WCJ_Product_Add_To_Cart' ) ) :
|
|
399 |
return $redirect_url;
|
400 |
}
|
401 |
}
|
|
|
402 |
if ( 'yes' === wcj_get_option( 'wcj_add_to_cart_redirect_enabled', 'no' ) ) {
|
403 |
$redirect_url = wcj_get_option( 'wcj_add_to_cart_redirect_url', '' );
|
404 |
if ( '' === $redirect_url ) {
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Product Add To Cart
|
4 |
*
|
5 |
+
* @version 5.6.8
|
6 |
* @since 2.2.0
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/includes
|
377 |
/**
|
378 |
* Maybe_redirect_to_url.
|
379 |
*
|
380 |
+
* @version 5.6.8
|
381 |
* @param string $url defines the url.
|
382 |
* @param bool | int $product_id defines the product_id.
|
383 |
*/
|
384 |
public function maybe_redirect_to_url( $url, $product_id = false ) {
|
385 |
+
// phpcs:disable WordPress.Security.NonceVerification
|
386 |
+
if ( 'yes' === apply_filters( 'booster_option', 'no', wcj_get_option( 'wcj_add_to_cart_redirect_per_product_enabled', 'no' ) ) && ( $product_id || isset( $_REQUEST['add-to-cart'] ) ) ) {
|
|
|
|
|
|
|
|
|
387 |
if ( ! $product_id ) {
|
388 |
$product_id = apply_filters( 'woocommerce_add_to_cart_product_id', absint( $_REQUEST['add-to-cart'] ) );
|
389 |
}
|
395 |
return $redirect_url;
|
396 |
}
|
397 |
}
|
398 |
+
// phpcs:enable WordPress.Security.NonceVerification
|
399 |
if ( 'yes' === wcj_get_option( 'wcj_add_to_cart_redirect_enabled', 'no' ) ) {
|
400 |
$redirect_url = wcj_get_option( 'wcj_add_to_cart_redirect_url', '' );
|
401 |
if ( '' === $redirect_url ) {
|
includes/class-wcj-product-addons.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Product Addons
|
4 |
*
|
5 |
-
* @version 5.6.
|
6 |
* @since 2.5.3
|
7 |
* @author Pluggabl LLC.
|
8 |
* @todo admin order view (names)
|
@@ -273,14 +273,15 @@ if ( ! class_exists( 'WCJ_Product_Addons' ) ) :
|
|
273 |
/**
|
274 |
* Validate_on_add_to_cart.
|
275 |
*
|
276 |
-
* @version 5.6.
|
277 |
* @since 2.5.5
|
278 |
* @param array | string $passed defines the passed.
|
279 |
* @param int $product_id defines the product_id.
|
280 |
* @param int $quantity defines the quantity.
|
281 |
*/
|
282 |
public function validate_on_add_to_cart( $passed, $product_id, $quantity ) {
|
283 |
-
$
|
|
|
284 |
if ( 4 === count( $args ) ) {
|
285 |
$variation_id = $args[3];
|
286 |
}
|
@@ -295,12 +296,13 @@ if ( ! class_exists( 'WCJ_Product_Addons' ) ) :
|
|
295 |
continue;
|
296 |
}
|
297 |
if ( 'yes' === $addon['is_required'] ) {
|
298 |
-
if ( ! isset( $_POST[ $addon['checkbox_key'] ] ) && empty( $addon['default'] ) ) {
|
299 |
wc_add_notice( __( 'Some of the required addons are not selected!', 'woocommerce-jetpack' ), 'error' );
|
300 |
return false;
|
301 |
}
|
302 |
}
|
303 |
}
|
|
|
304 |
return $passed;
|
305 |
}
|
306 |
|
@@ -360,30 +362,31 @@ if ( ! class_exists( 'WCJ_Product_Addons' ) ) :
|
|
360 |
/**
|
361 |
* Price_change_ajax.
|
362 |
*
|
363 |
-
* @version 5.6.
|
364 |
* @since 2.5.3
|
365 |
* @param array | string $param defines the param.
|
366 |
*/
|
367 |
public function price_change_ajax( $param ) {
|
368 |
-
|
|
|
369 |
die();
|
370 |
}
|
371 |
-
$product_id = sanitize_text_field( wp_unslash( $_POST['product_id'] ) );
|
372 |
$the_product = wc_get_product( $product_id );
|
373 |
$parent_product_id = ( $the_product->is_type( 'variation' ) ) ? wp_get_post_parent_id( $product_id ) : $product_id;
|
374 |
$addons = $this->get_product_addons( $parent_product_id );
|
375 |
-
$the_addons_price = 0;
|
376 |
foreach ( $addons as $addon ) {
|
377 |
$price_value = $this->replace_price_template_vars( $addon['price_value'], $product_id );
|
378 |
-
if ( isset( $_POST[ $addon['checkbox_key'] ] ) ) {
|
379 |
-
if ( ( 'checkbox' === $addon['type'] || '' === $addon['type'] ) || ( 'text' === $addon['type'] && '' !== $_POST[ $addon['checkbox_key'] ] ) ) {
|
380 |
$the_addons_price += (float) $price_value;
|
381 |
} elseif ( 'radio' === $addon['type'] || 'select' === $addon['type'] ) {
|
382 |
$labels = $this->clean_and_explode( PHP_EOL, $addon['label_value'] );
|
383 |
$prices = $this->clean_and_explode( PHP_EOL, $price_value );
|
384 |
if ( count( $labels ) === count( $prices ) ) {
|
385 |
foreach ( $labels as $i => $label ) {
|
386 |
-
if ( sanitize_title( $label ) === $_POST[ $addon['checkbox_key'] ] ) {
|
387 |
$the_addons_price += (float) $prices[ $i ];
|
388 |
break;
|
389 |
}
|
@@ -392,7 +395,7 @@ if ( ! class_exists( 'WCJ_Product_Addons' ) ) :
|
|
392 |
}
|
393 |
}
|
394 |
}
|
395 |
-
if ( 0
|
396 |
$the_price = $the_product->get_price();
|
397 |
$the_display_price = wcj_get_product_display_price( $the_product, ( $the_price + $this->maybe_convert_currency( $the_addons_price, $the_product ) ) );
|
398 |
echo wp_kses_post( wc_price( $the_display_price ) );
|
@@ -701,13 +704,17 @@ if ( ! class_exists( 'WCJ_Product_Addons' ) ) :
|
|
701 |
/**
|
702 |
* Add_addons_price_to_cart_item_data.
|
703 |
*
|
704 |
-
* @version 5.6.
|
705 |
* @since 2.5.3
|
706 |
* @param array $cart_item_data defines the cart_item_data.
|
707 |
* @param int $product_id defines the product_id.
|
708 |
* @param int $variation_id defines the variation_id.
|
709 |
*/
|
710 |
public function add_addons_price_to_cart_item_data( $cart_item_data, $product_id, $variation_id ) {
|
|
|
|
|
|
|
|
|
711 |
$addons = $this->get_product_addons( $product_id );
|
712 |
foreach ( $addons as $addon ) {
|
713 |
// Prevents adding addons to cart if not in "enable by variation" option.
|
@@ -720,10 +727,10 @@ if ( ! class_exists( 'WCJ_Product_Addons' ) ) :
|
|
720 |
}
|
721 |
$price_value = $this->replace_price_template_vars( $addon['price_value'], $variation_id ? $variation_id : $product_id );
|
722 |
if (
|
723 |
-
isset( $_POST[ $addon['checkbox_key'] ] ) ||
|
724 |
! empty( $addon['default'] )
|
725 |
) {
|
726 |
-
$checkbox_key = isset( $_POST[ $addon['checkbox_key'] ] ) ? sanitize_text_field( wp_unslash( $_POST[ $addon['checkbox_key'] ] ) ) : ( ! empty( $addon['default'] ) ? sanitize_text_field( wp_unslash( $addon['default'] ) ) : null );
|
727 |
if ( ( 'checkbox' === $addon['type'] || '' === $addon['type'] ) || ( 'text' === $addon['type'] && '' !== $checkbox_key ) ) {
|
728 |
$cart_item_data[ $addon['price_key'] ] = $price_value;
|
729 |
$cart_item_data[ $addon['label_key'] ] = $addon['label_value'];
|
@@ -751,13 +758,14 @@ if ( ! class_exists( 'WCJ_Product_Addons' ) ) :
|
|
751 |
/**
|
752 |
* Add_addons_to_frontend.
|
753 |
*
|
754 |
-
* @version 5.6.
|
755 |
* @since 2.5.3
|
756 |
*/
|
757 |
public function add_addons_to_frontend() {
|
758 |
if ( isset( $this->are_addons_displayed ) && 'yes' === wcj_get_option( 'wcj_product_addons_check_for_outputted_data', 'yes' ) ) {
|
759 |
return;
|
760 |
}
|
|
|
761 |
$html = '';
|
762 |
$addons = $this->get_product_addons( get_the_ID() );
|
763 |
$_product = wc_get_product( get_the_ID() );
|
@@ -774,7 +782,7 @@ if ( ! class_exists( 'WCJ_Product_Addons' ) ) :
|
|
774 |
$is_required = ( 'yes' === $addon['is_required'] ) ? ' required' : '';
|
775 |
if ( 'checkbox' === $addon['type'] || '' === $addon['type'] ) {
|
776 |
$is_checked = '';
|
777 |
-
if ( isset( $_POST[ $addon['checkbox_key'] ] ) ) {
|
778 |
$is_checked = ' checked';
|
779 |
} elseif ( 'checked' === $addon['default'] ) {
|
780 |
$is_checked = ' checked';
|
@@ -796,7 +804,7 @@ if ( ! class_exists( 'WCJ_Product_Addons' ) ) :
|
|
796 |
)
|
797 |
);
|
798 |
} elseif ( 'text' === $addon['type'] ) {
|
799 |
-
$default_value = ( isset( $_POST[ $addon['checkbox_key'] ] ) ? sanitize_text_field( wp_unslash( $_POST[ $addon['checkbox_key'] ] ) ) : $addon['default'] );
|
800 |
$maybe_tooltip = ( '' !== $addon['tooltip'] ) ?
|
801 |
' <img style="display:inline;" class="wcj-question-icon" src="' . wcj_plugin_url() . '/assets/images/question-icon.png" title="' . $addon['tooltip'] . '">' :
|
802 |
'';
|
@@ -827,8 +835,8 @@ if ( ! class_exists( 'WCJ_Product_Addons' ) ) :
|
|
827 |
$label = sanitize_title( $label );
|
828 |
$is_checked = '';
|
829 |
$checked_or_selected = ( 'radio' === $addon['type'] ? ' checked' : ' selected' );
|
830 |
-
if ( isset( $_POST[ $addon['checkbox_key'] ] ) ) {
|
831 |
-
$is_checked = ( $label === $_POST[ $addon['checkbox_key'] ] ) ? $checked_or_selected : '';
|
832 |
} elseif ( '' !== $addon['default'] ) {
|
833 |
$is_checked = ( sanitize_title( $addon['default'] ) === $label ) ? $checked_or_selected : '';
|
834 |
}
|
@@ -878,6 +886,7 @@ if ( ! class_exists( 'WCJ_Product_Addons' ) ) :
|
|
878 |
}
|
879 |
}
|
880 |
}
|
|
|
881 |
// Output.
|
882 |
if ( ! empty( $html ) ) {
|
883 |
$html = wcj_handle_replacements(
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Product Addons
|
4 |
*
|
5 |
+
* @version 5.6.8
|
6 |
* @since 2.5.3
|
7 |
* @author Pluggabl LLC.
|
8 |
* @todo admin order view (names)
|
273 |
/**
|
274 |
* Validate_on_add_to_cart.
|
275 |
*
|
276 |
+
* @version 5.6.8
|
277 |
* @since 2.5.5
|
278 |
* @param array | string $passed defines the passed.
|
279 |
* @param int $product_id defines the product_id.
|
280 |
* @param int $quantity defines the quantity.
|
281 |
*/
|
282 |
public function validate_on_add_to_cart( $passed, $product_id, $quantity ) {
|
283 |
+
$wpnonce = isset( $_POST['wcj_product_addons-nonce'] ) ? wp_verify_nonce( sanitize_key( $_POST['wcj_product_addons-nonce'] ), 'wcj_product_addons' ) : false;
|
284 |
+
$args = func_get_args();
|
285 |
if ( 4 === count( $args ) ) {
|
286 |
$variation_id = $args[3];
|
287 |
}
|
296 |
continue;
|
297 |
}
|
298 |
if ( 'yes' === $addon['is_required'] ) {
|
299 |
+
if ( ! $wpnonce && ! isset( $_POST[ $addon['checkbox_key'] ] ) && empty( $addon['default'] ) ) {
|
300 |
wc_add_notice( __( 'Some of the required addons are not selected!', 'woocommerce-jetpack' ), 'error' );
|
301 |
return false;
|
302 |
}
|
303 |
}
|
304 |
}
|
305 |
+
|
306 |
return $passed;
|
307 |
}
|
308 |
|
362 |
/**
|
363 |
* Price_change_ajax.
|
364 |
*
|
365 |
+
* @version 5.6.8
|
366 |
* @since 2.5.3
|
367 |
* @param array | string $param defines the param.
|
368 |
*/
|
369 |
public function price_change_ajax( $param ) {
|
370 |
+
$wpnonce = isset( $_POST['wpnonce'] ) ? wp_verify_nonce( sanitize_key( $_POST['wpnonce'] ), 'wcj_product_addons' ) : false;
|
371 |
+
if ( ! $wpnonce || ! isset( $_POST['product_id'] ) || 0 === $_POST['product_id'] ) {
|
372 |
die();
|
373 |
}
|
374 |
+
$product_id = sanitize_text_field( wp_unslash( $_POST['product_id'] ) );
|
375 |
$the_product = wc_get_product( $product_id );
|
376 |
$parent_product_id = ( $the_product->is_type( 'variation' ) ) ? wp_get_post_parent_id( $product_id ) : $product_id;
|
377 |
$addons = $this->get_product_addons( $parent_product_id );
|
378 |
+
$the_addons_price = (float) 0;
|
379 |
foreach ( $addons as $addon ) {
|
380 |
$price_value = $this->replace_price_template_vars( $addon['price_value'], $product_id );
|
381 |
+
if ( isset( $_POST[ $addon['checkbox_key'] ] ) ) {
|
382 |
+
if ( ( 'checkbox' === $addon['type'] || '' === $addon['type'] ) || ( 'text' === $addon['type'] && '' !== $_POST[ $addon['checkbox_key'] ] ) ) {
|
383 |
$the_addons_price += (float) $price_value;
|
384 |
} elseif ( 'radio' === $addon['type'] || 'select' === $addon['type'] ) {
|
385 |
$labels = $this->clean_and_explode( PHP_EOL, $addon['label_value'] );
|
386 |
$prices = $this->clean_and_explode( PHP_EOL, $price_value );
|
387 |
if ( count( $labels ) === count( $prices ) ) {
|
388 |
foreach ( $labels as $i => $label ) {
|
389 |
+
if ( sanitize_title( $label ) === $_POST[ $addon['checkbox_key'] ] ) {
|
390 |
$the_addons_price += (float) $prices[ $i ];
|
391 |
break;
|
392 |
}
|
395 |
}
|
396 |
}
|
397 |
}
|
398 |
+
if ( (float) 0 !== $the_addons_price ) {
|
399 |
$the_price = $the_product->get_price();
|
400 |
$the_display_price = wcj_get_product_display_price( $the_product, ( $the_price + $this->maybe_convert_currency( $the_addons_price, $the_product ) ) );
|
401 |
echo wp_kses_post( wc_price( $the_display_price ) );
|
704 |
/**
|
705 |
* Add_addons_price_to_cart_item_data.
|
706 |
*
|
707 |
+
* @version 5.6.8
|
708 |
* @since 2.5.3
|
709 |
* @param array $cart_item_data defines the cart_item_data.
|
710 |
* @param int $product_id defines the product_id.
|
711 |
* @param int $variation_id defines the variation_id.
|
712 |
*/
|
713 |
public function add_addons_price_to_cart_item_data( $cart_item_data, $product_id, $variation_id ) {
|
714 |
+
$wpnonce = isset( $_POST['wcj_product_addons-nonce'] ) ? wp_verify_nonce( sanitize_key( $_POST['wcj_product_addons-nonce'] ), 'wcj_product_addons' ) : false;
|
715 |
+
if ( ! $wpnonce ) {
|
716 |
+
return $cart_item_data;
|
717 |
+
}
|
718 |
$addons = $this->get_product_addons( $product_id );
|
719 |
foreach ( $addons as $addon ) {
|
720 |
// Prevents adding addons to cart if not in "enable by variation" option.
|
727 |
}
|
728 |
$price_value = $this->replace_price_template_vars( $addon['price_value'], $variation_id ? $variation_id : $product_id );
|
729 |
if (
|
730 |
+
isset( $_POST[ $addon['checkbox_key'] ] ) ||
|
731 |
! empty( $addon['default'] )
|
732 |
) {
|
733 |
+
$checkbox_key = isset( $_POST[ $addon['checkbox_key'] ] ) ? sanitize_text_field( wp_unslash( $_POST[ $addon['checkbox_key'] ] ) ) : ( ! empty( $addon['default'] ) ? sanitize_text_field( wp_unslash( $addon['default'] ) ) : null );
|
734 |
if ( ( 'checkbox' === $addon['type'] || '' === $addon['type'] ) || ( 'text' === $addon['type'] && '' !== $checkbox_key ) ) {
|
735 |
$cart_item_data[ $addon['price_key'] ] = $price_value;
|
736 |
$cart_item_data[ $addon['label_key'] ] = $addon['label_value'];
|
758 |
/**
|
759 |
* Add_addons_to_frontend.
|
760 |
*
|
761 |
+
* @version 5.6.8
|
762 |
* @since 2.5.3
|
763 |
*/
|
764 |
public function add_addons_to_frontend() {
|
765 |
if ( isset( $this->are_addons_displayed ) && 'yes' === wcj_get_option( 'wcj_product_addons_check_for_outputted_data', 'yes' ) ) {
|
766 |
return;
|
767 |
}
|
768 |
+
$wpnonce = isset( $_POST['wcj_product_addons-nonce'] ) ? wp_verify_nonce( sanitize_key( $_POST['wcj_product_addons-nonce'] ), 'wcj_product_addons' ) : false;
|
769 |
$html = '';
|
770 |
$addons = $this->get_product_addons( get_the_ID() );
|
771 |
$_product = wc_get_product( get_the_ID() );
|
782 |
$is_required = ( 'yes' === $addon['is_required'] ) ? ' required' : '';
|
783 |
if ( 'checkbox' === $addon['type'] || '' === $addon['type'] ) {
|
784 |
$is_checked = '';
|
785 |
+
if ( $wpnonce && isset( $_POST[ $addon['checkbox_key'] ] ) ) {
|
786 |
$is_checked = ' checked';
|
787 |
} elseif ( 'checked' === $addon['default'] ) {
|
788 |
$is_checked = ' checked';
|
804 |
)
|
805 |
);
|
806 |
} elseif ( 'text' === $addon['type'] ) {
|
807 |
+
$default_value = ( $wpnonce && isset( $_POST[ $addon['checkbox_key'] ] ) ? sanitize_text_field( wp_unslash( $_POST[ $addon['checkbox_key'] ] ) ) : $addon['default'] );
|
808 |
$maybe_tooltip = ( '' !== $addon['tooltip'] ) ?
|
809 |
' <img style="display:inline;" class="wcj-question-icon" src="' . wcj_plugin_url() . '/assets/images/question-icon.png" title="' . $addon['tooltip'] . '">' :
|
810 |
'';
|
835 |
$label = sanitize_title( $label );
|
836 |
$is_checked = '';
|
837 |
$checked_or_selected = ( 'radio' === $addon['type'] ? ' checked' : ' selected' );
|
838 |
+
if ( $wpnonce && isset( $_POST[ $addon['checkbox_key'] ] ) ) {
|
839 |
+
$is_checked = ( $label === $_POST[ $addon['checkbox_key'] ] ) ? $checked_or_selected : '';
|
840 |
} elseif ( '' !== $addon['default'] ) {
|
841 |
$is_checked = ( sanitize_title( $addon['default'] ) === $label ) ? $checked_or_selected : '';
|
842 |
}
|
886 |
}
|
887 |
}
|
888 |
}
|
889 |
+
$html .= '<input type="hidden" name="wcj_product_addons-nonce" value="' . wp_create_nonce( 'wcj_product_addons' ) . '" />';
|
890 |
// Output.
|
891 |
if ( ! empty( $html ) ) {
|
892 |
$html = wcj_handle_replacements(
|
includes/class-wcj-product-bookings.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Bookings
|
4 |
*
|
5 |
-
* @version 5.6.
|
6 |
* @since 2.5.0
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/includes
|
@@ -110,14 +110,12 @@ if ( ! class_exists( 'WCJ_Product_Bookings' ) ) :
|
|
110 |
/**
|
111 |
* Price_change_ajax.
|
112 |
*
|
113 |
-
* @version 5.6.
|
114 |
* @since 2.5.0
|
115 |
* @param string | array $param defines the param.
|
116 |
*/
|
117 |
public function price_change_ajax( $param ) {
|
118 |
-
|
119 |
-
$wpnonce = isset( $_REQUEST['_wpnonce'] ) ? wp_verify_nonce( sanitize_key( isset( $_REQUEST['_wpnonce'] ) ? $_REQUEST['_wpnonce'] : '' ), 'woocommerce-settings' ) : true;
|
120 |
-
}
|
121 |
if ( $wpnonce && isset( $_POST['date_from'] ) && '' !== $_POST['date_from'] && isset( $_POST['date_to'] ) && '' !== $_POST['date_to'] && isset( $_POST['product_id'] ) && '' !== $_POST['product_id'] ) {
|
122 |
$date_to = strtotime( sanitize_text_field( wp_unslash( $_POST['date_to'] ) ) );
|
123 |
$date_from = strtotime( sanitize_text_field( wp_unslash( $_POST['date_from'] ) ) );
|
@@ -127,6 +125,8 @@ if ( ! class_exists( 'WCJ_Product_Bookings' ) ) :
|
|
127 |
$price_per_day = wcj_get_product_display_price( $the_product );
|
128 |
$the_price = $days_diff * $price_per_day;
|
129 |
echo wp_kses_post( wc_price( $the_price ) );
|
|
|
|
|
130 |
}
|
131 |
die();
|
132 |
}
|
@@ -264,7 +264,7 @@ if ( ! class_exists( 'WCJ_Product_Bookings' ) ) :
|
|
264 |
/**
|
265 |
* Validate_bookings_on_add_to_cart.
|
266 |
*
|
267 |
-
* @version 5.6.
|
268 |
* @since 2.5.0
|
269 |
* @param string | array $passed defines the passed.
|
270 |
* @param int $product_id defines the product_id.
|
@@ -272,9 +272,7 @@ if ( ! class_exists( 'WCJ_Product_Bookings' ) ) :
|
|
272 |
public function validate_bookings_on_add_to_cart( $passed, $product_id ) {
|
273 |
$the_product = wc_get_product( $product_id );
|
274 |
if ( $this->is_bookings_product( $the_product ) ) {
|
275 |
-
|
276 |
-
$wpnonce = isset( $_REQUEST['_wpnonce'] ) ? wp_verify_nonce( sanitize_key( isset( $_REQUEST['_wpnonce'] ) ? $_REQUEST['_wpnonce'] : '' ), 'woocommerce-settings' ) : true;
|
277 |
-
}
|
278 |
if ( $wpnonce && ( ! isset( $_POST['wcj_product_bookings_date_from'] ) || '' === $_POST['wcj_product_bookings_date_from'] ) ) {
|
279 |
wc_add_notice( wcj_get_option( 'wcj_product_bookings_message_no_date_from', __( '"Date from" must be set', 'woocommerce-jetpack' ) ), 'error' );
|
280 |
return false;
|
@@ -319,9 +317,7 @@ if ( ! class_exists( 'WCJ_Product_Bookings' ) ) :
|
|
319 |
* @param int $variation_id defines the variation_id.
|
320 |
*/
|
321 |
public function add_bookings_price_to_cart_item_data( $cart_item_data, $product_id, $variation_id ) {
|
322 |
-
|
323 |
-
$wpnonce = isset( $_REQUEST['_wpnonce'] ) ? wp_verify_nonce( sanitize_key( isset( $_REQUEST['_wpnonce'] ) ? $_REQUEST['_wpnonce'] : '' ), 'woocommerce-settings' ) : true;
|
324 |
-
}
|
325 |
if ( $wpnonce && isset( $_POST['wcj_product_bookings_date_to'] ) && isset( $_POST['wcj_product_bookings_date_from'] ) ) {
|
326 |
$the_product = wc_get_product( $product_id );
|
327 |
if ( $this->is_bookings_product( $the_product ) ) {
|
@@ -398,7 +394,7 @@ if ( ! class_exists( 'WCJ_Product_Bookings' ) ) :
|
|
398 |
/**
|
399 |
* Add_input_fields_to_frontend.
|
400 |
*
|
401 |
-
* @version 5.6.
|
402 |
* @since 2.5.0
|
403 |
* @todo more options: exclude days (1-31), exact availability dates, mindate, maxdate, firstday, dateformat etc.
|
404 |
*/
|
@@ -408,9 +404,7 @@ if ( ! class_exists( 'WCJ_Product_Bookings' ) ) :
|
|
408 |
}
|
409 |
if ( $this->is_bookings_product( wc_get_product() ) ) {
|
410 |
$this->create_custom_style();
|
411 |
-
|
412 |
-
$wpnonce = isset( $_REQUEST['_wpnonce'] ) ? wp_verify_nonce( sanitize_key( isset( $_REQUEST['_wpnonce'] ) ? $_REQUEST['_wpnonce'] : '' ), 'woocommerce-settings' ) : true;
|
413 |
-
}
|
414 |
$data_table = array();
|
415 |
$date_from_value = ( $wpnonce && isset( $_POST['wcj_product_bookings_date_from'] ) ) ? sanitize_text_field( wp_unslash( $_POST['wcj_product_bookings_date_from'] ) ) : '';
|
416 |
$date_to_value = ( $wpnonce && isset( $_POST['wcj_product_bookings_date_to'] ) ) ? sanitize_text_field( wp_unslash( $_POST['wcj_product_bookings_date_to'] ) ) : '';
|
@@ -430,9 +424,10 @@ if ( ! class_exists( 'WCJ_Product_Bookings' ) ) :
|
|
430 |
'<label for="wcj_product_bookings_date_to">' . wcj_get_option( 'wcj_product_bookings_label_date_to', __( 'Date to' ) ) . '</label>',
|
431 |
'<input firstday="0"' . $date_to_exclude_days . $date_to_exclude_months . ' dateformat="mm/dd/yy" mindate="0" type="datepicker" display="date" id="wcj_product_bookings_date_to" name="wcj_product_bookings_date_to" placeholder="" value="' . $date_to_value . '">',
|
432 |
);
|
433 |
-
echo wcj_get_table_html( $data_table, array( 'table_heading_type' => 'none' ) );
|
434 |
echo '<div class="wcj-bookings-price-wrapper"><div class="wcj-value"></div><div class="wcj-loader"></div></div>';
|
435 |
echo '<div style="display:none !important;" name="wcj_bookings_message"><p style="color:red;"></p></div>';
|
|
|
436 |
$this->are_bookings_input_fields_displayed = true;
|
437 |
}
|
438 |
}
|
@@ -476,7 +471,7 @@ if ( ! class_exists( 'WCJ_Product_Bookings' ) ) :
|
|
476 |
/**
|
477 |
* Save_meta_box_value.
|
478 |
*
|
479 |
-
* @version 5.6.
|
480 |
* @since 2.5.0
|
481 |
* @param string $option_value defines the option_value.
|
482 |
* @param string $option_name defines the option_name.
|
@@ -494,8 +489,8 @@ if ( ! class_exists( 'WCJ_Product_Bookings' ) ) :
|
|
494 |
'post_type' => 'product',
|
495 |
'post_status' => 'any',
|
496 |
'posts_per_page' => 1,
|
497 |
-
'meta_key' => '_wcj_product_bookings_enabled', //phpcs:ignore
|
498 |
-
'meta_value' => 'yes', //phpcs:ignore
|
499 |
'post__not_in' => array( get_the_ID() ),
|
500 |
);
|
501 |
$loop = new WP_Query( $args );
|
@@ -511,23 +506,32 @@ if ( ! class_exists( 'WCJ_Product_Bookings' ) ) :
|
|
511 |
/**
|
512 |
* Add_notice_query_var.
|
513 |
*
|
514 |
-
* @version 5.6.
|
515 |
* @since 2.5.0
|
516 |
* @param string $location defines the location.
|
517 |
*/
|
518 |
public function add_notice_query_var( $location ) {
|
519 |
remove_filter( 'redirect_post_location', array( $this, 'add_notice_query_var' ), 99 );
|
520 |
-
return esc_url_raw(
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
521 |
}
|
522 |
|
523 |
/**
|
524 |
* Admin_notices.
|
525 |
*
|
526 |
-
* @version 5.6.
|
527 |
* @since 2.5.0
|
528 |
*/
|
529 |
public function admin_notices() {
|
530 |
-
|
|
|
531 |
return;
|
532 |
}
|
533 |
?>
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Bookings
|
4 |
*
|
5 |
+
* @version 5.6.8
|
6 |
* @since 2.5.0
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/includes
|
110 |
/**
|
111 |
* Price_change_ajax.
|
112 |
*
|
113 |
+
* @version 5.6.8
|
114 |
* @since 2.5.0
|
115 |
* @param string | array $param defines the param.
|
116 |
*/
|
117 |
public function price_change_ajax( $param ) {
|
118 |
+
$wpnonce = isset( $_REQUEST['_wpnonce'] ) ? wp_verify_nonce( sanitize_key( $_REQUEST['_wpnonce'] ), 'wcj_product_bookings' ) : false;
|
|
|
|
|
119 |
if ( $wpnonce && isset( $_POST['date_from'] ) && '' !== $_POST['date_from'] && isset( $_POST['date_to'] ) && '' !== $_POST['date_to'] && isset( $_POST['product_id'] ) && '' !== $_POST['product_id'] ) {
|
120 |
$date_to = strtotime( sanitize_text_field( wp_unslash( $_POST['date_to'] ) ) );
|
121 |
$date_from = strtotime( sanitize_text_field( wp_unslash( $_POST['date_from'] ) ) );
|
125 |
$price_per_day = wcj_get_product_display_price( $the_product );
|
126 |
$the_price = $days_diff * $price_per_day;
|
127 |
echo wp_kses_post( wc_price( $the_price ) );
|
128 |
+
} else {
|
129 |
+
echo esc_html__( 'Sorry, but something went wrong...', 'woocommerce-jetpack' );
|
130 |
}
|
131 |
die();
|
132 |
}
|
264 |
/**
|
265 |
* Validate_bookings_on_add_to_cart.
|
266 |
*
|
267 |
+
* @version 5.6.8
|
268 |
* @since 2.5.0
|
269 |
* @param string | array $passed defines the passed.
|
270 |
* @param int $product_id defines the product_id.
|
272 |
public function validate_bookings_on_add_to_cart( $passed, $product_id ) {
|
273 |
$the_product = wc_get_product( $product_id );
|
274 |
if ( $this->is_bookings_product( $the_product ) ) {
|
275 |
+
$wpnonce = isset( $_REQUEST['wcj_product_bookings-nonce'] ) ? wp_verify_nonce( sanitize_key( $_REQUEST['wcj_product_bookings-nonce'] ), 'wcj_product_bookings' ) : false;
|
|
|
|
|
276 |
if ( $wpnonce && ( ! isset( $_POST['wcj_product_bookings_date_from'] ) || '' === $_POST['wcj_product_bookings_date_from'] ) ) {
|
277 |
wc_add_notice( wcj_get_option( 'wcj_product_bookings_message_no_date_from', __( '"Date from" must be set', 'woocommerce-jetpack' ) ), 'error' );
|
278 |
return false;
|
317 |
* @param int $variation_id defines the variation_id.
|
318 |
*/
|
319 |
public function add_bookings_price_to_cart_item_data( $cart_item_data, $product_id, $variation_id ) {
|
320 |
+
$wpnonce = isset( $_REQUEST['wcj_product_bookings-nonce'] ) ? wp_verify_nonce( sanitize_key( $_REQUEST['wcj_product_bookings-nonce'] ), 'wcj_product_bookings' ) : false;
|
|
|
|
|
321 |
if ( $wpnonce && isset( $_POST['wcj_product_bookings_date_to'] ) && isset( $_POST['wcj_product_bookings_date_from'] ) ) {
|
322 |
$the_product = wc_get_product( $product_id );
|
323 |
if ( $this->is_bookings_product( $the_product ) ) {
|
394 |
/**
|
395 |
* Add_input_fields_to_frontend.
|
396 |
*
|
397 |
+
* @version 5.6.8
|
398 |
* @since 2.5.0
|
399 |
* @todo more options: exclude days (1-31), exact availability dates, mindate, maxdate, firstday, dateformat etc.
|
400 |
*/
|
404 |
}
|
405 |
if ( $this->is_bookings_product( wc_get_product() ) ) {
|
406 |
$this->create_custom_style();
|
407 |
+
$wpnonce = isset( $_REQUEST['wcj_product_bookings'] ) ? wp_verify_nonce( sanitize_key( $_REQUEST['wcj_product_bookings'] ), 'wcj_product_bookings' ) : false;
|
|
|
|
|
408 |
$data_table = array();
|
409 |
$date_from_value = ( $wpnonce && isset( $_POST['wcj_product_bookings_date_from'] ) ) ? sanitize_text_field( wp_unslash( $_POST['wcj_product_bookings_date_from'] ) ) : '';
|
410 |
$date_to_value = ( $wpnonce && isset( $_POST['wcj_product_bookings_date_to'] ) ) ? sanitize_text_field( wp_unslash( $_POST['wcj_product_bookings_date_to'] ) ) : '';
|
424 |
'<label for="wcj_product_bookings_date_to">' . wcj_get_option( 'wcj_product_bookings_label_date_to', __( 'Date to' ) ) . '</label>',
|
425 |
'<input firstday="0"' . $date_to_exclude_days . $date_to_exclude_months . ' dateformat="mm/dd/yy" mindate="0" type="datepicker" display="date" id="wcj_product_bookings_date_to" name="wcj_product_bookings_date_to" placeholder="" value="' . $date_to_value . '">',
|
426 |
);
|
427 |
+
echo wp_kses_post( wcj_get_table_html( $data_table, array( 'table_heading_type' => 'none' ) ) );
|
428 |
echo '<div class="wcj-bookings-price-wrapper"><div class="wcj-value"></div><div class="wcj-loader"></div></div>';
|
429 |
echo '<div style="display:none !important;" name="wcj_bookings_message"><p style="color:red;"></p></div>';
|
430 |
+
wp_nonce_field( 'wcj_product_bookings', 'wcj_product_bookings-nonce' );
|
431 |
$this->are_bookings_input_fields_displayed = true;
|
432 |
}
|
433 |
}
|
471 |
/**
|
472 |
* Save_meta_box_value.
|
473 |
*
|
474 |
+
* @version 5.6.8
|
475 |
* @since 2.5.0
|
476 |
* @param string $option_value defines the option_value.
|
477 |
* @param string $option_name defines the option_name.
|
489 |
'post_type' => 'product',
|
490 |
'post_status' => 'any',
|
491 |
'posts_per_page' => 1,
|
492 |
+
'meta_key' => '_wcj_product_bookings_enabled', // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_meta_key
|
493 |
+
'meta_value' => 'yes', // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_meta_value
|
494 |
'post__not_in' => array( get_the_ID() ),
|
495 |
);
|
496 |
$loop = new WP_Query( $args );
|
506 |
/**
|
507 |
* Add_notice_query_var.
|
508 |
*
|
509 |
+
* @version 5.6.8
|
510 |
* @since 2.5.0
|
511 |
* @param string $location defines the location.
|
512 |
*/
|
513 |
public function add_notice_query_var( $location ) {
|
514 |
remove_filter( 'redirect_post_location', array( $this, 'add_notice_query_var' ), 99 );
|
515 |
+
return esc_url_raw(
|
516 |
+
add_query_arg(
|
517 |
+
array(
|
518 |
+
'wcj_product_bookings_admin_notice' => true,
|
519 |
+
'wcjnonce' => wp_create_nonce( 'wcj_product_bookings_admin_notice' ),
|
520 |
+
),
|
521 |
+
$location
|
522 |
+
)
|
523 |
+
);
|
524 |
}
|
525 |
|
526 |
/**
|
527 |
* Admin_notices.
|
528 |
*
|
529 |
+
* @version 5.6.8
|
530 |
* @since 2.5.0
|
531 |
*/
|
532 |
public function admin_notices() {
|
533 |
+
$wpnonce = isset( $_GET['wcjnonce'] ) ? wp_verify_nonce( sanitize_key( $_GET['wcjnonce'] ), 'wcj_product_bookings_admin_notice' ) : false;
|
534 |
+
if ( ! $wpnonce || ! isset( $_GET['wcj_product_bookings_admin_notice'] ) ) {
|
535 |
return;
|
536 |
}
|
537 |
?>
|
includes/class-wcj-product-bulk-meta-editor.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Product Bulk Meta Editor
|
4 |
*
|
5 |
-
* @version 5.6.
|
6 |
* @since 2.8.0
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/includes
|
@@ -46,7 +46,7 @@ if ( ! class_exists( 'WCJ_Product_Bulk_Meta_Editor' ) ) :
|
|
46 |
/**
|
47 |
* Create_product_bulk_meta_editor_tool.
|
48 |
*
|
49 |
-
* @version 5.6.
|
50 |
* @since 2.8.0
|
51 |
* @todo (maybe) real permalink instead of `/?p=`
|
52 |
* @todo (maybe) `wc_add_notice`
|
@@ -64,19 +64,17 @@ if ( ! class_exists( 'WCJ_Product_Bulk_Meta_Editor' ) ) :
|
|
64 |
$result = $this->perform_actions();
|
65 |
// Preparing products data.
|
66 |
$_products = wcj_get_products( array(), 'any', 512, ( 'yes' === apply_filters( 'booster_option', 'no', wcj_get_option( 'wcj_product_bulk_meta_editor_add_variations', 'no' ) ) ) );
|
67 |
-
|
68 |
-
|
69 |
-
$wpnonce = isset( $_REQUEST['_wpnonce'] ) ? wp_verify_nonce( sanitize_key( isset( $_REQUEST['_wpnonce'] ) ? $_REQUEST['_wpnonce'] : '' ) ) : true;
|
70 |
-
}
|
71 |
$selected_products = $wpnonce && isset( $_POST['wcj_product_bulk_meta_editor_products'] ) ? array_map( 'sanitize_text_field', wp_unslash( $_POST['wcj_product_bulk_meta_editor_products'] ) ) : array();
|
72 |
// Output.
|
73 |
-
echo $this->get_tool_html( $result['meta_name'], $result['result_message'], $_products, $selected_products, $result['set_meta'] );
|
74 |
}
|
75 |
|
76 |
/**
|
77 |
* Perform_actions.
|
78 |
*
|
79 |
-
* @version 5.6.
|
80 |
* @since 2.8.0
|
81 |
* @todo break this into separate functions
|
82 |
*/
|
@@ -84,11 +82,13 @@ if ( ! class_exists( 'WCJ_Product_Bulk_Meta_Editor' ) ) :
|
|
84 |
$meta_name = '';
|
85 |
$set_meta = '';
|
86 |
$result_message = '';
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
|
|
|
|
92 |
isset( $_POST['wcj_product_bulk_meta_editor_save_single'] ) && null !== $_POST['wcj_product_bulk_meta_editor_save_single'] && 0 !== $_POST['wcj_product_bulk_meta_editor_save_single'] &&
|
93 |
isset( $_POST['wcj_product_bulk_meta_editor_meta'] ) && '' !== $_POST['wcj_product_bulk_meta_editor_meta']
|
94 |
) {
|
@@ -104,6 +104,7 @@ if ( ! class_exists( 'WCJ_Product_Bulk_Meta_Editor' ) ) :
|
|
104 |
}
|
105 |
$result_message = $this->get_result_message( $success, $fail );
|
106 |
} elseif (
|
|
|
107 |
isset( $_POST['wcj_product_bulk_meta_editor_delete_single'] ) && 0 > $_POST['wcj_product_bulk_meta_editor_delete_single'] &&
|
108 |
isset( $_POST['wcj_product_bulk_meta_editor_meta'] ) && '' !== $_POST['wcj_product_bulk_meta_editor_meta']
|
109 |
) {
|
@@ -118,6 +119,7 @@ if ( ! class_exists( 'WCJ_Product_Bulk_Meta_Editor' ) ) :
|
|
118 |
}
|
119 |
$result_message = $this->get_result_message( $success, $fail );
|
120 |
} elseif (
|
|
|
121 |
isset( $_POST['wcj_product_bulk_meta_editor_save_all'] ) &&
|
122 |
isset( $_POST['wcj_product_bulk_meta_editor_meta'] ) && '' !== $_POST['wcj_product_bulk_meta_editor_meta']
|
123 |
) {
|
@@ -137,6 +139,7 @@ if ( ! class_exists( 'WCJ_Product_Bulk_Meta_Editor' ) ) :
|
|
137 |
}
|
138 |
$result_message = $this->get_result_message( $success, $fail );
|
139 |
} elseif (
|
|
|
140 |
isset( $_POST['wcj_product_bulk_meta_editor_delete_all'] ) &&
|
141 |
isset( $_POST['wcj_product_bulk_meta_editor_meta'] ) && '' !== $_POST['wcj_product_bulk_meta_editor_meta']
|
142 |
) {
|
@@ -156,6 +159,7 @@ if ( ! class_exists( 'WCJ_Product_Bulk_Meta_Editor' ) ) :
|
|
156 |
}
|
157 |
$result_message = $this->get_result_message( $success, $fail );
|
158 |
} elseif (
|
|
|
159 |
isset( $_POST['wcj_product_bulk_meta_editor_set'] ) &&
|
160 |
isset( $_POST['wcj_product_bulk_meta_editor_set_meta'] ) &&
|
161 |
isset( $_POST['wcj_product_bulk_meta_editor_meta'] ) && '' !== $_POST['wcj_product_bulk_meta_editor_meta']
|
@@ -176,7 +180,7 @@ if ( ! class_exists( 'WCJ_Product_Bulk_Meta_Editor' ) ) :
|
|
176 |
}
|
177 |
}
|
178 |
$result_message = $this->get_result_message( $success, $fail );
|
179 |
-
} elseif ( isset( $_POST['wcj_product_bulk_meta_editor_show'] ) ) {
|
180 |
if ( isset( $_POST['wcj_product_bulk_meta_editor_show_meta'] ) && '' === $_POST['wcj_product_bulk_meta_editor_show_meta'] ) {
|
181 |
$result_message = '<p><div class="error"><p>' . __( 'Please enter meta key.', 'woocommerce-jetpack' ) . '</p></div></p>';
|
182 |
}
|
@@ -241,7 +245,7 @@ if ( ! class_exists( 'WCJ_Product_Bulk_Meta_Editor' ) ) :
|
|
241 |
/**
|
242 |
* Get_html_meta_key_input.
|
243 |
*
|
244 |
-
* @version
|
245 |
* @since 2.8.0
|
246 |
* @param string $meta_name defines the meta_name.
|
247 |
*/
|
@@ -258,6 +262,7 @@ if ( ! class_exists( 'WCJ_Product_Bulk_Meta_Editor' ) ) :
|
|
258 |
$meta_html .= '<input required class="widefat" type="text" id="wcj_product_bulk_meta_editor_show_meta" name="wcj_product_bulk_meta_editor_show_meta" value="' . $meta_name . '">';
|
259 |
$meta_html .= '</p>';
|
260 |
$meta_html .= '<p>';
|
|
|
261 |
$meta_html .= '<button class="button-primary" type="submit" name="wcj_product_bulk_meta_editor_show" value="show">' . __( 'Show', 'woocommerce-jetpack' ) . '</button>';
|
262 |
$meta_html .= '</p>';
|
263 |
$table_data = array();
|
@@ -322,7 +327,7 @@ if ( ! class_exists( 'WCJ_Product_Bulk_Meta_Editor' ) ) :
|
|
322 |
/**
|
323 |
* Get_html_meta_table_set_single_value.
|
324 |
*
|
325 |
-
* @version
|
326 |
* @since 2.8.0
|
327 |
* @param string $set_meta defines the set_meta.
|
328 |
* @param string $js_confirmation defines the js_confirmation.
|
@@ -333,6 +338,7 @@ if ( ! class_exists( 'WCJ_Product_Bulk_Meta_Editor' ) ) :
|
|
333 |
'<input type="text" class="widefat" id="wcj_product_bulk_meta_editor_set_meta" name="wcj_product_bulk_meta_editor_set_meta" value="' . $set_meta . '">' .
|
334 |
'</p>' .
|
335 |
'<p>' .
|
|
|
336 |
'<button class="button-primary" type="submit" name="wcj_product_bulk_meta_editor_set" value="set"' . $js_confirmation . '>' .
|
337 |
__( 'Set', 'woocommerce-jetpack' ) . '</button>' .
|
338 |
'</p>';
|
@@ -349,7 +355,7 @@ if ( ! class_exists( 'WCJ_Product_Bulk_Meta_Editor' ) ) :
|
|
349 |
/**
|
350 |
* Get_html_meta_table_buttons.
|
351 |
*
|
352 |
-
* @version
|
353 |
* @since 2.8.0
|
354 |
* @param string $meta_name defines the meta_name.
|
355 |
* @param string $js_confirmation defines the js_confirmation.
|
@@ -357,6 +363,7 @@ if ( ! class_exists( 'WCJ_Product_Bulk_Meta_Editor' ) ) :
|
|
357 |
public function get_html_meta_table_buttons( $meta_name, $js_confirmation ) {
|
358 |
$html = '';
|
359 |
$html .= '<p>';
|
|
|
360 |
$html .= '<input class="button-primary" type="submit" name="wcj_product_bulk_meta_editor_save_all" value="' . __( 'Save all', 'woocommerce-jetpack' ) . '"' .
|
361 |
$js_confirmation . '>';
|
362 |
$html .= ' ';
|
@@ -370,7 +377,7 @@ if ( ! class_exists( 'WCJ_Product_Bulk_Meta_Editor' ) ) :
|
|
370 |
/**
|
371 |
* Get_html_meta_table_content.
|
372 |
*
|
373 |
-
* @version 5.6.
|
374 |
* @since 2.8.0
|
375 |
* @param string $meta_name defines the meta_name.
|
376 |
* @param array $_products defines the _products.
|
@@ -398,7 +405,7 @@ if ( ! class_exists( 'WCJ_Product_Bulk_Meta_Editor' ) ) :
|
|
398 |
} else {
|
399 |
$_post_meta = get_post_meta( $product_id, $meta_name, true );
|
400 |
if ( is_array( $_post_meta ) || is_object( $_post_meta ) ) {
|
401 |
-
$_post_meta =
|
402 |
} else {
|
403 |
$placeholder = ( ! metadata_exists( 'post', $product_id, $meta_name ) ? ' placeholder="N/A"' : '' );
|
404 |
$_post_meta = '<input' . $placeholder . ' style="width:100%;" type="text" name="wcj_product_bulk_meta_editor_id_' . $product_id . '" value="' .
|
@@ -418,7 +425,9 @@ if ( ! class_exists( 'WCJ_Product_Bulk_Meta_Editor' ) ) :
|
|
418 |
$row = $this->maybe_add_additional_columns_content( $row, $additional_columns, $product_id );
|
419 |
$table_data[] = $row;
|
420 |
}
|
421 |
-
|
|
|
|
|
422 |
}
|
423 |
|
424 |
/**
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Product Bulk Meta Editor
|
4 |
*
|
5 |
+
* @version 5.6.8
|
6 |
* @since 2.8.0
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/includes
|
46 |
/**
|
47 |
* Create_product_bulk_meta_editor_tool.
|
48 |
*
|
49 |
+
* @version 5.6.8
|
50 |
* @since 2.8.0
|
51 |
* @todo (maybe) real permalink instead of `/?p=`
|
52 |
* @todo (maybe) `wc_add_notice`
|
64 |
$result = $this->perform_actions();
|
65 |
// Preparing products data.
|
66 |
$_products = wcj_get_products( array(), 'any', 512, ( 'yes' === apply_filters( 'booster_option', 'no', wcj_get_option( 'wcj_product_bulk_meta_editor_add_variations', 'no' ) ) ) );
|
67 |
+
|
68 |
+
$wpnonce = isset( $_REQUEST['wcj_tools_nonce'] ) ? wp_verify_nonce( sanitize_key( $_REQUEST['wcj_tools_nonce'] ), 'wcj_tools' ) : false;
|
|
|
|
|
69 |
$selected_products = $wpnonce && isset( $_POST['wcj_product_bulk_meta_editor_products'] ) ? array_map( 'sanitize_text_field', wp_unslash( $_POST['wcj_product_bulk_meta_editor_products'] ) ) : array();
|
70 |
// Output.
|
71 |
+
echo wp_kses_post( $this->get_tool_html( $result['meta_name'], $result['result_message'], $_products, $selected_products, $result['set_meta'] ) );
|
72 |
}
|
73 |
|
74 |
/**
|
75 |
* Perform_actions.
|
76 |
*
|
77 |
+
* @version 5.6.8
|
78 |
* @since 2.8.0
|
79 |
* @todo break this into separate functions
|
80 |
*/
|
82 |
$meta_name = '';
|
83 |
$set_meta = '';
|
84 |
$result_message = '';
|
85 |
+
|
86 |
+
$show_wpnonce = isset( $_REQUEST['wcj_product_bulk_meta_editor_show-nonce'] ) ? wp_verify_nonce( sanitize_key( $_REQUEST['wcj_product_bulk_meta_editor_show-nonce'] ), 'wcj_product_bulk_meta_editor_show' ) : false;
|
87 |
+
$set_wpnonce = isset( $_REQUEST['wcj_product_bulk_meta_editor_set-nonce'] ) ? wp_verify_nonce( sanitize_key( $_REQUEST['wcj_product_bulk_meta_editor_set-nonce'] ), 'wcj_product_bulk_meta_editor_set' ) : false;
|
88 |
+
$save_delete_all_wpnonce = isset( $_REQUEST['wcj_product_bulk_meta_editor_save_delete_all-nonce'] ) ? wp_verify_nonce( sanitize_key( $_REQUEST['wcj_product_bulk_meta_editor_save_delete_all-nonce'] ), 'wcj_product_bulk_meta_editor_save_delete_all' ) : false;
|
89 |
+
$save_delete_wpnonce = isset( $_REQUEST['wcj_product_bulk_meta_editor_save_delete_single-nonce'] ) ? wp_verify_nonce( sanitize_key( $_REQUEST['wcj_product_bulk_meta_editor_save_delete_single-nonce'] ), 'wcj_product_bulk_meta_editor_save_delete_single' ) : false;
|
90 |
+
|
91 |
+
if ( $save_delete_wpnonce &&
|
92 |
isset( $_POST['wcj_product_bulk_meta_editor_save_single'] ) && null !== $_POST['wcj_product_bulk_meta_editor_save_single'] && 0 !== $_POST['wcj_product_bulk_meta_editor_save_single'] &&
|
93 |
isset( $_POST['wcj_product_bulk_meta_editor_meta'] ) && '' !== $_POST['wcj_product_bulk_meta_editor_meta']
|
94 |
) {
|
104 |
}
|
105 |
$result_message = $this->get_result_message( $success, $fail );
|
106 |
} elseif (
|
107 |
+
$save_delete_wpnonce &&
|
108 |
isset( $_POST['wcj_product_bulk_meta_editor_delete_single'] ) && 0 > $_POST['wcj_product_bulk_meta_editor_delete_single'] &&
|
109 |
isset( $_POST['wcj_product_bulk_meta_editor_meta'] ) && '' !== $_POST['wcj_product_bulk_meta_editor_meta']
|
110 |
) {
|
119 |
}
|
120 |
$result_message = $this->get_result_message( $success, $fail );
|
121 |
} elseif (
|
122 |
+
$save_delete_all_wpnonce &&
|
123 |
isset( $_POST['wcj_product_bulk_meta_editor_save_all'] ) &&
|
124 |
isset( $_POST['wcj_product_bulk_meta_editor_meta'] ) && '' !== $_POST['wcj_product_bulk_meta_editor_meta']
|
125 |
) {
|
139 |
}
|
140 |
$result_message = $this->get_result_message( $success, $fail );
|
141 |
} elseif (
|
142 |
+
$save_delete_all_wpnonce &&
|
143 |
isset( $_POST['wcj_product_bulk_meta_editor_delete_all'] ) &&
|
144 |
isset( $_POST['wcj_product_bulk_meta_editor_meta'] ) && '' !== $_POST['wcj_product_bulk_meta_editor_meta']
|
145 |
) {
|
159 |
}
|
160 |
$result_message = $this->get_result_message( $success, $fail );
|
161 |
} elseif (
|
162 |
+
$set_wpnonce &&
|
163 |
isset( $_POST['wcj_product_bulk_meta_editor_set'] ) &&
|
164 |
isset( $_POST['wcj_product_bulk_meta_editor_set_meta'] ) &&
|
165 |
isset( $_POST['wcj_product_bulk_meta_editor_meta'] ) && '' !== $_POST['wcj_product_bulk_meta_editor_meta']
|
180 |
}
|
181 |
}
|
182 |
$result_message = $this->get_result_message( $success, $fail );
|
183 |
+
} elseif ( $show_wpnonce && isset( $_POST['wcj_product_bulk_meta_editor_show'] ) ) {
|
184 |
if ( isset( $_POST['wcj_product_bulk_meta_editor_show_meta'] ) && '' === $_POST['wcj_product_bulk_meta_editor_show_meta'] ) {
|
185 |
$result_message = '<p><div class="error"><p>' . __( 'Please enter meta key.', 'woocommerce-jetpack' ) . '</p></div></p>';
|
186 |
}
|
245 |
/**
|
246 |
* Get_html_meta_key_input.
|
247 |
*
|
248 |
+
* @version 5.6.8
|
249 |
* @since 2.8.0
|
250 |
* @param string $meta_name defines the meta_name.
|
251 |
*/
|
262 |
$meta_html .= '<input required class="widefat" type="text" id="wcj_product_bulk_meta_editor_show_meta" name="wcj_product_bulk_meta_editor_show_meta" value="' . $meta_name . '">';
|
263 |
$meta_html .= '</p>';
|
264 |
$meta_html .= '<p>';
|
265 |
+
$meta_html .= wp_nonce_field( 'wcj_product_bulk_meta_editor_show', 'wcj_product_bulk_meta_editor_show-nonce' );
|
266 |
$meta_html .= '<button class="button-primary" type="submit" name="wcj_product_bulk_meta_editor_show" value="show">' . __( 'Show', 'woocommerce-jetpack' ) . '</button>';
|
267 |
$meta_html .= '</p>';
|
268 |
$table_data = array();
|
327 |
/**
|
328 |
* Get_html_meta_table_set_single_value.
|
329 |
*
|
330 |
+
* @version 5.6.8
|
331 |
* @since 2.8.0
|
332 |
* @param string $set_meta defines the set_meta.
|
333 |
* @param string $js_confirmation defines the js_confirmation.
|
338 |
'<input type="text" class="widefat" id="wcj_product_bulk_meta_editor_set_meta" name="wcj_product_bulk_meta_editor_set_meta" value="' . $set_meta . '">' .
|
339 |
'</p>' .
|
340 |
'<p>' .
|
341 |
+
wp_nonce_field( 'wcj_product_bulk_meta_editor_set', 'wcj_product_bulk_meta_editor_set-nonce' ) .
|
342 |
'<button class="button-primary" type="submit" name="wcj_product_bulk_meta_editor_set" value="set"' . $js_confirmation . '>' .
|
343 |
__( 'Set', 'woocommerce-jetpack' ) . '</button>' .
|
344 |
'</p>';
|
355 |
/**
|
356 |
* Get_html_meta_table_buttons.
|
357 |
*
|
358 |
+
* @version 5.6.8
|
359 |
* @since 2.8.0
|
360 |
* @param string $meta_name defines the meta_name.
|
361 |
* @param string $js_confirmation defines the js_confirmation.
|
363 |
public function get_html_meta_table_buttons( $meta_name, $js_confirmation ) {
|
364 |
$html = '';
|
365 |
$html .= '<p>';
|
366 |
+
$html .= wp_nonce_field( 'wcj_product_bulk_meta_editor_save_delete_all', 'wcj_product_bulk_meta_editor_save_delete_all-nonce' );
|
367 |
$html .= '<input class="button-primary" type="submit" name="wcj_product_bulk_meta_editor_save_all" value="' . __( 'Save all', 'woocommerce-jetpack' ) . '"' .
|
368 |
$js_confirmation . '>';
|
369 |
$html .= ' ';
|
377 |
/**
|
378 |
* Get_html_meta_table_content.
|
379 |
*
|
380 |
+
* @version 5.6.8
|
381 |
* @since 2.8.0
|
382 |
* @param string $meta_name defines the meta_name.
|
383 |
* @param array $_products defines the _products.
|
405 |
} else {
|
406 |
$_post_meta = get_post_meta( $product_id, $meta_name, true );
|
407 |
if ( is_array( $_post_meta ) || is_object( $_post_meta ) ) {
|
408 |
+
$_post_meta = wp_json_encode( $_post_meta );
|
409 |
} else {
|
410 |
$placeholder = ( ! metadata_exists( 'post', $product_id, $meta_name ) ? ' placeholder="N/A"' : '' );
|
411 |
$_post_meta = '<input' . $placeholder . ' style="width:100%;" type="text" name="wcj_product_bulk_meta_editor_id_' . $product_id . '" value="' .
|
425 |
$row = $this->maybe_add_additional_columns_content( $row, $additional_columns, $product_id );
|
426 |
$table_data[] = $row;
|
427 |
}
|
428 |
+
|
429 |
+
return '<p>' . wcj_get_table_html( $table_data, array( 'table_class' => 'widefat striped' ) ) .
|
430 |
+
wp_nonce_field( 'wcj_product_bulk_meta_editor_save_delete_single', 'wcj_product_bulk_meta_editor_save_delete_single-nonce' ) . '</p>';
|
431 |
}
|
432 |
|
433 |
/**
|
includes/class-wcj-product-bulk-price-converter.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Bulk Price Converter
|
4 |
*
|
5 |
-
* @version 5.6.
|
6 |
* @author Pluggabl LLC.
|
7 |
* @package Booster_For_WooCommerce/includes
|
8 |
*/
|
@@ -43,7 +43,7 @@ if ( ! class_exists( 'WCJ_Product_Bulk_Price_Converter' ) ) :
|
|
43 |
/**
|
44 |
* Change_price_by_type.
|
45 |
*
|
46 |
-
* @version 5.6.
|
47 |
* @param int $product_id defines the product_id.
|
48 |
* @param string $multiply_price_by defines the multiply_price_by.
|
49 |
* @param string $price_type defines the price_type.
|
@@ -55,10 +55,7 @@ if ( ! class_exists( 'WCJ_Product_Bulk_Price_Converter' ) ) :
|
|
55 |
public function change_price_by_type( $product_id, $multiply_price_by, $price_type, $is_preview, $parent_product_id, $min_price = 0, $max_price = 0 ) {
|
56 |
$the_price = get_post_meta( $product_id, '_' . $price_type, true );
|
57 |
$the_modified_price = $the_price;
|
58 |
-
$wpnonce =
|
59 |
-
if ( function_exists( 'wp_verify_nonce' ) ) {
|
60 |
-
$wpnonce = isset( $_REQUEST['_wpnonce'] ) ? wp_verify_nonce( sanitize_key( isset( $_REQUEST['_wpnonce'] ) ? $_REQUEST['_wpnonce'] : '' ) ) : true;
|
61 |
-
}
|
62 |
if ( '' !== $the_price && 0 !== $the_price ) {
|
63 |
$precision = wcj_get_option( 'woocommerce_price_num_decimals', 2 );
|
64 |
$the_modified_price = round( $the_price * $multiply_price_by, $precision );
|
@@ -100,17 +97,14 @@ if ( ! class_exists( 'WCJ_Product_Bulk_Price_Converter' ) ) :
|
|
100 |
/**
|
101 |
* Change_price_all_types.
|
102 |
*
|
103 |
-
* @version 5.6.
|
104 |
* @param int $product_id defines the product_id.
|
105 |
* @param int $multiply_price_by defines the multiply_price_by.
|
106 |
* @param string | bool $is_preview defines the is_preview.
|
107 |
* @param int $parent_product_id defines the parent_product_id.
|
108 |
*/
|
109 |
public function change_price_all_types( $product_id, $multiply_price_by, $is_preview, $parent_product_id ) {
|
110 |
-
$wpnonce
|
111 |
-
if ( function_exists( 'wp_verify_nonce' ) ) {
|
112 |
-
$wpnonce = isset( $_REQUEST['_wpnonce'] ) ? wp_verify_nonce( sanitize_key( isset( $_REQUEST['_wpnonce'] ) ? $_REQUEST['_wpnonce'] : '' ) ) : true;
|
113 |
-
}
|
114 |
$what_prices_to_modify = ( $wpnonce && isset( $_POST['wcj_price_types'] ) ) ? sanitize_text_field( wp_unslash( $_POST['wcj_price_types'] ) ) : 'wcj_both';
|
115 |
if ( 'wcj_both' === $what_prices_to_modify ) {
|
116 |
$this->change_price_by_type( $product_id, $multiply_price_by, 'price', $is_preview, $parent_product_id );
|
@@ -189,7 +183,7 @@ if ( ! class_exists( 'WCJ_Product_Bulk_Price_Converter' ) ) :
|
|
189 |
/**
|
190 |
* Change_all_products_prices.
|
191 |
*
|
192 |
-
* @version 5.6.
|
193 |
* @todo (dev) clear products transients after converting prices
|
194 |
* @param int $multiply_prices_by defines the multiply_prices_by.
|
195 |
* @param string | bool $is_preview defines the is_preview.
|
@@ -200,10 +194,7 @@ if ( ! class_exists( 'WCJ_Product_Bulk_Price_Converter' ) ) :
|
|
200 |
return;
|
201 |
}
|
202 |
|
203 |
-
$wpnonce =
|
204 |
-
if ( function_exists( 'wp_verify_nonce' ) ) {
|
205 |
-
$wpnonce = isset( $_REQUEST['_wpnonce'] ) ? wp_verify_nonce( sanitize_key( isset( $_REQUEST['_wpnonce'] ) ? $_REQUEST['_wpnonce'] : '' ) ) : true;
|
206 |
-
}
|
207 |
|
208 |
ob_start();
|
209 |
|
@@ -229,7 +220,7 @@ if ( ! class_exists( 'WCJ_Product_Bulk_Price_Converter' ) ) :
|
|
229 |
'fields' => 'ids',
|
230 |
);
|
231 |
if ( $wpnonce && isset( $_POST['wcj_product_cat'] ) && 'wcj_any' !== $_POST['wcj_product_cat'] && 'any' !== apply_filters( 'booster_option', 'any', '' ) ) {
|
232 |
-
$args['tax_query'] = array(// phpcs:ignore
|
233 |
array(
|
234 |
'taxonomy' => 'product_cat',
|
235 |
'field' => 'slug',
|
@@ -256,14 +247,11 @@ if ( ! class_exists( 'WCJ_Product_Bulk_Price_Converter' ) ) :
|
|
256 |
/**
|
257 |
* Create_bulk_price_converter_tool.
|
258 |
*
|
259 |
-
* @version 5.6.
|
260 |
*/
|
261 |
public function create_bulk_price_converter_tool() {
|
262 |
-
$result_message
|
263 |
-
$wpnonce
|
264 |
-
if ( function_exists( 'wp_verify_nonce' ) ) {
|
265 |
-
$wpnonce = isset( $_REQUEST['_wpnonce'] ) ? wp_verify_nonce( sanitize_key( isset( $_REQUEST['_wpnonce'] ) ? $_REQUEST['_wpnonce'] : '' ) ) : true;
|
266 |
-
}
|
267 |
$multiply_prices_by = $wpnonce && isset( $_POST['multiply_prices_by'] ) ? sanitize_text_field( wp_unslash( $_POST['multiply_prices_by'] ) ) : 1;
|
268 |
$is_preview = isset( $_POST['bulk_change_prices_preview'] );
|
269 |
|
@@ -338,8 +326,8 @@ if ( ! class_exists( 'WCJ_Product_Bulk_Price_Converter' ) ) :
|
|
338 |
__( 'Otherwise - all prices below "threshold" will end with 0,99 and all prices above or equal to "threshold" will end with 9,00.', 'woocommerce-jetpack' ) . ' ' .
|
339 |
__( 'E.g.: if you set "threshold" to 100, then all prices below 100 will be like 45,99 and all other prices will be like 109,00.', 'woocommerce-jetpack' )
|
340 |
),
|
341 |
-
'<input style="width:100%;" class="" type="number" step="0.000001" min="0" name="make_pretty_prices_threshold" id="make_pretty_prices_threshold" value="' .
|
342 |
-
$make_pretty_prices_threshold . '"
|
343 |
'<em>' . apply_filters( 'booster_message', '', 'desc' ) . '</em>',
|
344 |
);
|
345 |
$data_table[] = array(
|
@@ -356,13 +344,20 @@ if ( ! class_exists( 'WCJ_Product_Bulk_Price_Converter' ) ) :
|
|
356 |
'',
|
357 |
);
|
358 |
}
|
|
|
|
|
|
|
|
|
|
|
359 |
echo (
|
360 |
-
|
361 |
-
|
362 |
-
|
363 |
-
|
364 |
-
|
365 |
-
|
|
|
|
|
366 |
)
|
367 |
)
|
368 |
);
|
@@ -377,7 +372,7 @@ if ( ! class_exists( 'WCJ_Product_Bulk_Price_Converter' ) ) :
|
|
377 |
/**
|
378 |
* Make_pretty_price.
|
379 |
*
|
380 |
-
* @version 5.6.
|
381 |
* @since 2.4.4
|
382 |
* @param int $price defines the price.
|
383 |
*/
|
@@ -385,10 +380,7 @@ if ( ! class_exists( 'WCJ_Product_Bulk_Price_Converter' ) ) :
|
|
385 |
if ( 0 === $price ) {
|
386 |
return $price;
|
387 |
}
|
388 |
-
$wpnonce
|
389 |
-
if ( function_exists( 'wp_verify_nonce' ) ) {
|
390 |
-
$wpnonce = isset( $_REQUEST['_wpnonce'] ) ? wp_verify_nonce( sanitize_key( isset( $_REQUEST['_wpnonce'] ) ? $_REQUEST['_wpnonce'] : '' ) ) : true;
|
391 |
-
}
|
392 |
$the_modified_price = round( $price );
|
393 |
if ( $wpnonce && isset( $_POST['make_pretty_prices_threshold'] ) && $price < $_POST['make_pretty_prices_threshold'] ) {
|
394 |
$the_modified_price -= 0.01; // E.g. 49.49 -> 48.99 and 49.50 -> 49.99.
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Bulk Price Converter
|
4 |
*
|
5 |
+
* @version 5.6.8
|
6 |
* @author Pluggabl LLC.
|
7 |
* @package Booster_For_WooCommerce/includes
|
8 |
*/
|
43 |
/**
|
44 |
* Change_price_by_type.
|
45 |
*
|
46 |
+
* @version 5.6.8
|
47 |
* @param int $product_id defines the product_id.
|
48 |
* @param string $multiply_price_by defines the multiply_price_by.
|
49 |
* @param string $price_type defines the price_type.
|
55 |
public function change_price_by_type( $product_id, $multiply_price_by, $price_type, $is_preview, $parent_product_id, $min_price = 0, $max_price = 0 ) {
|
56 |
$the_price = get_post_meta( $product_id, '_' . $price_type, true );
|
57 |
$the_modified_price = $the_price;
|
58 |
+
$wpnonce = isset( $_REQUEST['bulk_change_prices-nonce'] ) ? wp_verify_nonce( sanitize_key( $_REQUEST['bulk_change_prices-nonce'] ), 'bulk_change_prices' ) : false;
|
|
|
|
|
|
|
59 |
if ( '' !== $the_price && 0 !== $the_price ) {
|
60 |
$precision = wcj_get_option( 'woocommerce_price_num_decimals', 2 );
|
61 |
$the_modified_price = round( $the_price * $multiply_price_by, $precision );
|
97 |
/**
|
98 |
* Change_price_all_types.
|
99 |
*
|
100 |
+
* @version 5.6.8
|
101 |
* @param int $product_id defines the product_id.
|
102 |
* @param int $multiply_price_by defines the multiply_price_by.
|
103 |
* @param string | bool $is_preview defines the is_preview.
|
104 |
* @param int $parent_product_id defines the parent_product_id.
|
105 |
*/
|
106 |
public function change_price_all_types( $product_id, $multiply_price_by, $is_preview, $parent_product_id ) {
|
107 |
+
$wpnonce = isset( $_REQUEST['bulk_change_prices-nonce'] ) ? wp_verify_nonce( sanitize_key( $_REQUEST['bulk_change_prices-nonce'] ), 'bulk_change_prices' ) : false;
|
|
|
|
|
|
|
108 |
$what_prices_to_modify = ( $wpnonce && isset( $_POST['wcj_price_types'] ) ) ? sanitize_text_field( wp_unslash( $_POST['wcj_price_types'] ) ) : 'wcj_both';
|
109 |
if ( 'wcj_both' === $what_prices_to_modify ) {
|
110 |
$this->change_price_by_type( $product_id, $multiply_price_by, 'price', $is_preview, $parent_product_id );
|
183 |
/**
|
184 |
* Change_all_products_prices.
|
185 |
*
|
186 |
+
* @version 5.6.8
|
187 |
* @todo (dev) clear products transients after converting prices
|
188 |
* @param int $multiply_prices_by defines the multiply_prices_by.
|
189 |
* @param string | bool $is_preview defines the is_preview.
|
194 |
return;
|
195 |
}
|
196 |
|
197 |
+
$wpnonce = isset( $_REQUEST['bulk_change_prices-nonce'] ) ? wp_verify_nonce( sanitize_key( $_REQUEST['bulk_change_prices-nonce'] ), 'bulk_change_prices' ) : false;
|
|
|
|
|
|
|
198 |
|
199 |
ob_start();
|
200 |
|
220 |
'fields' => 'ids',
|
221 |
);
|
222 |
if ( $wpnonce && isset( $_POST['wcj_product_cat'] ) && 'wcj_any' !== $_POST['wcj_product_cat'] && 'any' !== apply_filters( 'booster_option', 'any', '' ) ) {
|
223 |
+
$args['tax_query'] = array( // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_tax_query
|
224 |
array(
|
225 |
'taxonomy' => 'product_cat',
|
226 |
'field' => 'slug',
|
247 |
/**
|
248 |
* Create_bulk_price_converter_tool.
|
249 |
*
|
250 |
+
* @version 5.6.8
|
251 |
*/
|
252 |
public function create_bulk_price_converter_tool() {
|
253 |
+
$result_message = '';
|
254 |
+
$wpnonce = isset( $_REQUEST['bulk_change_prices-nonce'] ) ? wp_verify_nonce( sanitize_key( $_REQUEST['bulk_change_prices-nonce'] ), 'bulk_change_prices' ) : false;
|
|
|
|
|
|
|
255 |
$multiply_prices_by = $wpnonce && isset( $_POST['multiply_prices_by'] ) ? sanitize_text_field( wp_unslash( $_POST['multiply_prices_by'] ) ) : 1;
|
256 |
$is_preview = isset( $_POST['bulk_change_prices_preview'] );
|
257 |
|
326 |
__( 'Otherwise - all prices below "threshold" will end with 0,99 and all prices above or equal to "threshold" will end with 9,00.', 'woocommerce-jetpack' ) . ' ' .
|
327 |
__( 'E.g.: if you set "threshold" to 100, then all prices below 100 will be like 45,99 and all other prices will be like 109,00.', 'woocommerce-jetpack' )
|
328 |
),
|
329 |
+
'<input style="width:100%;" class="" type="number" step="0.000001" min="0" name="make_pretty_prices_threshold" id="make_pretty_prices_threshold" ' . apply_filters( 'booster_option', 'disabled', '' ) . ' value="' .
|
330 |
+
$make_pretty_prices_threshold . '">',
|
331 |
'<em>' . apply_filters( 'booster_message', '', 'desc' ) . '</em>',
|
332 |
);
|
333 |
$data_table[] = array(
|
344 |
'',
|
345 |
);
|
346 |
}
|
347 |
+
$data_table[] = array(
|
348 |
+
wp_nonce_field( 'bulk_change_prices', 'bulk_change_prices-nonce' ),
|
349 |
+
'',
|
350 |
+
'',
|
351 |
+
);
|
352 |
echo (
|
353 |
+
wp_kses_post(
|
354 |
+
wcj_get_table_html(
|
355 |
+
$data_table,
|
356 |
+
array(
|
357 |
+
'table_heading_type' => 'none',
|
358 |
+
'table_class' => 'widefat striped',
|
359 |
+
'table_style' => 'width:50%;min-width:300px;',
|
360 |
+
)
|
361 |
)
|
362 |
)
|
363 |
);
|
372 |
/**
|
373 |
* Make_pretty_price.
|
374 |
*
|
375 |
+
* @version 5.6.8
|
376 |
* @since 2.4.4
|
377 |
* @param int $price defines the price.
|
378 |
*/
|
380 |
if ( 0 === $price ) {
|
381 |
return $price;
|
382 |
}
|
383 |
+
$wpnonce = isset( $_REQUEST['bulk_change_prices-nonce'] ) ? wp_verify_nonce( sanitize_key( $_REQUEST['bulk_change_prices-nonce'] ), 'bulk_change_prices' ) : false;
|
|
|
|
|
|
|
384 |
$the_modified_price = round( $price );
|
385 |
if ( $wpnonce && isset( $_POST['make_pretty_prices_threshold'] ) && $price < $_POST['make_pretty_prices_threshold'] ) {
|
386 |
$the_modified_price -= 0.01; // E.g. 49.49 -> 48.99 and 49.50 -> 49.99.
|
includes/class-wcj-product-by-country.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Product Visibility by Country
|
4 |
*
|
5 |
-
* @version 5.6.
|
6 |
* @since 2.5.0
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/includes
|
@@ -115,16 +115,18 @@ if ( ! class_exists( 'WCJ_Product_By_Country' ) ) :
|
|
115 |
/**
|
116 |
* Save_country_in_session.
|
117 |
*
|
118 |
-
* @version 5.6.
|
119 |
* @since 3.1.0
|
120 |
*/
|
121 |
public function save_country_in_session() {
|
122 |
wcj_session_maybe_start();
|
123 |
-
|
124 |
-
|
|
|
|
|
125 |
}
|
126 |
-
if ( isset( $_REQUEST['wcj-country'] ) ) {
|
127 |
-
wcj_session_set( 'wcj_selected_country', sanitize_text_field( wp_unslash( $_REQUEST['wcj-country'] ) ) );
|
128 |
}
|
129 |
}
|
130 |
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Product Visibility by Country
|
4 |
*
|
5 |
+
* @version 5.6.8
|
6 |
* @since 2.5.0
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/includes
|
115 |
/**
|
116 |
* Save_country_in_session.
|
117 |
*
|
118 |
+
* @version 5.6.8
|
119 |
* @since 3.1.0
|
120 |
*/
|
121 |
public function save_country_in_session() {
|
122 |
wcj_session_maybe_start();
|
123 |
+
$country_selector_wpnonce = isset( $_REQUEST['wcj_country_selector-nonce'] ) ? wp_verify_nonce( sanitize_key( $_REQUEST['wcj_country_selector-nonce'] ), 'wcj_country_selector' ) : false;
|
124 |
+
$country_wpnonce = isset( $_REQUEST['wcj-country-nonce'] ) ? wp_verify_nonce( sanitize_key( $_REQUEST['wcj-country-nonce'] ), 'wcj-country' ) : false;
|
125 |
+
if ( $country_selector_wpnonce && isset( $_REQUEST['wcj_country_selector'] ) ) {
|
126 |
+
wcj_session_set( 'wcj_selected_country', sanitize_text_field( wp_unslash( $_REQUEST['wcj_country_selector'] ) ) );
|
127 |
}
|
128 |
+
if ( $country_wpnonce && isset( $_REQUEST['wcj-country'] ) ) {
|
129 |
+
wcj_session_set( 'wcj_selected_country', sanitize_text_field( wp_unslash( $_REQUEST['wcj-country'] ) ) );
|
130 |
}
|
131 |
}
|
132 |
|
includes/class-wcj-product-by-date.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Product Availability by Date
|
4 |
*
|
5 |
-
* @version 5.6.
|
6 |
* @since 2.9.1
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/includes
|
@@ -21,7 +21,7 @@ if ( ! class_exists( 'WCJ_Product_By_Date' ) ) :
|
|
21 |
/**
|
22 |
* Constructor.
|
23 |
*
|
24 |
-
* @version 5.6.
|
25 |
* @since 2.9.1
|
26 |
* @todo per category
|
27 |
* @todo per tag
|
@@ -36,7 +36,7 @@ if ( ! class_exists( 'WCJ_Product_By_Date' ) ) :
|
|
36 |
$this->desc_pro = __( 'Set product availability by date.', 'woocommerce-jetpack' );
|
37 |
$this->link_slug = 'woocommerce-product-availability-by-date';
|
38 |
parent::__construct();
|
39 |
-
$this->time_now = (
|
40 |
|
41 |
if ( $this->is_enabled() ) {
|
42 |
// Per product meta box.
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Product Availability by Date
|
4 |
*
|
5 |
+
* @version 5.6.8
|
6 |
* @since 2.9.1
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/includes
|
21 |
/**
|
22 |
* Constructor.
|
23 |
*
|
24 |
+
* @version 5.6.8
|
25 |
* @since 2.9.1
|
26 |
* @todo per category
|
27 |
* @todo per tag
|
36 |
$this->desc_pro = __( 'Set product availability by date.', 'woocommerce-jetpack' );
|
37 |
$this->link_slug = 'woocommerce-product-availability-by-date';
|
38 |
parent::__construct();
|
39 |
+
$this->time_now = wcj_get_timestamp_date_from_gmt();
|
40 |
|
41 |
if ( $this->is_enabled() ) {
|
42 |
// Per product meta box.
|
includes/class-wcj-product-by-time.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Product Availability by Time
|
4 |
*
|
5 |
-
* @version 5.6.
|
6 |
* @since 2.8.0
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/includes
|
@@ -21,7 +21,7 @@ if ( ! class_exists( 'WCJ_Product_By_Time' ) ) :
|
|
21 |
/**
|
22 |
* Constructor.
|
23 |
*
|
24 |
-
* @version 5.6.
|
25 |
* @since 2.8.0
|
26 |
* @todo per category
|
27 |
* @todo per tag
|
@@ -36,8 +36,7 @@ if ( ! class_exists( 'WCJ_Product_By_Time' ) ) :
|
|
36 |
$this->desc_pro = __( 'Set product availability by time.', 'woocommerce-jetpack' );
|
37 |
$this->link_slug = 'woocommerce-product-availability-by-time';
|
38 |
parent::__construct();
|
39 |
-
$this->time_now = (
|
40 |
-
|
41 |
if ( $this->is_enabled() ) {
|
42 |
// Per product meta box.
|
43 |
if ( 'yes' === wcj_get_option( 'wcj_product_by_time_per_product_enabled', 'no' ) ) {
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Product Availability by Time
|
4 |
*
|
5 |
+
* @version 5.6.8
|
6 |
* @since 2.8.0
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/includes
|
21 |
/**
|
22 |
* Constructor.
|
23 |
*
|
24 |
+
* @version 5.6.8
|
25 |
* @since 2.8.0
|
26 |
* @todo per category
|
27 |
* @todo per tag
|
36 |
$this->desc_pro = __( 'Set product availability by time.', 'woocommerce-jetpack' );
|
37 |
$this->link_slug = 'woocommerce-product-availability-by-time';
|
38 |
parent::__construct();
|
39 |
+
$this->time_now = wcj_get_timestamp_date_from_gmt();
|
|
|
40 |
if ( $this->is_enabled() ) {
|
41 |
// Per product meta box.
|
42 |
if ( 'yes' === wcj_get_option( 'wcj_product_by_time_per_product_enabled', 'no' ) ) {
|
includes/class-wcj-product-by-user-role.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Product Visibility by User Role
|
4 |
*
|
5 |
-
* @version 5.6.
|
6 |
* @since 2.5.5
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/includes
|
@@ -42,7 +42,7 @@ if ( ! class_exists( 'WCJ_Product_By_User_Role' ) ) :
|
|
42 |
/**
|
43 |
* Maybe_add_extra_settings.
|
44 |
*
|
45 |
-
* @version 5.6.
|
46 |
* @since 4.9.0
|
47 |
*
|
48 |
* @return array
|
@@ -58,7 +58,7 @@ if ( ! class_exists( 'WCJ_Product_By_User_Role' ) ) :
|
|
58 |
array(
|
59 |
'title' => __( 'Skip Editable Roles Filter', 'woocommerce-jetpack' ),
|
60 |
/* translators: %s: translation added */
|
61 |
-
'desc_tip' => __( 'Ignores <code>editable_roles</code> filter on admin.', 'woocommerce-jetpack' ) . '<br />' . sprintf( __( 'Enable this option for example if the shop manager can\'t see some role but only if you\'ve already tried the <strong>Shop Manager Editable Roles</strong> on <a href="%s">Admin Tools</a> module.', 'woocommerce-jetpack' ), admin_url( '
|
62 |
'desc' => empty( $message ) ? __( 'Enable', 'woocommerce-jetpack' ) : $message,
|
63 |
'custom_attributes' => apply_filters( 'booster_message', '', 'disabled' ),
|
64 |
'id' => 'wcj_' . $this->id . '_user_options_skip_editable_roles',
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Product Visibility by User Role
|
4 |
*
|
5 |
+
* @version 5.6.8
|
6 |
* @since 2.5.5
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/includes
|
42 |
/**
|
43 |
* Maybe_add_extra_settings.
|
44 |
*
|
45 |
+
* @version 5.6.8
|
46 |
* @since 4.9.0
|
47 |
*
|
48 |
* @return array
|
58 |
array(
|
59 |
'title' => __( 'Skip Editable Roles Filter', 'woocommerce-jetpack' ),
|
60 |
/* translators: %s: translation added */
|
61 |
+
'desc_tip' => __( 'Ignores <code>editable_roles</code> filter on admin.', 'woocommerce-jetpack' ) . '<br />' . sprintf( __( 'Enable this option for example if the shop manager can\'t see some role but only if you\'ve already tried the <strong>Shop Manager Editable Roles</strong> on <a href="%s">Admin Tools</a> module.', 'woocommerce-jetpack' ), admin_url( wcj_admin_tab_url() . '&wcj-cat=emails_and_misc§ion=admin_tools' ) ),
|
62 |
'desc' => empty( $message ) ? __( 'Enable', 'woocommerce-jetpack' ) : $message,
|
63 |
'custom_attributes' => apply_filters( 'booster_message', '', 'disabled' ),
|
64 |
'id' => 'wcj_' . $this->id . '_user_options_skip_editable_roles',
|
includes/class-wcj-product-by-user.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Product by User
|
4 |
*
|
5 |
-
* @version 5.6.
|
6 |
* @since 2.5.2
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/includes
|
@@ -217,7 +217,7 @@ if ( ! class_exists( 'WCJ_Product_By_User' ) ) :
|
|
217 |
/**
|
218 |
* Add_my_products_content_my_account_page.
|
219 |
*
|
220 |
-
* @version 5.6.
|
221 |
* @since 2.5.2
|
222 |
*/
|
223 |
public function add_my_products_content_my_account_page() {
|
@@ -225,11 +225,9 @@ if ( ! class_exists( 'WCJ_Product_By_User' ) ) :
|
|
225 |
if ( 0 === $user_ID ) {
|
226 |
return;
|
227 |
}
|
228 |
-
$
|
229 |
-
|
230 |
-
|
231 |
-
}
|
232 |
-
if ( $wpnonce && isset( $_GET['wcj_delete_product'] ) ) {
|
233 |
$product_id = sanitize_text_field( wp_unslash( $_GET['wcj_delete_product'] ) );
|
234 |
$post_author_id = get_post_field( 'post_author', $product_id );
|
235 |
if ( (string) $user_ID !== $post_author_id ) {
|
@@ -238,7 +236,7 @@ if ( ! class_exists( 'WCJ_Product_By_User' ) ) :
|
|
238 |
wp_delete_post( $product_id, true );
|
239 |
}
|
240 |
}
|
241 |
-
if ( $
|
242 |
$product_id = sanitize_text_field( wp_unslash( $_GET['wcj_edit_product'] ) );
|
243 |
$post_author_id = get_post_field( 'post_author', $product_id );
|
244 |
if ( (string) $user_ID !== $post_author_id ) {
|
@@ -283,11 +281,27 @@ if ( ! class_exists( 'WCJ_Product_By_User' ) ) :
|
|
283 |
/* $i . ' [' . $_product_id . ']' . */ get_the_post_thumbnail( $_product_id, array( 25, 25 ) ),
|
284 |
'<code>' . $_product_data['status'] . '</code>',
|
285 |
$_product_data['title'],
|
286 |
-
'<a class="button" href="' . esc_url(
|
287 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
288 |
);
|
289 |
}
|
290 |
-
echo wcj_get_table_html( $table_data, array( 'table_class' => 'shop_table shop_table_responsive my_account_orders' ) );
|
291 |
}
|
292 |
}
|
293 |
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Product by User
|
4 |
*
|
5 |
+
* @version 5.6.8
|
6 |
* @since 2.5.2
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/includes
|
217 |
/**
|
218 |
* Add_my_products_content_my_account_page.
|
219 |
*
|
220 |
+
* @version 5.6.8
|
221 |
* @since 2.5.2
|
222 |
*/
|
223 |
public function add_my_products_content_my_account_page() {
|
225 |
if ( 0 === $user_ID ) {
|
226 |
return;
|
227 |
}
|
228 |
+
$edit_wpnonce = isset( $_REQUEST['wcj_edit_product-nonce'] ) ? wp_verify_nonce( sanitize_key( $_REQUEST['wcj_edit_product-nonce'] ), 'wcj_edit_product' ) : false;
|
229 |
+
$delete_wpnonce = isset( $_REQUEST['wcj_delete_product-nonce'] ) ? wp_verify_nonce( sanitize_key( $_REQUEST['wcj_delete_product-nonce'] ), 'wcj_delete_product' ) : false;
|
230 |
+
if ( $delete_wpnonce && isset( $_GET['wcj_delete_product'] ) ) {
|
|
|
|
|
231 |
$product_id = sanitize_text_field( wp_unslash( $_GET['wcj_delete_product'] ) );
|
232 |
$post_author_id = get_post_field( 'post_author', $product_id );
|
233 |
if ( (string) $user_ID !== $post_author_id ) {
|
236 |
wp_delete_post( $product_id, true );
|
237 |
}
|
238 |
}
|
239 |
+
if ( $edit_wpnonce && isset( $_GET['wcj_edit_product'] ) ) {
|
240 |
$product_id = sanitize_text_field( wp_unslash( $_GET['wcj_edit_product'] ) );
|
241 |
$post_author_id = get_post_field( 'post_author', $product_id );
|
242 |
if ( (string) $user_ID !== $post_author_id ) {
|
281 |
/* $i . ' [' . $_product_id . ']' . */ get_the_post_thumbnail( $_product_id, array( 25, 25 ) ),
|
282 |
'<code>' . $_product_data['status'] . '</code>',
|
283 |
$_product_data['title'],
|
284 |
+
'<a class="button" href="' . esc_url(
|
285 |
+
add_query_arg(
|
286 |
+
array(
|
287 |
+
'wcj_edit_product' => $_product_id,
|
288 |
+
'wcj_edit_product-nonce' => wp_create_nonce( 'wcj_edit_product' ),
|
289 |
+
),
|
290 |
+
remove_query_arg( array( 'wcj_edit_product_image_delete', 'wcj_delete_product', 'wcj_delete_product-nonce' ) )
|
291 |
+
)
|
292 |
+
) . '">' . __( 'Edit', 'woocommerce-jetpack' ) . '</a>
|
293 |
+
<a class="button" href="' . esc_url(
|
294 |
+
add_query_arg(
|
295 |
+
array(
|
296 |
+
'wcj_delete_product' => $_product_id,
|
297 |
+
'wcj_delete_product-nonce' => wp_create_nonce( 'wcj_delete_product' ),
|
298 |
+
),
|
299 |
+
remove_query_arg( array( 'wcj_edit_product_image_delete', 'wcj_edit_product', 'wcj_edit_product-nonce' ) )
|
300 |
+
)
|
301 |
+
) . '" onclick="return confirm(\'' . __( 'Are you sure?', 'woocommerce-jetpack' ) . '\')">' . __( 'Delete', 'woocommerce-jetpack' ) . '</a>',
|
302 |
);
|
303 |
}
|
304 |
+
echo wp_kses_post( wcj_get_table_html( $table_data, array( 'table_class' => 'shop_table shop_table_responsive my_account_orders' ) ) );
|
305 |
}
|
306 |
}
|
307 |
|
includes/class-wcj-product-custom-visibility.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Product Custom Visibility
|
4 |
*
|
5 |
-
* @version 5.6.
|
6 |
* @since 3.2.4
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/includes
|
@@ -78,14 +78,11 @@ if ( ! class_exists( 'WCJ_Product_Custom_Visibility' ) ) :
|
|
78 |
/**
|
79 |
* Save_selection_in_session.
|
80 |
*
|
81 |
-
* @version 5.6.
|
82 |
* @since 3.2.4
|
83 |
*/
|
84 |
public function save_selection_in_session() {
|
85 |
-
$wpnonce =
|
86 |
-
if ( function_exists( 'wp_verify_nonce' ) ) {
|
87 |
-
$wpnonce = isset( $_REQUEST['_wpnonce'] ) ? wp_verify_nonce( sanitize_key( isset( $_REQUEST['_wpnonce'] ) ? $_REQUEST['_wpnonce'] : '' ) ) : true;
|
88 |
-
}
|
89 |
|
90 |
wcj_session_maybe_start();
|
91 |
if ( isset( $_REQUEST['wcj_product_custom_visibility_selector'] ) && $wpnonce ) {
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Product Custom Visibility
|
4 |
*
|
5 |
+
* @version 5.6.8
|
6 |
* @since 3.2.4
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/includes
|
78 |
/**
|
79 |
* Save_selection_in_session.
|
80 |
*
|
81 |
+
* @version 5.6.8
|
82 |
* @since 3.2.4
|
83 |
*/
|
84 |
public function save_selection_in_session() {
|
85 |
+
$wpnonce = isset( $_REQUEST['wcj_product_custom_visibility_selector-nonce'] ) ? wp_verify_nonce( sanitize_key( $_REQUEST['wcj_product_custom_visibility_selector-nonce'] ), 'wcj_product_custom_visibility_selector' ) : false;
|
|
|
|
|
|
|
86 |
|
87 |
wcj_session_maybe_start();
|
88 |
if ( isset( $_REQUEST['wcj_product_custom_visibility_selector'] ) && $wpnonce ) {
|
includes/class-wcj-product-msrp.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Product MSRP
|
4 |
*
|
5 |
-
* @version 5.6.
|
6 |
* @since 3.6.0
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/includes
|
@@ -141,14 +141,15 @@ if ( ! class_exists( 'WCJ_Product_MSRP' ) ) :
|
|
141 |
/**
|
142 |
* Save_msrp_input_variable.
|
143 |
*
|
144 |
-
* @version 5.6.
|
145 |
* @since 3.6.0
|
146 |
* @param int $variation_id defines the variation_id.
|
147 |
* @param int $i defines the i.
|
148 |
*/
|
149 |
public function save_msrp_input_variable( $variation_id, $i ) {
|
150 |
-
|
151 |
-
|
|
|
152 |
}
|
153 |
}
|
154 |
|
@@ -174,14 +175,14 @@ if ( ! class_exists( 'WCJ_Product_MSRP' ) ) :
|
|
174 |
/**
|
175 |
* Save_msrp_input.
|
176 |
*
|
177 |
-
* @version 5.6.
|
178 |
* @since 3.6.0
|
179 |
* @param int $post_id defines the post_id.
|
180 |
* @param string | array $__post defines the __post.
|
181 |
*/
|
182 |
public function save_msrp_input( $post_id, $__post ) {
|
183 |
-
$
|
184 |
-
if ( isset( $_POST['_wcj_msrp'] ) && $
|
185 |
update_post_meta( $post_id, '_wcj_msrp', sanitize_text_field( wp_unslash( $_POST['_wcj_msrp'] ) ) );
|
186 |
}
|
187 |
}
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Product MSRP
|
4 |
*
|
5 |
+
* @version 5.6.8
|
6 |
* @since 3.6.0
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/includes
|
141 |
/**
|
142 |
* Save_msrp_input_variable.
|
143 |
*
|
144 |
+
* @version 5.6.8
|
145 |
* @since 3.6.0
|
146 |
* @param int $variation_id defines the variation_id.
|
147 |
* @param int $i defines the i.
|
148 |
*/
|
149 |
public function save_msrp_input_variable( $variation_id, $i ) {
|
150 |
+
$wpnonce = isset( $_REQUEST['security'] ) ? wp_verify_nonce( sanitize_key( $_REQUEST['security'] ), 'save-variations' ) : false;
|
151 |
+
if ( $wpnonce && isset( $_POST['variable_wcj_msrp'][ $i ] ) ) {
|
152 |
+
update_post_meta( $variation_id, '_wcj_msrp', wc_clean( sanitize_text_field( wp_unslash( $_POST['variable_wcj_msrp'][ $i ] ) ) ) );
|
153 |
}
|
154 |
}
|
155 |
|
175 |
/**
|
176 |
* Save_msrp_input.
|
177 |
*
|
178 |
+
* @version 5.6.8
|
179 |
* @since 3.6.0
|
180 |
* @param int $post_id defines the post_id.
|
181 |
* @param string | array $__post defines the __post.
|
182 |
*/
|
183 |
public function save_msrp_input( $post_id, $__post ) {
|
184 |
+
$wpnonce = isset( $_POST['woocommerce_meta_nonce'] ) ? wp_verify_nonce( wp_unslash( sanitize_text_field( wp_unslash( $_POST['woocommerce_meta_nonce'] ) ) ), 'woocommerce_save_data' ) : false;
|
185 |
+
if ( isset( $_POST['_wcj_msrp'] ) && $wpnonce ) {
|
186 |
update_post_meta( $post_id, '_wcj_msrp', sanitize_text_field( wp_unslash( $_POST['_wcj_msrp'] ) ) );
|
187 |
}
|
188 |
}
|
includes/class-wcj-product-open-pricing.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Product Open Pricing
|
4 |
*
|
5 |
-
* @version 5.6.
|
6 |
* @since 2.4.8
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/includes
|
@@ -186,7 +186,7 @@ if ( ! class_exists( 'WCJ_Product_Open_Pricing' ) ) :
|
|
186 |
/**
|
187 |
* Save_meta_box_value.
|
188 |
*
|
189 |
-
* @version 5.6.
|
190 |
* @since 2.4.8
|
191 |
* @param string $option_value defines the option_value.
|
192 |
* @param string $option_name defines the option_name.
|
@@ -204,8 +204,8 @@ if ( ! class_exists( 'WCJ_Product_Open_Pricing' ) ) :
|
|
204 |
'post_type' => 'product',
|
205 |
'post_status' => 'any',
|
206 |
'posts_per_page' => 1,
|
207 |
-
'meta_key' => '_wcj_product_open_price_enabled', //phpcs:ignore
|
208 |
-
'meta_value' => 'yes', //phpcs:ignore
|
209 |
'post__not_in' => array( get_the_ID() ),
|
210 |
);
|
211 |
$loop = new WP_Query( $args );
|
@@ -221,13 +221,21 @@ if ( ! class_exists( 'WCJ_Product_Open_Pricing' ) ) :
|
|
221 |
/**
|
222 |
* Add_notice_query_var.
|
223 |
*
|
224 |
-
* @version 5.6.
|
225 |
* @since 2.4.8
|
226 |
* @param string $location defines the location.
|
227 |
*/
|
228 |
public function add_notice_query_var( $location ) {
|
229 |
remove_filter( 'redirect_post_location', array( $this, 'add_notice_query_var' ), 99 );
|
230 |
-
return esc_url_raw(
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
231 |
}
|
232 |
|
233 |
/**
|
@@ -237,10 +245,7 @@ if ( ! class_exists( 'WCJ_Product_Open_Pricing' ) ) :
|
|
237 |
* @since 2.4.8
|
238 |
*/
|
239 |
public function admin_notices() {
|
240 |
-
$wpnonce =
|
241 |
-
if ( function_exists( 'wp_verify_nonce' ) ) {
|
242 |
-
$wpnonce = isset( $_REQUEST['_wpnonce'] ) ? wp_verify_nonce( sanitize_key( isset( $_REQUEST['_wpnonce'] ) ? $_REQUEST['_wpnonce'] : '' ) ) : true;
|
243 |
-
}
|
244 |
if ( ! $wpnonce || ! isset( $_GET['wcj_product_open_price_admin_notice'] ) ) {
|
245 |
return;
|
246 |
}
|
@@ -363,16 +368,13 @@ if ( ! class_exists( 'WCJ_Product_Open_Pricing' ) ) :
|
|
363 |
/**
|
364 |
* Validate_open_price_on_add_to_cart.
|
365 |
*
|
366 |
-
* @version 5.6.
|
367 |
* @since 2.4.8
|
368 |
* @param string $passed defines the passed.
|
369 |
* @param int $product_id defines the product_id.
|
370 |
*/
|
371 |
public function validate_open_price_on_add_to_cart( $passed, $product_id ) {
|
372 |
-
$wpnonce
|
373 |
-
if ( function_exists( 'wp_verify_nonce' ) ) {
|
374 |
-
$wpnonce = isset( $_REQUEST['_wpnonce'] ) ? wp_verify_nonce( sanitize_key( isset( $_REQUEST['_wpnonce'] ) ? $_REQUEST['_wpnonce'] : '' ) ) : true;
|
375 |
-
}
|
376 |
$the_product = wc_get_product( $product_id );
|
377 |
if ( $this->is_open_price_product( $the_product ) ) {
|
378 |
// Empty price.
|
@@ -433,7 +435,7 @@ if ( ! class_exists( 'WCJ_Product_Open_Pricing' ) ) :
|
|
433 |
/**
|
434 |
* Add_open_price_to_cart_item_data.
|
435 |
*
|
436 |
-
* @version 5.6.
|
437 |
* @since 2.4.8
|
438 |
* @todo [dev] (maybe) better conversion for Currency Switcher module (i.e. include rounding)
|
439 |
* @param array $cart_item_data defines the cart_item_data.
|
@@ -441,10 +443,7 @@ if ( ! class_exists( 'WCJ_Product_Open_Pricing' ) ) :
|
|
441 |
* @param int $variation_id defines the variation_id.
|
442 |
*/
|
443 |
public function add_open_price_to_cart_item_data( $cart_item_data, $product_id, $variation_id ) {
|
444 |
-
$wpnonce =
|
445 |
-
if ( function_exists( 'wp_verify_nonce' ) ) {
|
446 |
-
$wpnonce = isset( $_REQUEST['_wpnonce'] ) ? wp_verify_nonce( sanitize_key( isset( $_REQUEST['_wpnonce'] ) ? $_REQUEST['_wpnonce'] : '' ) ) : true;
|
447 |
-
}
|
448 |
if ( $wpnonce && isset( $_POST['wcj_open_price'] ) ) {
|
449 |
$cart_item_data['wcj_open_price'] = sanitize_text_field( wp_unslash( $_POST['wcj_open_price'] ) );
|
450 |
$product_bundles_divide = wcj_get_option( 'wcj_product_open_price_woosb_product_bundles_divide', 'no' );
|
@@ -506,7 +505,7 @@ if ( ! class_exists( 'WCJ_Product_Open_Pricing' ) ) :
|
|
506 |
/**
|
507 |
* Add_open_price_input_field_to_frontend.
|
508 |
*
|
509 |
-
* @version 5.6.
|
510 |
* @since 2.4.8
|
511 |
*/
|
512 |
public function add_open_price_input_field_to_frontend() {
|
@@ -515,10 +514,7 @@ if ( ! class_exists( 'WCJ_Product_Open_Pricing' ) ) :
|
|
515 |
}
|
516 |
$the_product = wc_get_product();
|
517 |
if ( $this->is_open_price_product( $the_product ) ) {
|
518 |
-
$wpnonce =
|
519 |
-
if ( function_exists( 'wp_verify_nonce' ) ) {
|
520 |
-
$wpnonce = isset( $_REQUEST['_wpnonce'] ) ? wp_verify_nonce( sanitize_key( isset( $_REQUEST['_wpnonce'] ) ? $_REQUEST['_wpnonce'] : '' ) ) : true;
|
521 |
-
}
|
522 |
// Title.
|
523 |
$title = wcj_get_option( 'wcj_product_open_price_label_frontend', __( 'Name Your Price', 'woocommerce-jetpack' ) );
|
524 |
// Prices.
|
@@ -565,6 +561,7 @@ if ( ! class_exists( 'WCJ_Product_Open_Pricing' ) ) :
|
|
565 |
get_option( 'wcj_product_open_price_frontend_template', '<label for="wcj_open_price">%frontend_label%</label> %open_price_input% %currency_symbol%' )
|
566 |
)
|
567 |
);
|
|
|
568 |
$this->is_open_price_input_field_displayed = true;
|
569 |
}
|
570 |
}
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Product Open Pricing
|
4 |
*
|
5 |
+
* @version 5.6.8
|
6 |
* @since 2.4.8
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/includes
|
186 |
/**
|
187 |
* Save_meta_box_value.
|
188 |
*
|
189 |
+
* @version 5.6.8
|
190 |
* @since 2.4.8
|
191 |
* @param string $option_value defines the option_value.
|
192 |
* @param string $option_name defines the option_name.
|
204 |
'post_type' => 'product',
|
205 |
'post_status' => 'any',
|
206 |
'posts_per_page' => 1,
|
207 |
+
'meta_key' => '_wcj_product_open_price_enabled', // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_meta_key
|
208 |
+
'meta_value' => 'yes', // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_meta_value
|
209 |
'post__not_in' => array( get_the_ID() ),
|
210 |
);
|
211 |
$loop = new WP_Query( $args );
|
221 |
/**
|
222 |
* Add_notice_query_var.
|
223 |
*
|
224 |
+
* @version 5.6.8
|
225 |
* @since 2.4.8
|
226 |
* @param string $location defines the location.
|
227 |
*/
|
228 |
public function add_notice_query_var( $location ) {
|
229 |
remove_filter( 'redirect_post_location', array( $this, 'add_notice_query_var' ), 99 );
|
230 |
+
return esc_url_raw(
|
231 |
+
add_query_arg(
|
232 |
+
array(
|
233 |
+
'wcj_product_open_price_admin_notice' => true,
|
234 |
+
'wcj_product_open_price_admin_notice-nonce' => wp_create_nonce( 'wcj_product_open_price_admin_notice' ),
|
235 |
+
),
|
236 |
+
$location
|
237 |
+
)
|
238 |
+
);
|
239 |
}
|
240 |
|
241 |
/**
|
245 |
* @since 2.4.8
|
246 |
*/
|
247 |
public function admin_notices() {
|
248 |
+
$wpnonce = isset( $_REQUEST['wcj_product_open_price_admin_notice-nonce'] ) ? wp_verify_nonce( sanitize_key( $_REQUEST['wcj_product_open_price_admin_notice-nonce'] ), 'wcj_product_open_price_admin_notice' ) : false;
|
|
|
|
|
|
|
249 |
if ( ! $wpnonce || ! isset( $_GET['wcj_product_open_price_admin_notice'] ) ) {
|
250 |
return;
|
251 |
}
|
368 |
/**
|
369 |
* Validate_open_price_on_add_to_cart.
|
370 |
*
|
371 |
+
* @version 5.6.8
|
372 |
* @since 2.4.8
|
373 |
* @param string $passed defines the passed.
|
374 |
* @param int $product_id defines the product_id.
|
375 |
*/
|
376 |
public function validate_open_price_on_add_to_cart( $passed, $product_id ) {
|
377 |
+
$wpnonce = isset( $_REQUEST['wcj_open_price-nonce'] ) ? wp_verify_nonce( sanitize_key( $_REQUEST['wcj_open_price-nonce'] ), 'wcj_open_price' ) : false;
|
|
|
|
|
|
|
378 |
$the_product = wc_get_product( $product_id );
|
379 |
if ( $this->is_open_price_product( $the_product ) ) {
|
380 |
// Empty price.
|
435 |
/**
|
436 |
* Add_open_price_to_cart_item_data.
|
437 |
*
|
438 |
+
* @version 5.6.8
|
439 |
* @since 2.4.8
|
440 |
* @todo [dev] (maybe) better conversion for Currency Switcher module (i.e. include rounding)
|
441 |
* @param array $cart_item_data defines the cart_item_data.
|
443 |
* @param int $variation_id defines the variation_id.
|
444 |
*/
|
445 |
public function add_open_price_to_cart_item_data( $cart_item_data, $product_id, $variation_id ) {
|
446 |
+
$wpnonce = isset( $_REQUEST['wcj_open_price-nonce'] ) ? wp_verify_nonce( sanitize_key( $_REQUEST['wcj_open_price-nonce'] ), 'wcj_open_price' ) : false;
|
|
|
|
|
|
|
447 |
if ( $wpnonce && isset( $_POST['wcj_open_price'] ) ) {
|
448 |
$cart_item_data['wcj_open_price'] = sanitize_text_field( wp_unslash( $_POST['wcj_open_price'] ) );
|
449 |
$product_bundles_divide = wcj_get_option( 'wcj_product_open_price_woosb_product_bundles_divide', 'no' );
|
505 |
/**
|
506 |
* Add_open_price_input_field_to_frontend.
|
507 |
*
|
508 |
+
* @version 5.6.8
|
509 |
* @since 2.4.8
|
510 |
*/
|
511 |
public function add_open_price_input_field_to_frontend() {
|
514 |
}
|
515 |
$the_product = wc_get_product();
|
516 |
if ( $this->is_open_price_product( $the_product ) ) {
|
517 |
+
$wpnonce = isset( $_REQUEST['wcj_open_price-nonce'] ) ? wp_verify_nonce( sanitize_key( $_REQUEST['wcj_open_price-nonce'] ), 'wcj_open_price' ) : false;
|
|
|
|
|
|
|
518 |
// Title.
|
519 |
$title = wcj_get_option( 'wcj_product_open_price_label_frontend', __( 'Name Your Price', 'woocommerce-jetpack' ) );
|
520 |
// Prices.
|
561 |
get_option( 'wcj_product_open_price_frontend_template', '<label for="wcj_open_price">%frontend_label%</label> %open_price_input% %currency_symbol%' )
|
562 |
)
|
563 |
);
|
564 |
+
wp_nonce_field( 'wcj_open_price', 'wcj_open_price-nonce' );
|
565 |
$this->is_open_price_input_field_displayed = true;
|
566 |
}
|
567 |
}
|
includes/class-wcj-product-price-by-formula.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Product Price by Formula
|
4 |
*
|
5 |
-
* @version 5.6.
|
6 |
* @since 2.5.1
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/includes
|
@@ -21,7 +21,7 @@ if ( ! class_exists( 'WCJ_Product_Price_By_Formula' ) ) :
|
|
21 |
/**
|
22 |
* Constructor.
|
23 |
*
|
24 |
-
* @version 5.6.
|
25 |
* @since 2.5.1
|
26 |
* @todo use WC math library instead of `PHPMathParser`
|
27 |
*/
|
@@ -39,10 +39,12 @@ if ( ! class_exists( 'WCJ_Product_Price_By_Formula' ) ) :
|
|
39 |
|
40 |
add_action( 'add_meta_boxes', array( $this, 'add_meta_box' ) );
|
41 |
add_action( 'save_post_product', array( $this, 'save_meta_box' ), PHP_INT_MAX, 2 );
|
|
|
42 |
if (
|
|
|
43 |
( wcj_is_frontend() && 'yes' === wcj_get_option( 'wcj_product_price_by_formula_admin_scope', 'yes' ) ) ||
|
44 |
( 'no' === wcj_get_option( 'wcj_product_price_by_formula_admin_scope', 'yes' ) && ( wcj_is_frontend() || is_admin() ) ) ||
|
45 |
-
isset( $_GET['wcj_create_products_xml'] )
|
46 |
) {
|
47 |
wcj_add_change_price_hooks( $this, wcj_get_module_price_hooks_priority( 'product_price_by_formula' ), false );
|
48 |
}
|
@@ -184,15 +186,17 @@ if ( ! class_exists( 'WCJ_Product_Price_By_Formula' ) ) :
|
|
184 |
/**
|
185 |
* Reset_settings.
|
186 |
*
|
187 |
-
* @version 5.6.
|
188 |
* @since 5.3.0
|
189 |
*/
|
190 |
public function reset_settings() {
|
|
|
191 |
if (
|
192 |
-
|
193 |
-
&&
|
|
|
194 |
&& wcj_is_user_role( 'administrator' )
|
195 |
-
&& ! isset( $_POST['save'] )
|
196 |
&& 'yes' === wcj_get_option( 'wcj_product_price_by_formula_reset_products', 'no' )
|
197 |
) {
|
198 |
global $wpdb;
|
@@ -392,7 +396,7 @@ if ( ! class_exists( 'WCJ_Product_Price_By_Formula' ) ) :
|
|
392 |
/**
|
393 |
* Save_meta_box_value.
|
394 |
*
|
395 |
-
* @version 5.6.
|
396 |
* @since 2.5.0
|
397 |
* @param string $option_value defines the option_value.
|
398 |
* @param string $option_name defines the option_name.
|
@@ -410,8 +414,8 @@ if ( ! class_exists( 'WCJ_Product_Price_By_Formula' ) ) :
|
|
410 |
'post_type' => 'product',
|
411 |
'post_status' => 'any',
|
412 |
'posts_per_page' => 1,
|
413 |
-
'meta_key' => '_wcj_product_price_by_formula_enabled', //phpcs:ignore
|
414 |
-
'meta_value' => 'yes', //phpcs:ignore
|
415 |
'post__not_in' => array( get_the_ID() ),
|
416 |
);
|
417 |
$loop = new WP_Query( $args );
|
@@ -427,23 +431,28 @@ if ( ! class_exists( 'WCJ_Product_Price_By_Formula' ) ) :
|
|
427 |
/**
|
428 |
* Add_notice_query_var.
|
429 |
*
|
430 |
-
* @version 5.
|
431 |
* @since 2.5.0
|
432 |
* @param string $location defines the location.
|
433 |
*/
|
434 |
public function add_notice_query_var( $location ) {
|
435 |
remove_filter( 'redirect_post_location', array( $this, 'add_notice_query_var' ), 99 );
|
436 |
-
|
|
|
|
|
|
|
|
|
437 |
}
|
438 |
|
439 |
/**
|
440 |
* Admin_notices.
|
441 |
*
|
442 |
-
* @version 5.6.
|
443 |
* @since 2.5.0
|
444 |
*/
|
445 |
public function admin_notices() {
|
446 |
-
|
|
|
447 |
return;
|
448 |
}
|
449 |
?><div class="error"><p>
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Product Price by Formula
|
4 |
*
|
5 |
+
* @version 5.6.8
|
6 |
* @since 2.5.1
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/includes
|
21 |
/**
|
22 |
* Constructor.
|
23 |
*
|
24 |
+
* @version 5.6.8
|
25 |
* @since 2.5.1
|
26 |
* @todo use WC math library instead of `PHPMathParser`
|
27 |
*/
|
39 |
|
40 |
add_action( 'add_meta_boxes', array( $this, 'add_meta_box' ) );
|
41 |
add_action( 'save_post_product', array( $this, 'save_meta_box' ), PHP_INT_MAX, 2 );
|
42 |
+
$wpnonce = isset( $_REQUEST['wcj-cat-nonce'] ) ? wp_verify_nonce( sanitize_key( $_REQUEST['wcj-cat-nonce'] ), 'wcj-cat-nonce' ) : false;
|
43 |
if (
|
44 |
+
$wpnonce &&
|
45 |
( wcj_is_frontend() && 'yes' === wcj_get_option( 'wcj_product_price_by_formula_admin_scope', 'yes' ) ) ||
|
46 |
( 'no' === wcj_get_option( 'wcj_product_price_by_formula_admin_scope', 'yes' ) && ( wcj_is_frontend() || is_admin() ) ) ||
|
47 |
+
isset( $_GET['wcj_create_products_xml'] )
|
48 |
) {
|
49 |
wcj_add_change_price_hooks( $this, wcj_get_module_price_hooks_priority( 'product_price_by_formula' ), false );
|
50 |
}
|
186 |
/**
|
187 |
* Reset_settings.
|
188 |
*
|
189 |
+
* @version 5.6.8
|
190 |
* @since 5.3.0
|
191 |
*/
|
192 |
public function reset_settings() {
|
193 |
+
$wpnonce = isset( $_GET['wcj_reset_settings-product_price_by_formula-nonce'] ) ? wp_verify_nonce( sanitize_key( $_GET['wcj_reset_settings-product_price_by_formula-nonce'] ), 'wcj_reset_settings' ) : false;
|
194 |
if (
|
195 |
+
$wpnonce
|
196 |
+
&& isset( $_GET['wcj_reset_settings'] )
|
197 |
+
&& $this->id === $_GET['wcj_reset_settings']
|
198 |
&& wcj_is_user_role( 'administrator' )
|
199 |
+
&& ! isset( $_POST['save'] )
|
200 |
&& 'yes' === wcj_get_option( 'wcj_product_price_by_formula_reset_products', 'no' )
|
201 |
) {
|
202 |
global $wpdb;
|
396 |
/**
|
397 |
* Save_meta_box_value.
|
398 |
*
|
399 |
+
* @version 5.6.8
|
400 |
* @since 2.5.0
|
401 |
* @param string $option_value defines the option_value.
|
402 |
* @param string $option_name defines the option_name.
|
414 |
'post_type' => 'product',
|
415 |
'post_status' => 'any',
|
416 |
'posts_per_page' => 1,
|
417 |
+
'meta_key' => '_wcj_product_price_by_formula_enabled', // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_meta_key
|
418 |
+
'meta_value' => 'yes', // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_meta_value
|
419 |
'post__not_in' => array( get_the_ID() ),
|
420 |
);
|
421 |
$loop = new WP_Query( $args );
|
431 |
/**
|
432 |
* Add_notice_query_var.
|
433 |
*
|
434 |
+
* @version 5.6.8
|
435 |
* @since 2.5.0
|
436 |
* @param string $location defines the location.
|
437 |
*/
|
438 |
public function add_notice_query_var( $location ) {
|
439 |
remove_filter( 'redirect_post_location', array( $this, 'add_notice_query_var' ), 99 );
|
440 |
+
$query_arg = array(
|
441 |
+
'wcj_product_price_by_formula_admin_notice' => true,
|
442 |
+
'wcj_product_price_by_formula_admin_notice-nonce' => wp_create_nonce( 'wcj_product_price_by_formula_admin_notice' ),
|
443 |
+
);
|
444 |
+
return esc_url_raw( add_query_arg( $query_arg, $location ) );
|
445 |
}
|
446 |
|
447 |
/**
|
448 |
* Admin_notices.
|
449 |
*
|
450 |
+
* @version 5.6.8
|
451 |
* @since 2.5.0
|
452 |
*/
|
453 |
public function admin_notices() {
|
454 |
+
$wpnonce = isset( $_REQUEST['wcj_product_price_by_formula_admin_notice-nonce'] ) ? wp_verify_nonce( sanitize_key( $_REQUEST['wcj_product_price_by_formula_admin_notice-nonce'] ), 'wcj_product_price_by_formula_admin_notice' ) : false;
|
455 |
+
if ( ! $wpnonce || ! isset( $_GET['wcj_product_price_by_formula_admin_notice'] ) ) {
|
456 |
return;
|
457 |
}
|
458 |
?><div class="error"><p>
|
includes/class-wcj-product-tabs.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Product Tabs
|
4 |
*
|
5 |
-
* @version 5.6.
|
6 |
* @author Pluggabl LLC.
|
7 |
* @package Booster_For_WooCommerce/includes
|
8 |
*/
|
@@ -544,30 +544,30 @@ if ( ! class_exists( 'WCJ_Product_Tabs' ) ) :
|
|
544 |
/**
|
545 |
* Create_new_custom_product_tab_local.
|
546 |
*
|
547 |
-
* @version 5.6.
|
548 |
* @param string $key defines the key.
|
549 |
* @param string $tab defines the tab.
|
550 |
*/
|
551 |
public function create_new_custom_product_tab_local( $key, $tab ) {
|
552 |
-
echo $this->get_tab_output( get_post_meta( wcj_maybe_get_product_id_wpml( get_the_ID() ), '_wcj_custom_product_tabs_content_' . $this->tab_option_keys['local'][ $key ], true ) );
|
553 |
}
|
554 |
|
555 |
/**
|
556 |
* Create_new_custom_product_tab_global.
|
557 |
*
|
558 |
-
* @version 5.6.
|
559 |
* @param string $key defines the key.
|
560 |
* @param string $tab defines the tab.
|
561 |
*/
|
562 |
public function create_new_custom_product_tab_global( $key, $tab ) {
|
563 |
-
echo $this->get_tab_output( wcj_get_option( 'wcj_custom_product_tabs_content_' . $this->tab_option_keys['global'][ $key ] ) );
|
564 |
}
|
565 |
|
566 |
|
567 |
/**
|
568 |
* Save_custom_tabs_meta_box.
|
569 |
*
|
570 |
-
* @version 5.6.
|
571 |
* @todo rewrite as standard `WCJ_Module` function
|
572 |
* @param int $post_id defines the post_id.
|
573 |
* @param string | array $post defines the post.
|
@@ -591,7 +591,7 @@ if ( ! class_exists( 'WCJ_Product_Tabs' ) ) :
|
|
591 |
$default_total_custom_tabs = apply_filters( 'booster_option', 1, wcj_get_option( 'wcj_custom_product_tabs_local_total_number_default', 1 ) );
|
592 |
$total_custom_tabs_before_saving = get_post_meta( $post_id, '_wcj_custom_product_tabs_local_total_number', true );
|
593 |
$total_custom_tabs_before_saving = ( '' !== $total_custom_tabs_before_saving && null !== $total_custom_tabs_before_saving && '' !== $total_custom_tabs_before_saving ) ? $total_custom_tabs_before_saving : $default_total_custom_tabs;
|
594 |
-
$wpnonce =
|
595 |
|
596 |
for ( $i = 1; $i <= $total_custom_tabs_before_saving; $i++ ) {
|
597 |
if ( $this->is_local_tab_visible( $i, $post_id ) ) {
|
@@ -627,7 +627,7 @@ if ( ! class_exists( 'WCJ_Product_Tabs' ) ) :
|
|
627 |
/**
|
628 |
* Create_custom_tabs_meta_box.
|
629 |
*
|
630 |
-
* @version 5.6.
|
631 |
*/
|
632 |
public function create_custom_tabs_meta_box() {
|
633 |
$current_post_id = wcj_maybe_get_product_id_wpml( get_the_ID() );
|
@@ -740,7 +740,7 @@ if ( ! class_exists( 'WCJ_Product_Tabs' ) ) :
|
|
740 |
break;
|
741 |
}
|
742 |
if ( '' !== $the_field ) {
|
743 |
-
if ( isset( $option['desc_tip'] ) && '' !== $option['desc_tip'] && null !== $option['desc_tip'] ) {
|
744 |
$option['title'] .= '<span class="woocommerce-help-tip" data-tip="' . $option['desc_tip'] . '"></span>';
|
745 |
}
|
746 |
$data[] = array( $option['title'], $the_field );
|
@@ -756,7 +756,7 @@ if ( ! class_exists( 'WCJ_Product_Tabs' ) ) :
|
|
756 |
)
|
757 |
);
|
758 |
}
|
759 |
-
echo $html;
|
760 |
}
|
761 |
$html = '<input type="hidden" name="woojetpack_custom_tabs_save_post" value="woojetpack_custom_tabs_save_post">';
|
762 |
echo wp_kses_post( $html );
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Product Tabs
|
4 |
*
|
5 |
+
* @version 5.6.8
|
6 |
* @author Pluggabl LLC.
|
7 |
* @package Booster_For_WooCommerce/includes
|
8 |
*/
|
544 |
/**
|
545 |
* Create_new_custom_product_tab_local.
|
546 |
*
|
547 |
+
* @version 5.6.8
|
548 |
* @param string $key defines the key.
|
549 |
* @param string $tab defines the tab.
|
550 |
*/
|
551 |
public function create_new_custom_product_tab_local( $key, $tab ) {
|
552 |
+
echo wp_kses_post( $this->get_tab_output( get_post_meta( wcj_maybe_get_product_id_wpml( get_the_ID() ), '_wcj_custom_product_tabs_content_' . $this->tab_option_keys['local'][ $key ], true ) ) );
|
553 |
}
|
554 |
|
555 |
/**
|
556 |
* Create_new_custom_product_tab_global.
|
557 |
*
|
558 |
+
* @version 5.6.8
|
559 |
* @param string $key defines the key.
|
560 |
* @param string $tab defines the tab.
|
561 |
*/
|
562 |
public function create_new_custom_product_tab_global( $key, $tab ) {
|
563 |
+
echo wp_kses_post( $this->get_tab_output( wcj_get_option( 'wcj_custom_product_tabs_content_' . $this->tab_option_keys['global'][ $key ] ) ) );
|
564 |
}
|
565 |
|
566 |
|
567 |
/**
|
568 |
* Save_custom_tabs_meta_box.
|
569 |
*
|
570 |
+
* @version 5.6.8
|
571 |
* @todo rewrite as standard `WCJ_Module` function
|
572 |
* @param int $post_id defines the post_id.
|
573 |
* @param string | array $post defines the post.
|
591 |
$default_total_custom_tabs = apply_filters( 'booster_option', 1, wcj_get_option( 'wcj_custom_product_tabs_local_total_number_default', 1 ) );
|
592 |
$total_custom_tabs_before_saving = get_post_meta( $post_id, '_wcj_custom_product_tabs_local_total_number', true );
|
593 |
$total_custom_tabs_before_saving = ( '' !== $total_custom_tabs_before_saving && null !== $total_custom_tabs_before_saving && '' !== $total_custom_tabs_before_saving ) ? $total_custom_tabs_before_saving : $default_total_custom_tabs;
|
594 |
+
$wpnonce = isset( $_POST['woocommerce_meta_nonce'] ) ? wp_verify_nonce( wp_unslash( sanitize_text_field( wp_unslash( $_POST['woocommerce_meta_nonce'] ) ) ), 'woocommerce_save_data' ) : false;
|
595 |
|
596 |
for ( $i = 1; $i <= $total_custom_tabs_before_saving; $i++ ) {
|
597 |
if ( $this->is_local_tab_visible( $i, $post_id ) ) {
|
627 |
/**
|
628 |
* Create_custom_tabs_meta_box.
|
629 |
*
|
630 |
+
* @version 5.6.8
|
631 |
*/
|
632 |
public function create_custom_tabs_meta_box() {
|
633 |
$current_post_id = wcj_maybe_get_product_id_wpml( get_the_ID() );
|
740 |
break;
|
741 |
}
|
742 |
if ( '' !== $the_field ) {
|
743 |
+
if ( isset( $option['desc_tip'] ) && $option['desc_tip'] && '' !== $option['desc_tip'] && null !== $option['desc_tip'] ) {
|
744 |
$option['title'] .= '<span class="woocommerce-help-tip" data-tip="' . $option['desc_tip'] . '"></span>';
|
745 |
}
|
746 |
$data[] = array( $option['title'], $the_field );
|
756 |
)
|
757 |
);
|
758 |
}
|
759 |
+
echo wp_kses_post( $html );
|
760 |
}
|
761 |
$html = '<input type="hidden" name="woojetpack_custom_tabs_save_post" value="woojetpack_custom_tabs_save_post">';
|
762 |
echo wp_kses_post( $html );
|
includes/class-wcj-products-xml.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Products XML
|
4 |
*
|
5 |
-
* @version 5.6.
|
6 |
* @since 2.5.7
|
7 |
* @author Pluggabl LLC.
|
8 |
* @todo create all files at once (manually and synchronize update)
|
@@ -111,18 +111,19 @@ if ( ! class_exists( 'WCJ_Products_XML' ) ) :
|
|
111 |
/**
|
112 |
* Admin_notices.
|
113 |
*
|
114 |
-
* @version 5.6.
|
115 |
* @since 2.5.7
|
116 |
*/
|
117 |
public function admin_notices() {
|
118 |
-
|
119 |
-
|
|
|
120 |
$class = 'notice notice-error';
|
121 |
$message = __( 'An error has occurred while creating products XML file.', 'woocommerce-jetpack' );
|
122 |
} else {
|
123 |
$class = 'notice notice-success is-dismissible';
|
124 |
/* translators: %s: translation added */
|
125 |
-
$message = sprintf( __( 'Products XML file #%s created successfully.', 'woocommerce-jetpack' ), sanitize_text_field( wp_unslash( $_GET['wcj_create_products_xml_result'] ) ) );
|
126 |
}
|
127 |
echo '<div class="' . wp_kses_post( $class ) . '"><p>' . wp_kses_post( $message ) . '</p></div>';
|
128 |
}
|
@@ -131,15 +132,16 @@ if ( ! class_exists( 'WCJ_Products_XML' ) ) :
|
|
131 |
/**
|
132 |
* Wcj_create_products_xml.
|
133 |
*
|
134 |
-
* @version 5.6.
|
135 |
* @since 2.5.7
|
136 |
*/
|
137 |
public function wcj_create_products_xml() {
|
138 |
-
|
139 |
-
|
|
|
140 |
$result = $this->create_products_xml( $file_num );
|
141 |
if ( false !== $result ) {
|
142 |
-
update_option( 'wcj_products_time_file_created_' . $file_num,
|
143 |
}
|
144 |
wp_safe_redirect( add_query_arg( 'wcj_create_products_xml_result', ( false === $result ? 0 : $file_num ), remove_query_arg( 'wcj_create_products_xml' ) ) );
|
145 |
exit;
|
@@ -149,7 +151,7 @@ if ( ! class_exists( 'WCJ_Products_XML' ) ) :
|
|
149 |
/**
|
150 |
* Create_products_xml_cron.
|
151 |
*
|
152 |
-
* @version 5.6.
|
153 |
* @since 2.5.7
|
154 |
* @param string $interval defines the interval.
|
155 |
* @param int $file_num defines the file_num.
|
@@ -157,7 +159,7 @@ if ( ! class_exists( 'WCJ_Products_XML' ) ) :
|
|
157 |
public function create_products_xml_cron( $interval, $file_num ) {
|
158 |
$result = $this->create_products_xml( $file_num );
|
159 |
if ( false !== $result ) {
|
160 |
-
update_option( 'wcj_products_time_file_created_' . $file_num,
|
161 |
}
|
162 |
die();
|
163 |
}
|
@@ -165,7 +167,7 @@ if ( ! class_exists( 'WCJ_Products_XML' ) ) :
|
|
165 |
/**
|
166 |
* Process_shortcode.
|
167 |
*
|
168 |
-
* @version
|
169 |
* @since 3.9.0
|
170 |
* @todo [dev] (maybe) re-think `str_replace( '&', '&', $content )`
|
171 |
* @param string $content defines the content.
|
@@ -209,7 +211,7 @@ if ( ! class_exists( 'WCJ_Products_XML' ) ) :
|
|
209 |
'offset' => $offset,
|
210 |
);
|
211 |
if ( 'all' !== $products_scope ) {
|
212 |
-
$args['meta_query'] = WC()->query->get_meta_query(); //phpcs:ignore
|
213 |
switch ( $products_scope ) {
|
214 |
case 'sale_only':
|
215 |
$args['post__in'] = array_merge( array( 0 ), wc_get_product_ids_on_sale() );
|
@@ -233,7 +235,7 @@ if ( ! class_exists( 'WCJ_Products_XML' ) ) :
|
|
233 |
}
|
234 |
if ( ! empty( $products_cats_in_ids ) ) {
|
235 |
if ( ! isset( $args['tax_query'] ) ) {
|
236 |
-
$args['tax_query'] = array(); //phpcs:ignore
|
237 |
}
|
238 |
$args['tax_query'][] = array(
|
239 |
'taxonomy' => 'product_cat',
|
@@ -244,7 +246,7 @@ if ( ! class_exists( 'WCJ_Products_XML' ) ) :
|
|
244 |
}
|
245 |
if ( ! empty( $products_cats_ex_ids ) ) {
|
246 |
if ( ! isset( $args['tax_query'] ) ) {
|
247 |
-
$args['tax_query'] = array(); //phpcs:ignore
|
248 |
}
|
249 |
$args['tax_query'][] = array(
|
250 |
'taxonomy' => 'product_cat',
|
@@ -255,7 +257,7 @@ if ( ! class_exists( 'WCJ_Products_XML' ) ) :
|
|
255 |
}
|
256 |
if ( ! empty( $products_tags_in_ids ) ) {
|
257 |
if ( ! isset( $args['tax_query'] ) ) {
|
258 |
-
$args['tax_query'] = array(); //phpcs:ignore
|
259 |
}
|
260 |
$args['tax_query'][] = array(
|
261 |
'taxonomy' => 'product_tag',
|
@@ -266,7 +268,7 @@ if ( ! class_exists( 'WCJ_Products_XML' ) ) :
|
|
266 |
}
|
267 |
if ( ! empty( $products_tags_ex_ids ) ) {
|
268 |
if ( ! isset( $args['tax_query'] ) ) {
|
269 |
-
$args['tax_query'] = array(); //phpcs:ignore
|
270 |
}
|
271 |
$args['tax_query'][] = array(
|
272 |
'taxonomy' => 'product_tag',
|
@@ -293,7 +295,7 @@ if ( ! class_exists( 'WCJ_Products_XML' ) ) :
|
|
293 |
}
|
294 |
}
|
295 |
wp_reset_postdata();
|
296 |
-
return file_put_contents(
|
297 |
ABSPATH . wcj_get_option( 'wcj_products_xml_file_path_' . $file_num, ( ( '1' === $file_num ) ? 'products.xml' : 'products_' . $file_num . '.xml' ) ),
|
298 |
$this->process_shortcode( $xml_header_template ) . $xml_items . $this->process_shortcode( $xml_footer_template )
|
299 |
);
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Products XML
|
4 |
*
|
5 |
+
* @version 5.6.8
|
6 |
* @since 2.5.7
|
7 |
* @author Pluggabl LLC.
|
8 |
* @todo create all files at once (manually and synchronize update)
|
111 |
/**
|
112 |
* Admin_notices.
|
113 |
*
|
114 |
+
* @version 5.6.8
|
115 |
* @since 2.5.7
|
116 |
*/
|
117 |
public function admin_notices() {
|
118 |
+
$wpnonce = isset( $_REQUEST['wcj-cat-nonce'] ) ? wp_verify_nonce( sanitize_key( $_REQUEST['wcj-cat-nonce'] ), 'wcj-cat-nonce' ) : false;
|
119 |
+
if ( $wpnonce && isset( $_GET['wcj_create_products_xml_result'] ) ) {
|
120 |
+
if ( 0 === (int) $_GET['wcj_create_products_xml_result'] ) {
|
121 |
$class = 'notice notice-error';
|
122 |
$message = __( 'An error has occurred while creating products XML file.', 'woocommerce-jetpack' );
|
123 |
} else {
|
124 |
$class = 'notice notice-success is-dismissible';
|
125 |
/* translators: %s: translation added */
|
126 |
+
$message = sprintf( __( 'Products XML file #%s created successfully.', 'woocommerce-jetpack' ), sanitize_text_field( wp_unslash( $_GET['wcj_create_products_xml_result'] ) ) );
|
127 |
}
|
128 |
echo '<div class="' . wp_kses_post( $class ) . '"><p>' . wp_kses_post( $message ) . '</p></div>';
|
129 |
}
|
132 |
/**
|
133 |
* Wcj_create_products_xml.
|
134 |
*
|
135 |
+
* @version 5.6.8
|
136 |
* @since 2.5.7
|
137 |
*/
|
138 |
public function wcj_create_products_xml() {
|
139 |
+
$wpnonce = isset( $_REQUEST['wcj-cat-nonce'] ) ? wp_verify_nonce( sanitize_key( $_REQUEST['wcj-cat-nonce'] ), 'wcj-cat-nonce' ) : false;
|
140 |
+
if ( $wpnonce && isset( $_GET['wcj_create_products_xml'] ) ) {
|
141 |
+
$file_num = sanitize_text_field( wp_unslash( $_GET['wcj_create_products_xml'] ) );
|
142 |
$result = $this->create_products_xml( $file_num );
|
143 |
if ( false !== $result ) {
|
144 |
+
update_option( 'wcj_products_time_file_created_' . $file_num, wcj_get_timestamp_date_from_gmt() );
|
145 |
}
|
146 |
wp_safe_redirect( add_query_arg( 'wcj_create_products_xml_result', ( false === $result ? 0 : $file_num ), remove_query_arg( 'wcj_create_products_xml' ) ) );
|
147 |
exit;
|
151 |
/**
|
152 |
* Create_products_xml_cron.
|
153 |
*
|
154 |
+
* @version 5.6.8
|
155 |
* @since 2.5.7
|
156 |
* @param string $interval defines the interval.
|
157 |
* @param int $file_num defines the file_num.
|
159 |
public function create_products_xml_cron( $interval, $file_num ) {
|
160 |
$result = $this->create_products_xml( $file_num );
|
161 |
if ( false !== $result ) {
|
162 |
+
update_option( 'wcj_products_time_file_created_' . $file_num, wcj_get_timestamp_date_from_gmt() );
|
163 |
}
|
164 |
die();
|
165 |
}
|
167 |
/**
|
168 |
* Process_shortcode.
|
169 |
*
|
170 |
+
* @version 5.6.8
|
171 |
* @since 3.9.0
|
172 |
* @todo [dev] (maybe) re-think `str_replace( '&', '&', $content )`
|
173 |
* @param string $content defines the content.
|
211 |
'offset' => $offset,
|
212 |
);
|
213 |
if ( 'all' !== $products_scope ) {
|
214 |
+
$args['meta_query'] = WC()->query->get_meta_query(); // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_meta_query
|
215 |
switch ( $products_scope ) {
|
216 |
case 'sale_only':
|
217 |
$args['post__in'] = array_merge( array( 0 ), wc_get_product_ids_on_sale() );
|
235 |
}
|
236 |
if ( ! empty( $products_cats_in_ids ) ) {
|
237 |
if ( ! isset( $args['tax_query'] ) ) {
|
238 |
+
$args['tax_query'] = array(); // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_tax_query
|
239 |
}
|
240 |
$args['tax_query'][] = array(
|
241 |
'taxonomy' => 'product_cat',
|
246 |
}
|
247 |
if ( ! empty( $products_cats_ex_ids ) ) {
|
248 |
if ( ! isset( $args['tax_query'] ) ) {
|
249 |
+
$args['tax_query'] = array(); // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_tax_query
|
250 |
}
|
251 |
$args['tax_query'][] = array(
|
252 |
'taxonomy' => 'product_cat',
|
257 |
}
|
258 |
if ( ! empty( $products_tags_in_ids ) ) {
|
259 |
if ( ! isset( $args['tax_query'] ) ) {
|
260 |
+
$args['tax_query'] = array(); // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_tax_query
|
261 |
}
|
262 |
$args['tax_query'][] = array(
|
263 |
'taxonomy' => 'product_tag',
|
268 |
}
|
269 |
if ( ! empty( $products_tags_ex_ids ) ) {
|
270 |
if ( ! isset( $args['tax_query'] ) ) {
|
271 |
+
$args['tax_query'] = array(); // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_tax_query
|
272 |
}
|
273 |
$args['tax_query'][] = array(
|
274 |
'taxonomy' => 'product_tag',
|
295 |
}
|
296 |
}
|
297 |
wp_reset_postdata();
|
298 |
+
return file_put_contents(
|
299 |
ABSPATH . wcj_get_option( 'wcj_products_xml_file_path_' . $file_num, ( ( '1' === $file_num ) ? 'products.xml' : 'products_' . $file_num . '.xml' ) ),
|
300 |
$this->process_shortcode( $xml_header_template ) . $xml_items . $this->process_shortcode( $xml_footer_template )
|
301 |
);
|
includes/class-wcj-purchase-data.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Cost of Goods (formerly Product Cost Price)
|
4 |
*
|
5 |
-
* @version 5.6.
|
6 |
* @since 2.2.0
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/includes
|
@@ -93,15 +93,12 @@ if ( ! class_exists( 'WCJ_Purchase_Data' ) ) :
|
|
93 |
/**
|
94 |
* Create_import_from_wc_cog_tool.
|
95 |
*
|
96 |
-
* @version 5.6.
|
97 |
* @since 2.9.0
|
98 |
*/
|
99 |
public function create_import_from_wc_cog_tool() {
|
100 |
// Action and Products list.
|
101 |
-
$wpnonce
|
102 |
-
if ( function_exists( 'wp_verify_nonce' ) ) {
|
103 |
-
$wpnonce = isset( $_REQUEST['_wpnonce'] ) ? wp_verify_nonce( sanitize_key( isset( $_REQUEST['_wpnonce'] ) ? $_REQUEST['_wpnonce'] : '' ) ) : true;
|
104 |
-
}
|
105 |
$perform_import = ( $wpnonce && isset( $_POST['wcj_import_from_wc_cog'] ) );
|
106 |
$table_data = array();
|
107 |
$table_data[] = array(
|
@@ -123,6 +120,7 @@ if ( ! class_exists( 'WCJ_Purchase_Data' ) ) :
|
|
123 |
$button_form .= '<form method="post" action="">';
|
124 |
$button_form .= '<input type="submit" name="wcj_import_from_wc_cog" class="button-primary" value="' . __( 'Import', 'woocommerce-jetpack' ) . '"' .
|
125 |
' onclick="return confirm(\'' . __( 'Are you sure?', 'woocommerce-jetpack' ) . '\')">';
|
|
|
126 |
$button_form .= '</form>';
|
127 |
// Output.
|
128 |
$html = '';
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Cost of Goods (formerly Product Cost Price)
|
4 |
*
|
5 |
+
* @version 5.6.8
|
6 |
* @since 2.2.0
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/includes
|
93 |
/**
|
94 |
* Create_import_from_wc_cog_tool.
|
95 |
*
|
96 |
+
* @version 5.6.8
|
97 |
* @since 2.9.0
|
98 |
*/
|
99 |
public function create_import_from_wc_cog_tool() {
|
100 |
// Action and Products list.
|
101 |
+
$wpnonce = isset( $_REQUEST['wcj_import_from_wc_cog-nonce'] ) ? wp_verify_nonce( sanitize_key( $_REQUEST['wcj_import_from_wc_cog-nonce'] ), 'wcj_import_from_wc_cog' ) : false;
|
|
|
|
|
|
|
102 |
$perform_import = ( $wpnonce && isset( $_POST['wcj_import_from_wc_cog'] ) );
|
103 |
$table_data = array();
|
104 |
$table_data[] = array(
|
120 |
$button_form .= '<form method="post" action="">';
|
121 |
$button_form .= '<input type="submit" name="wcj_import_from_wc_cog" class="button-primary" value="' . __( 'Import', 'woocommerce-jetpack' ) . '"' .
|
122 |
' onclick="return confirm(\'' . __( 'Are you sure?', 'woocommerce-jetpack' ) . '\')">';
|
123 |
+
$button_form .= wp_nonce_field( 'wcj_import_from_wc_cog', 'wcj_import_from_wc_cog-nonce' );
|
124 |
$button_form .= '</form>';
|
125 |
// Output.
|
126 |
$html = '';
|
includes/class-wcj-related-products.php
CHANGED
@@ -1,8 +1,8 @@
|
|
1 |
-
<?php
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Related Products
|
4 |
*
|
5 |
-
* @version 5.6.
|
6 |
* @author Pluggabl LLC.
|
7 |
* @package Booster_For_WooCommerce/includes
|
8 |
*/
|
@@ -11,35 +11,13 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
11 |
exit;
|
12 |
}
|
13 |
|
14 |
-
|
15 |
-
/**
|
16 |
-
* WCJ_Dummy_Term class.
|
17 |
-
*
|
18 |
-
* @version 2.6.0
|
19 |
-
* @since 2.6.0
|
20 |
-
*/
|
21 |
-
class WCJ_Dummy_Term {
|
22 |
-
/**
|
23 |
-
* Term_id class.
|
24 |
-
*
|
25 |
-
* @var term_id.
|
26 |
-
*/
|
27 |
-
|
28 |
-
public $term_id;
|
29 |
-
/**
|
30 |
-
* Constructor.
|
31 |
-
*/
|
32 |
-
public function __construct() {
|
33 |
-
$this->term_id = 0;
|
34 |
-
}
|
35 |
-
}
|
36 |
-
}
|
37 |
|
38 |
if ( ! class_exists( 'WCJ_Related_Products' ) ) :
|
39 |
/**
|
40 |
* WCJ_Related_Products.
|
41 |
*/
|
42 |
-
class WCJ_Related_Products extends WCJ_Module {
|
43 |
|
44 |
|
45 |
/**
|
@@ -194,7 +172,7 @@ if ( ! class_exists( 'WCJ_Related_Products' ) ) :
|
|
194 |
/**
|
195 |
* Get_related_products_ids_wc3.
|
196 |
*
|
197 |
-
* @version 5.6.
|
198 |
* @since 2.8.0
|
199 |
* @param int $product_id defines the product_id.
|
200 |
*/
|
@@ -222,7 +200,7 @@ if ( ! class_exists( 'WCJ_Related_Products' ) ) :
|
|
222 |
if ( 'global' === wcj_get_option( 'wcj_product_info_related_products_by_attribute_attribute_type', 'global' ) ) {
|
223 |
// Relate by Global Attributes.
|
224 |
// http://snippet.fm/snippets/query-for-woocommerce-products-by-global-product-attributes/.
|
225 |
-
$args['tax_query'] = array( //phpcs:ignore
|
226 |
array(
|
227 |
'taxonomy' => 'pa_' . $attribute_name,
|
228 |
'field' => 'name',
|
@@ -232,9 +210,9 @@ if ( ! class_exists( 'WCJ_Related_Products' ) ) :
|
|
232 |
} else {
|
233 |
// Relate by Local Product Attributes.
|
234 |
// http://snippet.fm/snippets/query-woocommerce-products-product-specific-custom-attribute/.
|
235 |
-
$serialized_value = serialize( 'name' ) . serialize( $attribute_name ) . serialize( 'value' ) . serialize( $attribute_value ); //phpcs:ignore
|
236 |
// extended version: $serialized_value = serialize( $attribute_name ) . 'a:6:{' . serialize( 'name' ) . serialize( $attribute_name ) . serialize( 'value' ) . serialize( $attribute_value ) . serialize( 'position' );.
|
237 |
-
$args['meta_query'] = array( //phpcs:ignore
|
238 |
array(
|
239 |
'key' => '_product_attributes',
|
240 |
'value' => $serialized_value,
|
@@ -385,11 +363,12 @@ if ( ! class_exists( 'WCJ_Related_Products' ) ) :
|
|
385 |
/**
|
386 |
* Maybe_delete_product_transients.
|
387 |
*
|
388 |
-
* @since 5.6.
|
389 |
* @version 2.6.0
|
390 |
*/
|
391 |
public function maybe_delete_product_transients() {
|
392 |
-
|
|
|
393 |
$offset = 0;
|
394 |
$block_size = 256;
|
395 |
while ( true ) {
|
@@ -419,7 +398,7 @@ if ( ! class_exists( 'WCJ_Related_Products' ) ) :
|
|
419 |
/**
|
420 |
* Related_products_args.
|
421 |
*
|
422 |
-
* @version 5.6.
|
423 |
* @todo save custom results as product transient (for < WC3)
|
424 |
* @param array $args defines the args.
|
425 |
*/
|
@@ -434,7 +413,7 @@ if ( ! class_exists( 'WCJ_Related_Products' ) ) :
|
|
434 |
$orderby = wcj_get_option( 'wcj_product_info_related_products_orderby', 'rand' );
|
435 |
$args['orderby'] = $orderby;
|
436 |
if ( 'meta_value' === $orderby || 'meta_value_num' === $orderby ) {
|
437 |
-
$args['meta_key'] = wcj_get_option( 'wcj_product_info_related_products_orderby_meta_value_meta_key', '' ); //phpcs:ignore
|
438 |
}
|
439 |
// Order.
|
440 |
if ( 'rand' !== $orderby ) {
|
@@ -459,7 +438,7 @@ if ( ! class_exists( 'WCJ_Related_Products' ) ) :
|
|
459 |
if ( 'global' === wcj_get_option( 'wcj_product_info_related_products_by_attribute_attribute_type', 'global' ) ) {
|
460 |
// Relate by Global Attributes.
|
461 |
// http://snippet.fm/snippets/query-for-woocommerce-products-by-global-product-attributes/.
|
462 |
-
$args['tax_query'] = array( //phpcs:ignore
|
463 |
array(
|
464 |
'taxonomy' => 'pa_' . $attribute_name,
|
465 |
'field' => 'name',
|
@@ -469,9 +448,9 @@ if ( ! class_exists( 'WCJ_Related_Products' ) ) :
|
|
469 |
} else {
|
470 |
// Relate by Local Product Attributes.
|
471 |
// http://snippet.fm/snippets/query-woocommerce-products-product-specific-custom-attribute/.
|
472 |
-
$serialized_value = serialize( 'name' ) . serialize( $attribute_name ) . serialize( 'value' ) . serialize( $attribute_value ); //phpcs:ignore
|
473 |
// extended version: $serialized_value = serialize( $attribute_name ) . 'a:6:{' . serialize( 'name' ) . serialize( $attribute_name ) . serialize( 'value' ) . serialize( $attribute_value ) . serialize( 'position' );.
|
474 |
-
$args['meta_query'] = array( //phpcs:ignore
|
475 |
array(
|
476 |
'key' => '_product_attributes',
|
477 |
'value' => $serialized_value,
|
1 |
+
<?php
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Related Products
|
4 |
*
|
5 |
+
* @version 5.6.8
|
6 |
* @author Pluggabl LLC.
|
7 |
* @package Booster_For_WooCommerce/includes
|
8 |
*/
|
11 |
exit;
|
12 |
}
|
13 |
|
14 |
+
require_once 'classes/class-wcj-dummy-term.php';
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
15 |
|
16 |
if ( ! class_exists( 'WCJ_Related_Products' ) ) :
|
17 |
/**
|
18 |
* WCJ_Related_Products.
|
19 |
*/
|
20 |
+
class WCJ_Related_Products extends WCJ_Module {
|
21 |
|
22 |
|
23 |
/**
|
172 |
/**
|
173 |
* Get_related_products_ids_wc3.
|
174 |
*
|
175 |
+
* @version 5.6.8
|
176 |
* @since 2.8.0
|
177 |
* @param int $product_id defines the product_id.
|
178 |
*/
|
200 |
if ( 'global' === wcj_get_option( 'wcj_product_info_related_products_by_attribute_attribute_type', 'global' ) ) {
|
201 |
// Relate by Global Attributes.
|
202 |
// http://snippet.fm/snippets/query-for-woocommerce-products-by-global-product-attributes/.
|
203 |
+
$args['tax_query'] = array( // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_tax_query
|
204 |
array(
|
205 |
'taxonomy' => 'pa_' . $attribute_name,
|
206 |
'field' => 'name',
|
210 |
} else {
|
211 |
// Relate by Local Product Attributes.
|
212 |
// http://snippet.fm/snippets/query-woocommerce-products-product-specific-custom-attribute/.
|
213 |
+
$serialized_value = serialize( 'name' ) . serialize( $attribute_name ) . serialize( 'value' ) . serialize( $attribute_value ); // phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.serialize_serialize
|
214 |
// extended version: $serialized_value = serialize( $attribute_name ) . 'a:6:{' . serialize( 'name' ) . serialize( $attribute_name ) . serialize( 'value' ) . serialize( $attribute_value ) . serialize( 'position' );.
|
215 |
+
$args['meta_query'] = array( // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_meta_query
|
216 |
array(
|
217 |
'key' => '_product_attributes',
|
218 |
'value' => $serialized_value,
|
363 |
/**
|
364 |
* Maybe_delete_product_transients.
|
365 |
*
|
366 |
+
* @since 5.6.8
|
367 |
* @version 2.6.0
|
368 |
*/
|
369 |
public function maybe_delete_product_transients() {
|
370 |
+
$wpnonce = isset( $_REQUEST['wcj-cat-nonce'] ) ? wp_verify_nonce( sanitize_key( $_REQUEST['wcj-cat-nonce'] ), 'wcj-cat-nonce' ) : false;
|
371 |
+
if ( $wpnonce && isset( $_GET['wcj_clear_all_products_transients'] ) ) {
|
372 |
$offset = 0;
|
373 |
$block_size = 256;
|
374 |
while ( true ) {
|
398 |
/**
|
399 |
* Related_products_args.
|
400 |
*
|
401 |
+
* @version 5.6.8
|
402 |
* @todo save custom results as product transient (for < WC3)
|
403 |
* @param array $args defines the args.
|
404 |
*/
|
413 |
$orderby = wcj_get_option( 'wcj_product_info_related_products_orderby', 'rand' );
|
414 |
$args['orderby'] = $orderby;
|
415 |
if ( 'meta_value' === $orderby || 'meta_value_num' === $orderby ) {
|
416 |
+
$args['meta_key'] = wcj_get_option( 'wcj_product_info_related_products_orderby_meta_value_meta_key', '' ); // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_meta_key
|
417 |
}
|
418 |
// Order.
|
419 |
if ( 'rand' !== $orderby ) {
|
438 |
if ( 'global' === wcj_get_option( 'wcj_product_info_related_products_by_attribute_attribute_type', 'global' ) ) {
|
439 |
// Relate by Global Attributes.
|
440 |
// http://snippet.fm/snippets/query-for-woocommerce-products-by-global-product-attributes/.
|
441 |
+
$args['tax_query'] = array( // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_tax_query
|
442 |
array(
|
443 |
'taxonomy' => 'pa_' . $attribute_name,
|
444 |
'field' => 'name',
|
448 |
} else {
|
449 |
// Relate by Local Product Attributes.
|
450 |
// http://snippet.fm/snippets/query-woocommerce-products-product-specific-custom-attribute/.
|
451 |
+
$serialized_value = serialize( 'name' ) . serialize( $attribute_name ) . serialize( 'value' ) . serialize( $attribute_value ); // phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.serialize_serialize
|
452 |
// extended version: $serialized_value = serialize( $attribute_name ) . 'a:6:{' . serialize( 'name' ) . serialize( $attribute_name ) . serialize( 'value' ) . serialize( $attribute_value ) . serialize( 'position' );.
|
453 |
+
$args['meta_query'] = array( // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_meta_query
|
454 |
array(
|
455 |
'key' => '_product_attributes',
|
456 |
'value' => $serialized_value,
|
includes/class-wcj-reports.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Reports
|
4 |
*
|
5 |
-
* @version 5.6.
|
6 |
* @author Pluggabl LLC.
|
7 |
* @package Booster_For_WooCommerce/includes
|
8 |
*/
|
@@ -41,7 +41,7 @@ if ( ! class_exists( 'WCJ_Reports' ) ) :
|
|
41 |
/**
|
42 |
* Constructor.
|
43 |
*
|
44 |
-
* @version
|
45 |
* @todo "orders report by meta" abstract class (see `WCJ_Reports_Product_Sales_Gateways`): by referer (`_wcj_track_users_http_referer`); by shipping (stored as item); by country (`_billing_country` or `_shipping_country`) etc.
|
46 |
*/
|
47 |
public function __construct() {
|
@@ -63,7 +63,7 @@ if ( ! class_exists( 'WCJ_Reports' ) ) :
|
|
63 |
include_once 'reports/class-wcj-reports-customers.php';
|
64 |
include_once 'reports/class-wcj-reports-stock.php';
|
65 |
include_once 'reports/class-wcj-reports-product-sales-daily.php';
|
66 |
-
include_once 'reports/wcj-
|
67 |
include_once 'reports/class-wcj-reports-sales.php';
|
68 |
include_once 'reports/class-wcj-reports-monthly-sales.php';
|
69 |
|
@@ -76,14 +76,15 @@ if ( ! class_exists( 'WCJ_Reports' ) ) :
|
|
76 |
/**
|
77 |
* Add_custom_order_reports_ranges_by_month_to_admin_bar.
|
78 |
*
|
79 |
-
* @version 5.6.
|
80 |
* @since 2.2.4
|
81 |
* @param string | array $wp_admin_bar defines the wp_admin_bar.
|
82 |
*/
|
83 |
public function add_custom_order_reports_ranges_by_month_to_admin_bar( $wp_admin_bar ) {
|
|
|
84 |
$is_reports = ( isset( $_GET['page'] ) && 'wc-reports' === $_GET['page'] );
|
85 |
$is_orders_reports = ( isset( $_GET['tab'] ) && 'orders' === $_GET['tab'] || ! isset( $_GET['tab'] ) );
|
86 |
-
|
87 |
if ( $is_reports && $is_orders_reports ) {
|
88 |
|
89 |
$parent = 'reports_orders_more_ranges_months';
|
@@ -97,7 +98,7 @@ if ( ! class_exists( 'WCJ_Reports' ) ) :
|
|
97 |
$wp_admin_bar->add_node( $args );
|
98 |
|
99 |
$custom_range_nonce = wp_create_nonce( 'custom_range' );
|
100 |
-
$current_time = (
|
101 |
for ( $i = 1; $i <= 12; $i++ ) {
|
102 |
$month_start_date = strtotime( gmdate( 'Y-m-01', $current_time ) . " -$i months" );
|
103 |
$month_num = gmdate( 'm', $month_start_date );
|
@@ -128,13 +129,14 @@ if ( ! class_exists( 'WCJ_Reports' ) ) :
|
|
128 |
/**
|
129 |
* Add_custom_order_reports_ranges_to_admin_bar.
|
130 |
*
|
131 |
-
* @version 5.6.
|
132 |
* @param string | array $wp_admin_bar defines the wp_admin_bar.
|
133 |
*/
|
134 |
public function add_custom_order_reports_ranges_to_admin_bar( $wp_admin_bar ) {
|
135 |
-
|
136 |
-
$is_reports = (
|
137 |
-
$is_orders_reports = (
|
|
|
138 |
if ( $is_reports && $is_orders_reports ) {
|
139 |
|
140 |
$parent = 'reports_orders_more_ranges';
|
@@ -174,10 +176,11 @@ if ( ! class_exists( 'WCJ_Reports' ) ) :
|
|
174 |
* Catch_arguments.
|
175 |
*/
|
176 |
public function catch_arguments() {
|
177 |
-
|
178 |
-
$this->report_id = (
|
179 |
-
$this->range_days =
|
180 |
$this->group_countries = ( 'customers_by_country_sets' === $this->report_id ) ? 'yes' : 'no';
|
|
|
181 |
}
|
182 |
|
183 |
/**
|
@@ -185,40 +188,40 @@ if ( ! class_exists( 'WCJ_Reports' ) ) :
|
|
185 |
*/
|
186 |
public function get_report_sales() {
|
187 |
$report = new WCJ_Reports_Sales();
|
188 |
-
echo $report->get_report();
|
189 |
}
|
190 |
|
191 |
/**
|
192 |
* Get_report_products_sales_daily.
|
193 |
*
|
194 |
-
* @version 5.6.
|
195 |
* @since 2.9.0
|
196 |
*/
|
197 |
public function get_report_products_sales_daily() {
|
198 |
$report = new WCJ_Reports_Product_Sales_Daily();
|
199 |
-
echo $report->get_report();
|
200 |
}
|
201 |
|
202 |
/**
|
203 |
* Get_report_monthly_sales.
|
204 |
*
|
205 |
-
* @version 5.6.
|
206 |
* @since 2.4.7
|
207 |
*/
|
208 |
public function get_report_monthly_sales() {
|
209 |
$report = new WCJ_Reports_Monthly_Sales();
|
210 |
-
echo $report->get_report();
|
211 |
}
|
212 |
|
213 |
/**
|
214 |
* Get_report_orders_gateways.
|
215 |
*
|
216 |
-
* @version 5.6.
|
217 |
* @since 3.6.0
|
218 |
*/
|
219 |
public function get_report_orders_gateways() {
|
220 |
-
$report = new
|
221 |
-
echo $report->get_report();
|
222 |
}
|
223 |
|
224 |
/**
|
@@ -231,7 +234,7 @@ if ( ! class_exists( 'WCJ_Reports' ) ) :
|
|
231 |
'range_days' => $this->range_days,
|
232 |
)
|
233 |
);
|
234 |
-
echo $report->get_report_html();
|
235 |
}
|
236 |
|
237 |
/**
|
@@ -239,7 +242,7 @@ if ( ! class_exists( 'WCJ_Reports' ) ) :
|
|
239 |
*/
|
240 |
public function get_report_customers() {
|
241 |
$report = new WCJ_Reports_Customers( array( 'group_countries' => $this->group_countries ) );
|
242 |
-
echo $report->get_report();
|
243 |
}
|
244 |
|
245 |
/**
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Reports
|
4 |
*
|
5 |
+
* @version 5.6.8
|
6 |
* @author Pluggabl LLC.
|
7 |
* @package Booster_For_WooCommerce/includes
|
8 |
*/
|
41 |
/**
|
42 |
* Constructor.
|
43 |
*
|
44 |
+
* @version 5.6.8
|
45 |
* @todo "orders report by meta" abstract class (see `WCJ_Reports_Product_Sales_Gateways`): by referer (`_wcj_track_users_http_referer`); by shipping (stored as item); by country (`_billing_country` or `_shipping_country`) etc.
|
46 |
*/
|
47 |
public function __construct() {
|
63 |
include_once 'reports/class-wcj-reports-customers.php';
|
64 |
include_once 'reports/class-wcj-reports-stock.php';
|
65 |
include_once 'reports/class-wcj-reports-product-sales-daily.php';
|
66 |
+
include_once 'reports/class-wcj-reports-sales-gateways.php';
|
67 |
include_once 'reports/class-wcj-reports-sales.php';
|
68 |
include_once 'reports/class-wcj-reports-monthly-sales.php';
|
69 |
|
76 |
/**
|
77 |
* Add_custom_order_reports_ranges_by_month_to_admin_bar.
|
78 |
*
|
79 |
+
* @version 5.6.8
|
80 |
* @since 2.2.4
|
81 |
* @param string | array $wp_admin_bar defines the wp_admin_bar.
|
82 |
*/
|
83 |
public function add_custom_order_reports_ranges_by_month_to_admin_bar( $wp_admin_bar ) {
|
84 |
+
// phpcs:disable WordPress.Security.NonceVerification
|
85 |
$is_reports = ( isset( $_GET['page'] ) && 'wc-reports' === $_GET['page'] );
|
86 |
$is_orders_reports = ( isset( $_GET['tab'] ) && 'orders' === $_GET['tab'] || ! isset( $_GET['tab'] ) );
|
87 |
+
// phpcs:enable WordPress.Security.NonceVerification
|
88 |
if ( $is_reports && $is_orders_reports ) {
|
89 |
|
90 |
$parent = 'reports_orders_more_ranges_months';
|
98 |
$wp_admin_bar->add_node( $args );
|
99 |
|
100 |
$custom_range_nonce = wp_create_nonce( 'custom_range' );
|
101 |
+
$current_time = wcj_get_timestamp_date_from_gmt();
|
102 |
for ( $i = 1; $i <= 12; $i++ ) {
|
103 |
$month_start_date = strtotime( gmdate( 'Y-m-01', $current_time ) . " -$i months" );
|
104 |
$month_num = gmdate( 'm', $month_start_date );
|
129 |
/**
|
130 |
* Add_custom_order_reports_ranges_to_admin_bar.
|
131 |
*
|
132 |
+
* @version 5.6.8
|
133 |
* @param string | array $wp_admin_bar defines the wp_admin_bar.
|
134 |
*/
|
135 |
public function add_custom_order_reports_ranges_to_admin_bar( $wp_admin_bar ) {
|
136 |
+
// phpcs:disable WordPress.Security.NonceVerification
|
137 |
+
$is_reports = ( isset( $_GET['page'] ) && 'wc-reports' === $_GET['page'] );
|
138 |
+
$is_orders_reports = ( isset( $_GET['tab'] ) && 'orders' === $_GET['tab'] || ! isset( $_GET['tab'] ) );
|
139 |
+
// phpcs:enable WordPress.Security.NonceVerification
|
140 |
if ( $is_reports && $is_orders_reports ) {
|
141 |
|
142 |
$parent = 'reports_orders_more_ranges';
|
176 |
* Catch_arguments.
|
177 |
*/
|
178 |
public function catch_arguments() {
|
179 |
+
// phpcs:disable WordPress.Security.NonceVerification
|
180 |
+
$this->report_id = ( isset( $_GET['report'] ) ) ? sanitize_text_field( wp_unslash( $_GET['report'] ) ) : 'on_stock';
|
181 |
+
$this->range_days = isset( $_GET['period'] ) ? sanitize_text_field( wp_unslash( $_GET['period'] ) ) : 30;
|
182 |
$this->group_countries = ( 'customers_by_country_sets' === $this->report_id ) ? 'yes' : 'no';
|
183 |
+
// phpcs:enable WordPress.Security.NonceVerification
|
184 |
}
|
185 |
|
186 |
/**
|
188 |
*/
|
189 |
public function get_report_sales() {
|
190 |
$report = new WCJ_Reports_Sales();
|
191 |
+
echo wp_kses_post( $report->get_report() );
|
192 |
}
|
193 |
|
194 |
/**
|
195 |
* Get_report_products_sales_daily.
|
196 |
*
|
197 |
+
* @version 5.6.8
|
198 |
* @since 2.9.0
|
199 |
*/
|
200 |
public function get_report_products_sales_daily() {
|
201 |
$report = new WCJ_Reports_Product_Sales_Daily();
|
202 |
+
echo wp_kses_post( $report->get_report() );
|
203 |
}
|
204 |
|
205 |
/**
|
206 |
* Get_report_monthly_sales.
|
207 |
*
|
208 |
+
* @version 5.6.8
|
209 |
* @since 2.4.7
|
210 |
*/
|
211 |
public function get_report_monthly_sales() {
|
212 |
$report = new WCJ_Reports_Monthly_Sales();
|
213 |
+
echo wp_kses_post( $report->get_report() );
|
214 |
}
|
215 |
|
216 |
/**
|
217 |
* Get_report_orders_gateways.
|
218 |
*
|
219 |
+
* @version 5.6.8
|
220 |
* @since 3.6.0
|
221 |
*/
|
222 |
public function get_report_orders_gateways() {
|
223 |
+
$report = new WCJ_Reports_Sales_Gateways();
|
224 |
+
echo wp_kses_post( $report->get_report() );
|
225 |
}
|
226 |
|
227 |
/**
|
234 |
'range_days' => $this->range_days,
|
235 |
)
|
236 |
);
|
237 |
+
echo wp_kses_post( $report->get_report_html() );
|
238 |
}
|
239 |
|
240 |
/**
|
242 |
*/
|
243 |
public function get_report_customers() {
|
244 |
$report = new WCJ_Reports_Customers( array( 'group_countries' => $this->group_countries ) );
|
245 |
+
echo wp_kses_post( $report->get_report() );
|
246 |
}
|
247 |
|
248 |
/**
|
includes/class-wcj-shipping-by-cities.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Shipping by Cities
|
4 |
*
|
5 |
-
* @version 5.6.
|
6 |
* @since 3.6.0
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/includes
|
@@ -60,7 +60,7 @@ if ( ! class_exists( 'WCJ_Shipping_By_Cities' ) ) :
|
|
60 |
/**
|
61 |
* Check.
|
62 |
*
|
63 |
-
* @version 5.6.
|
64 |
* @since 3.6.0
|
65 |
* @todo `$_REQUEST['city']` (i.e. billing city)
|
66 |
* @todo `get_base_city()` - do we really need this?
|
@@ -72,9 +72,12 @@ if ( ! class_exists( 'WCJ_Shipping_By_Cities' ) ) :
|
|
72 |
public function check( $options_id, $values, $include_or_exclude, $package ) {
|
73 |
switch ( $options_id ) {
|
74 |
case 'cities':
|
75 |
-
$
|
76 |
-
if (
|
77 |
-
|
|
|
|
|
|
|
78 |
}
|
79 |
|
80 |
$user_city = WC()->customer->get_shipping_city();
|
@@ -83,9 +86,12 @@ if ( ! class_exists( 'WCJ_Shipping_By_Cities' ) ) :
|
|
83 |
|
84 |
return in_array( $customer_city, $values, true );
|
85 |
case 'postcodes':
|
86 |
-
$
|
87 |
-
if (
|
88 |
-
|
|
|
|
|
|
|
89 |
}
|
90 |
$customer_shipping_postcode = WC()->customer->get_shipping_postcode();
|
91 |
$customer_postcode = strtoupper( ( isset( $_REQUEST['s_postcode'] ) && $wpnonce ) ? sanitize_text_field( wp_unslash( $_REQUEST['s_postcode'] ) ) : ( ! empty( $customer_shipping_postcode ) ? $customer_shipping_postcode : WC()->countries->get_base_postcode() ) );
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Shipping by Cities
|
4 |
*
|
5 |
+
* @version 5.6.8
|
6 |
* @since 3.6.0
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/includes
|
60 |
/**
|
61 |
* Check.
|
62 |
*
|
63 |
+
* @version 5.6.8
|
64 |
* @since 3.6.0
|
65 |
* @todo `$_REQUEST['city']` (i.e. billing city)
|
66 |
* @todo `get_base_city()` - do we really need this?
|
72 |
public function check( $options_id, $values, $include_or_exclude, $package ) {
|
73 |
switch ( $options_id ) {
|
74 |
case 'cities':
|
75 |
+
$post_data = array();
|
76 |
+
if ( isset( $_REQUEST['post_data'] ) ) {
|
77 |
+
parse_str( sanitize_text_field( wp_unslash( $_REQUEST['post_data'] ) ), $post_data );
|
78 |
+
$wpnonce = isset( $post_data['woocommerce-process-checkout-nonce'] ) ? wp_verify_nonce( sanitize_key( $post_data['woocommerce-process-checkout-nonce'] ), 'woocommerce-process_checkout' ) : false;
|
79 |
+
} else {
|
80 |
+
$wpnonce = false;
|
81 |
}
|
82 |
|
83 |
$user_city = WC()->customer->get_shipping_city();
|
86 |
|
87 |
return in_array( $customer_city, $values, true );
|
88 |
case 'postcodes':
|
89 |
+
$post_data = array();
|
90 |
+
if ( isset( $_REQUEST['post_data'] ) ) {
|
91 |
+
parse_str( sanitize_text_field( wp_unslash( $_REQUEST['post_data'] ) ), $post_data );
|
92 |
+
$wpnonce = isset( $post_data['woocommerce-process-checkout-nonce'] ) ? wp_verify_nonce( sanitize_key( $post_data['woocommerce-process-checkout-nonce'] ), 'woocommerce-process_checkout' ) : false;
|
93 |
+
} else {
|
94 |
+
$wpnonce = false;
|
95 |
}
|
96 |
$customer_shipping_postcode = WC()->customer->get_shipping_postcode();
|
97 |
$customer_postcode = strtoupper( ( isset( $_REQUEST['s_postcode'] ) && $wpnonce ) ? sanitize_text_field( wp_unslash( $_REQUEST['s_postcode'] ) ) : ( ! empty( $customer_shipping_postcode ) ? $customer_shipping_postcode : WC()->countries->get_base_postcode() ) );
|
includes/class-wcj-shipping-by-time.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Shipping by Time
|
4 |
*
|
5 |
-
* @version 5.6.
|
6 |
* @since 4.0.0
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/includes
|
@@ -99,7 +99,7 @@ if ( ! class_exists( 'WCJ_Shipping_By_Time' ) ) :
|
|
99 |
/**
|
100 |
* Check.
|
101 |
*
|
102 |
-
* @version 5.6.
|
103 |
* @since 4.0.0
|
104 |
* @param string $options_id defines the options_id.
|
105 |
* @param array $values defines the values.
|
@@ -111,7 +111,7 @@ if ( ! class_exists( 'WCJ_Shipping_By_Time' ) ) :
|
|
111 |
case 'time':
|
112 |
$parsed_time = $this->parse_time( $values );
|
113 |
if ( $parsed_time ) {
|
114 |
-
$current_time = (
|
115 |
return ( $current_time >= $parsed_time['time_from'] && $current_time <= $parsed_time['time_to'] );
|
116 |
}
|
117 |
return ( 'include' === $include_or_exclude ); // not parsable time input - leaving shipping method enabled.
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Shipping by Time
|
4 |
*
|
5 |
+
* @version 5.6.8
|
6 |
* @since 4.0.0
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/includes
|
99 |
/**
|
100 |
* Check.
|
101 |
*
|
102 |
+
* @version 5.6.8
|
103 |
* @since 4.0.0
|
104 |
* @param string $options_id defines the options_id.
|
105 |
* @param array $values defines the values.
|
111 |
case 'time':
|
112 |
$parsed_time = $this->parse_time( $values );
|
113 |
if ( $parsed_time ) {
|
114 |
+
$current_time = wcj_get_timestamp_date_from_gmt();
|
115 |
return ( $current_time >= $parsed_time['time_from'] && $current_time <= $parsed_time['time_to'] );
|
116 |
}
|
117 |
return ( 'include' === $include_or_exclude ); // not parsable time input - leaving shipping method enabled.
|
includes/class-wcj-shipping-by-user-role.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Shipping by User Role
|
4 |
*
|
5 |
-
* @version 5.6.
|
6 |
* @since 5.2.0
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/includes
|
@@ -24,7 +24,7 @@ if ( ! class_exists( 'WCJ_Shipping_By_User_Role' ) ) :
|
|
24 |
/**
|
25 |
* Constructor.
|
26 |
*
|
27 |
-
* @version 5.
|
28 |
* @since 2.8.0
|
29 |
*/
|
30 |
public function __construct() {
|
@@ -41,7 +41,7 @@ if ( ! class_exists( 'WCJ_Shipping_By_User_Role' ) ) :
|
|
41 |
'desc' => sprintf(
|
42 |
/* translators: %s: translators Added */
|
43 |
__( 'Custom roles can be added via "Add/Manage Custom Roles" tool in Booster\'s <a href="%s">General</a> module.', 'woocommerce-jetpack' ),
|
44 |
-
admin_url( '
|
45 |
),
|
46 |
),
|
47 |
'user_id' => array(
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Shipping by User Role
|
4 |
*
|
5 |
+
* @version 5.6.8
|
6 |
* @since 5.2.0
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/includes
|
24 |
/**
|
25 |
* Constructor.
|
26 |
*
|
27 |
+
* @version 5.6.8
|
28 |
* @since 2.8.0
|
29 |
*/
|
30 |
public function __construct() {
|
41 |
'desc' => sprintf(
|
42 |
/* translators: %s: translators Added */
|
43 |
__( 'Custom roles can be added via "Add/Manage Custom Roles" tool in Booster\'s <a href="%s">General</a> module.', 'woocommerce-jetpack' ),
|
44 |
+
admin_url( wcj_admin_tab_url() . '&wcj-cat=emails_and_misc§ion=general' )
|
45 |
),
|
46 |
),
|
47 |
'user_id' => array(
|
includes/class-wcj-shipping.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Custom Shipping
|
4 |
*
|
5 |
-
* @version 5.6.
|
6 |
* @author Pluggabl LLC.
|
7 |
* @package Booster_For_WooCommerce/includes
|
8 |
*/
|
@@ -89,15 +89,15 @@ if ( ! class_exists( 'WCJ_Shipping' ) ) :
|
|
89 |
/**
|
90 |
* Add_wc_shipping_wcj_custom_w_zones_class.
|
91 |
*
|
92 |
-
* @version
|
93 |
* @since 2.5.6
|
94 |
* @param String $methods Get methods.
|
95 |
*/
|
96 |
public function add_wc_shipping_wcj_custom_w_zones_class( $methods ) {
|
97 |
-
if ( ! class_exists( '
|
98 |
$this->init_shipping_zones_class();
|
99 |
}
|
100 |
-
$methods['booster_custom_shipping_w_zones'] = '
|
101 |
return $methods;
|
102 |
}
|
103 |
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Custom Shipping
|
4 |
*
|
5 |
+
* @version 5.6.8
|
6 |
* @author Pluggabl LLC.
|
7 |
* @package Booster_For_WooCommerce/includes
|
8 |
*/
|
89 |
/**
|
90 |
* Add_wc_shipping_wcj_custom_w_zones_class.
|
91 |
*
|
92 |
+
* @version 5.6.8
|
93 |
* @since 2.5.6
|
94 |
* @param String $methods Get methods.
|
95 |
*/
|
96 |
public function add_wc_shipping_wcj_custom_w_zones_class( $methods ) {
|
97 |
+
if ( ! class_exists( 'WC_Shipping_WCJ_Custom_With_Shipping_Zones' ) ) {
|
98 |
$this->init_shipping_zones_class();
|
99 |
}
|
100 |
+
$methods['booster_custom_shipping_w_zones'] = 'WC_Shipping_WCJ_Custom_With_Shipping_Zones';
|
101 |
return $methods;
|
102 |
}
|
103 |
|
includes/class-wcj-sku.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - SKU
|
4 |
*
|
5 |
-
* @version 5.6.
|
6 |
* @author Pluggabl LLC.
|
7 |
* @package Booster_For_WooCommerce/includes
|
8 |
*/
|
@@ -82,14 +82,11 @@ if ( ! class_exists( 'WCJ_SKU' ) ) :
|
|
82 |
/**
|
83 |
* Generate_default_hashids_salt.
|
84 |
*
|
85 |
-
* @version 5.6.
|
86 |
* @since 4.7.0
|
87 |
*/
|
88 |
public function generate_default_hashids_salt() {
|
89 |
-
$wpnonce =
|
90 |
-
if ( function_exists( 'wp_verify_nonce' ) ) {
|
91 |
-
$wpnonce = isset( $_REQUEST['_wpnonce'] ) ? wp_verify_nonce( sanitize_key( isset( $_REQUEST['_wpnonce'] ) ? $_REQUEST['_wpnonce'] : '' ) ) : true;
|
92 |
-
}
|
93 |
if ( $wpnonce && isset( $_GET['page'] ) && 'wc-settings' === $_GET['page'] &&
|
94 |
isset( $_GET['tab'] ) && 'jetpack' === $_GET['tab'] &&
|
95 |
isset( $_GET['wcj-cat'] ) && 'products' === $_GET['wcj-cat'] &&
|
@@ -160,7 +157,7 @@ if ( ! class_exists( 'WCJ_SKU' ) ) :
|
|
160 |
/**
|
161 |
* Add_search_by_sku_to_frontend_posts_search.
|
162 |
*
|
163 |
-
* @version 5.6.
|
164 |
* @since 3.4.0
|
165 |
* @see https://plugins.svn.wordpress.org/search-by-sku-for-woocommerce/
|
166 |
* @param string $where defines the where.
|
@@ -182,8 +179,8 @@ if ( ! class_exists( 'WCJ_SKU' ) ) :
|
|
182 |
if ( is_admin() && is_numeric( $term ) ) {
|
183 |
$search_ids[] = $term;
|
184 |
}
|
185 |
-
$sku_to_parent_id = $wpdb->get_col( $wpdb->prepare( 'SELECT p.post_parent as post_id FROM {$wpdb->posts} as p join {$wpdb->postmeta} pm on p.ID = pm.post_id and pm.meta_key="_sku" and pm.meta_value LIKE %s where p.post_parent <> 0 group by p.post_parent', $wpdb->esc_like( wc_clean( '%' . $term . '%' ) ) ) );
|
186 |
-
$sku_to_id = $wpdb->get_col( $wpdb->prepare( "SELECT post_id FROM {$wpdb->postmeta} WHERE meta_key='_sku' AND meta_value LIKE %s;", $wpdb->esc_like( '%' . wc_clean( $term ) . '%' ) ) );
|
187 |
$search_ids = array_merge( $search_ids, $sku_to_id, $sku_to_parent_id );
|
188 |
}
|
189 |
$search_ids = array_filter( array_map( 'absint', $search_ids ) );
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - SKU
|
4 |
*
|
5 |
+
* @version 5.6.8
|
6 |
* @author Pluggabl LLC.
|
7 |
* @package Booster_For_WooCommerce/includes
|
8 |
*/
|
82 |
/**
|
83 |
* Generate_default_hashids_salt.
|
84 |
*
|
85 |
+
* @version 5.6.8
|
86 |
* @since 4.7.0
|
87 |
*/
|
88 |
public function generate_default_hashids_salt() {
|
89 |
+
$wpnonce = isset( $_REQUEST['wcj-cat-nonce'] ) ? wp_verify_nonce( sanitize_key( $_REQUEST['wcj-cat-nonce'] ), 'wcj-cat-nonce' ) : false;
|
|
|
|
|
|
|
90 |
if ( $wpnonce && isset( $_GET['page'] ) && 'wc-settings' === $_GET['page'] &&
|
91 |
isset( $_GET['tab'] ) && 'jetpack' === $_GET['tab'] &&
|
92 |
isset( $_GET['wcj-cat'] ) && 'products' === $_GET['wcj-cat'] &&
|
157 |
/**
|
158 |
* Add_search_by_sku_to_frontend_posts_search.
|
159 |
*
|
160 |
+
* @version 5.6.8
|
161 |
* @since 3.4.0
|
162 |
* @see https://plugins.svn.wordpress.org/search-by-sku-for-woocommerce/
|
163 |
* @param string $where defines the where.
|
179 |
if ( is_admin() && is_numeric( $term ) ) {
|
180 |
$search_ids[] = $term;
|
181 |
}
|
182 |
+
$sku_to_parent_id = $wpdb->get_col( $wpdb->prepare( 'SELECT p.post_parent as post_id FROM {$wpdb->posts} as p join {$wpdb->postmeta} pm on p.ID = pm.post_id and pm.meta_key="_sku" and pm.meta_value LIKE %s where p.post_parent <> 0 group by p.post_parent', $wpdb->esc_like( wc_clean( '%' . $term . '%' ) ) ) ); // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching
|
183 |
+
$sku_to_id = $wpdb->get_col( $wpdb->prepare( "SELECT post_id FROM {$wpdb->postmeta} WHERE meta_key='_sku' AND meta_value LIKE %s;", $wpdb->esc_like( '%' . wc_clean( $term ) . '%' ) ) ); // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching
|
184 |
$search_ids = array_merge( $search_ids, $sku_to_id, $sku_to_parent_id );
|
185 |
}
|
186 |
$search_ids = array_filter( array_map( 'absint', $search_ids ) );
|
includes/class-wcj-sorting.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Sorting
|
4 |
*
|
5 |
-
* @version 5.6.
|
6 |
* @author Pluggabl LLC.
|
7 |
* @package Booster_For_WooCommerce/includes
|
8 |
*/
|
@@ -298,7 +298,7 @@ if ( ! class_exists( 'WCJ_Sorting' ) ) :
|
|
298 |
* Add new sorting options to WooCommerce sorting.
|
299 |
*
|
300 |
* @param array $args Get args.
|
301 |
-
* @version 5.6.
|
302 |
*/
|
303 |
public function custom_woocommerce_get_catalog_ordering_args( $args ) {
|
304 |
// Get ordering from query string.
|
@@ -325,34 +325,34 @@ if ( ! class_exists( 'WCJ_Sorting' ) ) :
|
|
325 |
case 'title_asc':
|
326 |
$args['orderby'] = 'title';
|
327 |
$args['order'] = 'asc';
|
328 |
-
$args['meta_key'] = ''; //phpcs:ignore
|
329 |
break;
|
330 |
case 'title_desc':
|
331 |
$args['orderby'] = 'title';
|
332 |
$args['order'] = 'desc';
|
333 |
-
$args['meta_key'] = ''; //phpcs:ignore
|
334 |
break;
|
335 |
case 'sku_asc':
|
336 |
$args['orderby'] = ( 'no' === apply_filters( 'booster_option', 'no', wcj_get_option( 'wcj_sorting_by_sku_num_enabled', 'no' ) ) ) ?
|
337 |
'meta_value' : 'meta_value_num';
|
338 |
$args['order'] = 'asc';
|
339 |
-
$args['meta_key'] = '_sku'; //phpcs:ignore
|
340 |
break;
|
341 |
case 'sku_desc':
|
342 |
$args['orderby'] = ( 'no' === apply_filters( 'booster_option', 'no', wcj_get_option( 'wcj_sorting_by_sku_num_enabled', 'no' ) ) ) ?
|
343 |
'meta_value' : 'meta_value_num';
|
344 |
$args['order'] = 'desc';
|
345 |
-
$args['meta_key'] = '_sku'; //phpcs:ignore
|
346 |
break;
|
347 |
case 'stock_quantity_asc':
|
348 |
$args['orderby'] = 'meta_value_num';
|
349 |
$args['order'] = 'asc';
|
350 |
-
$args['meta_key'] = '_stock'; //phpcs:ignore
|
351 |
break;
|
352 |
case 'stock_quantity_desc':
|
353 |
$args['orderby'] = 'meta_value_num';
|
354 |
$args['order'] = 'desc';
|
355 |
-
$args['meta_key'] = '_stock'; //phpcs:ignore
|
356 |
break;
|
357 |
endswitch;
|
358 |
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Sorting
|
4 |
*
|
5 |
+
* @version 5.6.8
|
6 |
* @author Pluggabl LLC.
|
7 |
* @package Booster_For_WooCommerce/includes
|
8 |
*/
|
298 |
* Add new sorting options to WooCommerce sorting.
|
299 |
*
|
300 |
* @param array $args Get args.
|
301 |
+
* @version 5.6.8
|
302 |
*/
|
303 |
public function custom_woocommerce_get_catalog_ordering_args( $args ) {
|
304 |
// Get ordering from query string.
|
325 |
case 'title_asc':
|
326 |
$args['orderby'] = 'title';
|
327 |
$args['order'] = 'asc';
|
328 |
+
$args['meta_key'] = ''; // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_meta_key
|
329 |
break;
|
330 |
case 'title_desc':
|
331 |
$args['orderby'] = 'title';
|
332 |
$args['order'] = 'desc';
|
333 |
+
$args['meta_key'] = ''; // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_meta_key
|
334 |
break;
|
335 |
case 'sku_asc':
|
336 |
$args['orderby'] = ( 'no' === apply_filters( 'booster_option', 'no', wcj_get_option( 'wcj_sorting_by_sku_num_enabled', 'no' ) ) ) ?
|
337 |
'meta_value' : 'meta_value_num';
|
338 |
$args['order'] = 'asc';
|
339 |
+
$args['meta_key'] = '_sku'; // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_meta_key
|
340 |
break;
|
341 |
case 'sku_desc':
|
342 |
$args['orderby'] = ( 'no' === apply_filters( 'booster_option', 'no', wcj_get_option( 'wcj_sorting_by_sku_num_enabled', 'no' ) ) ) ?
|
343 |
'meta_value' : 'meta_value_num';
|
344 |
$args['order'] = 'desc';
|
345 |
+
$args['meta_key'] = '_sku'; // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_meta_key
|
346 |
break;
|
347 |
case 'stock_quantity_asc':
|
348 |
$args['orderby'] = 'meta_value_num';
|
349 |
$args['order'] = 'asc';
|
350 |
+
$args['meta_key'] = '_stock'; // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_meta_key
|
351 |
break;
|
352 |
case 'stock_quantity_desc':
|
353 |
$args['orderby'] = 'meta_value_num';
|
354 |
$args['order'] = 'desc';
|
355 |
+
$args['meta_key'] = '_stock'; // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_meta_key
|
356 |
break;
|
357 |
endswitch;
|
358 |
|
includes/class-wcj-template-editor.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Template Editor
|
4 |
*
|
5 |
-
* @version 5.6.
|
6 |
* @since 3.9.0
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/includes
|
@@ -47,7 +47,7 @@ if ( ! class_exists( 'WCJ_Template_Editor' ) ) :
|
|
47 |
/**
|
48 |
* Create_templates.
|
49 |
*
|
50 |
-
* @version 5.6.
|
51 |
* @since 3.9.0
|
52 |
* @todo [dev] also delete on "Reset settings"
|
53 |
* @param string | array $sections defines the sections.
|
@@ -55,6 +55,9 @@ if ( ! class_exists( 'WCJ_Template_Editor' ) ) :
|
|
55 |
*/
|
56 |
public function create_templates( $sections, $current_section ) {
|
57 |
if ( $this->id === $current_section ) {
|
|
|
|
|
|
|
58 |
$this->delete_dir( wcj_get_wcj_uploads_dir( 'templates' ) );
|
59 |
$templates_content = wcj_get_option( 'wcj_template_editor_templates_content', array() );
|
60 |
foreach ( wcj_get_option( 'wcj_template_editor_templates_to_edit', array() ) as $template ) {
|
@@ -63,7 +66,7 @@ if ( ! class_exists( 'WCJ_Template_Editor' ) ) :
|
|
63 |
$_template_file = $_template[ count( $_template ) - 1 ];
|
64 |
$_template_dirs = str_replace( $_template_file, '', $template );
|
65 |
$_template_path = wcj_get_wcj_uploads_dir( 'templates' . DIRECTORY_SEPARATOR . $_template_dirs ) . DIRECTORY_SEPARATOR . $_template_file;
|
66 |
-
|
67 |
}
|
68 |
}
|
69 |
}
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Template Editor
|
4 |
*
|
5 |
+
* @version 5.6.8
|
6 |
* @since 3.9.0
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/includes
|
47 |
/**
|
48 |
* Create_templates.
|
49 |
*
|
50 |
+
* @version 5.6.8
|
51 |
* @since 3.9.0
|
52 |
* @todo [dev] also delete on "Reset settings"
|
53 |
* @param string | array $sections defines the sections.
|
55 |
*/
|
56 |
public function create_templates( $sections, $current_section ) {
|
57 |
if ( $this->id === $current_section ) {
|
58 |
+
require_once ABSPATH . '/wp-admin/includes/file.php';
|
59 |
+
global $wp_filesystem;
|
60 |
+
WP_Filesystem();
|
61 |
$this->delete_dir( wcj_get_wcj_uploads_dir( 'templates' ) );
|
62 |
$templates_content = wcj_get_option( 'wcj_template_editor_templates_content', array() );
|
63 |
foreach ( wcj_get_option( 'wcj_template_editor_templates_to_edit', array() ) as $template ) {
|
66 |
$_template_file = $_template[ count( $_template ) - 1 ];
|
67 |
$_template_dirs = str_replace( $_template_file, '', $template );
|
68 |
$_template_path = wcj_get_wcj_uploads_dir( 'templates' . DIRECTORY_SEPARATOR . $_template_dirs ) . DIRECTORY_SEPARATOR . $_template_file;
|
69 |
+
$wp_filesystem->put_contents( $_template_path, $templates_content[ $template ], FS_CHMOD_FILE );
|
70 |
}
|
71 |
}
|
72 |
}
|
includes/class-wcj-track-users.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - User Tracking
|
4 |
*
|
5 |
-
* @version 5.6.
|
6 |
* @since 3.1.3
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/includes
|
@@ -118,14 +118,15 @@ if ( ! class_exists( 'WCJ_Track_Users' ) ) :
|
|
118 |
/**
|
119 |
* Track_users_update_county_stats.
|
120 |
*
|
121 |
-
* @version 5.6.
|
122 |
* @since 2.9.1
|
123 |
* @todo (maybe) `wp_nonce`
|
124 |
*/
|
125 |
public function track_users_update_county_stats() {
|
126 |
-
|
|
|
127 |
$this->track_users_generate_stats_cron( 'manual' );
|
128 |
-
wp_safe_redirect( esc_url( remove_query_arg( 'wcj_track_users_update_county_stats' ) ) );
|
129 |
exit;
|
130 |
}
|
131 |
}
|
@@ -215,7 +216,7 @@ if ( ! class_exists( 'WCJ_Track_Users' ) ) :
|
|
215 |
/**
|
216 |
* Add_http_referer_to_order.
|
217 |
*
|
218 |
-
* @version 5.6.
|
219 |
* @since 2.9.1
|
220 |
* @todo add "all orders by referer type" stats
|
221 |
* @param int $order_id defines the order_id.
|
@@ -224,7 +225,7 @@ if ( ! class_exists( 'WCJ_Track_Users' ) ) :
|
|
224 |
global $wpdb;
|
225 |
$table_name = $wpdb->prefix . 'wcj_track_users';
|
226 |
$http_referer = 'N/A';
|
227 |
-
if ( $wpdb->get_var(
|
228 |
$user_ip = ( class_exists( 'WC_Geolocation' ) ? WC_Geolocation::get_ip_address() : wcj_get_the_ip() );
|
229 |
$result = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM {$wpdb->prefix}wcj_track_users WHERE ip = %s ORDER BY time DESC", $user_ip ) ); // WPCS: db call ok and cache ok.
|
230 |
if ( $result ) {
|
@@ -237,18 +238,18 @@ if ( ! class_exists( 'WCJ_Track_Users' ) ) :
|
|
237 |
/**
|
238 |
* Maybe_delete_track_users_stats.
|
239 |
*
|
240 |
-
* @version 5.6.
|
241 |
* @since 2.9.1
|
242 |
* @todo (maybe) wp_nonce
|
243 |
*/
|
244 |
public function maybe_delete_track_users_stats() {
|
245 |
-
|
|
|
246 |
global $wpdb;
|
247 |
-
$
|
248 |
-
$wpdb->query( "DROP TABLE IF EXISTS {$wpdb->prefix}wcj_track_users" ); //phpcs:ignore.
|
249 |
delete_option( 'wcj_track_users_stats_by_country' );
|
250 |
delete_option( 'wcj_track_users_cron_time_last_run' );
|
251 |
-
wp_safe_redirect( remove_query_arg( 'wcj_delete_track_users_stats' ) );
|
252 |
exit;
|
253 |
}
|
254 |
}
|
@@ -286,7 +287,7 @@ if ( ! class_exists( 'WCJ_Track_Users' ) ) :
|
|
286 |
/**
|
287 |
* Generate_track_users_stats_by_country.
|
288 |
*
|
289 |
-
* @version 5.6.
|
290 |
* @since 2.9.1
|
291 |
* @param string | int $scope defines the scope.
|
292 |
*/
|
@@ -295,16 +296,15 @@ if ( ! class_exists( 'WCJ_Track_Users' ) ) :
|
|
295 |
$table_name = $wpdb->prefix . 'wcj_track_users';
|
296 |
switch ( $scope ) {
|
297 |
case 'all_time':
|
298 |
-
$
|
299 |
break;
|
300 |
default:
|
301 |
-
$time_expired = gmdate( 'Y-m-d H:i:s', (
|
302 |
-
$
|
303 |
break;
|
304 |
}
|
305 |
-
$totals
|
306 |
-
|
307 |
-
if ( $wpdb->get_var( "SHOW TABLES LIKE '$table_name'" ) === $table_name && ( $results ) ) { // phpcs:ignore
|
308 |
foreach ( $results as $result ) {
|
309 |
if ( ! isset( $totals[ $result->country ] ) ) {
|
310 |
$totals[ $result->country ] = 1;
|
@@ -320,7 +320,7 @@ if ( ! class_exists( 'WCJ_Track_Users' ) ) :
|
|
320 |
/**
|
321 |
* Track_users_by_country_dashboard_widget.
|
322 |
*
|
323 |
-
* @version 5.6.
|
324 |
* @since 2.9.1
|
325 |
* @todo (maybe) display all info (IP, referer etc.) on country click
|
326 |
* @todo (maybe) display stats by day and/or month
|
@@ -360,7 +360,14 @@ if ( ! class_exists( 'WCJ_Track_Users' ) ) :
|
|
360 |
}
|
361 |
}
|
362 |
echo '<p>' .
|
363 |
-
'<a class="button-primary" href="' . esc_url(
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
364 |
'onclick="return confirm(\'' . wp_kses_post( 'Are you sure?', 'woocommerce-jetpack' ) . '\')"' .
|
365 |
'>' . wp_kses_post( 'Delete all tracking data', 'woocommerce-jetpack' ) . '</a>' .
|
366 |
'</p>';
|
@@ -371,14 +378,21 @@ if ( ! class_exists( 'WCJ_Track_Users' ) ) :
|
|
371 |
echo '<p>' .
|
372 |
/* translators: %1$s, %2$s translators Added */
|
373 |
sprintf( esc_html__( 'Stats generated at %1$s. Next update is scheduled at %2$s.', 'woocommerce-jetpack' ), esc_html( $cron_last_run ), esc_html( $cron_next_schedule ) ) . ' ' .
|
374 |
-
'<a href="' . esc_url(
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
375 |
'</p>';
|
376 |
}
|
377 |
|
378 |
/**
|
379 |
* Enqueue_track_users_script.
|
380 |
*
|
381 |
-
* @version 5.6.
|
382 |
* @since 2.9.1
|
383 |
*/
|
384 |
public function enqueue_track_users_script() {
|
@@ -389,6 +403,7 @@ if ( ! class_exists( 'WCJ_Track_Users' ) ) :
|
|
389 |
array(
|
390 |
'ajax_url' => admin_url( 'admin-ajax.php' ),
|
391 |
'http_referer' => ( isset( $_SERVER['HTTP_REFERER'] ) ? sanitize_text_field( wp_unslash( $_SERVER['HTTP_REFERER'] ) ) : 'N/A' ),
|
|
|
392 |
'user_ip' => ( class_exists( 'WC_Geolocation' ) ? WC_Geolocation::get_ip_address() : wcj_get_the_ip() ),
|
393 |
)
|
394 |
);
|
@@ -397,19 +412,20 @@ if ( ! class_exists( 'WCJ_Track_Users' ) ) :
|
|
397 |
/**
|
398 |
* Track_users.
|
399 |
*
|
400 |
-
* @version 5.6.
|
401 |
* @since 2.9.1
|
402 |
* @todo (maybe) customizable `$time_expired`
|
403 |
* @todo (maybe) optionally do not track selected user roles (e.g. admin)
|
404 |
*/
|
405 |
public function track_users() {
|
406 |
-
|
|
|
407 |
die();
|
408 |
}
|
409 |
-
$user_ip = sanitize_text_field( wp_unslash( $_POST['wcj_user_ip'] ) );
|
410 |
global $wpdb;
|
411 |
$table_name = $wpdb->prefix . 'wcj_track_users';
|
412 |
-
if ( $wpdb->get_var(
|
413 |
// Create DB table.
|
414 |
$charset_collate = $wpdb->get_charset_collate();
|
415 |
$sql = "CREATE TABLE $table_name (
|
@@ -425,8 +441,8 @@ if ( ! class_exists( 'WCJ_Track_Users' ) ) :
|
|
425 |
dbDelta( $sql );
|
426 |
} else {
|
427 |
// Check if already tracked recently.
|
428 |
-
$time_expired = gmdate( 'Y-m-d H:i:s', strtotime( '-1 day',
|
429 |
-
$result = $wpdb->get_row( "SELECT * FROM $
|
430 |
if ( $result ) {
|
431 |
return;
|
432 |
}
|
@@ -437,7 +453,7 @@ if ( ! class_exists( 'WCJ_Track_Users' ) ) :
|
|
437 |
'state' => '',
|
438 |
) );
|
439 |
// HTTP referrer.
|
440 |
-
$http_referer = ( isset( $_POST['wcj_http_referer'] ) ? sanitize_text_field( wp_unslash( $_POST['wcj_http_referer'] ) ) : 'N/A' );
|
441 |
// Add row to DB table.
|
442 |
$wpdb->insert(
|
443 |
$table_name,
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - User Tracking
|
4 |
*
|
5 |
+
* @version 5.6.8
|
6 |
* @since 3.1.3
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/includes
|
118 |
/**
|
119 |
* Track_users_update_county_stats.
|
120 |
*
|
121 |
+
* @version 5.6.8
|
122 |
* @since 2.9.1
|
123 |
* @todo (maybe) `wp_nonce`
|
124 |
*/
|
125 |
public function track_users_update_county_stats() {
|
126 |
+
$wpnonce = isset( $_REQUEST['_wpnonce'] ) ? wp_verify_nonce( sanitize_key( $_REQUEST['_wpnonce'] ), 'wcj_track_users_update_county_stats' ) : false;
|
127 |
+
if ( $wpnonce && isset( $_GET['wcj_track_users_update_county_stats'] ) ) {
|
128 |
$this->track_users_generate_stats_cron( 'manual' );
|
129 |
+
wp_safe_redirect( esc_url( remove_query_arg( array( 'wcj_track_users_update_county_stats', '_wpnonce' ) ) ) );
|
130 |
exit;
|
131 |
}
|
132 |
}
|
216 |
/**
|
217 |
* Add_http_referer_to_order.
|
218 |
*
|
219 |
+
* @version 5.6.8
|
220 |
* @since 2.9.1
|
221 |
* @todo add "all orders by referer type" stats
|
222 |
* @param int $order_id defines the order_id.
|
225 |
global $wpdb;
|
226 |
$table_name = $wpdb->prefix . 'wcj_track_users';
|
227 |
$http_referer = 'N/A';
|
228 |
+
if ( $wpdb->get_var( $wpdb->prepare( 'SHOW TABLES LIKE %s', $table_name ) ) === $table_name ) {// phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching
|
229 |
$user_ip = ( class_exists( 'WC_Geolocation' ) ? WC_Geolocation::get_ip_address() : wcj_get_the_ip() );
|
230 |
$result = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM {$wpdb->prefix}wcj_track_users WHERE ip = %s ORDER BY time DESC", $user_ip ) ); // WPCS: db call ok and cache ok.
|
231 |
if ( $result ) {
|
238 |
/**
|
239 |
* Maybe_delete_track_users_stats.
|
240 |
*
|
241 |
+
* @version 5.6.8
|
242 |
* @since 2.9.1
|
243 |
* @todo (maybe) wp_nonce
|
244 |
*/
|
245 |
public function maybe_delete_track_users_stats() {
|
246 |
+
$wpnonce = isset( $_REQUEST['_wpnonce'] ) ? wp_verify_nonce( sanitize_key( $_REQUEST['_wpnonce'] ), 'wcj_delete_track_users_stats' ) : false;
|
247 |
+
if ( $wpnonce && isset( $_GET['wcj_delete_track_users_stats'] ) ) {
|
248 |
global $wpdb;
|
249 |
+
$wpdb->query( "DROP TABLE IF EXISTS {$wpdb->prefix}wcj_track_users" );// phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching, WordPress.DB.DirectDatabaseQuery.SchemaChange
|
|
|
250 |
delete_option( 'wcj_track_users_stats_by_country' );
|
251 |
delete_option( 'wcj_track_users_cron_time_last_run' );
|
252 |
+
wp_safe_redirect( remove_query_arg( array( 'wcj_delete_track_users_stats', '_wpnonce' ) ) );
|
253 |
exit;
|
254 |
}
|
255 |
}
|
287 |
/**
|
288 |
* Generate_track_users_stats_by_country.
|
289 |
*
|
290 |
+
* @version 5.6.8
|
291 |
* @since 2.9.1
|
292 |
* @param string | int $scope defines the scope.
|
293 |
*/
|
296 |
$table_name = $wpdb->prefix . 'wcj_track_users';
|
297 |
switch ( $scope ) {
|
298 |
case 'all_time':
|
299 |
+
$results = $wpdb->get_results( "SELECT * FROM {$wpdb->prefix}wcj_track_users" );// phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching
|
300 |
break;
|
301 |
default:
|
302 |
+
$time_expired = gmdate( 'Y-m-d H:i:s', ( wcj_get_timestamp_date_from_gmt() - $scope * 24 * 60 * 60 ) );
|
303 |
+
$results = $wpdb->get_results( $wpdb->prepare( "SELECT * FROM {$wpdb->prefix}wcj_track_users WHERE time > %s", $time_expired ) );// phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching
|
304 |
break;
|
305 |
}
|
306 |
+
$totals = array();
|
307 |
+
if ( $wpdb->get_var( $wpdb->prepare( 'SHOW TABLES LIKE %s', $table_name ) ) === $table_name && ( $results ) ) {// phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching
|
|
|
308 |
foreach ( $results as $result ) {
|
309 |
if ( ! isset( $totals[ $result->country ] ) ) {
|
310 |
$totals[ $result->country ] = 1;
|
320 |
/**
|
321 |
* Track_users_by_country_dashboard_widget.
|
322 |
*
|
323 |
+
* @version 5.6.8
|
324 |
* @since 2.9.1
|
325 |
* @todo (maybe) display all info (IP, referer etc.) on country click
|
326 |
* @todo (maybe) display stats by day and/or month
|
360 |
}
|
361 |
}
|
362 |
echo '<p>' .
|
363 |
+
'<a class="button-primary" href="' . esc_url(
|
364 |
+
add_query_arg(
|
365 |
+
array(
|
366 |
+
'wcj_delete_track_users_stats' => '1',
|
367 |
+
'_wpnonce' => wp_create_nonce( 'wcj_delete_track_users_stats' ),
|
368 |
+
)
|
369 |
+
)
|
370 |
+
) . '" ' .
|
371 |
'onclick="return confirm(\'' . wp_kses_post( 'Are you sure?', 'woocommerce-jetpack' ) . '\')"' .
|
372 |
'>' . wp_kses_post( 'Delete all tracking data', 'woocommerce-jetpack' ) . '</a>' .
|
373 |
'</p>';
|
378 |
echo '<p>' .
|
379 |
/* translators: %1$s, %2$s translators Added */
|
380 |
sprintf( esc_html__( 'Stats generated at %1$s. Next update is scheduled at %2$s.', 'woocommerce-jetpack' ), esc_html( $cron_last_run ), esc_html( $cron_next_schedule ) ) . ' ' .
|
381 |
+
'<a href="' . esc_url(
|
382 |
+
add_query_arg(
|
383 |
+
array(
|
384 |
+
'wcj_track_users_update_county_stats' => '1',
|
385 |
+
'_wpnonce' => wp_create_nonce( 'wcj_track_users_update_county_stats' ),
|
386 |
+
)
|
387 |
+
)
|
388 |
+
) . '">' . esc_html__( 'Update now', 'woocommerce-jetpack' ) . '</a>.' .
|
389 |
'</p>';
|
390 |
}
|
391 |
|
392 |
/**
|
393 |
* Enqueue_track_users_script.
|
394 |
*
|
395 |
+
* @version 5.6.8
|
396 |
* @since 2.9.1
|
397 |
*/
|
398 |
public function enqueue_track_users_script() {
|
403 |
array(
|
404 |
'ajax_url' => admin_url( 'admin-ajax.php' ),
|
405 |
'http_referer' => ( isset( $_SERVER['HTTP_REFERER'] ) ? sanitize_text_field( wp_unslash( $_SERVER['HTTP_REFERER'] ) ) : 'N/A' ),
|
406 |
+
'wpnonce' => wp_create_nonce( 'wcj-track-users' ),
|
407 |
'user_ip' => ( class_exists( 'WC_Geolocation' ) ? WC_Geolocation::get_ip_address() : wcj_get_the_ip() ),
|
408 |
)
|
409 |
);
|
412 |
/**
|
413 |
* Track_users.
|
414 |
*
|
415 |
+
* @version 5.6.8
|
416 |
* @since 2.9.1
|
417 |
* @todo (maybe) customizable `$time_expired`
|
418 |
* @todo (maybe) optionally do not track selected user roles (e.g. admin)
|
419 |
*/
|
420 |
public function track_users() {
|
421 |
+
$wpnonce = isset( $_REQUEST['wpnonce'] ) ? wp_verify_nonce( sanitize_key( $_REQUEST['wpnonce'] ), 'wcj-track-users' ) : false;
|
422 |
+
if ( ! $wpnonce || ! isset( $_POST['wcj_user_ip'] ) ) {
|
423 |
die();
|
424 |
}
|
425 |
+
$user_ip = sanitize_text_field( wp_unslash( $_POST['wcj_user_ip'] ) );
|
426 |
global $wpdb;
|
427 |
$table_name = $wpdb->prefix . 'wcj_track_users';
|
428 |
+
if ( $wpdb->get_var( $wpdb->prepare( 'SHOW TABLES LIKE %s', $table_name ) ) !== $table_name ) {// phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching
|
429 |
// Create DB table.
|
430 |
$charset_collate = $wpdb->get_charset_collate();
|
431 |
$sql = "CREATE TABLE $table_name (
|
441 |
dbDelta( $sql );
|
442 |
} else {
|
443 |
// Check if already tracked recently.
|
444 |
+
$time_expired = gmdate( 'Y-m-d H:i:s', strtotime( '-1 day', wcj_get_timestamp_date_from_gmt() ) );
|
445 |
+
$result = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM {$wpdb->prefix}wcj_track_users WHERE ip = %s AND time > %s", $user_ip, $time_expired ) );// phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching
|
446 |
if ( $result ) {
|
447 |
return;
|
448 |
}
|
453 |
'state' => '',
|
454 |
) );
|
455 |
// HTTP referrer.
|
456 |
+
$http_referer = ( isset( $_POST['wcj_http_referer'] ) ? sanitize_text_field( wp_unslash( $_POST['wcj_http_referer'] ) ) : 'N/A' );
|
457 |
// Add row to DB table.
|
458 |
$wpdb->insert(
|
459 |
$table_name,
|
includes/class-wcj-wpml.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - WPML
|
4 |
*
|
5 |
-
* @version 5.6.
|
6 |
* @since 2.2.0
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/includes
|
@@ -191,14 +191,15 @@ if ( ! class_exists( 'WCJ_WPML' ) ) :
|
|
191 |
/**
|
192 |
* Create_wpml_xml_file.
|
193 |
*
|
194 |
-
* @version 5.6.
|
195 |
* @since 2.4.1
|
196 |
*/
|
197 |
public function create_wpml_xml_file_tool() {
|
198 |
-
|
|
|
199 |
return;
|
200 |
}
|
201 |
-
if ( ! isset( $_GET['section'] ) || 'wpml' !== $_GET['section'] ) {
|
202 |
return;
|
203 |
}
|
204 |
$this->create_wpml_xml_file();
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - WPML
|
4 |
*
|
5 |
+
* @version 5.6.8
|
6 |
* @since 2.2.0
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/includes
|
191 |
/**
|
192 |
* Create_wpml_xml_file.
|
193 |
*
|
194 |
+
* @version 5.6.8
|
195 |
* @since 2.4.1
|
196 |
*/
|
197 |
public function create_wpml_xml_file_tool() {
|
198 |
+
$wpnonce = isset( $_REQUEST['wcj-cat-nonce'] ) ? wp_verify_nonce( sanitize_key( $_REQUEST['wcj-cat-nonce'] ), 'wcj-cat-nonce' ) : false;
|
199 |
+
if ( ! $wpnonce || ! isset( $_GET['create_wpml_xml_file'] ) || ! wcj_is_user_role( 'administrator' ) ) {
|
200 |
return;
|
201 |
}
|
202 |
+
if ( ! isset( $_GET['section'] ) || 'wpml' !== $_GET['section'] ) {
|
203 |
return;
|
204 |
}
|
205 |
$this->create_wpml_xml_file();
|
includes/classes/class-wcj-dummy-term.php
ADDED
@@ -0,0 +1,37 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Booster for WooCommerce - Dummy Term
|
4 |
+
*
|
5 |
+
* @version 5.6.8
|
6 |
+
* @since 2.6.0
|
7 |
+
* @author Pluggabl LLC.
|
8 |
+
* @package Booster_For_WooCommerce/classes
|
9 |
+
*/
|
10 |
+
|
11 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
12 |
+
exit;
|
13 |
+
}
|
14 |
+
|
15 |
+
if ( ! class_exists( 'WCJ_Dummy_Term' ) ) {
|
16 |
+
/**
|
17 |
+
* WCJ_Dummy_Term class.
|
18 |
+
*
|
19 |
+
* @version 5.6.8
|
20 |
+
* @since 2.6.0
|
21 |
+
*/
|
22 |
+
class WCJ_Dummy_Term {
|
23 |
+
/**
|
24 |
+
* Term_id class.
|
25 |
+
*
|
26 |
+
* @var term_id.
|
27 |
+
*/
|
28 |
+
|
29 |
+
public $term_id;
|
30 |
+
/**
|
31 |
+
* Constructor.
|
32 |
+
*/
|
33 |
+
public function __construct() {
|
34 |
+
$this->term_id = 0;
|
35 |
+
}
|
36 |
+
}
|
37 |
+
}
|
includes/classes/class-wcj-invoice.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce Invoice
|
4 |
*
|
5 |
-
* @version 5.6.
|
6 |
* @author Pluggabl LLC.
|
7 |
* @package Booster_For_WooCommerce/classes
|
8 |
*/
|
@@ -68,7 +68,7 @@ if ( ! class_exists( 'WCJ_Invoice' ) ) :
|
|
68 |
/**
|
69 |
* Create.
|
70 |
*
|
71 |
-
* @version 5.6.
|
72 |
* @todo use mysql transaction enabled (as in "wcj_order_number_use_mysql_transaction_enabled")
|
73 |
* @todo used get_option instead wcj_get_option to get current numbering_counter.
|
74 |
* @param number $date get date.
|
@@ -89,7 +89,7 @@ if ( ! class_exists( 'WCJ_Invoice' ) ) :
|
|
89 |
} else {
|
90 |
$the_invoice_number = $order_id;
|
91 |
}
|
92 |
-
$the_date = ( '' === $date ) ? (string)
|
93 |
update_post_meta( $order_id, '_wcj_invoicing_' . $invoice_type . '_number_id', $the_invoice_number );
|
94 |
update_post_meta( $order_id, '_wcj_invoicing_' . $invoice_type . '_date', $the_date );
|
95 |
}
|
2 |
/**
|
3 |
* Booster for WooCommerce Invoice
|
4 |
*
|
5 |
+
* @version 5.6.8
|
6 |
* @author Pluggabl LLC.
|
7 |
* @package Booster_For_WooCommerce/classes
|
8 |
*/
|
68 |
/**
|
69 |
* Create.
|
70 |
*
|
71 |
+
* @version 5.6.8
|
72 |
* @todo use mysql transaction enabled (as in "wcj_order_number_use_mysql_transaction_enabled")
|
73 |
* @todo used get_option instead wcj_get_option to get current numbering_counter.
|
74 |
* @param number $date get date.
|
89 |
} else {
|
90 |
$the_invoice_number = $order_id;
|
91 |
}
|
92 |
+
$the_date = ( '' === $date ) ? (string) wcj_get_timestamp_date_from_gmt() : $date;
|
93 |
update_post_meta( $order_id, '_wcj_invoicing_' . $invoice_type . '_number_id', $the_invoice_number );
|
94 |
update_post_meta( $order_id, '_wcj_invoicing_' . $invoice_type . '_date', $the_date );
|
95 |
}
|
includes/classes/class-wcj-module.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce Module
|
4 |
*
|
5 |
-
* @version 5.6.
|
6 |
* @since 2.2.0
|
7 |
* @author Pluggabl LLC.
|
8 |
* @todo [dev] maybe should be `abstract` ?
|
@@ -505,15 +505,13 @@ if ( ! class_exists( 'WCJ_Module' ) ) :
|
|
505 |
/**
|
506 |
* Admin_notices.
|
507 |
*
|
508 |
-
* @version 5.6.
|
509 |
* @since 2.5.3
|
510 |
*/
|
511 |
public function admin_notices() {
|
512 |
-
$
|
513 |
-
|
514 |
-
|
515 |
-
}
|
516 |
-
if ( ! $wpnonce || ! isset( $_GET[ 'wcj_' . $this->id . '_admin_notice' ] ) ) {
|
517 |
return;
|
518 |
}
|
519 |
echo '<div class="error"><p><div class="message">' . wp_kses_post( $this->get_the_notice() ) . '</div></p></div>';
|
@@ -834,12 +832,12 @@ if ( ! class_exists( 'WCJ_Module' ) ) :
|
|
834 |
/**
|
835 |
* Get_back_to_settings_link_html.
|
836 |
*
|
837 |
-
* @version
|
838 |
* @since 2.2.3
|
839 |
*/
|
840 |
public function get_back_to_settings_link_html() {
|
841 |
$cat_id = $this->get_cat_by_section( $this->id );
|
842 |
-
$the_link = admin_url( '
|
843 |
return '<a href="' . $the_link . '"><< ' . __( 'Back to Module Settings', 'woocommerce-jetpack' ) . '</a>';
|
844 |
}
|
845 |
|
2 |
/**
|
3 |
* Booster for WooCommerce Module
|
4 |
*
|
5 |
+
* @version 5.6.8
|
6 |
* @since 2.2.0
|
7 |
* @author Pluggabl LLC.
|
8 |
* @todo [dev] maybe should be `abstract` ?
|
505 |
/**
|
506 |
* Admin_notices.
|
507 |
*
|
508 |
+
* @version 5.6.8
|
509 |
* @since 2.5.3
|
510 |
*/
|
511 |
public function admin_notices() {
|
512 |
+
$_get = array();
|
513 |
+
parse_str( isset( $_SERVER['QUERY_STRING'] ) ? sanitize_text_field( wp_unslash( $_SERVER['QUERY_STRING'] ) ) : '', $_get );
|
514 |
+
if ( ! $wpnonce || ! isset( $_get[ 'wcj_' . $this->id . '_admin_notice' ] ) ) {
|
|
|
|
|
515 |
return;
|
516 |
}
|
517 |
echo '<div class="error"><p><div class="message">' . wp_kses_post( $this->get_the_notice() ) . '</div></p></div>';
|
832 |
/**
|
833 |
* Get_back_to_settings_link_html.
|
834 |
*
|
835 |
+
* @version 5.6.8
|
836 |
* @since 2.2.3
|
837 |
*/
|
838 |
public function get_back_to_settings_link_html() {
|
839 |
$cat_id = $this->get_cat_by_section( $this->id );
|
840 |
+
$the_link = admin_url( wcj_admin_tab_url() . '&wcj-cat=' . $cat_id . '§ion=' . $this->id );
|
841 |
return '<a href="' . $the_link . '"><< ' . __( 'Back to Module Settings', 'woocommerce-jetpack' ) . '</a>';
|
842 |
}
|
843 |
|
includes/core/class-wcj-admin.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Core - Admin
|
4 |
*
|
5 |
-
* @version 5.6.
|
6 |
* @since 3.2.4
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/core
|
@@ -84,13 +84,13 @@ if ( ! class_exists( 'WCJ_Admin' ) ) :
|
|
84 |
/**
|
85 |
* Admin_footer_text
|
86 |
*
|
87 |
-
* @version 5.6.
|
88 |
* @param string $footer_text get admin footer texts.
|
89 |
*/
|
90 |
public function admin_footer_text( $footer_text ) {
|
91 |
-
|
92 |
-
|
93 |
-
if ( 'wcj-tools' === $_GET['page'] || ( 'wc-settings' === $_GET['page'] && isset( $_GET['tab'] ) && 'jetpack' === $_GET['tab'] ) ) {
|
94 |
?>
|
95 |
<div class="wclj_tl_foot">
|
96 |
<div class="wcj-footer">
|
@@ -116,7 +116,7 @@ if ( ! class_exists( 'WCJ_Admin' ) ) :
|
|
116 |
/**
|
117 |
* Add menu item
|
118 |
*
|
119 |
-
* @version
|
120 |
*/
|
121 |
public function booster_menu() {
|
122 |
add_submenu_page(
|
@@ -124,7 +124,7 @@ if ( ! class_exists( 'WCJ_Admin' ) ) :
|
|
124 |
__( 'Booster for WooCommerce', 'woocommerce-jetpack' ),
|
125 |
__( 'Booster Settings', 'woocommerce-jetpack' ),
|
126 |
( 'yes' === wcj_get_option( 'wcj_admin_tools_enabled', 'no' ) && 'yes' === wcj_get_option( 'wcj_admin_tools_show_menus_to_admin_only', 'no' ) ? 'manage_options' : 'manage_woocommerce' ),
|
127 |
-
|
128 |
);
|
129 |
}
|
130 |
|
@@ -137,7 +137,7 @@ if ( ! class_exists( 'WCJ_Admin' ) ) :
|
|
137 |
*/
|
138 |
public function action_links( $links ) {
|
139 |
$custom_links = array(
|
140 |
-
'<a href="' . admin_url(
|
141 |
'<a href="' . esc_url( 'https://booster.io/' ) . '">' . __( 'Docs', 'woocommerce-jetpack' ) . '</a>',
|
142 |
);
|
143 |
if ( 'woocommerce-jetpack.php' === basename( WCJ_FREE_PLUGIN_FILE ) ) {
|
2 |
/**
|
3 |
* Booster for WooCommerce - Core - Admin
|
4 |
*
|
5 |
+
* @version 5.6.8
|
6 |
* @since 3.2.4
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/core
|
84 |
/**
|
85 |
* Admin_footer_text
|
86 |
*
|
87 |
+
* @version 5.6.8
|
88 |
* @param string $footer_text get admin footer texts.
|
89 |
*/
|
90 |
public function admin_footer_text( $footer_text ) {
|
91 |
+
if ( isset( $_GET['page'] ) ) {
|
92 |
+
$wpnonce = isset( $_REQUEST['wcj-cat-nonce'] ) ? wp_verify_nonce( sanitize_key( $_REQUEST['wcj-cat-nonce'] ), 'wcj-cat-nonce' ) : false;
|
93 |
+
if ( 'wcj-tools' === $_GET['page'] || ( $wpnonce && 'wc-settings' === $_GET['page'] && isset( $_GET['tab'] ) && 'jetpack' === $_GET['tab'] ) ) {
|
94 |
?>
|
95 |
<div class="wclj_tl_foot">
|
96 |
<div class="wcj-footer">
|
116 |
/**
|
117 |
* Add menu item
|
118 |
*
|
119 |
+
* @version 5.6.8
|
120 |
*/
|
121 |
public function booster_menu() {
|
122 |
add_submenu_page(
|
124 |
__( 'Booster for WooCommerce', 'woocommerce-jetpack' ),
|
125 |
__( 'Booster Settings', 'woocommerce-jetpack' ),
|
126 |
( 'yes' === wcj_get_option( 'wcj_admin_tools_enabled', 'no' ) && 'yes' === wcj_get_option( 'wcj_admin_tools_show_menus_to_admin_only', 'no' ) ? 'manage_options' : 'manage_woocommerce' ),
|
127 |
+
wcj_admin_tab_url()
|
128 |
);
|
129 |
}
|
130 |
|
137 |
*/
|
138 |
public function action_links( $links ) {
|
139 |
$custom_links = array(
|
140 |
+
'<a href="' . admin_url( wcj_admin_tab_url() ) . '">' . __( 'Settings', 'woocommerce' ) . '</a>',
|
141 |
'<a href="' . esc_url( 'https://booster.io/' ) . '">' . __( 'Docs', 'woocommerce-jetpack' ) . '</a>',
|
142 |
);
|
143 |
if ( 'woocommerce-jetpack.php' === basename( WCJ_FREE_PLUGIN_FILE ) ) {
|
includes/css/wcj-admin.css
CHANGED
@@ -1,7 +1,7 @@
|
|
1 |
/**
|
2 |
* wcj-admin.
|
3 |
*
|
4 |
-
* @version 5.6.
|
5 |
* @since 2.5.3
|
6 |
*/
|
7 |
|
@@ -318,3 +318,7 @@ img.wcj-rocket-icon:hover {
|
|
318 |
#order_data .order_data_column p {
|
319 |
word-break: break-word;
|
320 |
}
|
|
|
|
|
|
|
|
1 |
/**
|
2 |
* wcj-admin.
|
3 |
*
|
4 |
+
* @version 5.6.8
|
5 |
* @since 2.5.3
|
6 |
*/
|
7 |
|
318 |
#order_data .order_data_column p {
|
319 |
word-break: break-word;
|
320 |
}
|
321 |
+
|
322 |
+
.wcj-row td {
|
323 |
+
line-break: anywhere;
|
324 |
+
}
|
includes/exchange-rates/class-wcj-exchange-rates.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce Exchange Rates
|
4 |
*
|
5 |
-
* @version 5.6.
|
6 |
* @author Pluggabl LLC.
|
7 |
* @package Booster_For_WooCommerce/includes
|
8 |
*/
|
@@ -52,7 +52,7 @@ if ( ! class_exists( 'WCJ_Exchange_Rates' ) ) :
|
|
52 |
/**
|
53 |
* Register_script.
|
54 |
*
|
55 |
-
* @version 5.6.
|
56 |
*/
|
57 |
public function register_script() {
|
58 |
if (
|
@@ -77,6 +77,7 @@ if ( ! class_exists( 'WCJ_Exchange_Rates' ) ) :
|
|
77 |
'ajax_object',
|
78 |
array(
|
79 |
'ajax_url' => admin_url( 'admin-ajax.php' ),
|
|
|
80 |
)
|
81 |
);
|
82 |
}
|
2 |
/**
|
3 |
* Booster for WooCommerce Exchange Rates
|
4 |
*
|
5 |
+
* @version 5.6.8
|
6 |
* @author Pluggabl LLC.
|
7 |
* @package Booster_For_WooCommerce/includes
|
8 |
*/
|
52 |
/**
|
53 |
* Register_script.
|
54 |
*
|
55 |
+
* @version 5.6.8
|
56 |
*/
|
57 |
public function register_script() {
|
58 |
if (
|
77 |
'ajax_object',
|
78 |
array(
|
79 |
'ajax_url' => admin_url( 'admin-ajax.php' ),
|
80 |
+
'wpnonce' => wp_create_nonce( 'ajax-nonce' ),
|
81 |
)
|
82 |
);
|
83 |
}
|
includes/export/class-wcj-exporter-orders.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce Exporter Orders
|
4 |
*
|
5 |
-
* @version 5.6.
|
6 |
* @since 2.5.9
|
7 |
* @author Pluggabl LLC.
|
8 |
* @todo filter export by date
|
@@ -218,17 +218,14 @@ if ( ! class_exists( 'WCJ_Exporter_Orders' ) ) :
|
|
218 |
/**
|
219 |
* Export_orders.
|
220 |
*
|
221 |
-
* @version 5.6.
|
222 |
* @since 2.4.8
|
223 |
* @param object $fields_helper defines the fields helper.
|
224 |
*
|
225 |
* @todo (maybe) metainfo as separate column
|
226 |
*/
|
227 |
public function export_orders( $fields_helper ) {
|
228 |
-
$wpnonce =
|
229 |
-
if ( function_exists( 'wp_verify_nonce' ) ) {
|
230 |
-
$wpnonce = isset( $_REQUEST['_wpnonce'] ) ? wp_verify_nonce( sanitize_key( isset( $_REQUEST['_wpnonce'] ) ? $_REQUEST['_wpnonce'] : '' ) ) : true;
|
231 |
-
}
|
232 |
// Standard Fields.
|
233 |
$all_fields = $fields_helper->get_order_export_fields();
|
234 |
$fields_ids = wcj_get_option( 'wcj_export_orders_fields', $fields_helper->get_order_export_default_fields_ids() );
|
@@ -341,15 +338,12 @@ if ( ! class_exists( 'WCJ_Exporter_Orders' ) ) :
|
|
341 |
/**
|
342 |
* Export_orders_items.
|
343 |
*
|
344 |
-
* @version 5.6.
|
345 |
* @since 2.5.9
|
346 |
* @param object $fields_helper defines the fields helper.
|
347 |
*/
|
348 |
public function export_orders_items( $fields_helper ) {
|
349 |
-
$wpnonce =
|
350 |
-
if ( function_exists( 'wp_verify_nonce' ) ) {
|
351 |
-
$wpnonce = isset( $_REQUEST['_wpnonce'] ) ? wp_verify_nonce( sanitize_key( isset( $_REQUEST['_wpnonce'] ) ? $_REQUEST['_wpnonce'] : '' ) ) : true;
|
352 |
-
}
|
353 |
// Standard Fields.
|
354 |
$all_fields = $fields_helper->get_order_items_export_fields();
|
355 |
$fields_ids = apply_filters( 'wcj_export_orders_items_fields', wcj_get_option( 'wcj_export_orders_items_fields', $fields_helper->get_order_items_export_default_fields_ids() ) );
|
2 |
/**
|
3 |
* Booster for WooCommerce Exporter Orders
|
4 |
*
|
5 |
+
* @version 5.6.8
|
6 |
* @since 2.5.9
|
7 |
* @author Pluggabl LLC.
|
8 |
* @todo filter export by date
|
218 |
/**
|
219 |
* Export_orders.
|
220 |
*
|
221 |
+
* @version 5.6.8
|
222 |
* @since 2.4.8
|
223 |
* @param object $fields_helper defines the fields helper.
|
224 |
*
|
225 |
* @todo (maybe) metainfo as separate column
|
226 |
*/
|
227 |
public function export_orders( $fields_helper ) {
|
228 |
+
$wpnonce = isset( $_REQUEST['wcj_tools_nonce'] ) ? wp_verify_nonce( sanitize_key( $_REQUEST['wcj_tools_nonce'] ), 'wcj_tools' ) : false;
|
|
|
|
|
|
|
229 |
// Standard Fields.
|
230 |
$all_fields = $fields_helper->get_order_export_fields();
|
231 |
$fields_ids = wcj_get_option( 'wcj_export_orders_fields', $fields_helper->get_order_export_default_fields_ids() );
|
338 |
/**
|
339 |
* Export_orders_items.
|
340 |
*
|
341 |
+
* @version 5.6.8
|
342 |
* @since 2.5.9
|
343 |
* @param object $fields_helper defines the fields helper.
|
344 |
*/
|
345 |
public function export_orders_items( $fields_helper ) {
|
346 |
+
$wpnonce = isset( $_REQUEST['wcj_tools_nonce'] ) ? wp_verify_nonce( sanitize_key( $_REQUEST['wcj_tools_nonce'] ), 'wcj_tools' ) : false;
|
|
|
|
|
|
|
347 |
// Standard Fields.
|
348 |
$all_fields = $fields_helper->get_order_items_export_fields();
|
349 |
$fields_ids = apply_filters( 'wcj_export_orders_items_fields', wcj_get_option( 'wcj_export_orders_items_fields', $fields_helper->get_order_items_export_default_fields_ids() ) );
|
includes/functions/wcj-functions-admin.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Functions - Admin
|
4 |
*
|
5 |
-
* @version 5.6.
|
6 |
* @since 2.9.0
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/functions
|
@@ -22,7 +22,7 @@ if ( ! function_exists( 'wcj_get_module_settings_admin_url' ) ) {
|
|
22 |
* @param int $module_id defines the module_id.
|
23 |
*/
|
24 |
function wcj_get_module_settings_admin_url( $module_id ) {
|
25 |
-
return admin_url( '
|
26 |
}
|
27 |
}
|
28 |
|
@@ -91,24 +91,22 @@ if ( ! function_exists( 'wcj_is_admin_product_edit_page' ) ) {
|
|
91 |
/**
|
92 |
* Wcj_is_admin_product_edit_page.
|
93 |
*
|
94 |
-
* @version 5.6.
|
95 |
* @since 3.2.4
|
96 |
* @todo use where appropriate
|
97 |
* @todo (maybe) move to `wcj-functions-conditional.php`
|
98 |
*/
|
99 |
function wcj_is_admin_product_edit_page() {
|
100 |
global $pagenow;
|
101 |
-
|
102 |
-
if (
|
103 |
-
$wpnonce = isset( $_REQUEST['_wpnonce'] ) ? wp_verify_nonce( sanitize_key( isset( $_REQUEST['_wpnonce'] ) ? $_REQUEST['_wpnonce'] : '' ) ) : true;
|
104 |
-
}
|
105 |
-
if ( $wpnonce && is_admin() && 'post.php' === $pagenow && isset( $_GET['action'] ) && 'edit' === $_GET['action'] && 'product' === get_post_type() ) {
|
106 |
return true;
|
107 |
} elseif ( is_admin() && defined( 'DOING_AJAX' ) && DOING_AJAX && isset( $_REQUEST['action'] ) && 'woocommerce_load_variations' === $_REQUEST['action'] ) {
|
108 |
return true;
|
109 |
} else {
|
110 |
return false;
|
111 |
}
|
|
|
112 |
}
|
113 |
}
|
114 |
|
2 |
/**
|
3 |
* Booster for WooCommerce - Functions - Admin
|
4 |
*
|
5 |
+
* @version 5.6.8
|
6 |
* @since 2.9.0
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/functions
|
22 |
* @param int $module_id defines the module_id.
|
23 |
*/
|
24 |
function wcj_get_module_settings_admin_url( $module_id ) {
|
25 |
+
return admin_url( wcj_admin_tab_url() . '&wcj-cat=' . wcj_get_module_category( $module_id ) . '§ion=' . $module_id );
|
26 |
}
|
27 |
}
|
28 |
|
91 |
/**
|
92 |
* Wcj_is_admin_product_edit_page.
|
93 |
*
|
94 |
+
* @version 5.6.8
|
95 |
* @since 3.2.4
|
96 |
* @todo use where appropriate
|
97 |
* @todo (maybe) move to `wcj-functions-conditional.php`
|
98 |
*/
|
99 |
function wcj_is_admin_product_edit_page() {
|
100 |
global $pagenow;
|
101 |
+
// phpcs:disable WordPress.Security.NonceVerification
|
102 |
+
if ( is_admin() && 'post.php' === $pagenow && isset( $_GET['action'] ) && 'edit' === $_GET['action'] && 'product' === get_post_type() ) {
|
|
|
|
|
|
|
103 |
return true;
|
104 |
} elseif ( is_admin() && defined( 'DOING_AJAX' ) && DOING_AJAX && isset( $_REQUEST['action'] ) && 'woocommerce_load_variations' === $_REQUEST['action'] ) {
|
105 |
return true;
|
106 |
} else {
|
107 |
return false;
|
108 |
}
|
109 |
+
// phpcs:enable WordPress.Security.NonceVerification
|
110 |
}
|
111 |
}
|
112 |
|
includes/functions/wcj-functions-date-time.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Functions - Date and Time
|
4 |
*
|
5 |
-
* @version 5.6.
|
6 |
* @since 2.9.0
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/functions
|
@@ -81,7 +81,7 @@ if ( ! function_exists( 'wcj_check_date' ) ) {
|
|
81 |
/**
|
82 |
* Wcj_check_date.
|
83 |
*
|
84 |
-
* @version 5.6.
|
85 |
* @since 2.9.1
|
86 |
* @param string $_date defines the _date.
|
87 |
* @param array $args defines the args.
|
@@ -89,7 +89,7 @@ if ( ! function_exists( 'wcj_check_date' ) ) {
|
|
89 |
function wcj_check_date( $_date, $args = array() ) {
|
90 |
|
91 |
if ( empty( $args ) ) {
|
92 |
-
$time_now = (
|
93 |
$args['day_now'] = intval( gmdate( 'j', $time_now ) );
|
94 |
}
|
95 |
$_date = explode( ',', $_date );
|
@@ -173,14 +173,14 @@ if ( ! function_exists( 'wcj_check_time' ) ) {
|
|
173 |
/**
|
174 |
* Wcj_check_time.
|
175 |
*
|
176 |
-
* @version 5.6.
|
177 |
* @since 2.8.0
|
178 |
* @param string $_time defines the _time.
|
179 |
* @param array $args defines the args.
|
180 |
*/
|
181 |
function wcj_check_time( $_time, $args = array() ) {
|
182 |
if ( empty( $args ) ) {
|
183 |
-
$time_now = (
|
184 |
$args['hours_now'] = intval( gmdate( 'H', $time_now ) );
|
185 |
$args['minutes_now'] = intval( gmdate( 'i', $time_now ) );
|
186 |
}
|
@@ -318,3 +318,35 @@ if ( ! function_exists( 'wcj_pretty_utc_date' ) ) {
|
|
318 |
return date_i18n( $format, $seconds_since_local_1_jan_1970 );
|
319 |
}
|
320 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Functions - Date and Time
|
4 |
*
|
5 |
+
* @version 5.6.8
|
6 |
* @since 2.9.0
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/functions
|
81 |
/**
|
82 |
* Wcj_check_date.
|
83 |
*
|
84 |
+
* @version 5.6.8
|
85 |
* @since 2.9.1
|
86 |
* @param string $_date defines the _date.
|
87 |
* @param array $args defines the args.
|
89 |
function wcj_check_date( $_date, $args = array() ) {
|
90 |
|
91 |
if ( empty( $args ) ) {
|
92 |
+
$time_now = wcj_get_timestamp_date_from_gmt();
|
93 |
$args['day_now'] = intval( gmdate( 'j', $time_now ) );
|
94 |
}
|
95 |
$_date = explode( ',', $_date );
|
173 |
/**
|
174 |
* Wcj_check_time.
|
175 |
*
|
176 |
+
* @version 5.6.8
|
177 |
* @since 2.8.0
|
178 |
* @param string $_time defines the _time.
|
179 |
* @param array $args defines the args.
|
180 |
*/
|
181 |
function wcj_check_time( $_time, $args = array() ) {
|
182 |
if ( empty( $args ) ) {
|
183 |
+
$time_now = wcj_get_timestamp_date_from_gmt();
|
184 |
$args['hours_now'] = intval( gmdate( 'H', $time_now ) );
|
185 |
$args['minutes_now'] = intval( gmdate( 'i', $time_now ) );
|
186 |
}
|
318 |
return date_i18n( $format, $seconds_since_local_1_jan_1970 );
|
319 |
}
|
320 |
}
|
321 |
+
|
322 |
+
if ( ! function_exists( 'wcj_get_date_from_gmt' ) ) {
|
323 |
+
/**
|
324 |
+
* Get date from gmt time.
|
325 |
+
*
|
326 |
+
* @version 5.6.8
|
327 |
+
* @since 5.6.8
|
328 |
+
*
|
329 |
+
* @param string $format get date from gmt.
|
330 |
+
* @return string
|
331 |
+
*/
|
332 |
+
function wcj_get_date_from_gmt( $format = 'Y-m-d H:i:s' ) {
|
333 |
+
return get_date_from_gmt( gmdate( $format ), $format );
|
334 |
+
}
|
335 |
+
}
|
336 |
+
|
337 |
+
|
338 |
+
|
339 |
+
if ( ! function_exists( 'wcj_get_timestamp_date_from_gmt' ) ) {
|
340 |
+
/**
|
341 |
+
* Get timestamp date from gmt time.
|
342 |
+
*
|
343 |
+
* @version 5.6.8
|
344 |
+
* @since 5.6.8
|
345 |
+
*
|
346 |
+
* @param string $format get date from gmt.
|
347 |
+
* @return string
|
348 |
+
*/
|
349 |
+
function wcj_get_timestamp_date_from_gmt( $format = 'Y-m-d H:i:s' ) {
|
350 |
+
return strtotime( wcj_get_date_from_gmt() );
|
351 |
+
}
|
352 |
+
}
|
includes/functions/wcj-functions-eu-vat.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Functions - EU VAT
|
4 |
*
|
5 |
-
* @version 5.6.
|
6 |
* @since 2.9.0
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/functions
|
@@ -16,7 +16,7 @@ if ( ! function_exists( 'wcj_validate_vat_no_soap' ) ) {
|
|
16 |
/**
|
17 |
* Wcj_validate_vat_no_soap.
|
18 |
*
|
19 |
-
* @version 5.6.
|
20 |
* @since 2.5.7
|
21 |
* @return mixed: bool on successful checking (can be true or false), null otherwise
|
22 |
* @param string $country_code defines the country_code.
|
@@ -25,20 +25,22 @@ if ( ! function_exists( 'wcj_validate_vat_no_soap' ) ) {
|
|
25 |
*/
|
26 |
function wcj_validate_vat_no_soap( $country_code, $vat_number, $method ) {
|
27 |
$country_code = strtoupper( $country_code );
|
28 |
-
$api_url =
|
29 |
add_query_arg(
|
30 |
array(
|
31 |
-
'
|
32 |
-
'
|
33 |
-
'locale' => 'en',
|
34 |
),
|
35 |
-
'
|
36 |
)
|
37 |
);
|
38 |
switch ( $method ) {
|
39 |
case 'file_get_contents':
|
40 |
if ( ini_get( 'allow_url_fopen' ) ) {
|
41 |
-
|
|
|
|
|
|
|
42 |
} else {
|
43 |
return null;
|
44 |
}
|
@@ -55,7 +57,13 @@ if ( ! function_exists( 'wcj_validate_vat_no_soap' ) ) {
|
|
55 |
if ( false === $response ) {
|
56 |
return null;
|
57 |
}
|
58 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
59 |
}
|
60 |
}
|
61 |
|
2 |
/**
|
3 |
* Booster for WooCommerce - Functions - EU VAT
|
4 |
*
|
5 |
+
* @version 5.6.8
|
6 |
* @since 2.9.0
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/functions
|
16 |
/**
|
17 |
* Wcj_validate_vat_no_soap.
|
18 |
*
|
19 |
+
* @version 5.6.8
|
20 |
* @since 2.5.7
|
21 |
* @return mixed: bool on successful checking (can be true or false), null otherwise
|
22 |
* @param string $country_code defines the country_code.
|
25 |
*/
|
26 |
function wcj_validate_vat_no_soap( $country_code, $vat_number, $method ) {
|
27 |
$country_code = strtoupper( $country_code );
|
28 |
+
$api_url = esc_url_raw(
|
29 |
add_query_arg(
|
30 |
array(
|
31 |
+
'requesterMemberStateCode' => $country_code,
|
32 |
+
'requesterNumber' => $vat_number,
|
|
|
33 |
),
|
34 |
+
'https://ec.europa.eu/taxation_customs/vies/rest-api/ms/' . $country_code . '/vat/' . $vat_number
|
35 |
)
|
36 |
);
|
37 |
switch ( $method ) {
|
38 |
case 'file_get_contents':
|
39 |
if ( ini_get( 'allow_url_fopen' ) ) {
|
40 |
+
require_once ABSPATH . '/wp-admin/includes/file.php';
|
41 |
+
global $wp_filesystem;
|
42 |
+
WP_Filesystem();
|
43 |
+
$response = $wp_filesystem->get_contents( $api_url );
|
44 |
} else {
|
45 |
return null;
|
46 |
}
|
57 |
if ( false === $response ) {
|
58 |
return null;
|
59 |
}
|
60 |
+
$response = json_decode( $response );
|
61 |
+
$is_valid = 'isValid';
|
62 |
+
if ( $response->$is_valid ) {
|
63 |
+
return true;
|
64 |
+
} else {
|
65 |
+
return null;
|
66 |
+
}
|
67 |
}
|
68 |
}
|
69 |
|
includes/functions/wcj-functions-general.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Functions - General
|
4 |
*
|
5 |
-
* @version 5.6.
|
6 |
* @author Pluggabl LLC.
|
7 |
* @todo add `wcj_add_actions()` and `wcj_add_filters()`
|
8 |
* @package Booster_For_WooCommerce/functions
|
@@ -436,15 +436,12 @@ if ( ! function_exists( 'wcj_maybe_add_date_query' ) ) {
|
|
436 |
/**
|
437 |
* Wcj_maybe_add_date_query.
|
438 |
*
|
439 |
-
* @version 5.6.
|
440 |
* @since 3.0.0
|
441 |
* @param array $args defines the args.
|
442 |
*/
|
443 |
function wcj_maybe_add_date_query( $args ) {
|
444 |
-
$wpnonce =
|
445 |
-
if ( function_exists( 'wp_verify_nonce' ) ) {
|
446 |
-
$wpnonce = isset( $_REQUEST['_wpnonce'] ) ? wp_verify_nonce( sanitize_key( isset( $_REQUEST['_wpnonce'] ) ? $_REQUEST['_wpnonce'] : '' ), 'woocommerce-settings' ) : true;
|
447 |
-
}
|
448 |
if ( ( $wpnonce && isset( $_GET['start_date'] ) && '' !== $_GET['start_date'] ) || ( isset( $_GET['end_date'] ) && '' !== $_GET['end_date'] ) ) {
|
449 |
$date_query = array();
|
450 |
$date_query['inclusive'] = true;
|
@@ -1035,7 +1032,7 @@ if ( ! function_exists( 'wcj_add_allowed_html' ) ) {
|
|
1035 |
/**
|
1036 |
* Wcj_add_allowed_html.
|
1037 |
*
|
1038 |
-
* @version 5.6.
|
1039 |
* @since 5.6.0
|
1040 |
* @param array $allowed_html to get default allowed html.
|
1041 |
* @param string $context to get default context.
|
@@ -1077,15 +1074,16 @@ if ( ! function_exists( 'wcj_add_allowed_html' ) ) {
|
|
1077 |
'data-*' => true,
|
1078 |
),
|
1079 |
'textarea' => array(
|
1080 |
-
'name'
|
1081 |
-
'value'
|
1082 |
-
'id'
|
1083 |
-
'class'
|
1084 |
-
'style'
|
1085 |
-
'placeholder'
|
1086 |
-
'required'
|
1087 |
-
'disabled'
|
1088 |
-
'onchange'
|
|
|
1089 |
),
|
1090 |
'select' => array(
|
1091 |
'multiple' => true,
|
@@ -1096,6 +1094,7 @@ if ( ! function_exists( 'wcj_add_allowed_html' ) ) {
|
|
1096 |
'size' => true,
|
1097 |
'disabled' => true,
|
1098 |
'onchange' => true,
|
|
|
1099 |
),
|
1100 |
'option' => array(
|
1101 |
'value' => true,
|
@@ -1161,6 +1160,12 @@ if ( ! function_exists( 'wcj_add_allowed_html' ) ) {
|
|
1161 |
'onchange' => true,
|
1162 |
'target' => true,
|
1163 |
'wcj-copy-data' => true,
|
|
|
|
|
|
|
|
|
|
|
|
|
1164 |
),
|
1165 |
'details' => array(
|
1166 |
'open' => true,
|
@@ -1173,3 +1178,15 @@ if ( ! function_exists( 'wcj_add_allowed_html' ) ) {
|
|
1173 |
}
|
1174 |
add_filter( 'wp_kses_allowed_html', 'wcj_add_allowed_html', PHP_INT_MAX, 2 );
|
1175 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Functions - General
|
4 |
*
|
5 |
+
* @version 5.6.8
|
6 |
* @author Pluggabl LLC.
|
7 |
* @todo add `wcj_add_actions()` and `wcj_add_filters()`
|
8 |
* @package Booster_For_WooCommerce/functions
|
436 |
/**
|
437 |
* Wcj_maybe_add_date_query.
|
438 |
*
|
439 |
+
* @version 5.6.8
|
440 |
* @since 3.0.0
|
441 |
* @param array $args defines the args.
|
442 |
*/
|
443 |
function wcj_maybe_add_date_query( $args ) {
|
444 |
+
$wpnonce = isset( $_REQUEST['wcj_tools_nonce'] ) ? wp_verify_nonce( sanitize_key( $_REQUEST['wcj_tools_nonce'] ), 'wcj_tools' ) : false;
|
|
|
|
|
|
|
445 |
if ( ( $wpnonce && isset( $_GET['start_date'] ) && '' !== $_GET['start_date'] ) || ( isset( $_GET['end_date'] ) && '' !== $_GET['end_date'] ) ) {
|
446 |
$date_query = array();
|
447 |
$date_query['inclusive'] = true;
|
1032 |
/**
|
1033 |
* Wcj_add_allowed_html.
|
1034 |
*
|
1035 |
+
* @version 5.6.8
|
1036 |
* @since 5.6.0
|
1037 |
* @param array $allowed_html to get default allowed html.
|
1038 |
* @param string $context to get default context.
|
1074 |
'data-*' => true,
|
1075 |
),
|
1076 |
'textarea' => array(
|
1077 |
+
'name' => true,
|
1078 |
+
'value' => true,
|
1079 |
+
'id' => true,
|
1080 |
+
'class' => true,
|
1081 |
+
'style' => true,
|
1082 |
+
'placeholder' => true,
|
1083 |
+
'required' => true,
|
1084 |
+
'disabled' => true,
|
1085 |
+
'onchange' => true,
|
1086 |
+
'autocomplete' => true,
|
1087 |
),
|
1088 |
'select' => array(
|
1089 |
'multiple' => true,
|
1094 |
'size' => true,
|
1095 |
'disabled' => true,
|
1096 |
'onchange' => true,
|
1097 |
+
'type' => true,
|
1098 |
),
|
1099 |
'option' => array(
|
1100 |
'value' => true,
|
1160 |
'onchange' => true,
|
1161 |
'target' => true,
|
1162 |
'wcj-copy-data' => true,
|
1163 |
+
'currency_from' => true,
|
1164 |
+
'currency_to' => true,
|
1165 |
+
'start_date' => true,
|
1166 |
+
'end_date' => true,
|
1167 |
+
'input_id' => true,
|
1168 |
+
'start_date' => true,
|
1169 |
),
|
1170 |
'details' => array(
|
1171 |
'open' => true,
|
1178 |
}
|
1179 |
add_filter( 'wp_kses_allowed_html', 'wcj_add_allowed_html', PHP_INT_MAX, 2 );
|
1180 |
}
|
1181 |
+
|
1182 |
+
if ( ! function_exists( 'wcj_admin_tab_url' ) ) {
|
1183 |
+
/**
|
1184 |
+
* Wcj_admin_tab_url.
|
1185 |
+
*
|
1186 |
+
* @version 5.6.8
|
1187 |
+
* @since 5.6.8
|
1188 |
+
*/
|
1189 |
+
function wcj_admin_tab_url() {
|
1190 |
+
return 'admin.php?page=wc-settings&tab=jetpack&wcj-cat-nonce=' . wp_create_nonce( 'wcj-cat-nonce' );
|
1191 |
+
}
|
1192 |
+
}
|
includes/functions/wcj-functions-html.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Functions - HTML Functions
|
4 |
*
|
5 |
-
* @version 5.6.
|
6 |
* @author Pluggabl LLC.
|
7 |
* @package Booster_For_WooCommerce/functions
|
8 |
*/
|
@@ -15,7 +15,7 @@ if ( ! function_exists( 'wcj_get_table_html' ) ) {
|
|
15 |
/**
|
16 |
* Wcj_get_table_html.
|
17 |
*
|
18 |
-
* @version 5.6.
|
19 |
* @param array $data defines the data.
|
20 |
* @param array $args defines the args.
|
21 |
*/
|
@@ -29,7 +29,14 @@ if ( ! function_exists( 'wcj_get_table_html' ) ) {
|
|
29 |
'columns_styles' => array(),
|
30 |
);
|
31 |
$args = array_merge( $defaults, $args );
|
32 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
33 |
$table_class = ( '' === $table_class ) ? '' : ' class="' . $table_class . '"';
|
34 |
$table_style = ( '' === $table_style ) ? '' : ' style="' . $table_style . '"';
|
35 |
$row_styles = ( '' === $row_styles ) ? '' : ' style="' . $row_styles . '"';
|
2 |
/**
|
3 |
* Booster for WooCommerce - Functions - HTML Functions
|
4 |
*
|
5 |
+
* @version 5.6.8
|
6 |
* @author Pluggabl LLC.
|
7 |
* @package Booster_For_WooCommerce/functions
|
8 |
*/
|
15 |
/**
|
16 |
* Wcj_get_table_html.
|
17 |
*
|
18 |
+
* @version 5.6.8
|
19 |
* @param array $data defines the data.
|
20 |
* @param array $args defines the args.
|
21 |
*/
|
29 |
'columns_styles' => array(),
|
30 |
);
|
31 |
$args = array_merge( $defaults, $args );
|
32 |
+
|
33 |
+
$table_class = $args['table_class'];
|
34 |
+
$table_style = $args['table_style'];
|
35 |
+
$row_styles = $args['row_styles'];
|
36 |
+
$table_heading_type = $args['table_heading_type'];
|
37 |
+
$columns_classes = $args['columns_classes'];
|
38 |
+
$columns_styles = $args['columns_styles'];
|
39 |
+
|
40 |
$table_class = ( '' === $table_class ) ? '' : ' class="' . $table_class . '"';
|
41 |
$table_style = ( '' === $table_style ) ? '' : ' style="' . $table_style . '"';
|
42 |
$row_styles = ( '' === $row_styles ) ? '' : ' style="' . $row_styles . '"';
|
includes/functions/wcj-functions-invoicing.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Functions - Invoicing
|
4 |
*
|
5 |
-
* @version 5.6.
|
6 |
* @author Pluggabl LLC.
|
7 |
* @package Booster_For_WooCommerce/functions
|
8 |
*/
|
@@ -49,7 +49,7 @@ if ( ! function_exists( 'wcj_get_invoicing_default_images_directory' ) ) {
|
|
49 |
/**
|
50 |
* Wcj_get_invoicing_default_images_directory.
|
51 |
*
|
52 |
-
* @version 5.6.
|
53 |
* @since 3.4.2
|
54 |
*/
|
55 |
function wcj_get_invoicing_default_images_directory() {
|
@@ -57,7 +57,7 @@ if ( ! function_exists( 'wcj_get_invoicing_default_images_directory' ) ) {
|
|
57 |
case 'empty':
|
58 |
return '';
|
59 |
case 'document_root':
|
60 |
-
return
|
61 |
case 'abspath':
|
62 |
return ABSPATH;
|
63 |
default: // tcpdf_default.
|
@@ -206,13 +206,16 @@ if ( ! function_exists( 'wcj_check_and_maybe_download_tcpdf_fonts' ) ) {
|
|
206 |
/**
|
207 |
* Wcj_check_and_maybe_download_tcpdf_fonts.
|
208 |
*
|
209 |
-
* @version 5.6.
|
210 |
* @since 2.9.0
|
211 |
* @todo (maybe) check file size > 0 or even for exact size (not only if file exists in directory)
|
212 |
* @todo (maybe) use `download_url()` instead of `file_get_contents()` or `curl` (in all Booster files)
|
213 |
* @param bool $force_download defines the force_download.
|
214 |
*/
|
215 |
function wcj_check_and_maybe_download_tcpdf_fonts( $force_download = false ) {
|
|
|
|
|
|
|
216 |
if ( 'yes' === wcj_get_option( 'wcj_invoicing_fonts_manager_do_not_download', 'no' ) ) {
|
217 |
return false;
|
218 |
}
|
@@ -220,11 +223,11 @@ if ( ! function_exists( 'wcj_check_and_maybe_download_tcpdf_fonts' ) ) {
|
|
220 |
if ( wcj_check_tcpdf_fonts_version( true ) ) {
|
221 |
return true;
|
222 |
}
|
223 |
-
if ( ( (
|
224 |
return false;
|
225 |
}
|
226 |
}
|
227 |
-
update_option( 'wcj_invoicing_fonts_version_timestamp', (
|
228 |
$tcpdf_fonts_dir = wcj_get_wcj_uploads_dir( 'tcpdf_fonts' ) . '/';
|
229 |
if ( ! file_exists( $tcpdf_fonts_dir ) ) {
|
230 |
mkdir( $tcpdf_fonts_dir );
|
@@ -240,9 +243,9 @@ if ( ! function_exists( 'wcj_check_and_maybe_download_tcpdf_fonts' ) ) {
|
|
240 |
}
|
241 |
$response_file_name = download_url( $url );
|
242 |
if ( ! is_wp_error( $response_file_name ) ) {
|
243 |
-
$response =
|
244 |
if ( $response ) {
|
245 |
-
if ( !
|
246 |
return false;
|
247 |
}
|
248 |
} else {
|
@@ -256,7 +259,7 @@ if ( ! function_exists( 'wcj_check_and_maybe_download_tcpdf_fonts' ) ) {
|
|
256 |
}
|
257 |
if (
|
258 |
update_option( 'wcj_invoicing_fonts_version', wcj_get_tcpdf_fonts_version() ) &&
|
259 |
-
update_option( 'wcj_invoicing_fonts_version_timestamp', (
|
260 |
) {
|
261 |
return true;
|
262 |
}
|
2 |
/**
|
3 |
* Booster for WooCommerce - Functions - Invoicing
|
4 |
*
|
5 |
+
* @version 5.6.8
|
6 |
* @author Pluggabl LLC.
|
7 |
* @package Booster_For_WooCommerce/functions
|
8 |
*/
|
49 |
/**
|
50 |
* Wcj_get_invoicing_default_images_directory.
|
51 |
*
|
52 |
+
* @version 5.6.8
|
53 |
* @since 3.4.2
|
54 |
*/
|
55 |
function wcj_get_invoicing_default_images_directory() {
|
57 |
case 'empty':
|
58 |
return '';
|
59 |
case 'document_root':
|
60 |
+
return getenv( 'DOCUMENT_ROOT' );
|
61 |
case 'abspath':
|
62 |
return ABSPATH;
|
63 |
default: // tcpdf_default.
|
206 |
/**
|
207 |
* Wcj_check_and_maybe_download_tcpdf_fonts.
|
208 |
*
|
209 |
+
* @version 5.6.8
|
210 |
* @since 2.9.0
|
211 |
* @todo (maybe) check file size > 0 or even for exact size (not only if file exists in directory)
|
212 |
* @todo (maybe) use `download_url()` instead of `file_get_contents()` or `curl` (in all Booster files)
|
213 |
* @param bool $force_download defines the force_download.
|
214 |
*/
|
215 |
function wcj_check_and_maybe_download_tcpdf_fonts( $force_download = false ) {
|
216 |
+
require_once ABSPATH . '/wp-admin/includes/file.php';
|
217 |
+
global $wp_filesystem;
|
218 |
+
WP_Filesystem();
|
219 |
if ( 'yes' === wcj_get_option( 'wcj_invoicing_fonts_manager_do_not_download', 'no' ) ) {
|
220 |
return false;
|
221 |
}
|
223 |
if ( wcj_check_tcpdf_fonts_version( true ) ) {
|
224 |
return true;
|
225 |
}
|
226 |
+
if ( ( wcj_get_timestamp_date_from_gmt() - wcj_get_option( 'wcj_invoicing_fonts_version_timestamp', null ) ) < 60 * 60 ) {
|
227 |
return false;
|
228 |
}
|
229 |
}
|
230 |
+
update_option( 'wcj_invoicing_fonts_version_timestamp', wcj_get_timestamp_date_from_gmt() );
|
231 |
$tcpdf_fonts_dir = wcj_get_wcj_uploads_dir( 'tcpdf_fonts' ) . '/';
|
232 |
if ( ! file_exists( $tcpdf_fonts_dir ) ) {
|
233 |
mkdir( $tcpdf_fonts_dir );
|
243 |
}
|
244 |
$response_file_name = download_url( $url );
|
245 |
if ( ! is_wp_error( $response_file_name ) ) {
|
246 |
+
$response = $wp_filesystem->get_contents( $response_file_name );
|
247 |
if ( $response ) {
|
248 |
+
if ( ! $wp_filesystem->put_contents( $tcpdf_fonts_dir . $tcpdf_fonts_file, $response, FS_CHMOD_FILE ) ) {
|
249 |
return false;
|
250 |
}
|
251 |
} else {
|
259 |
}
|
260 |
if (
|
261 |
update_option( 'wcj_invoicing_fonts_version', wcj_get_tcpdf_fonts_version() ) &&
|
262 |
+
update_option( 'wcj_invoicing_fonts_version_timestamp', wcj_get_timestamp_date_from_gmt() )
|
263 |
) {
|
264 |
return true;
|
265 |
}
|
includes/functions/wcj-functions-reports.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Functions - Reports
|
4 |
*
|
5 |
-
* @version 5.6.
|
6 |
* @since 2.9.0
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/functions
|
@@ -40,11 +40,11 @@ if ( ! function_exists( 'wcj_get_reports_standard_ranges' ) ) {
|
|
40 |
/**
|
41 |
* Wcj_get_reports_standard_ranges.
|
42 |
*
|
43 |
-
* @version 5.6.
|
44 |
* @since 2.9.0
|
45 |
*/
|
46 |
function wcj_get_reports_standard_ranges() {
|
47 |
-
$current_time = (
|
48 |
return array(
|
49 |
'year' => array(
|
50 |
'title' => __( 'Year', 'woocommerce' ),
|
@@ -74,12 +74,12 @@ if ( ! function_exists( 'wcj_get_reports_custom_ranges' ) ) {
|
|
74 |
/**
|
75 |
* Wcj_get_reports_custom_ranges.
|
76 |
*
|
77 |
-
* @version 5.6.
|
78 |
* @since 2.9.0
|
79 |
* @todo fix `-1 month` - sometimes it produces the wrong result (e.g. on current gmdate = "2018.03.30")
|
80 |
*/
|
81 |
function wcj_get_reports_custom_ranges() {
|
82 |
-
$current_time = (
|
83 |
return array(
|
84 |
'last_14_days' => array(
|
85 |
'title' => __( 'Last 14 days', 'woocommerce-jetpack' ),
|
2 |
/**
|
3 |
* Booster for WooCommerce - Functions - Reports
|
4 |
*
|
5 |
+
* @version 5.6.8
|
6 |
* @since 2.9.0
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/functions
|
40 |
/**
|
41 |
* Wcj_get_reports_standard_ranges.
|
42 |
*
|
43 |
+
* @version 5.6.8
|
44 |
* @since 2.9.0
|
45 |
*/
|
46 |
function wcj_get_reports_standard_ranges() {
|
47 |
+
$current_time = wcj_get_timestamp_date_from_gmt();
|
48 |
return array(
|
49 |
'year' => array(
|
50 |
'title' => __( 'Year', 'woocommerce' ),
|
74 |
/**
|
75 |
* Wcj_get_reports_custom_ranges.
|
76 |
*
|
77 |
+
* @version 5.6.8
|
78 |
* @since 2.9.0
|
79 |
* @todo fix `-1 month` - sometimes it produces the wrong result (e.g. on current gmdate = "2018.03.30")
|
80 |
*/
|
81 |
function wcj_get_reports_custom_ranges() {
|
82 |
+
$current_time = wcj_get_timestamp_date_from_gmt();
|
83 |
return array(
|
84 |
'last_14_days' => array(
|
85 |
'title' => __( 'Last 14 days', 'woocommerce-jetpack' ),
|
includes/gateways/{class-wc-gateway-wcj-custom.php → class-wc-gateway-wcj-custom-template.php}
RENAMED
@@ -1,20 +1,20 @@
|
|
1 |
-
<?php
|
2 |
/**
|
3 |
* Booster for WooCommerce - Custom Payment Gateway
|
4 |
*
|
5 |
-
* @version 5.6.
|
6 |
* @author Pluggabl LLC.
|
7 |
* @package Booster_For_WooCommerce/includes
|
8 |
*/
|
9 |
|
10 |
-
if ( ! function_exists( '
|
11 |
|
12 |
/**
|
13 |
-
*
|
14 |
*
|
15 |
* @version 5.3.4
|
16 |
*/
|
17 |
-
function
|
18 |
|
19 |
if ( class_exists( 'WC_Payment_Gateway' ) ) {
|
20 |
|
@@ -417,7 +417,7 @@ if ( ! function_exists( 'init_wc_gateway_wcj_custom_class' ) ) {
|
|
417 |
}
|
418 |
|
419 |
if ( 'no' === wcj_get_option( 'wcj_load_modules_on_init', 'no' ) ) {
|
420 |
-
add_action( 'plugins_loaded', '
|
421 |
} else {
|
422 |
-
|
423 |
}
|
1 |
+
<?php
|
2 |
/**
|
3 |
* Booster for WooCommerce - Custom Payment Gateway
|
4 |
*
|
5 |
+
* @version 5.6.8
|
6 |
* @author Pluggabl LLC.
|
7 |
* @package Booster_For_WooCommerce/includes
|
8 |
*/
|
9 |
|
10 |
+
if ( ! function_exists( 'init_wc_gateway_wcj_custom' ) ) {
|
11 |
|
12 |
/**
|
13 |
+
* Init_wc_gateway_wcj_custom class.
|
14 |
*
|
15 |
* @version 5.3.4
|
16 |
*/
|
17 |
+
function init_wc_gateway_wcj_custom() {
|
18 |
|
19 |
if ( class_exists( 'WC_Payment_Gateway' ) ) {
|
20 |
|
417 |
}
|
418 |
|
419 |
if ( 'no' === wcj_get_option( 'wcj_load_modules_on_init', 'no' ) ) {
|
420 |
+
add_action( 'plugins_loaded', 'init_wc_gateway_wcj_custom', PHP_INT_MAX );
|
421 |
} else {
|
422 |
+
init_wc_gateway_wcj_custom();
|
423 |
}
|
includes/input-fields/class-wcj-product-input-fields-core.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Product Input Fields - Core
|
4 |
*
|
5 |
-
* @version 5.6.
|
6 |
* @author Pluggabl LLC.
|
7 |
* @package Booster_For_WooCommerce/includes
|
8 |
*/
|
@@ -489,15 +489,12 @@ if ( ! class_exists( 'WCJ_Product_Input_Fields_Core' ) ) :
|
|
489 |
/**
|
490 |
* Validate_product_input_fields_on_add_to_cart.
|
491 |
*
|
492 |
-
* @version 5.6.
|
493 |
* @param bool $passed define passed value.
|
494 |
* @param int $product_id Get product id.
|
495 |
*/
|
496 |
public function validate_product_input_fields_on_add_to_cart( $passed, $product_id ) {
|
497 |
-
$wpnonce =
|
498 |
-
if ( function_exists( 'wp_verify_nonce' ) ) {
|
499 |
-
$wpnonce = isset( $_REQUEST['_wpnonce'] ) ? wp_verify_nonce( sanitize_key( isset( $_REQUEST['_wpnonce'] ) ? $_REQUEST['_wpnonce'] : '' ), 'woocommerce-settings' ) : true;
|
500 |
-
}
|
501 |
if ( ! $wpnonce ) {
|
502 |
return $passed;
|
503 |
}
|
@@ -607,7 +604,7 @@ if ( ! class_exists( 'WCJ_Product_Input_Fields_Core' ) ) :
|
|
607 |
/**
|
608 |
* Add_product_input_fields_to_frontend.
|
609 |
*
|
610 |
-
* @version 5.6.
|
611 |
* @todo `$set_value` - add "default" option for all other types except checkbox
|
612 |
* @todo `$set_value` - 'file' type
|
613 |
* @todo add `required` attributes
|
@@ -620,13 +617,7 @@ if ( ! class_exists( 'WCJ_Product_Input_Fields_Core' ) ) :
|
|
620 |
if ( ! $product ) {
|
621 |
return;
|
622 |
}
|
623 |
-
|
624 |
-
if ( function_exists( 'wp_verify_nonce' ) ) {
|
625 |
-
$wpnonce = isset( $_REQUEST['_wpnonce'] ) ? wp_verify_nonce( sanitize_key( isset( $_REQUEST['_wpnonce'] ) ? $_REQUEST['_wpnonce'] : '' ), 'woocommerce-settings' ) : true;
|
626 |
-
}
|
627 |
-
if ( ! $wpnonce ) {
|
628 |
-
return;
|
629 |
-
}
|
630 |
$_product_id = wcj_get_product_id_or_variation_parent_id( $product );
|
631 |
$this->maybe_update_local_input_fields( $_product_id );
|
632 |
$fields = array();
|
@@ -675,7 +666,8 @@ if ( ! class_exists( 'WCJ_Product_Input_Fields_Core' ) ) :
|
|
675 |
|
676 |
if ( $this->is_enabled( $i, $_product_id ) ) {
|
677 |
|
678 |
-
$
|
|
|
679 |
$this->maybe_stripslashes( sanitize_text_field( wp_unslash( $_POST[ $field_name ] ) ) ) :
|
680 |
( 'checkbox' === $type ?
|
681 |
( 'yes' === $this->get_value( 'wcj_product_input_fields_type_checkbox_default_' . $this->scope . '_' . $i, $_product_id, 'no' ) ? 'on' : 'off' ) :
|
@@ -788,7 +780,7 @@ if ( ! class_exists( 'WCJ_Product_Input_Fields_Core' ) ) :
|
|
788 |
$field = '<select name="' . $field_name . '" id="' . $field_name . '" class="country_to_state country_select wcj_product_input_fields' . $class . '">' .
|
789 |
'<option value="">' . __( 'Select a country…', 'woocommerce' ) . '</option>';
|
790 |
foreach ( $countries as $ckey => $cvalue ) {
|
791 |
-
$field .= '<option value="' . esc_attr( $ckey ) . '" ' . selected( $value, $ckey, false ) . '>' .
|
792 |
}
|
793 |
$field .= '</select>';
|
794 |
$html = $field;
|
@@ -823,7 +815,7 @@ if ( ! class_exists( 'WCJ_Product_Input_Fields_Core' ) ) :
|
|
823 |
}
|
824 |
ksort( $fields );
|
825 |
if ( ! empty( $fields ) ) {
|
826 |
-
echo wcj_get_option( 'wcj_product_input_fields_start_template', '' ) .
|
827 |
$this->are_product_input_fields_displayed = true;
|
828 |
}
|
829 |
}
|
@@ -833,16 +825,13 @@ if ( ! class_exists( 'WCJ_Product_Input_Fields_Core' ) ) :
|
|
833 |
*
|
834 |
* From `$_POST` to `$cart_item_data`
|
835 |
*
|
836 |
-
* @version 5.6.
|
837 |
* @param Array $cart_item_data Get cart items.
|
838 |
* @param int $product_id Get product id.
|
839 |
* @param int $variation_id Get variation id.
|
840 |
*/
|
841 |
public function add_product_input_fields_to_cart_item_data( $cart_item_data, $product_id, $variation_id ) {
|
842 |
-
$wpnonce =
|
843 |
-
if ( function_exists( 'wp_verify_nonce' ) ) {
|
844 |
-
$wpnonce = isset( $_REQUEST['_wpnonce'] ) ? wp_verify_nonce( sanitize_key( isset( $_REQUEST['_wpnonce'] ) ? $_REQUEST['_wpnonce'] : '' ), 'woocommerce-settings' ) : true;
|
845 |
-
}
|
846 |
if ( ! $wpnonce ) {
|
847 |
return $cart_item_data;
|
848 |
}
|
@@ -1035,7 +1024,7 @@ if ( ! class_exists( 'WCJ_Product_Input_Fields_Core' ) ) :
|
|
1035 |
/**
|
1036 |
* Add_input_fields_to_order_item_meta.
|
1037 |
*
|
1038 |
-
* @version 5.6.
|
1039 |
* @since 3.4.0
|
1040 |
* @param Array $item Get items.
|
1041 |
* @param int $item_id Get item id.
|
@@ -1045,6 +1034,9 @@ if ( ! class_exists( 'WCJ_Product_Input_Fields_Core' ) ) :
|
|
1045 |
* @throws Exception Exception.
|
1046 |
*/
|
1047 |
public function add_input_fields_to_order_item_meta( $item, $item_id, $values, $cart_item_key ) {
|
|
|
|
|
|
|
1048 |
$total_number = apply_filters( 'booster_option', 1, $this->get_value( 'wcj_product_input_fields_' . $this->scope . '_total_number', $values['product_id'], 1 ) );
|
1049 |
for ( $i = 1; $i <= $total_number; $i ++ ) {
|
1050 |
if ( array_key_exists( 'wcj_product_input_fields_' . $this->scope . '_' . $i, $values ) ) {
|
@@ -1060,8 +1052,8 @@ if ( ! class_exists( 'WCJ_Product_Input_Fields_Core' ) ) :
|
|
1060 |
mkdir( $upload_dir, 0755, true );
|
1061 |
}
|
1062 |
$upload_dir_and_name = $upload_dir . '/' . $name;
|
1063 |
-
$file_data =
|
1064 |
-
|
1065 |
unlink( $tmp_name );
|
1066 |
$input_field_value['tmp_name'] = addslashes( $upload_dir_and_name );
|
1067 |
$input_field_value['wcj_type'] = 'file';
|
2 |
/**
|
3 |
* Booster for WooCommerce - Product Input Fields - Core
|
4 |
*
|
5 |
+
* @version 5.6.8
|
6 |
* @author Pluggabl LLC.
|
7 |
* @package Booster_For_WooCommerce/includes
|
8 |
*/
|
489 |
/**
|
490 |
* Validate_product_input_fields_on_add_to_cart.
|
491 |
*
|
492 |
+
* @version 5.6.8
|
493 |
* @param bool $passed define passed value.
|
494 |
* @param int $product_id Get product id.
|
495 |
*/
|
496 |
public function validate_product_input_fields_on_add_to_cart( $passed, $product_id ) {
|
497 |
+
$wpnonce = isset( $_REQUEST['wcj_product_input_fields-nonce'] ) ? wp_verify_nonce( sanitize_key( $_REQUEST['wcj_product_input_fields-nonce'] ), 'wcj_product_input_fields' ) : false;
|
|
|
|
|
|
|
498 |
if ( ! $wpnonce ) {
|
499 |
return $passed;
|
500 |
}
|
604 |
/**
|
605 |
* Add_product_input_fields_to_frontend.
|
606 |
*
|
607 |
+
* @version 5.6.8
|
608 |
* @todo `$set_value` - add "default" option for all other types except checkbox
|
609 |
* @todo `$set_value` - 'file' type
|
610 |
* @todo add `required` attributes
|
617 |
if ( ! $product ) {
|
618 |
return;
|
619 |
}
|
620 |
+
|
|
|
|
|
|
|
|
|
|
|
|
|
621 |
$_product_id = wcj_get_product_id_or_variation_parent_id( $product );
|
622 |
$this->maybe_update_local_input_fields( $_product_id );
|
623 |
$fields = array();
|
666 |
|
667 |
if ( $this->is_enabled( $i, $_product_id ) ) {
|
668 |
|
669 |
+
$wpnonce = isset( $_REQUEST['wcj_product_input_fields-nonce'] ) ? wp_verify_nonce( sanitize_key( $_REQUEST['wcj_product_input_fields-nonce'] ), 'wcj_product_input_fields' ) : false;
|
670 |
+
$set_value = ( $wpnonce && isset( $_POST[ $field_name ] ) ?
|
671 |
$this->maybe_stripslashes( sanitize_text_field( wp_unslash( $_POST[ $field_name ] ) ) ) :
|
672 |
( 'checkbox' === $type ?
|
673 |
( 'yes' === $this->get_value( 'wcj_product_input_fields_type_checkbox_default_' . $this->scope . '_' . $i, $_product_id, 'no' ) ? 'on' : 'off' ) :
|
780 |
$field = '<select name="' . $field_name . '" id="' . $field_name . '" class="country_to_state country_select wcj_product_input_fields' . $class . '">' .
|
781 |
'<option value="">' . __( 'Select a country…', 'woocommerce' ) . '</option>';
|
782 |
foreach ( $countries as $ckey => $cvalue ) {
|
783 |
+
$field .= '<option value="' . esc_attr( $ckey ) . '" ' . selected( $value, $ckey, false ) . '>' . $cvalue . '</option>';
|
784 |
}
|
785 |
$field .= '</select>';
|
786 |
$html = $field;
|
815 |
}
|
816 |
ksort( $fields );
|
817 |
if ( ! empty( $fields ) ) {
|
818 |
+
echo wp_kses_post( wcj_get_option( 'wcj_product_input_fields_start_template', '' ) . implode( $fields ) . wp_nonce_field( 'wcj_product_input_fields', 'wcj_product_input_fields-nonce' ) . wcj_get_option( 'wcj_product_input_fields_end_template', '' ) );
|
819 |
$this->are_product_input_fields_displayed = true;
|
820 |
}
|
821 |
}
|
825 |
*
|
826 |
* From `$_POST` to `$cart_item_data`
|
827 |
*
|
828 |
+
* @version 5.6.8
|
829 |
* @param Array $cart_item_data Get cart items.
|
830 |
* @param int $product_id Get product id.
|
831 |
* @param int $variation_id Get variation id.
|
832 |
*/
|
833 |
public function add_product_input_fields_to_cart_item_data( $cart_item_data, $product_id, $variation_id ) {
|
834 |
+
$wpnonce = isset( $_REQUEST['wcj_product_input_fields-nonce'] ) ? wp_verify_nonce( sanitize_key( $_REQUEST['wcj_product_input_fields-nonce'] ), 'wcj_product_input_fields' ) : false;
|
|
|
|
|
|
|
835 |
if ( ! $wpnonce ) {
|
836 |
return $cart_item_data;
|
837 |
}
|
1024 |
/**
|
1025 |
* Add_input_fields_to_order_item_meta.
|
1026 |
*
|
1027 |
+
* @version 5.6.8
|
1028 |
* @since 3.4.0
|
1029 |
* @param Array $item Get items.
|
1030 |
* @param int $item_id Get item id.
|
1034 |
* @throws Exception Exception.
|
1035 |
*/
|
1036 |
public function add_input_fields_to_order_item_meta( $item, $item_id, $values, $cart_item_key ) {
|
1037 |
+
require_once ABSPATH . '/wp-admin/includes/file.php';
|
1038 |
+
global $wp_filesystem;
|
1039 |
+
WP_Filesystem();
|
1040 |
$total_number = apply_filters( 'booster_option', 1, $this->get_value( 'wcj_product_input_fields_' . $this->scope . '_total_number', $values['product_id'], 1 ) );
|
1041 |
for ( $i = 1; $i <= $total_number; $i ++ ) {
|
1042 |
if ( array_key_exists( 'wcj_product_input_fields_' . $this->scope . '_' . $i, $values ) ) {
|
1052 |
mkdir( $upload_dir, 0755, true );
|
1053 |
}
|
1054 |
$upload_dir_and_name = $upload_dir . '/' . $name;
|
1055 |
+
$file_data = $wp_filesystem->get_contents( $tmp_name );
|
1056 |
+
$wp_filesystem->put_contents( $upload_dir_and_name, $file_data, FS_CHMOD_FILE );
|
1057 |
unlink( $tmp_name );
|
1058 |
$input_field_value['tmp_name'] = addslashes( $upload_dir_and_name );
|
1059 |
$input_field_value['wcj_type'] = 'file';
|
includes/js/wcj-ajax-exchange-rates.js
CHANGED
@@ -1,7 +1,7 @@
|
|
1 |
/**
|
2 |
* Wcj-ajax-exchange-rates.js
|
3 |
*
|
4 |
-
* @version 5.6.
|
5 |
* @package Booster_For_WooCommerce/includes/JS
|
6 |
*/
|
7 |
|
@@ -13,7 +13,8 @@ jQuery( document ).ready(
|
|
13 |
var data = {
|
14 |
'action': 'wcj_ajax_get_exchange_rates',
|
15 |
'wcj_currency_from': this.getAttribute( 'currency_from' ),
|
16 |
-
'wcj_currency_to': this.getAttribute( 'currency_to' )
|
|
|
17 |
};
|
18 |
jQuery.ajax(
|
19 |
{
|
1 |
/**
|
2 |
* Wcj-ajax-exchange-rates.js
|
3 |
*
|
4 |
+
* @version 5.6.8
|
5 |
* @package Booster_For_WooCommerce/includes/JS
|
6 |
*/
|
7 |
|
13 |
var data = {
|
14 |
'action': 'wcj_ajax_get_exchange_rates',
|
15 |
'wcj_currency_from': this.getAttribute( 'currency_from' ),
|
16 |
+
'wcj_currency_to': this.getAttribute( 'currency_to' ),
|
17 |
+
'wpnonce': ajax_object.wpnonce,
|
18 |
};
|
19 |
jQuery.ajax(
|
20 |
{
|
includes/js/wcj-bookings.js
CHANGED
@@ -1,7 +1,7 @@
|
|
1 |
/**
|
2 |
* Wcj-bookings.
|
3 |
*
|
4 |
-
* @version 5.6.
|
5 |
* @since 2.5.0
|
6 |
*
|
7 |
* @package Booster_For_WooCommerce/includes/JS
|
@@ -20,6 +20,7 @@ function wcj_show_loader(){
|
|
20 |
function change_price() {
|
21 |
var date_from = jQuery( "input[name='wcj_product_bookings_date_from']" ).val();
|
22 |
var date_to = jQuery( "input[name='wcj_product_bookings_date_to']" ).val();
|
|
|
23 |
var is_variation_ok = true;
|
24 |
if ( jQuery( ".variations select" ).length ) {
|
25 |
if ( jQuery( ".variations select" ).find( ":selected" ).val() == '' ) {
|
@@ -40,7 +41,8 @@ function change_price() {
|
|
40 |
'action': 'price_change',
|
41 |
'product_id': product_id,
|
42 |
'date_from': date_from,
|
43 |
-
'date_to': date_to
|
|
|
44 |
};
|
45 |
wcj_show_loader();
|
46 |
jQuery( '.wcj-bookings-price-wrapper .wcj-value' ).html( '' );
|
1 |
/**
|
2 |
* Wcj-bookings.
|
3 |
*
|
4 |
+
* @version 5.6.8
|
5 |
* @since 2.5.0
|
6 |
*
|
7 |
* @package Booster_For_WooCommerce/includes/JS
|
20 |
function change_price() {
|
21 |
var date_from = jQuery( "input[name='wcj_product_bookings_date_from']" ).val();
|
22 |
var date_to = jQuery( "input[name='wcj_product_bookings_date_to']" ).val();
|
23 |
+
var wpnonce = jQuery( "input[name='wcj_product_bookings-nonce']" ).val();
|
24 |
var is_variation_ok = true;
|
25 |
if ( jQuery( ".variations select" ).length ) {
|
26 |
if ( jQuery( ".variations select" ).find( ":selected" ).val() == '' ) {
|
41 |
'action': 'price_change',
|
42 |
'product_id': product_id,
|
43 |
'date_from': date_from,
|
44 |
+
'date_to': date_to,
|
45 |
+
'_wpnonce': wpnonce
|
46 |
};
|
47 |
wcj_show_loader();
|
48 |
jQuery( '.wcj-bookings-price-wrapper .wcj-value' ).html( '' );
|
includes/js/wcj-eu-vat-number.js
CHANGED
@@ -1,7 +1,7 @@
|
|
1 |
/**
|
2 |
* Wu-vat-number.
|
3 |
*
|
4 |
-
* @version 5.6.
|
5 |
* @package Booster_For_WooCommerce/includes/JS
|
6 |
*/
|
7 |
|
@@ -50,6 +50,7 @@ jQuery(
|
|
50 |
var data = {
|
51 |
'action': 'wcj_validate_eu_vat_number',
|
52 |
'wcj_eu_vat_number_to_check': vatNumberToCheck,
|
|
|
53 |
};
|
54 |
$.ajax(
|
55 |
{
|
1 |
/**
|
2 |
* Wu-vat-number.
|
3 |
*
|
4 |
+
* @version 5.6.8
|
5 |
* @package Booster_For_WooCommerce/includes/JS
|
6 |
*/
|
7 |
|
50 |
var data = {
|
51 |
'action': 'wcj_validate_eu_vat_number',
|
52 |
'wcj_eu_vat_number_to_check': vatNumberToCheck,
|
53 |
+
'_wpnonce': _ajax_object._wpnonce,
|
54 |
};
|
55 |
$.ajax(
|
56 |
{
|
includes/js/wcj-product-addons.js
CHANGED
@@ -1,7 +1,7 @@
|
|
1 |
/**
|
2 |
* Wcj-product-addons.
|
3 |
*
|
4 |
-
* @version 5.6.
|
5 |
* @since 2.5.3
|
6 |
* @todo `text` type - update price not only on change, but on each pressed key
|
7 |
* @todo fix the issue with custom price labels module
|
@@ -19,6 +19,7 @@ function change_price() {
|
|
19 |
}
|
20 |
if ( is_variation_ok ) {
|
21 |
var product_id = jQuery( "input[type='hidden'][name='variation_id']" ).val();
|
|
|
22 |
var is_variable;
|
23 |
if ( ! product_id ) {
|
24 |
is_variable = false;
|
@@ -33,6 +34,7 @@ function change_price() {
|
|
33 |
var data = {
|
34 |
'action': 'product_addons_price_change',
|
35 |
'product_id': product_id,
|
|
|
36 |
};
|
37 |
jQuery( "input[name^='wcj_product_all_products_addons_'], input[name^='wcj_product_per_product_addons_']" ).each(
|
38 |
function () {
|
1 |
/**
|
2 |
* Wcj-product-addons.
|
3 |
*
|
4 |
+
* @version 5.6.8
|
5 |
* @since 2.5.3
|
6 |
* @todo `text` type - update price not only on change, but on each pressed key
|
7 |
* @todo fix the issue with custom price labels module
|
19 |
}
|
20 |
if ( is_variation_ok ) {
|
21 |
var product_id = jQuery( "input[type='hidden'][name='variation_id']" ).val();
|
22 |
+
var wpnonce = jQuery( "input[type='hidden'][name='wcj_product_addons-nonce']" ).val();
|
23 |
var is_variable;
|
24 |
if ( ! product_id ) {
|
25 |
is_variable = false;
|
34 |
var data = {
|
35 |
'action': 'product_addons_price_change',
|
36 |
'product_id': product_id,
|
37 |
+
'wpnonce': wpnonce,
|
38 |
};
|
39 |
jQuery( "input[name^='wcj_product_all_products_addons_'], input[name^='wcj_product_per_product_addons_']" ).each(
|
40 |
function () {
|
includes/js/wcj-track-users.js
CHANGED
@@ -1,7 +1,7 @@
|
|
1 |
/**
|
2 |
* Wcj-track-users.js
|
3 |
*
|
4 |
-
* @version 5.6.
|
5 |
*
|
6 |
* @package Booster_For_WooCommerce/includes/JS
|
7 |
*/
|
@@ -11,6 +11,7 @@ jQuery( document ).ready(
|
|
11 |
var data = {
|
12 |
'action': 'wcj_track_users',
|
13 |
'wcj_http_referer': track_users_ajax_object.http_referer,
|
|
|
14 |
'wcj_user_ip': track_users_ajax_object.user_ip
|
15 |
};
|
16 |
jQuery.ajax(
|
1 |
/**
|
2 |
* Wcj-track-users.js
|
3 |
*
|
4 |
+
* @version 5.6.8
|
5 |
*
|
6 |
* @package Booster_For_WooCommerce/includes/JS
|
7 |
*/
|
11 |
var data = {
|
12 |
'action': 'wcj_track_users',
|
13 |
'wcj_http_referer': track_users_ajax_object.http_referer,
|
14 |
+
'wpnonce': track_users_ajax_object.wpnonce,
|
15 |
'wcj_user_ip': track_users_ajax_object.user_ip
|
16 |
};
|
17 |
jQuery.ajax(
|
includes/pdf-invoices/class-wcj-pdf-invoicing-renumerate-tool.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - PDF Invoicing - Renumerate Tool
|
4 |
*
|
5 |
-
* @version 5.6.
|
6 |
* @author Pluggabl LLC.
|
7 |
* @package Booster_For_WooCommerce/includes
|
8 |
*/
|
@@ -51,13 +51,13 @@ if ( ! class_exists( 'WCJ_PDF_Invoicing_Renumerate_Tool' ) ) :
|
|
51 |
/**
|
52 |
* Add Renumerate Invoices tool to WooCommerce menu (the content).
|
53 |
*
|
54 |
-
* @version 5.6.
|
55 |
*/
|
56 |
public function create_renumerate_invoices_tool() {
|
57 |
|
58 |
$result_message = '';
|
59 |
$renumerate_result = '';
|
60 |
-
$wpnonce = isset( $_REQUEST['
|
61 |
$the_invoice_type = ( ! empty( $_POST['invoice_type'] ) ) ? sanitize_text_field( wp_unslash( $_POST['invoice_type'] ) ) : 'invoice';
|
62 |
$the_start_number = ( ! empty( $_POST['start_number'] ) ) ? sanitize_text_field( wp_unslash( $_POST['start_number'] ) ) : 0;
|
63 |
$the_start_date = ( ! empty( $_POST['start_date'] ) ) ? sanitize_text_field( wp_unslash( $_POST['start_date'] ) ) : '';
|
@@ -65,7 +65,11 @@ if ( ! class_exists( 'WCJ_PDF_Invoicing_Renumerate_Tool' ) ) :
|
|
65 |
$the_order_statuses = ( ! empty( $_POST['order_statuses'] ) ) ? array_map( 'sanitize_text_field', wp_unslash( $_POST['order_statuses'] ) ) : array();
|
66 |
$the_delete_all = ( isset( $_POST['delete_all'] ) );
|
67 |
|
68 |
-
if ( $wpnonce
|
|
|
|
|
|
|
|
|
69 |
if ( ! empty( $the_order_statuses ) ) {
|
70 |
$renumerate_result = $this->renumerate_invoices( $the_invoice_type, $the_start_number, $the_start_date, $the_end_date, $the_order_statuses, $the_delete_all );
|
71 |
$result_message = '<div class="updated"><p><strong>' . __( 'Invoices successfully renumerated!', 'woocommerce-jetpack' ) . '</strong></p></div>';
|
2 |
/**
|
3 |
* Booster for WooCommerce - PDF Invoicing - Renumerate Tool
|
4 |
*
|
5 |
+
* @version 5.6.8
|
6 |
* @author Pluggabl LLC.
|
7 |
* @package Booster_For_WooCommerce/includes
|
8 |
*/
|
51 |
/**
|
52 |
* Add Renumerate Invoices tool to WooCommerce menu (the content).
|
53 |
*
|
54 |
+
* @version 5.6.8
|
55 |
*/
|
56 |
public function create_renumerate_invoices_tool() {
|
57 |
|
58 |
$result_message = '';
|
59 |
$renumerate_result = '';
|
60 |
+
$wpnonce = isset( $_REQUEST['wcj_tools_nonce'] ) ? wp_verify_nonce( sanitize_key( $_REQUEST['wcj_tools_nonce'] ), 'wcj_tools' ) : false;
|
61 |
$the_invoice_type = ( ! empty( $_POST['invoice_type'] ) ) ? sanitize_text_field( wp_unslash( $_POST['invoice_type'] ) ) : 'invoice';
|
62 |
$the_start_number = ( ! empty( $_POST['start_number'] ) ) ? sanitize_text_field( wp_unslash( $_POST['start_number'] ) ) : 0;
|
63 |
$the_start_date = ( ! empty( $_POST['start_date'] ) ) ? sanitize_text_field( wp_unslash( $_POST['start_date'] ) ) : '';
|
65 |
$the_order_statuses = ( ! empty( $_POST['order_statuses'] ) ) ? array_map( 'sanitize_text_field', wp_unslash( $_POST['order_statuses'] ) ) : array();
|
66 |
$the_delete_all = ( isset( $_POST['delete_all'] ) );
|
67 |
|
68 |
+
if ( ! $wpnonce ) {
|
69 |
+
wp_safe_redirect( admin_url( 'admin.php?page=wcj-tools' ) );
|
70 |
+
exit;
|
71 |
+
}
|
72 |
+
if ( isset( $_POST['renumerate_invoices'] ) ) {
|
73 |
if ( ! empty( $the_order_statuses ) ) {
|
74 |
$renumerate_result = $this->renumerate_invoices( $the_invoice_type, $the_start_number, $the_start_date, $the_end_date, $the_order_statuses, $the_delete_all );
|
75 |
$result_message = '<div class="updated"><p><strong>' . __( 'Invoices successfully renumerated!', 'woocommerce-jetpack' ) . '</strong></p></div>';
|
includes/pdf-invoices/class-wcj-pdf-invoicing-report-tool.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - PDF Invoicing - Report Tool
|
4 |
*
|
5 |
-
* @version 5.6.
|
6 |
* @since 2.2.1
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/includes
|
@@ -75,17 +75,17 @@ if ( ! class_exists( 'WCJ_PDF_Invoicing_Report_Tool' ) ) :
|
|
75 |
/**
|
76 |
* Generate_report_zip.
|
77 |
*
|
78 |
-
* @version 5.6.
|
79 |
* @since 2.3.10
|
80 |
*/
|
81 |
public function generate_report_zip() {
|
82 |
-
$wpnonce = isset( $_REQUEST['
|
83 |
if ( $wpnonce && isset( $_POST['get_invoices_report_zip'] ) ) {
|
84 |
if ( 'yes' === wcj_get_option( 'wcj_general_advanced_disable_save_sys_temp_dir', 'no' ) ) {
|
85 |
$this->notice = '<div class="error"><p><strong>' . sprintf(
|
86 |
/* translators: %s: search term */
|
87 |
__( 'This option is disabled with "Disable Saving PDFs in PHP directory for temporary files" checkbox in <a href="%s" target="_blank">WooCommerce > Settings > Booster > PDF Invoicing & Packing Slips > Advanced</a>.', 'woocommerce-jetpack' ),
|
88 |
-
admin_url( '
|
89 |
) .
|
90 |
'</strong></p></div>';
|
91 |
} else {
|
@@ -111,10 +111,10 @@ if ( ! class_exists( 'WCJ_PDF_Invoicing_Report_Tool' ) ) :
|
|
111 |
/**
|
112 |
* Add Invoices Report tool to WooCommerce menu (the content).
|
113 |
*
|
114 |
-
* @version 5.6.
|
115 |
*/
|
116 |
public function create_invoices_report_tool() {
|
117 |
-
$wpnonce = isset( $_REQUEST['
|
118 |
$result_message = '';
|
119 |
$result_message .= $this->notice;
|
120 |
$the_year = ( $wpnonce && ! empty( $_POST['report_year'] ) ) ? sanitize_text_field( wp_unslash( $_POST['report_year'] ) ) : gmdate( 'Y' );
|
@@ -299,11 +299,11 @@ if ( ! class_exists( 'WCJ_PDF_Invoicing_Report_Tool' ) ) :
|
|
299 |
/**
|
300 |
* Export_csv.
|
301 |
*
|
302 |
-
* @version
|
303 |
* @since 2.5.7
|
304 |
*/
|
305 |
public function export_csv() {
|
306 |
-
$wpnonce = isset( $_REQUEST['
|
307 |
$_year = ( $wpnonce && ! empty( $_POST['report_year'] ) ) ? sanitize_text_field( wp_unslash( $_POST['report_year'] ) ) : gmdate( 'Y' );
|
308 |
$_month = ( $wpnonce && ! empty( $_POST['report_month'] ) ) ? sanitize_text_field( wp_unslash( $_POST['report_month'] ) ) : gmdate( 'm' );
|
309 |
$_invoice_type = ( $wpnonce && ! empty( $_POST['invoice_type'] ) ) ? sanitize_text_field( wp_unslash( $_POST['invoice_type'] ) ) : 'invoice';
|
2 |
/**
|
3 |
* Booster for WooCommerce - PDF Invoicing - Report Tool
|
4 |
*
|
5 |
+
* @version 5.6.8
|
6 |
* @since 2.2.1
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/includes
|
75 |
/**
|
76 |
* Generate_report_zip.
|
77 |
*
|
78 |
+
* @version 5.6.8
|
79 |
* @since 2.3.10
|
80 |
*/
|
81 |
public function generate_report_zip() {
|
82 |
+
$wpnonce = isset( $_REQUEST['wcj_tools_nonce'] ) ? wp_verify_nonce( sanitize_key( $_REQUEST['wcj_tools_nonce'] ), 'wcj_tools' ) : false;
|
83 |
if ( $wpnonce && isset( $_POST['get_invoices_report_zip'] ) ) {
|
84 |
if ( 'yes' === wcj_get_option( 'wcj_general_advanced_disable_save_sys_temp_dir', 'no' ) ) {
|
85 |
$this->notice = '<div class="error"><p><strong>' . sprintf(
|
86 |
/* translators: %s: search term */
|
87 |
__( 'This option is disabled with "Disable Saving PDFs in PHP directory for temporary files" checkbox in <a href="%s" target="_blank">WooCommerce > Settings > Booster > PDF Invoicing & Packing Slips > Advanced</a>.', 'woocommerce-jetpack' ),
|
88 |
+
admin_url( wcj_admin_tab_url() . '&wcj-cat=pdf_invoicing§ion=pdf_invoicing_advanced' )
|
89 |
) .
|
90 |
'</strong></p></div>';
|
91 |
} else {
|
111 |
/**
|
112 |
* Add Invoices Report tool to WooCommerce menu (the content).
|
113 |
*
|
114 |
+
* @version 5.6.8
|
115 |
*/
|
116 |
public function create_invoices_report_tool() {
|
117 |
+
$wpnonce = isset( $_REQUEST['wcj_tools_nonce'] ) ? wp_verify_nonce( sanitize_key( $_REQUEST['wcj_tools_nonce'] ), 'wcj_tools' ) : false;
|
118 |
$result_message = '';
|
119 |
$result_message .= $this->notice;
|
120 |
$the_year = ( $wpnonce && ! empty( $_POST['report_year'] ) ) ? sanitize_text_field( wp_unslash( $_POST['report_year'] ) ) : gmdate( 'Y' );
|
299 |
/**
|
300 |
* Export_csv.
|
301 |
*
|
302 |
+
* @version 5.6.8
|
303 |
* @since 2.5.7
|
304 |
*/
|
305 |
public function export_csv() {
|
306 |
+
$wpnonce = isset( $_REQUEST['wcj_tools_nonce'] ) ? wp_verify_nonce( sanitize_key( $_REQUEST['wcj_tools_nonce'] ), 'wcj_tools' ) : false;
|
307 |
$_year = ( $wpnonce && ! empty( $_POST['report_year'] ) ) ? sanitize_text_field( wp_unslash( $_POST['report_year'] ) ) : gmdate( 'Y' );
|
308 |
$_month = ( $wpnonce && ! empty( $_POST['report_month'] ) ) ? sanitize_text_field( wp_unslash( $_POST['report_month'] ) ) : gmdate( 'm' );
|
309 |
$_invoice_type = ( $wpnonce && ! empty( $_POST['invoice_type'] ) ) ? sanitize_text_field( wp_unslash( $_POST['invoice_type'] ) ) : 'invoice';
|
includes/pdf-invoices/submodules/class-wcj-pdf-invoicing-styling.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - PDF Invoicing - Styling
|
4 |
*
|
5 |
-
* @version 5.6.
|
6 |
* @author Pluggabl LLC.
|
7 |
* @package Booster_For_WooCommerce/includes
|
8 |
*/
|
@@ -81,32 +81,29 @@ if ( ! class_exists( 'WCJ_PDF_Invoicing_Styling' ) ) :
|
|
81 |
/**
|
82 |
* Download_fonts.
|
83 |
*
|
84 |
-
* @version 5.6.
|
85 |
* @version 2.9.0
|
86 |
* @param int $interval Get time interval.
|
87 |
*/
|
88 |
public function download_fonts( $interval ) {
|
89 |
-
update_option( 'wcj_download_tcpdf_fonts_hook_timestamp', (
|
90 |
wcj_check_and_maybe_download_tcpdf_fonts( true );
|
91 |
}
|
92 |
|
93 |
/**
|
94 |
* Manually_download_fonts.
|
95 |
*
|
96 |
-
* @version 5.6.
|
97 |
* @version 2.9.0
|
98 |
* @todo add success/error message
|
99 |
*/
|
100 |
public function manually_download_fonts() {
|
101 |
-
$wpnonce =
|
102 |
-
if ( function_exists( 'wp_verify_nonce' ) ) {
|
103 |
-
$wpnonce = isset( $_REQUEST['_wpnonce'] ) ? wp_verify_nonce( sanitize_key( isset( $_REQUEST['_wpnonce'] ) ? $_REQUEST['_wpnonce'] : '' ) ) : true;
|
104 |
-
}
|
105 |
if ( isset( $_GET['wcj_download_fonts'] ) && $wpnonce ) {
|
106 |
delete_option( 'wcj_invoicing_fonts_version' );
|
107 |
delete_option( 'wcj_invoicing_fonts_version_timestamp' );
|
108 |
wcj_check_and_maybe_download_tcpdf_fonts();
|
109 |
-
wp_safe_redirect(
|
110 |
exit;
|
111 |
}
|
112 |
}
|
2 |
/**
|
3 |
* Booster for WooCommerce - PDF Invoicing - Styling
|
4 |
*
|
5 |
+
* @version 5.6.8
|
6 |
* @author Pluggabl LLC.
|
7 |
* @package Booster_For_WooCommerce/includes
|
8 |
*/
|
81 |
/**
|
82 |
* Download_fonts.
|
83 |
*
|
84 |
+
* @version 5.6.8
|
85 |
* @version 2.9.0
|
86 |
* @param int $interval Get time interval.
|
87 |
*/
|
88 |
public function download_fonts( $interval ) {
|
89 |
+
update_option( 'wcj_download_tcpdf_fonts_hook_timestamp', wcj_get_timestamp_date_from_gmt() );
|
90 |
wcj_check_and_maybe_download_tcpdf_fonts( true );
|
91 |
}
|
92 |
|
93 |
/**
|
94 |
* Manually_download_fonts.
|
95 |
*
|
96 |
+
* @version 5.6.8
|
97 |
* @version 2.9.0
|
98 |
* @todo add success/error message
|
99 |
*/
|
100 |
public function manually_download_fonts() {
|
101 |
+
$wpnonce = isset( $_REQUEST['wcj_download_fonts-nonce'] ) ? wp_verify_nonce( sanitize_key( $_REQUEST['wcj_download_fonts-nonce'] ), 'wcj_download_fonts' ) : false;
|
|
|
|
|
|
|
102 |
if ( isset( $_GET['wcj_download_fonts'] ) && $wpnonce ) {
|
103 |
delete_option( 'wcj_invoicing_fonts_version' );
|
104 |
delete_option( 'wcj_invoicing_fonts_version_timestamp' );
|
105 |
wcj_check_and_maybe_download_tcpdf_fonts();
|
106 |
+
wp_safe_redirect( esc_url_raw( remove_query_arg( array( 'wcj_download_fonts', 'wcj_download_fonts-nonce' ) ) ) );
|
107 |
exit;
|
108 |
}
|
109 |
}
|
includes/pdf-invoices/submodules/class-wcj-pdf-invoicing-templates.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - PDF Invoicing - Templates
|
4 |
*
|
5 |
-
* @version 5.6.
|
6 |
* @author Pluggabl LLC.
|
7 |
* @package Booster_For_WooCommerce/includes
|
8 |
*/
|
@@ -35,14 +35,14 @@ if ( ! class_exists( 'WCJ_PDF_Invoicing_Templates' ) ) :
|
|
35 |
/**
|
36 |
* Get_default_template.
|
37 |
*
|
38 |
-
* @version 5.6.
|
39 |
* @since 3.1.0
|
40 |
* @param int $invoice_type_id Get invoice ID.
|
41 |
*/
|
42 |
public function get_default_template( $invoice_type_id ) {
|
43 |
if ( ! isset( $this->default_template[ $invoice_type_id ] ) ) {
|
44 |
$default_template_filename = ( false === strpos( $invoice_type_id, 'custom_doc_' ) ? $invoice_type_id : 'custom_doc' );
|
45 |
-
$default_template_filename = wcj_free_plugin_path() . '/includes/settings/pdf-invoicing/wcj-content-template-' . $default_template_filename . '.
|
46 |
if ( file_exists( $default_template_filename ) ) {
|
47 |
ob_start();
|
48 |
include $default_template_filename;
|
2 |
/**
|
3 |
* Booster for WooCommerce - PDF Invoicing - Templates
|
4 |
*
|
5 |
+
* @version 5.6.8
|
6 |
* @author Pluggabl LLC.
|
7 |
* @package Booster_For_WooCommerce/includes
|
8 |
*/
|
35 |
/**
|
36 |
* Get_default_template.
|
37 |
*
|
38 |
+
* @version 5.6.8
|
39 |
* @since 3.1.0
|
40 |
* @param int $invoice_type_id Get invoice ID.
|
41 |
*/
|
42 |
public function get_default_template( $invoice_type_id ) {
|
43 |
if ( ! isset( $this->default_template[ $invoice_type_id ] ) ) {
|
44 |
$default_template_filename = ( false === strpos( $invoice_type_id, 'custom_doc_' ) ? $invoice_type_id : 'custom_doc' );
|
45 |
+
$default_template_filename = wcj_free_plugin_path() . '/includes/settings/pdf-invoicing/wcj-content-template-' . $default_template_filename . '.html';
|
46 |
if ( file_exists( $default_template_filename ) ) {
|
47 |
ob_start();
|
48 |
include $default_template_filename;
|
includes/price-by-country/class-wcj-price-by-country-core.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Price by Country - Core
|
4 |
*
|
5 |
-
* @version 5.6.
|
6 |
* @author Pluggabl LLC.
|
7 |
* @package Booster_For_WooCommerce/includes/Price_By_Country
|
8 |
*/
|
@@ -51,15 +51,12 @@ if ( ! class_exists( 'WCJ_Price_By_Country_Core' ) ) :
|
|
51 |
/**
|
52 |
* Init.
|
53 |
*
|
54 |
-
* @version 5.6.
|
55 |
* @since 2.9.0
|
56 |
*/
|
57 |
public function init() {
|
58 |
wcj_session_maybe_start();
|
59 |
-
$wpnonce
|
60 |
-
if ( function_exists( 'wp_verify_nonce' ) ) {
|
61 |
-
$wpnonce = isset( $_REQUEST['_wpnonce'] ) ? wp_verify_nonce( sanitize_key( isset( $_REQUEST['_wpnonce'] ) ? $_REQUEST['_wpnonce'] : '' ) ) : true;
|
62 |
-
}
|
63 |
$country = isset( $_REQUEST['wcj-country'] ) ? sanitize_text_field( wp_unslash( $_REQUEST['wcj-country'] ) ) : '';
|
64 |
$req_country = null;
|
65 |
if ( $wpnonce && ! empty( $country ) ) {
|
@@ -194,7 +191,7 @@ if ( ! class_exists( 'WCJ_Price_By_Country_Core' ) ) :
|
|
194 |
/**
|
195 |
* Set_default_checkout_country.
|
196 |
*
|
197 |
-
* @version 5.6.
|
198 |
* @since 5.3.0
|
199 |
*
|
200 |
* @param string $default_country defins the default country.
|
@@ -202,9 +199,10 @@ if ( ! class_exists( 'WCJ_Price_By_Country_Core' ) ) :
|
|
202 |
* @return array|null|string
|
203 |
*/
|
204 |
public function set_default_checkout_country( $default_country ) {
|
|
|
205 |
if (
|
206 |
'yes' !== get_option( 'wcj_price_by_country_set_dft_checkout_billing_country', 'no' ) ||
|
207 |
-
empty( $country
|
208 |
) {
|
209 |
return $default_country;
|
210 |
}
|
@@ -337,7 +335,7 @@ if ( ! class_exists( 'WCJ_Price_By_Country_Core' ) ) :
|
|
337 |
/**
|
338 |
* Price_filter_post_clauses.
|
339 |
*
|
340 |
-
* @version 5.6.
|
341 |
* @since 5.1.0
|
342 |
*
|
343 |
* @see WC_Query::price_filter_post_clauses()
|
@@ -349,14 +347,15 @@ if ( ! class_exists( 'WCJ_Price_By_Country_Core' ) ) :
|
|
349 |
*/
|
350 |
public function price_filter_post_clauses( $args, $wp_query ) {
|
351 |
global $wpdb;
|
352 |
-
|
353 |
$group_id = $this->get_customer_country_group_id();
|
354 |
$country_exchange_rate = get_option( 'wcj_price_by_country_exchange_rate_group_' . $group_id, 1 );
|
355 |
-
if ( ! $
|
356 |
return $args;
|
357 |
}
|
358 |
$current_min_price = isset( $_GET['min_price'] ) ? floatval( wp_unslash( $_GET['min_price'] ) ) : 0;
|
359 |
$current_max_price = isset( $_GET['max_price'] ) ? floatval( wp_unslash( $_GET['max_price'] ) ) : PHP_INT_MAX;
|
|
|
360 |
if ( wc_tax_enabled() && 'incl' === get_option( 'woocommerce_tax_display_shop' ) && ! wc_prices_include_tax() ) {
|
361 |
$tax_class = apply_filters( 'woocommerce_price_filter_widget_tax_class', '' );
|
362 |
$tax_rates = WC_Tax::get_rates( $tax_class );
|
@@ -671,7 +670,7 @@ if ( ! class_exists( 'WCJ_Price_By_Country_Core' ) ) :
|
|
671 |
/**
|
672 |
* Get_customer_country_group_id.
|
673 |
*
|
674 |
-
* @version 5.6.
|
675 |
* @todo [feature] (maybe) `( 'cart_and_checkout' === get_option( 'wcj_price_by_country_override_scope', 'all' ) && ( is_cart() || is_checkout() ) ) ||`
|
676 |
*/
|
677 |
public function get_customer_country_group_id() {
|
@@ -689,14 +688,10 @@ if ( ! class_exists( 'WCJ_Price_By_Country_Core' ) ) :
|
|
689 |
return $this->customer_country_group_id;
|
690 |
}
|
691 |
|
692 |
-
$wpnonce = true;
|
693 |
-
if ( function_exists( 'wp_verify_nonce' ) ) {
|
694 |
-
$wpnonce = isset( $_REQUEST['_wpnonce'] ) ? wp_verify_nonce( sanitize_key( isset( $_REQUEST['_wpnonce'] ) ? $_REQUEST['_wpnonce'] : '' ) ) : true;
|
695 |
-
}
|
696 |
-
|
697 |
// Get the country.
|
|
|
698 |
$override_option = get_option( 'wcj_price_by_country_override_on_checkout_with_billing_country', 'no' );
|
699 |
-
if (
|
700 |
$country = sanitize_text_field( wp_unslash( $_GET['country'] ) );
|
701 |
} elseif ( 'no' !== $override_option && (
|
702 |
( 'all' === get_option( 'wcj_price_by_country_override_scope', 'all' ) ) ||
|
@@ -718,6 +713,7 @@ if ( ! class_exists( 'WCJ_Price_By_Country_Core' ) ) :
|
|
718 |
$country = ( defined( 'ICL_LANGUAGE_CODE' ) ? ICL_LANGUAGE_CODE : null );
|
719 |
}
|
720 |
}
|
|
|
721 |
|
722 |
if ( null === $country ) {
|
723 |
$this->customer_country_group_id = -1;
|
@@ -811,21 +807,19 @@ if ( ! class_exists( 'WCJ_Price_By_Country_Core' ) ) :
|
|
811 |
/**
|
812 |
* Change_price.
|
813 |
*
|
814 |
-
* @version 5.6.
|
815 |
* @param string $price defines the price for conversion.
|
816 |
* @param object $product Product Object.
|
817 |
*/
|
818 |
public function change_price( $price, $product ) {
|
819 |
$group_id = $this->get_customer_country_group_id();
|
820 |
if ( null !== $group_id && '' !== $group_id ) {
|
821 |
-
$product_generated_cart_id = WC()->cart->generate_cart_id( wcj_get_product_id( $product ) );
|
822 |
if ( 'yes' === get_option( 'wcj_price_by_country_compatibility_woo_discount_rules', 'no' ) ) {
|
823 |
global $flycart_woo_discount_rules;
|
824 |
if (
|
825 |
! empty( $flycart_woo_discount_rules ) &&
|
826 |
-
! has_action( 'woocommerce_before_calculate_totals', array( $flycart_woo_discount_rules, 'applyDiscountRules' ) )
|
827 |
-
|
828 |
-
WC()->cart->find_product_in_cart( $product_cart_id )
|
829 |
) {
|
830 |
return $price;
|
831 |
}
|
2 |
/**
|
3 |
* Booster for WooCommerce - Price by Country - Core
|
4 |
*
|
5 |
+
* @version 5.6.8
|
6 |
* @author Pluggabl LLC.
|
7 |
* @package Booster_For_WooCommerce/includes/Price_By_Country
|
8 |
*/
|
51 |
/**
|
52 |
* Init.
|
53 |
*
|
54 |
+
* @version 5.6.8
|
55 |
* @since 2.9.0
|
56 |
*/
|
57 |
public function init() {
|
58 |
wcj_session_maybe_start();
|
59 |
+
$wpnonce = isset( $_REQUEST['wcj-country-nonce'] ) ? wp_verify_nonce( sanitize_key( $_REQUEST['wcj-country-nonce'] ), 'wcj-country' ) : false;
|
|
|
|
|
|
|
60 |
$country = isset( $_REQUEST['wcj-country'] ) ? sanitize_text_field( wp_unslash( $_REQUEST['wcj-country'] ) ) : '';
|
61 |
$req_country = null;
|
62 |
if ( $wpnonce && ! empty( $country ) ) {
|
191 |
/**
|
192 |
* Set_default_checkout_country.
|
193 |
*
|
194 |
+
* @version 5.6.8
|
195 |
* @since 5.3.0
|
196 |
*
|
197 |
* @param string $default_country defins the default country.
|
199 |
* @return array|null|string
|
200 |
*/
|
201 |
public function set_default_checkout_country( $default_country ) {
|
202 |
+
$country = null !== wcj_session_get( 'wcj-country' ) ? wcj_session_get( 'wcj-country' ) : $this->get_customer_country_by_ip();
|
203 |
if (
|
204 |
'yes' !== get_option( 'wcj_price_by_country_set_dft_checkout_billing_country', 'no' ) ||
|
205 |
+
empty( $country )
|
206 |
) {
|
207 |
return $default_country;
|
208 |
}
|
335 |
/**
|
336 |
* Price_filter_post_clauses.
|
337 |
*
|
338 |
+
* @version 5.6.8
|
339 |
* @since 5.1.0
|
340 |
*
|
341 |
* @see WC_Query::price_filter_post_clauses()
|
347 |
*/
|
348 |
public function price_filter_post_clauses( $args, $wp_query ) {
|
349 |
global $wpdb;
|
350 |
+
// phpcs:disable WordPress.Security.NonceVerification
|
351 |
$group_id = $this->get_customer_country_group_id();
|
352 |
$country_exchange_rate = get_option( 'wcj_price_by_country_exchange_rate_group_' . $group_id, 1 );
|
353 |
+
if ( ! $wp_query->is_main_query() || ( ! isset( $_GET['max_price'] ) && ! isset( $_GET['min_price'] ) ) || empty( $group_id ) || (float) 1 === (float) $country_exchange_rate ) {
|
354 |
return $args;
|
355 |
}
|
356 |
$current_min_price = isset( $_GET['min_price'] ) ? floatval( wp_unslash( $_GET['min_price'] ) ) : 0;
|
357 |
$current_max_price = isset( $_GET['max_price'] ) ? floatval( wp_unslash( $_GET['max_price'] ) ) : PHP_INT_MAX;
|
358 |
+
// phpcs:enable WordPress.Security.NonceVerification
|
359 |
if ( wc_tax_enabled() && 'incl' === get_option( 'woocommerce_tax_display_shop' ) && ! wc_prices_include_tax() ) {
|
360 |
$tax_class = apply_filters( 'woocommerce_price_filter_widget_tax_class', '' );
|
361 |
$tax_rates = WC_Tax::get_rates( $tax_class );
|
670 |
/**
|
671 |
* Get_customer_country_group_id.
|
672 |
*
|
673 |
+
* @version 5.6.8
|
674 |
* @todo [feature] (maybe) `( 'cart_and_checkout' === get_option( 'wcj_price_by_country_override_scope', 'all' ) && ( is_cart() || is_checkout() ) ) ||`
|
675 |
*/
|
676 |
public function get_customer_country_group_id() {
|
688 |
return $this->customer_country_group_id;
|
689 |
}
|
690 |
|
|
|
|
|
|
|
|
|
|
|
691 |
// Get the country.
|
692 |
+
// phpcs:disable WordPress.Security.NonceVerification
|
693 |
$override_option = get_option( 'wcj_price_by_country_override_on_checkout_with_billing_country', 'no' );
|
694 |
+
if ( isset( $_GET['country'] ) && '' !== $_GET['country'] && wcj_is_user_role( 'administrator' ) ) {
|
695 |
$country = sanitize_text_field( wp_unslash( $_GET['country'] ) );
|
696 |
} elseif ( 'no' !== $override_option && (
|
697 |
( 'all' === get_option( 'wcj_price_by_country_override_scope', 'all' ) ) ||
|
713 |
$country = ( defined( 'ICL_LANGUAGE_CODE' ) ? ICL_LANGUAGE_CODE : null );
|
714 |
}
|
715 |
}
|
716 |
+
// phpcs:enable WordPress.Security.NonceVerification
|
717 |
|
718 |
if ( null === $country ) {
|
719 |
$this->customer_country_group_id = -1;
|
807 |
/**
|
808 |
* Change_price.
|
809 |
*
|
810 |
+
* @version 5.6.8
|
811 |
* @param string $price defines the price for conversion.
|
812 |
* @param object $product Product Object.
|
813 |
*/
|
814 |
public function change_price( $price, $product ) {
|
815 |
$group_id = $this->get_customer_country_group_id();
|
816 |
if ( null !== $group_id && '' !== $group_id ) {
|
|
|
817 |
if ( 'yes' === get_option( 'wcj_price_by_country_compatibility_woo_discount_rules', 'no' ) ) {
|
818 |
global $flycart_woo_discount_rules;
|
819 |
if (
|
820 |
! empty( $flycart_woo_discount_rules ) &&
|
821 |
+
! has_action( 'woocommerce_before_calculate_totals', array( $flycart_woo_discount_rules, 'applyDiscountRules' ) ) &&
|
822 |
+
WC()->cart->find_product_in_cart( WC()->cart->generate_cart_id( wcj_get_product_id( $product ) ) )
|
|
|
823 |
) {
|
824 |
return $price;
|
825 |
}
|
includes/price-by-country/class-wcj-price-by-country-group-generator.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Price By Country - Group Generator
|
4 |
*
|
5 |
-
* @version 5.6.
|
6 |
* @author Pluggabl LLC.
|
7 |
* @package Booster_For_WooCommerce/includes/Price_By_Country
|
8 |
*/
|
@@ -36,10 +36,7 @@ if ( ! class_exists( 'WCJ_Price_By_Country_Group_Generator' ) ) :
|
|
36 |
* @since 3.9.0
|
37 |
*/
|
38 |
public function create_all_countries_groups_notices() {
|
39 |
-
$wpnonce =
|
40 |
-
if ( function_exists( 'wp_verify_nonce' ) ) {
|
41 |
-
$wpnonce = isset( $_REQUEST['_wpnonce'] ) ? wp_verify_nonce( sanitize_key( isset( $_REQUEST['_wpnonce'] ) ? $_REQUEST['_wpnonce'] : '' ), 'woocommerce-settings' ) : true;
|
42 |
-
}
|
43 |
if ( $wpnonce && isset( $_GET['wcj_generate_country_groups_finished'] ) ) {
|
44 |
echo '<div class="notice notice-success is-dismissible"><p>' . esc_html__( 'Country groups successfully generated.', 'woocommerce-jetpack' ) . '</p></div>';
|
45 |
}
|
@@ -76,19 +73,19 @@ if ( ! class_exists( 'WCJ_Price_By_Country_Group_Generator' ) ) :
|
|
76 |
/**
|
77 |
* Create_all_countries_groups.
|
78 |
*
|
79 |
-
* @version 5.6.
|
80 |
* @todo add nonce verification
|
81 |
*/
|
82 |
public function create_all_countries_groups() {
|
83 |
-
$wpnonce =
|
84 |
-
if ( function_exists( 'wp_verify_nonce' ) ) {
|
85 |
-
$wpnonce = isset( $_REQUEST['_wpnonce'] ) ? wp_verify_nonce( sanitize_key( isset( $_REQUEST['_wpnonce'] ) ? $_REQUEST['_wpnonce'] : '' ), 'woocommerce-settings' ) : true;
|
86 |
-
}
|
87 |
// Verification.
|
88 |
-
if ( !
|
|
|
|
|
|
|
89 |
return;
|
90 |
}
|
91 |
-
if ( $wpnonce
|
92 |
return;
|
93 |
}
|
94 |
if ( ! wcj_is_user_role( 'administrator' ) || 1 === apply_filters( 'booster_option', 1, '' ) ) {
|
2 |
/**
|
3 |
* Booster for WooCommerce - Price By Country - Group Generator
|
4 |
*
|
5 |
+
* @version 5.6.8
|
6 |
* @author Pluggabl LLC.
|
7 |
* @package Booster_For_WooCommerce/includes/Price_By_Country
|
8 |
*/
|
36 |
* @since 3.9.0
|
37 |
*/
|
38 |
public function create_all_countries_groups_notices() {
|
39 |
+
$wpnonce = isset( $_REQUEST['wcj_generate_country_groups-nonce'] ) ? wp_verify_nonce( sanitize_key( $_REQUEST['wcj_generate_country_groups-nonce'] ), 'wcj_generate_country_groups' ) : false;
|
|
|
|
|
|
|
40 |
if ( $wpnonce && isset( $_GET['wcj_generate_country_groups_finished'] ) ) {
|
41 |
echo '<div class="notice notice-success is-dismissible"><p>' . esc_html__( 'Country groups successfully generated.', 'woocommerce-jetpack' ) . '</p></div>';
|
42 |
}
|
73 |
/**
|
74 |
* Create_all_countries_groups.
|
75 |
*
|
76 |
+
* @version 5.6.8
|
77 |
* @todo add nonce verification
|
78 |
*/
|
79 |
public function create_all_countries_groups() {
|
80 |
+
$wpnonce = isset( $_GET['wcj_generate_country_groups-nonce'] ) ? wp_verify_nonce( sanitize_key( $_GET['wcj_generate_country_groups-nonce'] ), 'wcj_generate_country_groups' ) : false;
|
|
|
|
|
|
|
81 |
// Verification.
|
82 |
+
if ( ! isset( $_GET['wcj_generate_country_groups'] ) ) {
|
83 |
+
return;
|
84 |
+
}
|
85 |
+
if ( isset( $_POST['save'] ) ) {
|
86 |
return;
|
87 |
}
|
88 |
+
if ( ! $wpnonce ) {
|
89 |
return;
|
90 |
}
|
91 |
if ( ! wcj_is_user_role( 'administrator' ) || 1 === apply_filters( 'booster_option', 1, '' ) ) {
|
includes/price-by-country/class-wcj-price-by-country-local.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Price by Country - Local
|
4 |
*
|
5 |
-
* @version 5.6.
|
6 |
* @author Pluggabl LLC.
|
7 |
* @todo (maybe) remove this and leave only standard meta box option (i.e. only `'meta_box' === wcj_get_option( 'wcj_price_by_country_local_options_style', 'inline' )`)
|
8 |
* @package Booster_For_WooCommerce/includes/Price_By_Country
|
@@ -77,7 +77,7 @@ if ( ! class_exists( 'WCJ_Price_By_Country_Local' ) ) :
|
|
77 |
}
|
78 |
|
79 |
// Output.
|
80 |
-
echo $html;
|
81 |
}
|
82 |
|
83 |
/**
|
2 |
/**
|
3 |
* Booster for WooCommerce - Price by Country - Local
|
4 |
*
|
5 |
+
* @version 5.6.8
|
6 |
* @author Pluggabl LLC.
|
7 |
* @todo (maybe) remove this and leave only standard meta box option (i.e. only `'meta_box' === wcj_get_option( 'wcj_price_by_country_local_options_style', 'inline' )`)
|
8 |
* @package Booster_For_WooCommerce/includes/Price_By_Country
|
77 |
}
|
78 |
|
79 |
// Output.
|
80 |
+
echo wp_kses_post( $html );
|
81 |
}
|
82 |
|
83 |
/**
|
includes/reports/class-wcj-currency-reports.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Reports - Currency
|
4 |
*
|
5 |
-
* @version 5.6.
|
6 |
* @author Pluggabl LLC.
|
7 |
* @package Booster_For_WooCommerce/includes
|
8 |
*/
|
@@ -29,12 +29,12 @@ if ( ! class_exists( 'WCJ_Currency_Reports' ) ) :
|
|
29 |
/**
|
30 |
* Add_reports_currency_to_admin_bar.
|
31 |
*
|
32 |
-
* @version 5.6.
|
33 |
* @param int | string $wp_admin_bar Difine admin_bar.
|
34 |
*/
|
35 |
public function add_reports_currency_to_admin_bar( $wp_admin_bar ) {
|
36 |
-
|
37 |
-
if (
|
38 |
|
39 |
$the_current_code = isset( $_GET['currency'] ) ? sanitize_text_field( wp_unslash( $_GET['currency'] ) ) : get_woocommerce_currency();
|
40 |
$parent = 'reports_currency_select';
|
@@ -88,18 +88,19 @@ if ( ! class_exists( 'WCJ_Currency_Reports' ) ) :
|
|
88 |
$wp_admin_bar->add_node( $args );
|
89 |
}
|
90 |
}
|
|
|
91 |
}
|
92 |
|
93 |
/**
|
94 |
* Change_currency_symbol_reports.
|
95 |
*
|
96 |
-
* @version 5.6.
|
97 |
* @param string $currency_symbol Get currency symbol.
|
98 |
* @param string $currency Get currency.
|
99 |
*/
|
100 |
public function change_currency_symbol_reports( $currency_symbol, $currency ) {
|
101 |
-
|
102 |
-
if (
|
103 |
if ( isset( $_GET['currency'] ) ) {
|
104 |
if ( 'merge' === $_GET['currency'] ) {
|
105 |
return '';
|
@@ -111,29 +112,31 @@ if ( ! class_exists( 'WCJ_Currency_Reports' ) ) :
|
|
111 |
}
|
112 |
}
|
113 |
}
|
|
|
114 |
return $currency_symbol;
|
115 |
}
|
116 |
|
117 |
/**
|
118 |
* Filter_reports.
|
119 |
*
|
120 |
-
* @version 5.6.
|
121 |
* @param Array $args Get args.
|
122 |
*/
|
123 |
public function filter_reports( $args ) {
|
124 |
-
|
125 |
-
if (
|
126 |
if ( isset( $_GET['currency'] ) && 'merge' === $_GET['currency'] ) {
|
127 |
return $args;
|
128 |
}
|
129 |
$args['where_meta'] = array(
|
130 |
array(
|
131 |
-
'meta_key' => '_order_currency', //phpcs:ignore
|
132 |
-
'meta_value' => isset( $_GET['currency'] ) ? sanitize_text_field( wp_unslash( $_GET['currency'] ) ) : get_woocommerce_currency(), //phpcs:ignore
|
133 |
'operator' => '=',
|
134 |
),
|
135 |
);
|
136 |
}
|
|
|
137 |
return $args;
|
138 |
}
|
139 |
}
|
2 |
/**
|
3 |
* Booster for WooCommerce - Reports - Currency
|
4 |
*
|
5 |
+
* @version 5.6.8
|
6 |
* @author Pluggabl LLC.
|
7 |
* @package Booster_For_WooCommerce/includes
|
8 |
*/
|
29 |
/**
|
30 |
* Add_reports_currency_to_admin_bar.
|
31 |
*
|
32 |
+
* @version 5.6.8
|
33 |
* @param int | string $wp_admin_bar Difine admin_bar.
|
34 |
*/
|
35 |
public function add_reports_currency_to_admin_bar( $wp_admin_bar ) {
|
36 |
+
// phpcs:disable WordPress.Security.NonceVerification
|
37 |
+
if ( isset( $_GET['page'] ) && 'wc-reports' === $_GET['page'] ) {
|
38 |
|
39 |
$the_current_code = isset( $_GET['currency'] ) ? sanitize_text_field( wp_unslash( $_GET['currency'] ) ) : get_woocommerce_currency();
|
40 |
$parent = 'reports_currency_select';
|
88 |
$wp_admin_bar->add_node( $args );
|
89 |
}
|
90 |
}
|
91 |
+
// phpcs:enable WordPress.Security.NonceVerification
|
92 |
}
|
93 |
|
94 |
/**
|
95 |
* Change_currency_symbol_reports.
|
96 |
*
|
97 |
+
* @version 5.6.8
|
98 |
* @param string $currency_symbol Get currency symbol.
|
99 |
* @param string $currency Get currency.
|
100 |
*/
|
101 |
public function change_currency_symbol_reports( $currency_symbol, $currency ) {
|
102 |
+
// phpcs:disable WordPress.Security.NonceVerification
|
103 |
+
if ( isset( $_GET['page'] ) && 'wc-reports' === $_GET['page'] ) {
|
104 |
if ( isset( $_GET['currency'] ) ) {
|
105 |
if ( 'merge' === $_GET['currency'] ) {
|
106 |
return '';
|
112 |
}
|
113 |
}
|
114 |
}
|
115 |
+
// phpcs:enable WordPress.Security.NonceVerification
|
116 |
return $currency_symbol;
|
117 |
}
|
118 |
|
119 |
/**
|
120 |
* Filter_reports.
|
121 |
*
|
122 |
+
* @version 5.6.8
|
123 |
* @param Array $args Get args.
|
124 |
*/
|
125 |
public function filter_reports( $args ) {
|
126 |
+
// phpcs:disable WordPress.Security.NonceVerification
|
127 |
+
if ( isset( $_GET['page'] ) && 'wc-reports' === $_GET['page'] ) {
|
128 |
if ( isset( $_GET['currency'] ) && 'merge' === $_GET['currency'] ) {
|
129 |
return $args;
|
130 |
}
|
131 |
$args['where_meta'] = array(
|
132 |
array(
|
133 |
+
'meta_key' => '_order_currency', // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_meta_key
|
134 |
+
'meta_value' => isset( $_GET['currency'] ) ? sanitize_text_field( wp_unslash( $_GET['currency'] ) ) : get_woocommerce_currency(), // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_meta_value
|
135 |
'operator' => '=',
|
136 |
),
|
137 |
);
|
138 |
}
|
139 |
+
// phpcs:enable WordPress.Security.NonceVerification
|
140 |
return $args;
|
141 |
}
|
142 |
}
|
includes/reports/class-wcj-reports-monthly-sales.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Reports - Monthly Sales (with Currency Conversion)
|
4 |
*
|
5 |
-
* @version 5.6.
|
6 |
* @since 2.4.7
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/includes
|
@@ -86,7 +86,7 @@ if ( ! class_exists( 'WCJ_Reports_Monthly_Sales' ) ) :
|
|
86 |
/**
|
87 |
* Get_monthly_sales_report.
|
88 |
*
|
89 |
-
* @version 5.6.
|
90 |
* @since 2.4.7
|
91 |
* @todo (maybe) visible rows selection by admin (as option)
|
92 |
* @todo (maybe) take not monthly average, but "Close" of closest day (probably create new "Daily Sales (with Currency Conversion)" report)
|
@@ -113,11 +113,8 @@ if ( ! class_exists( 'WCJ_Reports_Monthly_Sales' ) ) :
|
|
113 |
|
114 |
$order_currencies_array = array();
|
115 |
$order_currencies_array_totals = array();
|
116 |
-
|
117 |
-
|
118 |
-
$wpnonce = isset( $_REQUEST['_wpnonce'] ) ? wp_verify_nonce( sanitize_key( isset( $_REQUEST['_wpnonce'] ) ? $_REQUEST['_wpnonce'] : '' ) ) : true;
|
119 |
-
}
|
120 |
-
$report_currency = ( $wpnonce && isset( $_GET['currency'] ) && 'merge' !== isset( $_GET['currency'] ) ) ? sanitize_text_field( wp_unslash( $_GET['currency'] ) ) : get_woocommerce_currency();
|
121 |
$block_size = 256;
|
122 |
$table_data = array();
|
123 |
$do_forecast = ( 'yes' === wcj_get_option( 'wcj_reports_orders_monthly_sales_forecast', 'no' ) );
|
2 |
/**
|
3 |
* Booster for WooCommerce - Reports - Monthly Sales (with Currency Conversion)
|
4 |
*
|
5 |
+
* @version 5.6.8
|
6 |
* @since 2.4.7
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/includes
|
86 |
/**
|
87 |
* Get_monthly_sales_report.
|
88 |
*
|
89 |
+
* @version 5.6.8
|
90 |
* @since 2.4.7
|
91 |
* @todo (maybe) visible rows selection by admin (as option)
|
92 |
* @todo (maybe) take not monthly average, but "Close" of closest day (probably create new "Daily Sales (with Currency Conversion)" report)
|
113 |
|
114 |
$order_currencies_array = array();
|
115 |
$order_currencies_array_totals = array();
|
116 |
+
|
117 |
+
$report_currency = ( isset( $_GET['currency'] ) && 'merge' !== isset( $_GET['currency'] ) ) ? sanitize_text_field( wp_unslash( $_GET['currency'] ) ) : get_woocommerce_currency(); // phpcs:ignore WordPress.Security.NonceVerification
|
|
|
|
|
|
|
118 |
$block_size = 256;
|
119 |
$table_data = array();
|
120 |
$do_forecast = ( 'yes' === wcj_get_option( 'wcj_reports_orders_monthly_sales_forecast', 'no' ) );
|
includes/reports/class-wcj-reports-product-sales-daily.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Reports - Product Sales (Daily)
|
4 |
*
|
5 |
-
* @version 5.6.
|
6 |
* @since 2.9.0
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/includes
|
@@ -47,11 +47,11 @@ if ( ! class_exists( 'WCJ_Reports_Product_Sales_Daily' ) ) :
|
|
47 |
/**
|
48 |
* Get_report_args.
|
49 |
*
|
50 |
-
* @version 5.6.
|
51 |
* @since 2.9.0
|
52 |
*/
|
53 |
public function get_report_args() {
|
54 |
-
$current_time = (
|
55 |
$wpnonce = isset( $_REQUEST['booster_products_sales_daily_filter-nonce'] ) ? wp_verify_nonce( sanitize_key( $_REQUEST['booster_products_sales_daily_filter-nonce'] ), 'booster_products_sales_daily_filter' ) : false;
|
56 |
$this->start_date = $wpnonce && isset( $_GET['start_date'] ) ? sanitize_text_field( wp_unslash( $_GET['start_date'] ) ) : gmdate( 'Y-m-d', strtotime( '-7 days', $current_time ) );
|
57 |
$this->end_date = isset( $_GET['end_date'] ) ? sanitize_text_field( wp_unslash( $_GET['end_date'] ) ) : gmdate( 'Y-m-d', $current_time );
|
@@ -171,12 +171,12 @@ if ( ! class_exists( 'WCJ_Reports_Product_Sales_Daily' ) ) :
|
|
171 |
/**
|
172 |
* Output_report_header.
|
173 |
*
|
174 |
-
* @version 5.6.
|
175 |
* @since 2.9.0
|
176 |
*/
|
177 |
public function output_report_header() {
|
178 |
// Settings link and dates menu.
|
179 |
-
$settings_link = '<a href="' . admin_url( '
|
180 |
'<< ' . __( 'Reports Settings', 'woocommerce-jetpack' ) . '</a>';
|
181 |
$menu = '';
|
182 |
$menu .= '<ul class="subsubsub">';
|
@@ -196,15 +196,16 @@ if ( ! class_exists( 'WCJ_Reports_Product_Sales_Daily' ) ) :
|
|
196 |
$menu .= '</ul>';
|
197 |
$menu .= '<br class="clear">';
|
198 |
// Product and date filter form.
|
199 |
-
|
200 |
-
$pages
|
201 |
-
$tabs
|
202 |
-
$reports
|
|
|
203 |
$filter_form = '';
|
204 |
$filter_form .= '<form method="get" action="">';
|
205 |
-
$filter_form .= '<input type="hidden" name="page" value="' . $pages . '" />';
|
206 |
-
$filter_form .= '<input type="hidden" name="tab" value="' . $tabs . '" />';
|
207 |
-
$filter_form .= '<input type="hidden" name="report" value="' . $reports . '" />';
|
208 |
$filter_form .= '<label style="font-style:italic;" for="start_date">' . __( 'From:', 'woocommerce-jetpack' ) . '</label> ' .
|
209 |
'<input type="text" display="date" dateformat="' . wcj_date_format_php_to_js( 'Y-m-d' ) . '" name="start_date" title="" value="' . $this->start_date . '" />';
|
210 |
$filter_form .= ' ';
|
2 |
/**
|
3 |
* Booster for WooCommerce - Reports - Product Sales (Daily)
|
4 |
*
|
5 |
+
* @version 5.6.8
|
6 |
* @since 2.9.0
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/includes
|
47 |
/**
|
48 |
* Get_report_args.
|
49 |
*
|
50 |
+
* @version 5.6.8
|
51 |
* @since 2.9.0
|
52 |
*/
|
53 |
public function get_report_args() {
|
54 |
+
$current_time = wcj_get_timestamp_date_from_gmt();
|
55 |
$wpnonce = isset( $_REQUEST['booster_products_sales_daily_filter-nonce'] ) ? wp_verify_nonce( sanitize_key( $_REQUEST['booster_products_sales_daily_filter-nonce'] ), 'booster_products_sales_daily_filter' ) : false;
|
56 |
$this->start_date = $wpnonce && isset( $_GET['start_date'] ) ? sanitize_text_field( wp_unslash( $_GET['start_date'] ) ) : gmdate( 'Y-m-d', strtotime( '-7 days', $current_time ) );
|
57 |
$this->end_date = isset( $_GET['end_date'] ) ? sanitize_text_field( wp_unslash( $_GET['end_date'] ) ) : gmdate( 'Y-m-d', $current_time );
|
171 |
/**
|
172 |
* Output_report_header.
|
173 |
*
|
174 |
+
* @version 5.6.8
|
175 |
* @since 2.9.0
|
176 |
*/
|
177 |
public function output_report_header() {
|
178 |
// Settings link and dates menu.
|
179 |
+
$settings_link = '<a href="' . admin_url( wcj_admin_tab_url() . '&wcj-cat=emails_and_misc§ion=reports' ) . '">' .
|
180 |
'<< ' . __( 'Reports Settings', 'woocommerce-jetpack' ) . '</a>';
|
181 |
$menu = '';
|
182 |
$menu .= '<ul class="subsubsub">';
|
196 |
$menu .= '</ul>';
|
197 |
$menu .= '<br class="clear">';
|
198 |
// Product and date filter form.
|
199 |
+
// phpcs:disable WordPress.Security.NonceVerification
|
200 |
+
$pages = isset( $_GET['page'] ) ? sanitize_text_field( wp_unslash( $_GET['page'] ) ) : '';
|
201 |
+
$tabs = isset( $_GET['tab'] ) ? sanitize_text_field( wp_unslash( $_GET['tab'] ) ) : '';
|
202 |
+
$reports = isset( $_GET['report'] ) ? sanitize_text_field( wp_unslash( $_GET['report'] ) ) : '';
|
203 |
+
// phpcs:enable WordPress.Security.NonceVerification
|
204 |
$filter_form = '';
|
205 |
$filter_form .= '<form method="get" action="">';
|
206 |
+
$filter_form .= '<input type="hidden" name="page" value="' . esc_attr( $pages ) . '" />';
|
207 |
+
$filter_form .= '<input type="hidden" name="tab" value="' . esc_attr( $tabs ) . '" />';
|
208 |
+
$filter_form .= '<input type="hidden" name="report" value="' . esc_attr( $reports ) . '" />';
|
209 |
$filter_form .= '<label style="font-style:italic;" for="start_date">' . __( 'From:', 'woocommerce-jetpack' ) . '</label> ' .
|
210 |
'<input type="text" display="date" dateformat="' . wcj_date_format_php_to_js( 'Y-m-d' ) . '" name="start_date" title="" value="' . $this->start_date . '" />';
|
211 |
$filter_form .= ' ';
|
includes/reports/{wcj-class-reports-sales-gateways.php → class-wcj-reports-sales-gateways.php}
RENAMED
@@ -1,8 +1,8 @@
|
|
1 |
-
<?php
|
2 |
/**
|
3 |
* Booster for WooCommerce - Reports - Product Sales - Gateways
|
4 |
*
|
5 |
-
* @version 5.6.
|
6 |
* @since 3.6.0
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/includes
|
@@ -12,14 +12,14 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
12 |
exit;
|
13 |
}
|
14 |
|
15 |
-
if ( ! class_exists( '
|
16 |
/**
|
17 |
-
*
|
18 |
*
|
19 |
-
* @version
|
20 |
* @since 3.6.0
|
21 |
*/
|
22 |
-
class
|
23 |
|
24 |
/**
|
25 |
* Constructor.
|
@@ -51,11 +51,8 @@ if ( ! class_exists( 'WCJ_Reports_Product_Sales_Gateways' ) ) :
|
|
51 |
* @since 3.6.0
|
52 |
*/
|
53 |
public function get_report_args() {
|
54 |
-
$wpnonce
|
55 |
-
|
56 |
-
$wpnonce = isset( $_REQUEST['_wpnonce'] ) ? wp_verify_nonce( sanitize_key( isset( $_REQUEST['_wpnonce'] ) ? $_REQUEST['_wpnonce'] : '' ), 'woocommerce-settings' ) : true;
|
57 |
-
}
|
58 |
-
$current_time = (int) gmdate( 'U' );
|
59 |
$this->start_date = $wpnonce && isset( $_GET['start_date'] ) ? sanitize_text_field( wp_unslash( $_GET['start_date'] ) ) : gmdate( 'Y-m-d', strtotime( '-7 days', $current_time ) );
|
60 |
$this->end_date = $wpnonce && isset( $_GET['end_date'] ) ? sanitize_text_field( wp_unslash( $_GET['end_date'] ) ) : gmdate( 'Y-m-d', $current_time );
|
61 |
}
|
@@ -124,7 +121,7 @@ if ( ! class_exists( 'WCJ_Reports_Product_Sales_Gateways' ) ) :
|
|
124 |
*/
|
125 |
public function output_report_header() {
|
126 |
// Settings link and dates menu.
|
127 |
-
$settings_link = '<a href="' . admin_url( '
|
128 |
'<< ' . __( 'Reports Settings', 'woocommerce-jetpack' ) . '</a>';
|
129 |
$menu = '';
|
130 |
$menu .= '<ul class="subsubsub">';
|
@@ -141,28 +138,27 @@ if ( ! class_exists( 'WCJ_Reports_Product_Sales_Gateways' ) ) :
|
|
141 |
'class="' . ( ( $this->start_date === $custom_range['start_date'] && $this->end_date === $custom_range['end_date'] ) ? 'current' : '' ) . '"' .
|
142 |
'>' . $custom_range['title'] . '</a> | </li>';
|
143 |
}
|
144 |
-
$menu
|
145 |
-
$menu
|
146 |
-
|
147 |
-
|
148 |
-
|
149 |
-
|
150 |
-
|
151 |
-
$tab = $wpnonce && isset( $_GET['tab'] ) ? sanitize_text_field( wp_unslash( $_GET['tab'] ) ) : '';
|
152 |
-
$report = $wpnonce && isset( $_GET['report'] ) ? sanitize_text_field( wp_unslash( $_GET['report'] ) ) : '';
|
153 |
|
154 |
// Date filter form.
|
155 |
$filter_form = '';
|
156 |
$filter_form .= '<form method="get" action="">';
|
157 |
-
$filter_form .= '<input type="hidden" name="page" value="' . $page . '" />';
|
158 |
-
$filter_form .= '<input type="hidden" name="tab" value="' . $tab . '" />';
|
159 |
-
$filter_form .= '<input type="hidden" name="report" value="' . $report . '" />';
|
160 |
$filter_form .= '<label style="font-style:italic;" for="start_date">' . __( 'From:', 'woocommerce-jetpack' ) . '</label> ' .
|
161 |
'<input type="text" display="date" dateformat="' . wcj_date_format_php_to_js( 'Y-m-d' ) . '" name="start_date" title="" value="' . $this->start_date . '" />';
|
162 |
$filter_form .= ' ';
|
163 |
$filter_form .= '<label style="font-style:italic;" for="end_date">' . __( 'To:', 'woocommerce-jetpack' ) . '</label>' .
|
164 |
'<input type="text" display="date" dateformat="' . wcj_date_format_php_to_js( 'Y-m-d' ) . '" name="end_date" title="" value="' . $this->end_date . '" />';
|
165 |
$filter_form .= ' ';
|
|
|
166 |
$filter_form .= '<input type="submit" value="' . __( 'Filter', 'woocommerce-jetpack' ) . '" />';
|
167 |
$filter_form .= '</form>';
|
168 |
// Final result.
|
1 |
+
<?php
|
2 |
/**
|
3 |
* Booster for WooCommerce - Reports - Product Sales - Gateways
|
4 |
*
|
5 |
+
* @version 5.6.8
|
6 |
* @since 3.6.0
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/includes
|
12 |
exit;
|
13 |
}
|
14 |
|
15 |
+
if ( ! class_exists( 'WCJ_Reports_Sales_Gateways' ) ) :
|
16 |
/**
|
17 |
+
* WCJ_Reports_Sales_Gateways.
|
18 |
*
|
19 |
+
* @version 5.6.8
|
20 |
* @since 3.6.0
|
21 |
*/
|
22 |
+
class WCJ_Reports_Sales_Gateways {
|
23 |
|
24 |
/**
|
25 |
* Constructor.
|
51 |
* @since 3.6.0
|
52 |
*/
|
53 |
public function get_report_args() {
|
54 |
+
$wpnonce = isset( $_REQUEST['wcj-reports-sales-gateways-nonce'] ) ? wp_verify_nonce( sanitize_key( $_REQUEST['wcj-reports-sales-gateways-nonce'] ), 'wcj-reports-sales-gateways' ) : false;
|
55 |
+
$current_time = wcj_get_timestamp_date_from_gmt();
|
|
|
|
|
|
|
56 |
$this->start_date = $wpnonce && isset( $_GET['start_date'] ) ? sanitize_text_field( wp_unslash( $_GET['start_date'] ) ) : gmdate( 'Y-m-d', strtotime( '-7 days', $current_time ) );
|
57 |
$this->end_date = $wpnonce && isset( $_GET['end_date'] ) ? sanitize_text_field( wp_unslash( $_GET['end_date'] ) ) : gmdate( 'Y-m-d', $current_time );
|
58 |
}
|
121 |
*/
|
122 |
public function output_report_header() {
|
123 |
// Settings link and dates menu.
|
124 |
+
$settings_link = '<a href="' . admin_url( wcj_admin_tab_url() . '&wcj-cat=emails_and_misc§ion=reports' ) . '">' .
|
125 |
'<< ' . __( 'Reports Settings', 'woocommerce-jetpack' ) . '</a>';
|
126 |
$menu = '';
|
127 |
$menu .= '<ul class="subsubsub">';
|
138 |
'class="' . ( ( $this->start_date === $custom_range['start_date'] && $this->end_date === $custom_range['end_date'] ) ? 'current' : '' ) . '"' .
|
139 |
'>' . $custom_range['title'] . '</a> | </li>';
|
140 |
}
|
141 |
+
$menu .= '</ul>';
|
142 |
+
$menu .= '<br class="clear">';
|
143 |
+
// phpcs:disable WordPress.Security.NonceVerification
|
144 |
+
$page = isset( $_GET['page'] ) ? sanitize_text_field( wp_unslash( $_GET['page'] ) ) : '';
|
145 |
+
$tab = isset( $_GET['tab'] ) ? sanitize_text_field( wp_unslash( $_GET['tab'] ) ) : '';
|
146 |
+
$report = isset( $_GET['report'] ) ? sanitize_text_field( wp_unslash( $_GET['report'] ) ) : '';
|
147 |
+
// phpcs:enable WordPress.Security.NonceVerification
|
|
|
|
|
148 |
|
149 |
// Date filter form.
|
150 |
$filter_form = '';
|
151 |
$filter_form .= '<form method="get" action="">';
|
152 |
+
$filter_form .= '<input type="hidden" name="page" value="' . esc_attr( $page ) . '" />';
|
153 |
+
$filter_form .= '<input type="hidden" name="tab" value="' . esc_attr( $tab ) . '" />';
|
154 |
+
$filter_form .= '<input type="hidden" name="report" value="' . esc_attr( $report ) . '" />';
|
155 |
$filter_form .= '<label style="font-style:italic;" for="start_date">' . __( 'From:', 'woocommerce-jetpack' ) . '</label> ' .
|
156 |
'<input type="text" display="date" dateformat="' . wcj_date_format_php_to_js( 'Y-m-d' ) . '" name="start_date" title="" value="' . $this->start_date . '" />';
|
157 |
$filter_form .= ' ';
|
158 |
$filter_form .= '<label style="font-style:italic;" for="end_date">' . __( 'To:', 'woocommerce-jetpack' ) . '</label>' .
|
159 |
'<input type="text" display="date" dateformat="' . wcj_date_format_php_to_js( 'Y-m-d' ) . '" name="end_date" title="" value="' . $this->end_date . '" />';
|
160 |
$filter_form .= ' ';
|
161 |
+
$filter_form .= '<input type="hidden" name="wcj-reports-sales-gateways-nonce" value="' . wp_create_nonce( 'wcj-reports-sales-gateways' ) . '" />';
|
162 |
$filter_form .= '<input type="submit" value="' . __( 'Filter', 'woocommerce-jetpack' ) . '" />';
|
163 |
$filter_form .= '</form>';
|
164 |
// Final result.
|
includes/reports/class-wcj-reports-sales.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Reports - Sales
|
4 |
*
|
5 |
-
* @version 5.6.
|
6 |
* @author Pluggabl LLC.
|
7 |
* @package Booster_For_WooCommerce/includes
|
8 |
*/
|
@@ -34,17 +34,15 @@ if ( ! class_exists( 'WCJ_Reports_Sales' ) ) :
|
|
34 |
/**
|
35 |
* Get_report.
|
36 |
*
|
37 |
-
* @version 5.6.
|
38 |
* @since 2.3.0
|
39 |
*/
|
40 |
public function get_report() {
|
41 |
-
|
42 |
-
$
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
$this->year = $wpnonce && isset( $_GET['year'] ) ? sanitize_text_field( wp_unslash( $_GET['year'] ) ) : gmdate( 'Y' );
|
47 |
-
$this->product_title = $wpnonce && isset( $_GET['product_title'] ) ? sanitize_text_field( wp_unslash( $_GET['product_title'] ) ) : '';
|
48 |
|
49 |
$html .= $this->get_products_sales();
|
50 |
|
@@ -82,7 +80,7 @@ if ( ! class_exists( 'WCJ_Reports_Sales' ) ) :
|
|
82 |
/**
|
83 |
* Get_products_sales.
|
84 |
*
|
85 |
-
* @version 5.6.
|
86 |
* @since 2.3.0
|
87 |
* @todo fix when variable and variations are all (wrongfully) counted in total sums
|
88 |
* @todo display more info for "Parent product deleted" and "Product deleted"
|
@@ -363,7 +361,7 @@ if ( ! class_exists( 'WCJ_Reports_Sales' ) ) :
|
|
363 |
);
|
364 |
}
|
365 |
|
366 |
-
$settings_link = '<a href="' . admin_url( '
|
367 |
'<< ' . __( 'Reports Settings', 'woocommerce-jetpack' ) . '</a>';
|
368 |
|
369 |
$menu = '';
|
@@ -371,25 +369,23 @@ if ( ! class_exists( 'WCJ_Reports_Sales' ) ) :
|
|
371 |
$menu .= '<li><a href="' . esc_url( add_query_arg( 'year', gmdate( 'Y' ) ) ) . '" class="' .
|
372 |
( ( gmdate( 'Y' ) === $this->year ) ? 'current' : '' ) . '">' . gmdate( 'Y' ) . '</a> | </li>';
|
373 |
$menu .= '<li><a href="' . esc_url( add_query_arg( 'year', ( gmdate( 'Y' ) - 1 ) ) ) . '" class="' .
|
374 |
-
( ( ( gmdate( 'Y' ) - 1 ) === $this->year ) ? 'current' : '' ) . '">' . ( gmdate( 'Y' ) - 1 ) . '</a> | </li>';
|
375 |
$menu .= '<li><a href="' . esc_url( add_query_arg( 'year', ( gmdate( 'Y' ) - 2 ) ) ) . '" class="' .
|
376 |
-
( ( ( gmdate( 'Y' ) - 2 ) === $this->year ) ? 'current' : '' ) . '">' . ( gmdate( 'Y' ) - 2 ) . '</a></li>';
|
377 |
$menu .= '</ul>';
|
378 |
$menu .= '<br class="clear">';
|
379 |
|
380 |
-
|
381 |
-
|
382 |
-
|
383 |
-
|
384 |
-
|
385 |
-
$tab = $wpnonce && isset( $_GET['tab'] ) ? sanitize_text_field( wp_unslash( $_GET['tab'] ) ) : '';
|
386 |
-
$report = $wpnonce && isset( $_GET['report'] ) ? sanitize_text_field( wp_unslash( $_GET['report'] ) ) : '';
|
387 |
|
388 |
$filter_form = '';
|
389 |
$filter_form .= '<form method="get" action="">';
|
390 |
-
$filter_form .= '<input type="hidden" name="page" value="' . $page . '" />';
|
391 |
-
$filter_form .= '<input type="hidden" name="tab" value="' . $tab . '" />';
|
392 |
-
$filter_form .= '<input type="hidden" name="report" value="' . $report . '" />';
|
393 |
$filter_form .= '<input type="hidden" name="year" value="' . $this->year . '" />';
|
394 |
$filter_form .= '<input type="text" name="product_title" title="" value="' . $this->product_title . '" />' .
|
395 |
'<input type="submit" value="' . __( 'Filter products', 'woocommerce-jetpack' ) . '" />';
|
2 |
/**
|
3 |
* Booster for WooCommerce - Reports - Sales
|
4 |
*
|
5 |
+
* @version 5.6.8
|
6 |
* @author Pluggabl LLC.
|
7 |
* @package Booster_For_WooCommerce/includes
|
8 |
*/
|
34 |
/**
|
35 |
* Get_report.
|
36 |
*
|
37 |
+
* @version 5.6.8
|
38 |
* @since 2.3.0
|
39 |
*/
|
40 |
public function get_report() {
|
41 |
+
// phpcs:disable WordPress.Security.NonceVerification
|
42 |
+
$html = '';
|
43 |
+
$this->year = isset( $_GET['year'] ) ? sanitize_text_field( wp_unslash( $_GET['year'] ) ) : gmdate( 'Y' );
|
44 |
+
$this->product_title = isset( $_GET['product_title'] ) ? sanitize_text_field( wp_unslash( $_GET['product_title'] ) ) : '';
|
45 |
+
// phpcs:enable WordPress.Security.NonceVerification
|
|
|
|
|
46 |
|
47 |
$html .= $this->get_products_sales();
|
48 |
|
80 |
/**
|
81 |
* Get_products_sales.
|
82 |
*
|
83 |
+
* @version 5.6.8
|
84 |
* @since 2.3.0
|
85 |
* @todo fix when variable and variations are all (wrongfully) counted in total sums
|
86 |
* @todo display more info for "Parent product deleted" and "Product deleted"
|
361 |
);
|
362 |
}
|
363 |
|
364 |
+
$settings_link = '<a href="' . admin_url( wcj_admin_tab_url() . '&wcj-cat=emails_and_misc§ion=reports' ) . '">' .
|
365 |
'<< ' . __( 'Reports Settings', 'woocommerce-jetpack' ) . '</a>';
|
366 |
|
367 |
$menu = '';
|
369 |
$menu .= '<li><a href="' . esc_url( add_query_arg( 'year', gmdate( 'Y' ) ) ) . '" class="' .
|
370 |
( ( gmdate( 'Y' ) === $this->year ) ? 'current' : '' ) . '">' . gmdate( 'Y' ) . '</a> | </li>';
|
371 |
$menu .= '<li><a href="' . esc_url( add_query_arg( 'year', ( gmdate( 'Y' ) - 1 ) ) ) . '" class="' .
|
372 |
+
( ( (string) ( gmdate( 'Y' ) - 1 ) === $this->year ) ? 'current' : '' ) . '">' . ( gmdate( 'Y' ) - 1 ) . '</a> | </li>';
|
373 |
$menu .= '<li><a href="' . esc_url( add_query_arg( 'year', ( gmdate( 'Y' ) - 2 ) ) ) . '" class="' .
|
374 |
+
( ( (string) ( gmdate( 'Y' ) - 2 ) === $this->year ) ? 'current' : '' ) . '">' . ( gmdate( 'Y' ) - 2 ) . '</a></li>';
|
375 |
$menu .= '</ul>';
|
376 |
$menu .= '<br class="clear">';
|
377 |
|
378 |
+
// phpcs:disable WordPress.Security.NonceVerification
|
379 |
+
$page = isset( $_GET['page'] ) ? sanitize_text_field( wp_unslash( $_GET['page'] ) ) : '';
|
380 |
+
$tab = isset( $_GET['tab'] ) ? sanitize_text_field( wp_unslash( $_GET['tab'] ) ) : '';
|
381 |
+
$report = isset( $_GET['report'] ) ? sanitize_text_field( wp_unslash( $_GET['report'] ) ) : '';
|
382 |
+
// phpcs:enable WordPress.Security.NonceVerification
|
|
|
|
|
383 |
|
384 |
$filter_form = '';
|
385 |
$filter_form .= '<form method="get" action="">';
|
386 |
+
$filter_form .= '<input type="hidden" name="page" value="' . esc_attr( $page ) . '" />';
|
387 |
+
$filter_form .= '<input type="hidden" name="tab" value="' . esc_attr( $tab ) . '" />';
|
388 |
+
$filter_form .= '<input type="hidden" name="report" value="' . esc_attr( $report ) . '" />';
|
389 |
$filter_form .= '<input type="hidden" name="year" value="' . $this->year . '" />';
|
390 |
$filter_form .= '<input type="text" name="product_title" title="" value="' . $this->product_title . '" />' .
|
391 |
'<input type="submit" value="' . __( 'Filter products', 'woocommerce-jetpack' ) . '" />';
|
includes/reports/class-wcj-reports-stock.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Reports - Stock
|
4 |
*
|
5 |
-
* @version 5.6.
|
6 |
* @author Pluggabl LLC.
|
7 |
* @package Booster_For_WooCommerce/includes
|
8 |
*/
|
@@ -270,7 +270,7 @@ if ( ! class_exists( 'WCJ_Reports_Stock' ) ) :
|
|
270 |
/**
|
271 |
* Get_report_html.
|
272 |
*
|
273 |
-
* @version 5.6.
|
274 |
*/
|
275 |
public function get_report_html() {
|
276 |
$products_info = $this->data_products;
|
@@ -312,7 +312,7 @@ if ( ! class_exists( 'WCJ_Reports_Stock' ) ) :
|
|
312 |
( ( 'overstocked' === $report_info['id'] ) &&
|
313 |
( $product_info['stock'] > 0 ) &&
|
314 |
|
315 |
-
( ( (
|
316 |
( 0 === $product_info['sales_in_period'][ $this->range_days ] ) ) ||
|
317 |
|
318 |
( ( 'understocked' === $report_info['id'] ) &&
|
2 |
/**
|
3 |
* Booster for WooCommerce - Reports - Stock
|
4 |
*
|
5 |
+
* @version 5.6.8
|
6 |
* @author Pluggabl LLC.
|
7 |
* @package Booster_For_WooCommerce/includes
|
8 |
*/
|
270 |
/**
|
271 |
* Get_report_html.
|
272 |
*
|
273 |
+
* @version 5.6.8
|
274 |
*/
|
275 |
public function get_report_html() {
|
276 |
$products_info = $this->data_products;
|
312 |
( ( 'overstocked' === $report_info['id'] ) &&
|
313 |
( $product_info['stock'] > 0 ) &&
|
314 |
|
315 |
+
( ( wcj_get_timestamp_date_from_gmt() - strtotime( $product_info['date_added'] ) ) > $this->range_days * 24 * 60 * 60 ) &&
|
316 |
( 0 === $product_info['sales_in_period'][ $this->range_days ] ) ) ||
|
317 |
|
318 |
( ( 'understocked' === $report_info['id'] ) &&
|
includes/settings/pdf-invoicing/wcj-content-template-credit_note.html
ADDED
@@ -0,0 +1,60 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<h1>Credit Note</h1>
|
2 |
+
<p>
|
3 |
+
<table class="pdf_invoice_heading_table">
|
4 |
+
<tbody>
|
5 |
+
<tr>
|
6 |
+
<th>Credit Note Nr.</th>
|
7 |
+
<td>[wcj_credit_note_number]</td>
|
8 |
+
</tr>
|
9 |
+
<tr>
|
10 |
+
<th>Credit Note Date</th>
|
11 |
+
<td>[wcj_credit_note_date]</td>
|
12 |
+
</tr>
|
13 |
+
<tr>
|
14 |
+
<th>Invoice Nr.</th>
|
15 |
+
<td>[wcj_invoice_number]</td>
|
16 |
+
</tr>
|
17 |
+
<tr>
|
18 |
+
<th>Order Nr.</th>
|
19 |
+
<td>[wcj_order_number]</td>
|
20 |
+
</tr>
|
21 |
+
</tbody>
|
22 |
+
</table>
|
23 |
+
</p>
|
24 |
+
<p>
|
25 |
+
<table class="pdf_invoice_seller_buyer_table">
|
26 |
+
<tbody>
|
27 |
+
<tr>
|
28 |
+
<th>Seller</th>
|
29 |
+
<th>Buyer</th>
|
30 |
+
</tr>
|
31 |
+
<tr>
|
32 |
+
<td>COMPANY NAME<br>COMPANY ADDRESS 1<br>COMPANY ADDRESS 2<br></td>
|
33 |
+
<td>[wcj_order_billing_address]</td>
|
34 |
+
</tr>
|
35 |
+
</tbody>
|
36 |
+
</table>
|
37 |
+
</p>
|
38 |
+
<p>
|
39 |
+
[wcj_order_items_table table_class="pdf_invoice_items_table" price_prefix="-"
|
40 |
+
columns="item_number|item_name|item_quantity|line_total_tax_excl"
|
41 |
+
columns_titles="|Product|Qty|Total"
|
42 |
+
columns_styles="width:5%;|width:75%;|width:5%;|width:15%;text-align:right;"]
|
43 |
+
<table class="pdf_invoice_totals_table">
|
44 |
+
<tbody>
|
45 |
+
<tr>
|
46 |
+
<th>Total (excl. TAX)</th>
|
47 |
+
<td>-[wcj_order_total_excl_tax]</td>
|
48 |
+
</tr>
|
49 |
+
<tr>
|
50 |
+
<th>Taxes</th>
|
51 |
+
<td>-[wcj_order_total_tax hide_if_zero="no"]</td>
|
52 |
+
</tr>
|
53 |
+
<tr>
|
54 |
+
<th>Order Total</th>
|
55 |
+
<td>-[wcj_order_total]</td>
|
56 |
+
</tr>
|
57 |
+
</tbody>
|
58 |
+
</table>
|
59 |
+
</p>
|
60 |
+
<p>Payment method: [wcj_order_payment_method]</p>
|
includes/settings/pdf-invoicing/wcj-content-template-credit_note.php
DELETED
@@ -1,34 +0,0 @@
|
|
1 |
-
<?php //phpcs:ignore ?>
|
2 |
-
<h1>Credit Note</h1>
|
3 |
-
<p>
|
4 |
-
<table class="pdf_invoice_heading_table">
|
5 |
-
<tbody>
|
6 |
-
<tr><th>Credit Note Nr.</th><td>[wcj_credit_note_number]</td></tr>
|
7 |
-
<tr><th>Credit Note Date</th><td>[wcj_credit_note_date]</td></tr>
|
8 |
-
<tr><th>Invoice Nr.</th><td>[wcj_invoice_number]</td></tr>
|
9 |
-
<tr><th>Order Nr.</th><td>[wcj_order_number]</td></tr>
|
10 |
-
</tbody>
|
11 |
-
</table>
|
12 |
-
</p>
|
13 |
-
<p>
|
14 |
-
<table class="pdf_invoice_seller_buyer_table">
|
15 |
-
<tbody>
|
16 |
-
<tr><th>Seller</th><th>Buyer</th></tr>
|
17 |
-
<tr><td>COMPANY NAME<br>COMPANY ADDRESS 1<br>COMPANY ADDRESS 2<br></td><td>[wcj_order_billing_address]</td></tr>
|
18 |
-
</tbody>
|
19 |
-
</table>
|
20 |
-
</p>
|
21 |
-
<p>
|
22 |
-
[wcj_order_items_table table_class="pdf_invoice_items_table" price_prefix="-"
|
23 |
-
columns="item_number|item_name|item_quantity|line_total_tax_excl"
|
24 |
-
columns_titles="|Product|Qty|Total"
|
25 |
-
columns_styles="width:5%;|width:75%;|width:5%;|width:15%;text-align:right;"]
|
26 |
-
<table class="pdf_invoice_totals_table">
|
27 |
-
<tbody>
|
28 |
-
<tr><th>Total (excl. TAX)</th><td>-[wcj_order_total_excl_tax]</td></tr>
|
29 |
-
<tr><th>Taxes</th><td>-[wcj_order_total_tax hide_if_zero="no"]</td></tr>
|
30 |
-
<tr><th>Order Total</th><td>-[wcj_order_total]</td></tr>
|
31 |
-
</tbody>
|
32 |
-
</table>
|
33 |
-
</p>
|
34 |
-
<p>Payment method: [wcj_order_payment_method]</p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/settings/pdf-invoicing/wcj-content-template-custom_doc.html
ADDED
@@ -0,0 +1,64 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<h1>Custom Document</h1>
|
2 |
+
<p>
|
3 |
+
<table class="pdf_invoice_heading_table">
|
4 |
+
<tbody>
|
5 |
+
<tr>
|
6 |
+
<th>Custom Document Nr.</th>
|
7 |
+
<td>[wcj_custom_doc_number]</td>
|
8 |
+
</tr>
|
9 |
+
<tr>
|
10 |
+
<th>Custom Document Date</th>
|
11 |
+
<td>[wcj_custom_doc_date]</td>
|
12 |
+
</tr>
|
13 |
+
<tr>
|
14 |
+
<th>Invoice Nr.</th>
|
15 |
+
<td>[wcj_invoice_number]</td>
|
16 |
+
</tr>
|
17 |
+
<tr>
|
18 |
+
<th>Invoice Date</th>
|
19 |
+
<td>[wcj_invoice_date]</td>
|
20 |
+
</tr>
|
21 |
+
<tr>
|
22 |
+
<th>Order Nr.</th>
|
23 |
+
<td>[wcj_order_number]</td>
|
24 |
+
</tr>
|
25 |
+
</tbody>
|
26 |
+
</table>
|
27 |
+
</p>
|
28 |
+
<p>
|
29 |
+
<table class="pdf_invoice_seller_buyer_table">
|
30 |
+
<tbody>
|
31 |
+
<tr>
|
32 |
+
<th>Seller</th>
|
33 |
+
<th>Buyer</th>
|
34 |
+
</tr>
|
35 |
+
<tr>
|
36 |
+
<td>COMPANY NAME<br>COMPANY ADDRESS 1<br>COMPANY ADDRESS 2<br></td>
|
37 |
+
<td>[wcj_order_billing_address]</td>
|
38 |
+
</tr>
|
39 |
+
</tbody>
|
40 |
+
</table>
|
41 |
+
</p>
|
42 |
+
<p>
|
43 |
+
[wcj_order_items_table table_class="pdf_invoice_items_table"
|
44 |
+
columns="item_number|item_name|item_quantity|line_total_tax_excl"
|
45 |
+
columns_titles="|Product|Qty|Total"
|
46 |
+
columns_styles="width:5%;|width:75%;|width:5%;|width:15%;text-align:right;"]
|
47 |
+
<table class="pdf_invoice_totals_table">
|
48 |
+
<tbody>
|
49 |
+
<tr>
|
50 |
+
<th>Total (excl. TAX)</th>
|
51 |
+
<td>[wcj_order_total_excl_tax]</td>
|
52 |
+
</tr>
|
53 |
+
<tr>
|
54 |
+
<th>Taxes</th>
|
55 |
+
<td>[wcj_order_total_tax hide_if_zero="no"]</td>
|
56 |
+
</tr>
|
57 |
+
<tr>
|
58 |
+
<th>Order Total</th>
|
59 |
+
<td>[wcj_order_total]</td>
|
60 |
+
</tr>
|
61 |
+
</tbody>
|
62 |
+
</table>
|
63 |
+
</p>
|
64 |
+
<p>Payment method: [wcj_order_payment_method]</p>
|
includes/settings/pdf-invoicing/wcj-content-template-custom_doc.php
DELETED
@@ -1,35 +0,0 @@
|
|
1 |
-
<?php //phpcs:ignore ?>
|
2 |
-
<h1>Custom Document</h1>
|
3 |
-
<p>
|
4 |
-
<table class="pdf_invoice_heading_table">
|
5 |
-
<tbody>
|
6 |
-
<tr><th>Custom Document Nr.</th><td>[wcj_custom_doc_number]</td></tr>
|
7 |
-
<tr><th>Custom Document Date</th><td>[wcj_custom_doc_date]</td></tr>
|
8 |
-
<tr><th>Invoice Nr.</th><td>[wcj_invoice_number]</td></tr>
|
9 |
-
<tr><th>Invoice Date</th><td>[wcj_invoice_date]</td></tr>
|
10 |
-
<tr><th>Order Nr.</th><td>[wcj_order_number]</td></tr>
|
11 |
-
</tbody>
|
12 |
-
</table>
|
13 |
-
</p>
|
14 |
-
<p>
|
15 |
-
<table class="pdf_invoice_seller_buyer_table">
|
16 |
-
<tbody>
|
17 |
-
<tr><th>Seller</th><th>Buyer</th></tr>
|
18 |
-
<tr><td>COMPANY NAME<br>COMPANY ADDRESS 1<br>COMPANY ADDRESS 2<br></td><td>[wcj_order_billing_address]</td></tr>
|
19 |
-
</tbody>
|
20 |
-
</table>
|
21 |
-
</p>
|
22 |
-
<p>
|
23 |
-
[wcj_order_items_table table_class="pdf_invoice_items_table"
|
24 |
-
columns="item_number|item_name|item_quantity|line_total_tax_excl"
|
25 |
-
columns_titles="|Product|Qty|Total"
|
26 |
-
columns_styles="width:5%;|width:75%;|width:5%;|width:15%;text-align:right;"]
|
27 |
-
<table class="pdf_invoice_totals_table">
|
28 |
-
<tbody>
|
29 |
-
<tr><th>Total (excl. TAX)</th><td>[wcj_order_total_excl_tax]</td></tr>
|
30 |
-
<tr><th>Taxes</th><td>[wcj_order_total_tax hide_if_zero="no"]</td></tr>
|
31 |
-
<tr><th>Order Total</th><td>[wcj_order_total]</td></tr>
|
32 |
-
</tbody>
|
33 |
-
</table>
|
34 |
-
</p>
|
35 |
-
<p>Payment method: [wcj_order_payment_method]</p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/settings/pdf-invoicing/wcj-content-template-invoice.html
ADDED
@@ -0,0 +1,56 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<h1>Invoice</h1>
|
2 |
+
<p>
|
3 |
+
<table class="pdf_invoice_heading_table">
|
4 |
+
<tbody>
|
5 |
+
<tr>
|
6 |
+
<th>Invoice Nr.</th>
|
7 |
+
<td>[wcj_invoice_number]</td>
|
8 |
+
</tr>
|
9 |
+
<tr>
|
10 |
+
<th>Invoice Date</th>
|
11 |
+
<td>[wcj_invoice_date]</td>
|
12 |
+
</tr>
|
13 |
+
<tr>
|
14 |
+
<th>Order Nr.</th>
|
15 |
+
<td>[wcj_order_number]</td>
|
16 |
+
</tr>
|
17 |
+
</tbody>
|
18 |
+
</table>
|
19 |
+
</p>
|
20 |
+
<p>
|
21 |
+
<table class="pdf_invoice_seller_buyer_table">
|
22 |
+
<tbody>
|
23 |
+
<tr>
|
24 |
+
<th>Seller</th>
|
25 |
+
<th>Buyer</th>
|
26 |
+
</tr>
|
27 |
+
<tr>
|
28 |
+
<td>COMPANY NAME<br>COMPANY ADDRESS 1<br>COMPANY ADDRESS 2<br></td>
|
29 |
+
<td>[wcj_order_billing_address]</td>
|
30 |
+
</tr>
|
31 |
+
</tbody>
|
32 |
+
</table>
|
33 |
+
</p>
|
34 |
+
<p>
|
35 |
+
[wcj_order_items_table table_class="pdf_invoice_items_table"
|
36 |
+
columns="item_number|item_name|item_quantity|line_total_tax_excl"
|
37 |
+
columns_titles="|Product|Qty|Total"
|
38 |
+
columns_styles="width:5%;|width:75%;|width:5%;|width:15%;text-align:right;"]
|
39 |
+
<table class="pdf_invoice_totals_table">
|
40 |
+
<tbody>
|
41 |
+
<tr>
|
42 |
+
<th>Total (excl. TAX)</th>
|
43 |
+
<td>[wcj_order_total_excl_tax]</td>
|
44 |
+
</tr>
|
45 |
+
<tr>
|
46 |
+
<th>Taxes</th>
|
47 |
+
<td>[wcj_order_total_tax hide_if_zero="no"]</td>
|
48 |
+
</tr>
|
49 |
+
<tr>
|
50 |
+
<th>Order Total</th>
|
51 |
+
<td>[wcj_order_total]</td>
|
52 |
+
</tr>
|
53 |
+
</tbody>
|
54 |
+
</table>
|
55 |
+
</p>
|
56 |
+
<p>Payment method: [wcj_order_payment_method]</p>
|
includes/settings/pdf-invoicing/wcj-content-template-invoice.php
DELETED
@@ -1,33 +0,0 @@
|
|
1 |
-
<?php //phpcs:ignore ?>
|
2 |
-
<h1>Invoice</h1>
|
3 |
-
<p>
|
4 |
-
<table class="pdf_invoice_heading_table">
|
5 |
-
<tbody>
|
6 |
-
<tr><th>Invoice Nr.</th><td>[wcj_invoice_number]</td></tr>
|
7 |
-
<tr><th>Invoice Date</th><td>[wcj_invoice_date]</td></tr>
|
8 |
-
<tr><th>Order Nr.</th><td>[wcj_order_number]</td></tr>
|
9 |
-
</tbody>
|
10 |
-
</table>
|
11 |
-
</p>
|
12 |
-
<p>
|
13 |
-
<table class="pdf_invoice_seller_buyer_table">
|
14 |
-
<tbody>
|
15 |
-
<tr><th>Seller</th><th>Buyer</th></tr>
|
16 |
-
<tr><td>COMPANY NAME<br>COMPANY ADDRESS 1<br>COMPANY ADDRESS 2<br></td><td>[wcj_order_billing_address]</td></tr>
|
17 |
-
</tbody>
|
18 |
-
</table>
|
19 |
-
</p>
|
20 |
-
<p>
|
21 |
-
[wcj_order_items_table table_class="pdf_invoice_items_table"
|
22 |
-
columns="item_number|item_name|item_quantity|line_total_tax_excl"
|
23 |
-
columns_titles="|Product|Qty|Total"
|
24 |
-
columns_styles="width:5%;|width:75%;|width:5%;|width:15%;text-align:right;"]
|
25 |
-
<table class="pdf_invoice_totals_table">
|
26 |
-
<tbody>
|
27 |
-
<tr><th>Total (excl. TAX)</th><td>[wcj_order_total_excl_tax]</td></tr>
|
28 |
-
<tr><th>Taxes</th><td>[wcj_order_total_tax hide_if_zero="no"]</td></tr>
|
29 |
-
<tr><th>Order Total</th><td>[wcj_order_total]</td></tr>
|
30 |
-
</tbody>
|
31 |
-
</table>
|
32 |
-
</p>
|
33 |
-
<p>Payment method: [wcj_order_payment_method]</p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/settings/pdf-invoicing/wcj-content-template-packing_slip.html
ADDED
@@ -0,0 +1,44 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<h1>Packing Slip</h1>
|
2 |
+
<p>
|
3 |
+
<table class="pdf_invoice_heading_table">
|
4 |
+
<tbody>
|
5 |
+
<tr>
|
6 |
+
<th>Shipping method</th>
|
7 |
+
<td>[wcj_order_shipping_method]</td>
|
8 |
+
</tr>
|
9 |
+
<tr>
|
10 |
+
<th>Proforma Invoice Nr.</th>
|
11 |
+
<td>[wcj_proforma_invoice_number]</td>
|
12 |
+
</tr>
|
13 |
+
<tr>
|
14 |
+
<th>Invoice Nr.</th>
|
15 |
+
<td>[wcj_invoice_number]</td>
|
16 |
+
</tr>
|
17 |
+
<tr>
|
18 |
+
<th>Order Nr.</th>
|
19 |
+
<td>[wcj_order_number]</td>
|
20 |
+
</tr>
|
21 |
+
<tr>
|
22 |
+
<th>Order Date</th>
|
23 |
+
<td>[wcj_order_date]</td>
|
24 |
+
</tr>
|
25 |
+
</tbody>
|
26 |
+
</table>
|
27 |
+
</p>
|
28 |
+
<h2>Shipping address</h2>
|
29 |
+
<p>
|
30 |
+
<table>
|
31 |
+
<tbody>
|
32 |
+
<tr>
|
33 |
+
<td>[wcj_order_shipping_address]</td>
|
34 |
+
</tr>
|
35 |
+
</tbody>
|
36 |
+
</table>
|
37 |
+
</p>
|
38 |
+
<h2>Items</h2>
|
39 |
+
<p>
|
40 |
+
[wcj_order_items_table table_class="pdf_invoice_items_table"
|
41 |
+
columns="item_number|item_name|item_quantity"
|
42 |
+
columns_titles="|Item|Qty"
|
43 |
+
columns_styles="width:5%;|width:80%;|width:15%;text-align:right;"]
|
44 |
+
</p>
|
includes/settings/pdf-invoicing/wcj-content-template-packing_slip.php
DELETED
@@ -1,28 +0,0 @@
|
|
1 |
-
<?php //phpcs:ignore ?>
|
2 |
-
<h1>Packing Slip</h1>
|
3 |
-
<p>
|
4 |
-
<table class="pdf_invoice_heading_table">
|
5 |
-
<tbody>
|
6 |
-
<tr><th>Shipping method</th><td>[wcj_order_shipping_method]</td></tr>
|
7 |
-
<tr><th>Proforma Invoice Nr.</th><td>[wcj_proforma_invoice_number]</td></tr>
|
8 |
-
<tr><th>Invoice Nr.</th><td>[wcj_invoice_number]</td></tr>
|
9 |
-
<tr><th>Order Nr.</th><td>[wcj_order_number]</td></tr>
|
10 |
-
<tr><th>Order Date</th><td>[wcj_order_date]</td></tr>
|
11 |
-
</tbody>
|
12 |
-
</table>
|
13 |
-
</p>
|
14 |
-
<h2>Shipping address</h2>
|
15 |
-
<p>
|
16 |
-
<table>
|
17 |
-
<tbody>
|
18 |
-
<tr><td>[wcj_order_shipping_address]</td></tr>
|
19 |
-
</tbody>
|
20 |
-
</table>
|
21 |
-
</p>
|
22 |
-
<h2>Items</h2>
|
23 |
-
<p>
|
24 |
-
[wcj_order_items_table table_class="pdf_invoice_items_table"
|
25 |
-
columns="item_number|item_name|item_quantity"
|
26 |
-
columns_titles="|Item|Qty"
|
27 |
-
columns_styles="width:5%;|width:80%;|width:15%;text-align:right;"]
|
28 |
-
</p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/settings/pdf-invoicing/wcj-content-template-proforma_invoice.html
ADDED
@@ -0,0 +1,56 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<h1>Proforma Invoice</h1>
|
2 |
+
<p>
|
3 |
+
<table class="pdf_invoice_heading_table">
|
4 |
+
<tbody>
|
5 |
+
<tr>
|
6 |
+
<th>Proforma Invoice Nr.</th>
|
7 |
+
<td>[wcj_proforma_invoice_number]</td>
|
8 |
+
</tr>
|
9 |
+
<tr>
|
10 |
+
<th>Proforma Invoice Date</th>
|
11 |
+
<td>[wcj_proforma_invoice_date]</td>
|
12 |
+
</tr>
|
13 |
+
<tr>
|
14 |
+
<th>Order Nr.</th>
|
15 |
+
<td>[wcj_order_number]</td>
|
16 |
+
</tr>
|
17 |
+
</tbody>
|
18 |
+
</table>
|
19 |
+
</p>
|
20 |
+
<p>
|
21 |
+
<table class="pdf_invoice_seller_buyer_table">
|
22 |
+
<tbody>
|
23 |
+
<tr>
|
24 |
+
<th>Seller</th>
|
25 |
+
<th>Buyer</th>
|
26 |
+
</tr>
|
27 |
+
<tr>
|
28 |
+
<td>COMPANY NAME<br>COMPANY ADDRESS 1<br>COMPANY ADDRESS 2<br></td>
|
29 |
+
<td>[wcj_order_billing_address]</td>
|
30 |
+
</tr>
|
31 |
+
</tbody>
|
32 |
+
</table>
|
33 |
+
</p>
|
34 |
+
<p>
|
35 |
+
[wcj_order_items_table table_class="pdf_invoice_items_table"
|
36 |
+
columns="item_number|item_name|item_quantity|line_total_tax_excl"
|
37 |
+
columns_titles="|Product|Qty|Total"
|
38 |
+
columns_styles="width:5%;|width:75%;|width:5%;|width:15%;text-align:right;"
|
39 |
+
discount_as_item="Discount"]
|
40 |
+
<table class="pdf_invoice_totals_table">
|
41 |
+
<tbody>
|
42 |
+
<tr>
|
43 |
+
<th>Total (excl. TAX)</th>
|
44 |
+
<td>[wcj_order_total_excl_tax]</td>
|
45 |
+
</tr>
|
46 |
+
<tr>
|
47 |
+
<th>Taxes</th>
|
48 |
+
<td>[wcj_order_total_tax hide_if_zero="no"]</td>
|
49 |
+
</tr>
|
50 |
+
<tr>
|
51 |
+
<th>Order Total</th>
|
52 |
+
<td>[wcj_order_total]</td>
|
53 |
+
</tr>
|
54 |
+
</tbody>
|
55 |
+
</table>
|
56 |
+
</p>
|
includes/settings/pdf-invoicing/wcj-content-template-proforma_invoice.php
DELETED
@@ -1,33 +0,0 @@
|
|
1 |
-
<?php //phpcs:ignore ?>
|
2 |
-
<h1>Proforma Invoice</h1>
|
3 |
-
<p>
|
4 |
-
<table class="pdf_invoice_heading_table">
|
5 |
-
<tbody>
|
6 |
-
<tr><th>Proforma Invoice Nr.</th><td>[wcj_proforma_invoice_number]</td></tr>
|
7 |
-
<tr><th>Proforma Invoice Date</th><td>[wcj_proforma_invoice_date]</td></tr>
|
8 |
-
<tr><th>Order Nr.</th><td>[wcj_order_number]</td></tr>
|
9 |
-
</tbody>
|
10 |
-
</table>
|
11 |
-
</p>
|
12 |
-
<p>
|
13 |
-
<table class="pdf_invoice_seller_buyer_table">
|
14 |
-
<tbody>
|
15 |
-
<tr><th>Seller</th><th>Buyer</th></tr>
|
16 |
-
<tr><td>COMPANY NAME<br>COMPANY ADDRESS 1<br>COMPANY ADDRESS 2<br></td><td>[wcj_order_billing_address]</td></tr>
|
17 |
-
</tbody>
|
18 |
-
</table>
|
19 |
-
</p>
|
20 |
-
<p>
|
21 |
-
[wcj_order_items_table table_class="pdf_invoice_items_table"
|
22 |
-
columns="item_number|item_name|item_quantity|line_total_tax_excl"
|
23 |
-
columns_titles="|Product|Qty|Total"
|
24 |
-
columns_styles="width:5%;|width:75%;|width:5%;|width:15%;text-align:right;"
|
25 |
-
discount_as_item="Discount"]
|
26 |
-
<table class="pdf_invoice_totals_table">
|
27 |
-
<tbody>
|
28 |
-
<tr><th>Total (excl. TAX)</th><td>[wcj_order_total_excl_tax]</td></tr>
|
29 |
-
<tr><th>Taxes</th><td>[wcj_order_total_tax hide_if_zero="no"]</td></tr>
|
30 |
-
<tr><th>Order Total</th><td>[wcj_order_total]</td></tr>
|
31 |
-
</tbody>
|
32 |
-
</table>
|
33 |
-
</p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 5.6.
|
6 |
* @since 3.2.4
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/settings
|
@@ -90,7 +90,7 @@ for ( $i = 1; $i <= $total_number; $i++ ) {
|
|
90 |
'type' => 'select',
|
91 |
'options' => array(
|
92 |
'no' => __( 'No', 'woocommerce-jetpack' ),
|
93 |
-
'meta_value' => __( 'By meta (as text)', 'woocommerce-jetpack' ), // phpcs:ignore
|
94 |
'meta_value_num' => __( 'By meta (as numbers)', 'woocommerce-jetpack' ),
|
95 |
),
|
96 |
),
|
2 |
/**
|
3 |
* Booster for WooCommerce - Settings - Admin Orders List
|
4 |
*
|
5 |
+
* @version 5.6.8
|
6 |
* @since 3.2.4
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/settings
|
90 |
'type' => 'select',
|
91 |
'options' => array(
|
92 |
'no' => __( 'No', 'woocommerce-jetpack' ),
|
93 |
+
'meta_value' => __( 'By meta (as text)', 'woocommerce-jetpack' ), // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_meta_value
|
94 |
'meta_value_num' => __( 'By meta (as numbers)', 'woocommerce-jetpack' ),
|
95 |
),
|
96 |
),
|
includes/settings/wcj-settings-checkout-files-upload.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Settings - Checkout Files Upload
|
4 |
*
|
5 |
-
* @version 5.6.
|
6 |
* @since 2.8.0
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/settings
|
@@ -331,7 +331,7 @@ $settings = array_merge(
|
|
331 |
array(
|
332 |
'title' => __( 'Label', 'woocommerce-jetpack' ),
|
333 |
/* translators: %s: translators Added */
|
334 |
-
'desc_tip' => __( 'Replaced values: %
|
335 |
'id' => 'wcj_checkout_files_upload_form_template_label',
|
336 |
/* translators: %s: translators Added */
|
337 |
'default' => '<tr><td colspan="2"><label for="%field_id%">%field_label%</label>%required_html%</td></tr>',
|
@@ -341,7 +341,7 @@ $settings = array_merge(
|
|
341 |
array(
|
342 |
'title' => __( 'Field', 'woocommerce-jetpack' ),
|
343 |
/* translators: %s: translators Added */
|
344 |
-
'desc_tip' => __( 'Replaced values: %
|
345 |
'id' => 'wcj_checkout_files_upload_form_template_field',
|
346 |
/* translators: %s: translators Added */
|
347 |
'default' => '<tr><td style="width:50%;max-width:50vw;">%field_html%</td><td style="width:50%;">%button_html%</td></tr>',
|
2 |
/**
|
3 |
* Booster for WooCommerce - Settings - Checkout Files Upload
|
4 |
*
|
5 |
+
* @version 5.6.8
|
6 |
* @since 2.8.0
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/settings
|
331 |
array(
|
332 |
'title' => __( 'Label', 'woocommerce-jetpack' ),
|
333 |
/* translators: %s: translators Added */
|
334 |
+
'desc_tip' => sprintf( __( 'Replaced values: %1$s, %2$s, %3$s.', 'woocommerce-jetpack' ), '%field_id%', '%field_label%', '%required_html%' ),
|
335 |
'id' => 'wcj_checkout_files_upload_form_template_label',
|
336 |
/* translators: %s: translators Added */
|
337 |
'default' => '<tr><td colspan="2"><label for="%field_id%">%field_label%</label>%required_html%</td></tr>',
|
341 |
array(
|
342 |
'title' => __( 'Field', 'woocommerce-jetpack' ),
|
343 |
/* translators: %s: translators Added */
|
344 |
+
'desc_tip' => sprintf( __( 'Replaced values: %1$s, %2$s.', 'woocommerce-jetpack' ), '%field_html%', '%button_html%' ),
|
345 |
'id' => 'wcj_checkout_files_upload_form_template_field',
|
346 |
/* translators: %s: translators Added */
|
347 |
'default' => '<tr><td style="width:50%;max-width:50vw;">%field_html%</td><td style="width:50%;">%button_html%</td></tr>',
|
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 5.6.
|
6 |
* @since 2.8.0
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/settings
|
@@ -122,7 +122,7 @@ $settings = array(
|
|
122 |
'auto' => __( 'Automatically via Currency Exchange Rates module', 'woocommerce-jetpack' ),
|
123 |
),
|
124 |
'desc' => ( '' === apply_filters( 'booster_message', '', 'desc' ) ) ?
|
125 |
-
__( 'Visit', 'woocommerce-jetpack' ) . ' <a href="' . admin_url( '
|
126 |
:
|
127 |
apply_filters( 'booster_message', '', 'desc' ),
|
128 |
'custom_attributes' => apply_filters( 'booster_message', '', 'disabled' ),
|
2 |
/**
|
3 |
* Booster for WooCommerce - Settings - Currency per Product
|
4 |
*
|
5 |
+
* @version 5.6.8
|
6 |
* @since 2.8.0
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/settings
|
122 |
'auto' => __( 'Automatically via Currency Exchange Rates module', 'woocommerce-jetpack' ),
|
123 |
),
|
124 |
'desc' => ( '' === apply_filters( 'booster_message', '', 'desc' ) ) ?
|
125 |
+
__( 'Visit', 'woocommerce-jetpack' ) . ' <a href="' . admin_url( wcj_admin_tab_url() . '&wcj-cat=prices_and_currencies§ion=currency_exchange_rates' ) . '">' . __( 'Currency Exchange Rates module', 'woocommerce-jetpack' ) . '</a>'
|
126 |
:
|
127 |
apply_filters( 'booster_message', '', 'desc' ),
|
128 |
'custom_attributes' => apply_filters( 'booster_message', '', 'disabled' ),
|
includes/settings/wcj-settings-debug-tools.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Settings - Debug Tools
|
4 |
*
|
5 |
-
* @version 5.6.
|
6 |
* @since 4.1.0
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/settings
|
@@ -47,10 +47,18 @@ return array(
|
|
47 |
'id' => 'wcj_debug_tools_system_info',
|
48 |
'default' => '',
|
49 |
'type' => 'custom_link',
|
50 |
-
'link' => '<a href="' . esc_url(
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
51 |
'<pre style="background-color: white; padding: 5px;">' . wcj_get_table_html(
|
52 |
$this->get_system_info_table_array(),
|
53 |
array(
|
|
|
54 |
'columns_styles' => array( 'padding:0;', 'padding:0;' ),
|
55 |
'table_heading_type' => 'vertical',
|
56 |
)
|
2 |
/**
|
3 |
* Booster for WooCommerce - Settings - Debug Tools
|
4 |
*
|
5 |
+
* @version 5.6.8
|
6 |
* @since 4.1.0
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/settings
|
47 |
'id' => 'wcj_debug_tools_system_info',
|
48 |
'default' => '',
|
49 |
'type' => 'custom_link',
|
50 |
+
'link' => '<a href="' . esc_url(
|
51 |
+
add_query_arg(
|
52 |
+
array(
|
53 |
+
'wcj_debug' => true,
|
54 |
+
'wcj_debug-nonce' => wp_create_nonce( 'wcj_debug' ),
|
55 |
+
)
|
56 |
+
)
|
57 |
+
) . '">' . __( 'Show extended info', 'woocommerce-jetpack' ) . '</a>' .
|
58 |
'<pre style="background-color: white; padding: 5px;">' . wcj_get_table_html(
|
59 |
$this->get_system_info_table_array(),
|
60 |
array(
|
61 |
+
'table_class' => 'widefat striped',
|
62 |
'columns_styles' => array( 'padding:0;', 'padding:0;' ),
|
63 |
'table_heading_type' => 'vertical',
|
64 |
)
|
includes/settings/wcj-settings-max-products-per-user.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Settings - Max Products per User
|
4 |
*
|
5 |
-
* @version 5.6.
|
6 |
* @since 3.5.0
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/settings
|
@@ -100,7 +100,7 @@ return array(
|
|
100 |
'default' => '',
|
101 |
'type' => 'custom_link',
|
102 |
'link' => '<a class="button" href="' .
|
103 |
-
|
104 |
__( 'Calculate Data', 'woocommerce-jetpack' ) .
|
105 |
'</a>',
|
106 |
),
|
2 |
/**
|
3 |
* Booster for WooCommerce - Settings - Max Products per User
|
4 |
*
|
5 |
+
* @version 5.6.8
|
6 |
* @since 3.5.0
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/settings
|
100 |
'default' => '',
|
101 |
'type' => 'custom_link',
|
102 |
'link' => '<a class="button" href="' .
|
103 |
+
esc_url_raw( add_query_arg( 'wcj_max_products_per_user_calculate_data', '1', remove_query_arg( 'wcj_max_products_per_user_calculate_data_finished' ) ) ) . '">' .
|
104 |
__( 'Calculate Data', 'woocommerce-jetpack' ) .
|
105 |
'</a>',
|
106 |
),
|
includes/settings/wcj-settings-multicurrency-base-price.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Settings - Multicurrency Product Base Price
|
4 |
*
|
5 |
-
* @version 5.6.
|
6 |
* @since 2.8.0
|
7 |
* @author Pluggabl LLC.
|
8 |
* @todo (maybe) `if ( isset( $all_currencies[ $currency_from ] ) ) { unset( $all_currencies[ $currency_from ] ); }`
|
@@ -32,7 +32,7 @@ $settings = array(
|
|
32 |
'auto' => __( 'Automatically via Currency Exchange Rates module', 'woocommerce-jetpack' ),
|
33 |
),
|
34 |
'desc' => ( '' === apply_filters( 'booster_message', '', 'desc' ) ) ?
|
35 |
-
__( 'Visit', 'woocommerce-jetpack' ) . ' <a href="' . admin_url( '
|
36 |
:
|
37 |
apply_filters( 'booster_message', '', 'desc' ),
|
38 |
'custom_attributes' => apply_filters( 'booster_message', '', 'disabled' ),
|
2 |
/**
|
3 |
* Booster for WooCommerce - Settings - Multicurrency Product Base Price
|
4 |
*
|
5 |
+
* @version 5.6.8
|
6 |
* @since 2.8.0
|
7 |
* @author Pluggabl LLC.
|
8 |
* @todo (maybe) `if ( isset( $all_currencies[ $currency_from ] ) ) { unset( $all_currencies[ $currency_from ] ); }`
|
32 |
'auto' => __( 'Automatically via Currency Exchange Rates module', 'woocommerce-jetpack' ),
|
33 |
),
|
34 |
'desc' => ( '' === apply_filters( 'booster_message', '', 'desc' ) ) ?
|
35 |
+
__( 'Visit', 'woocommerce-jetpack' ) . ' <a href="' . admin_url( wcj_admin_tab_url() . '&wcj-cat=prices_and_currencies§ion=currency_exchange_rates' ) . '">' . __( 'Currency Exchange Rates module', 'woocommerce-jetpack' ) . '</a>'
|
36 |
:
|
37 |
apply_filters( 'booster_message', '', 'desc' ),
|
38 |
'custom_attributes' => apply_filters( 'booster_message', '', 'disabled' ),
|
includes/settings/wcj-settings-multicurrency.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Settings - Multicurrency (Currency Switcher)
|
4 |
*
|
5 |
-
* @version 5.6.
|
6 |
* @since 2.8.0
|
7 |
* @author Pluggabl LLC.
|
8 |
* @todo "pretty prices"
|
@@ -33,7 +33,7 @@ $settings = array(
|
|
33 |
'auto' => __( 'Automatically via Currency Exchange Rates module', 'woocommerce-jetpack' ),
|
34 |
),
|
35 |
'desc' => ( '' === apply_filters( 'booster_message', '', 'desc' ) ) ?
|
36 |
-
__( 'Visit', 'woocommerce-jetpack' ) . ' <a href="' . admin_url( '
|
37 |
:
|
38 |
apply_filters( 'booster_message', '', 'desc' ),
|
39 |
'custom_attributes' => apply_filters( 'booster_message', '', 'disabled' ),
|
@@ -395,7 +395,7 @@ $settings = array_merge(
|
|
395 |
'desc' => sprintf(
|
396 |
/* translators: %s: translators Added */
|
397 |
__( 'Custom roles can be added via "Add/Manage Custom Roles" tool in Booster\'s <a href="%s">General</a> module.', 'woocommerce-jetpack' ),
|
398 |
-
admin_url( '
|
399 |
),
|
400 |
'id' => 'wcj_multicurrency_role_defaults_options',
|
401 |
),
|
2 |
/**
|
3 |
* Booster for WooCommerce - Settings - Multicurrency (Currency Switcher)
|
4 |
*
|
5 |
+
* @version 5.6.8
|
6 |
* @since 2.8.0
|
7 |
* @author Pluggabl LLC.
|
8 |
* @todo "pretty prices"
|
33 |
'auto' => __( 'Automatically via Currency Exchange Rates module', 'woocommerce-jetpack' ),
|
34 |
),
|
35 |
'desc' => ( '' === apply_filters( 'booster_message', '', 'desc' ) ) ?
|
36 |
+
__( 'Visit', 'woocommerce-jetpack' ) . ' <a href="' . admin_url( wcj_admin_tab_url() . '&wcj-cat=prices_and_currencies§ion=currency_exchange_rates' ) . '">' . __( 'Currency Exchange Rates module', 'woocommerce-jetpack' ) . '</a>'
|
37 |
:
|
38 |
apply_filters( 'booster_message', '', 'desc' ),
|
39 |
'custom_attributes' => apply_filters( 'booster_message', '', 'disabled' ),
|
395 |
'desc' => sprintf(
|
396 |
/* translators: %s: translators Added */
|
397 |
__( 'Custom roles can be added via "Add/Manage Custom Roles" tool in Booster\'s <a href="%s">General</a> module.', 'woocommerce-jetpack' ),
|
398 |
+
admin_url( wcj_admin_tab_url() . '&wcj-cat=emails_and_misc§ion=general' )
|
399 |
),
|
400 |
'id' => 'wcj_multicurrency_role_defaults_options',
|
401 |
),
|
includes/settings/wcj-settings-order-min-amount.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Settings - Order Minimum Amount
|
4 |
*
|
5 |
-
* @version 5.6.
|
6 |
* @since 2.8.0
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/settings
|
@@ -142,7 +142,7 @@ $settings = array(
|
|
142 |
'desc' => sprintf(
|
143 |
/* translators: %s: translators Added */
|
144 |
__( 'Custom roles can be added via "Add/Manage Custom Roles" tool in Booster\'s <a href="%s">General</a> module.', 'woocommerce-jetpack' ),
|
145 |
-
admin_url( '
|
146 |
),
|
147 |
),
|
148 |
);
|
2 |
/**
|
3 |
* Booster for WooCommerce - Settings - Order Minimum Amount
|
4 |
*
|
5 |
+
* @version 5.6.8
|
6 |
* @since 2.8.0
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/settings
|
142 |
'desc' => sprintf(
|
143 |
/* translators: %s: translators Added */
|
144 |
__( 'Custom roles can be added via "Add/Manage Custom Roles" tool in Booster\'s <a href="%s">General</a> module.', 'woocommerce-jetpack' ),
|
145 |
+
admin_url( wcj_admin_tab_url() . '&wcj-cat=emails_and_misc§ion=general' )
|
146 |
),
|
147 |
),
|
148 |
);
|
includes/settings/wcj-settings-payment-gateways-by-user-role.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Settings - Gateways by User Role
|
4 |
*
|
5 |
-
* @version 5.6.
|
6 |
* @since 2.8.0
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/settings
|
@@ -38,7 +38,7 @@ $settings = array(
|
|
38 |
sprintf(
|
39 |
/* translators: %s: translators Added */
|
40 |
__( 'Custom roles can be added via "Add/Manage Custom Roles" tool in Booster\'s <a href="%s">General</a> module', 'woocommerce-jetpack' ),
|
41 |
-
admin_url( '
|
42 |
),
|
43 |
'id' => 'wcj_payment_gateways_by_user_role_gateways_options',
|
44 |
),
|
2 |
/**
|
3 |
* Booster for WooCommerce - Settings - Gateways by User Role
|
4 |
*
|
5 |
+
* @version 5.6.8
|
6 |
* @since 2.8.0
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/settings
|
38 |
sprintf(
|
39 |
/* translators: %s: translators Added */
|
40 |
__( 'Custom roles can be added via "Add/Manage Custom Roles" tool in Booster\'s <a href="%s">General</a> module', 'woocommerce-jetpack' ),
|
41 |
+
admin_url( wcj_admin_tab_url() . '&wcj-cat=emails_and_misc§ion=general' )
|
42 |
),
|
43 |
'id' => 'wcj_payment_gateways_by_user_role_gateways_options',
|
44 |
),
|
includes/settings/wcj-settings-payment-gateways-currency.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Settings - Gateways Currency Converter
|
4 |
*
|
5 |
-
* @version 5.6.
|
6 |
* @since 2.8.0
|
7 |
* @author Pluggabl LLC.
|
8 |
* @todo [dev] maybe make "Advanced: Fix Chosen Payment Method" option enabled by default (or even remove option completely and always perform `$this->fix_chosen_payment_method()`)
|
@@ -83,7 +83,7 @@ $settings = array_merge(
|
|
83 |
),
|
84 |
'desc' => ( '' === apply_filters( 'booster_message', '', 'desc' ) ) ?
|
85 |
__( 'Visit', 'woocommerce-jetpack' ) .
|
86 |
-
' <a href="' . admin_url( '
|
87 |
__( 'Currency Exchange Rates module', 'woocommerce-jetpack' ) . '</a>'
|
88 |
: apply_filters( 'booster_message', '', 'desc' ),
|
89 |
'custom_attributes' => apply_filters( 'booster_message', '', 'disabled' ),
|
2 |
/**
|
3 |
* Booster for WooCommerce - Settings - Gateways Currency Converter
|
4 |
*
|
5 |
+
* @version 5.6.8
|
6 |
* @since 2.8.0
|
7 |
* @author Pluggabl LLC.
|
8 |
* @todo [dev] maybe make "Advanced: Fix Chosen Payment Method" option enabled by default (or even remove option completely and always perform `$this->fix_chosen_payment_method()`)
|
83 |
),
|
84 |
'desc' => ( '' === apply_filters( 'booster_message', '', 'desc' ) ) ?
|
85 |
__( 'Visit', 'woocommerce-jetpack' ) .
|
86 |
+
' <a href="' . admin_url( wcj_admin_tab_url() . '&wcj-cat=prices_and_currencies§ion=currency_exchange_rates' ) . '">' .
|
87 |
__( 'Currency Exchange Rates module', 'woocommerce-jetpack' ) . '</a>'
|
88 |
: apply_filters( 'booster_message', '', 'desc' ),
|
89 |
'custom_attributes' => apply_filters( 'booster_message', '', 'disabled' ),
|
includes/settings/wcj-settings-pdf-invoicing-advanced.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Settings - PDF Invoicing - Advanced
|
4 |
*
|
5 |
-
* @version 5.6.
|
6 |
* @since 3.3.0
|
7 |
* @author Pluggabl LLC.
|
8 |
* @todo (maybe) create "Tools (Options)" submodule
|
@@ -165,7 +165,14 @@ return array(
|
|
165 |
array(
|
166 |
'title' => __( 'Actions', 'woocommerce-jetpack' ),
|
167 |
'type' => 'custom_link',
|
168 |
-
'link' => '<a class="button" href="' .
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
169 |
( $is_full_fonts ? __( 'Re-download', 'woocommerce-jetpack' ) : __( 'Download', 'woocommerce-jetpack' ) )
|
170 |
. '</a>',
|
171 |
'id' => 'wcj_invoicing_fonts_manager_styling_option',
|
2 |
/**
|
3 |
* Booster for WooCommerce - Settings - PDF Invoicing - Advanced
|
4 |
*
|
5 |
+
* @version 5.6.8
|
6 |
* @since 3.3.0
|
7 |
* @author Pluggabl LLC.
|
8 |
* @todo (maybe) create "Tools (Options)" submodule
|
165 |
array(
|
166 |
'title' => __( 'Actions', 'woocommerce-jetpack' ),
|
167 |
'type' => 'custom_link',
|
168 |
+
'link' => '<a class="button" href="' . esc_url_raw(
|
169 |
+
add_query_arg(
|
170 |
+
array(
|
171 |
+
'wcj_download_fonts' => '1',
|
172 |
+
'wcj_download_fonts-nonce' => wp_create_nonce( 'wcj_download_fonts' ),
|
173 |
+
)
|
174 |
+
)
|
175 |
+
) . '">' .
|
176 |
( $is_full_fonts ? __( 'Re-download', 'woocommerce-jetpack' ) : __( 'Download', 'woocommerce-jetpack' ) )
|
177 |
. '</a>',
|
178 |
'id' => 'wcj_invoicing_fonts_manager_styling_option',
|
includes/settings/wcj-settings-pdf-invoicing-header.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Settings - PDF Invoicing - Header
|
4 |
*
|
5 |
-
* @version 5.6.
|
6 |
* @since 2.8.0
|
7 |
* @author Pluggabl LLC.
|
8 |
* @todo (maybe) add info on `<img>` in "Header Image" description
|
@@ -45,7 +45,7 @@ foreach ( $invoice_types as $invoice_type ) {
|
|
45 |
sprintf(
|
46 |
/* translators: %s: translators Added */
|
47 |
__( 'If you are experiencing issues with displaying header image, please try setting different values for the "Advanced: Default Images Directory" option in %s.', 'woocommerce-jetpack' ),
|
48 |
-
'<a target="_blank" href="' . admin_url( '
|
49 |
__( 'PDF Invoicing & Packing Slips > Advanced', 'woocommerce-jetpack' ) .
|
50 |
'</a>'
|
51 |
),
|
2 |
/**
|
3 |
* Booster for WooCommerce - Settings - PDF Invoicing - Header
|
4 |
*
|
5 |
+
* @version 5.6.8
|
6 |
* @since 2.8.0
|
7 |
* @author Pluggabl LLC.
|
8 |
* @todo (maybe) add info on `<img>` in "Header Image" description
|
45 |
sprintf(
|
46 |
/* translators: %s: translators Added */
|
47 |
__( 'If you are experiencing issues with displaying header image, please try setting different values for the "Advanced: Default Images Directory" option in %s.', 'woocommerce-jetpack' ),
|
48 |
+
'<a target="_blank" href="' . admin_url( wcj_admin_tab_url() . '&wcj-cat=pdf_invoicing§ion=pdf_invoicing_advanced' ) . '">' .
|
49 |
__( 'PDF Invoicing & Packing Slips > Advanced', 'woocommerce-jetpack' ) .
|
50 |
'</a>'
|
51 |
),
|
includes/settings/wcj-settings-pdf-invoicing-page.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Settings - PDF Invoicing - Page Settings
|
4 |
*
|
5 |
-
* @version 5.6.
|
6 |
* @since 2.8.0
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/settings
|
@@ -92,7 +92,7 @@ foreach ( $invoice_types as $invoice_type ) {
|
|
92 |
sprintf(
|
93 |
/* translators: %s: translators Added */
|
94 |
__( 'If you are experiencing issues with displaying background image, please try setting different values for the "Advanced: Default Images Directory" option in %s.', 'woocommerce-jetpack' ),
|
95 |
-
'<a target="_blank" href="' . admin_url( '
|
96 |
__( 'PDF Invoicing & Packing Slips > Advanced', 'woocommerce-jetpack' ) .
|
97 |
'</a>'
|
98 |
),
|
2 |
/**
|
3 |
* Booster for WooCommerce - Settings - PDF Invoicing - Page Settings
|
4 |
*
|
5 |
+
* @version 5.6.8
|
6 |
* @since 2.8.0
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/settings
|
92 |
sprintf(
|
93 |
/* translators: %s: translators Added */
|
94 |
__( 'If you are experiencing issues with displaying background image, please try setting different values for the "Advanced: Default Images Directory" option in %s.', 'woocommerce-jetpack' ),
|
95 |
+
'<a target="_blank" href="' . admin_url( wcj_admin_tab_url() . '&wcj-cat=pdf_invoicing§ion=pdf_invoicing_advanced' ) . '">' .
|
96 |
__( 'PDF Invoicing & Packing Slips > Advanced', 'woocommerce-jetpack' ) .
|
97 |
'</a>'
|
98 |
),
|
includes/settings/wcj-settings-price-by-country.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Settings - Prices and Currencies by Country
|
4 |
*
|
5 |
-
* @version 5.6.
|
6 |
* @since 2.8.1
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/settings
|
@@ -21,7 +21,15 @@ foreach ( $autogenerate_buttons_data as $autogenerate_button_id => $autogenerate
|
|
21 |
$autogenerate_buttons[] = ( 0 === apply_filters( 'booster_option', 1, '' ) ?
|
22 |
'<a class="button" disabled title="' . __( 'Available in Booster Plus only.', 'woocommerce-jetpack' ) . '">' . $autogenerate_button_desc . '</a>' :
|
23 |
'<a class="button" href="' .
|
24 |
-
esc_url(
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
25 |
wcj_get_js_confirmation( __( 'All existing country groups will be deleted and new groups will be created. Are you sure?', 'woocommerce-jetpack' ) ) . '>' .
|
26 |
$autogenerate_button_desc .
|
27 |
'</a>' );
|
@@ -196,7 +204,7 @@ $settings = array(
|
|
196 |
'recalculate_price_filter_products_prices' => '1',
|
197 |
'recalculate_price_filter_products_prices-nonce' => wp_create_nonce( 'recalculate_price_filter_products_prices' ),
|
198 |
),
|
199 |
-
remove_query_arg( array( 'wcj_generate_country_groups' ) )
|
200 |
)
|
201 |
) . '">' .
|
202 |
__( 'Recalculate price filter widget and sorting by price product prices.', 'woocommerce-jetpack' ) . '</a>',
|
@@ -423,7 +431,7 @@ $settings = array_merge(
|
|
423 |
'auto' => __( 'Automatically via Currency Exchange Rates module', 'woocommerce-jetpack' ),
|
424 |
),
|
425 |
'desc' => ( '' === apply_filters( 'booster_message', '', 'desc' ) )
|
426 |
-
? __( 'Visit', 'woocommerce-jetpack' ) . ' <a href="' . admin_url( '
|
427 |
: apply_filters( 'booster_message', '', 'desc' ),
|
428 |
'custom_attributes' => apply_filters( 'booster_message', '', 'disabled' ),
|
429 |
),
|
2 |
/**
|
3 |
* Booster for WooCommerce - Settings - Prices and Currencies by Country
|
4 |
*
|
5 |
+
* @version 5.6.8
|
6 |
* @since 2.8.1
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/settings
|
21 |
$autogenerate_buttons[] = ( 0 === apply_filters( 'booster_option', 1, '' ) ?
|
22 |
'<a class="button" disabled title="' . __( 'Available in Booster Plus only.', 'woocommerce-jetpack' ) . '">' . $autogenerate_button_desc . '</a>' :
|
23 |
'<a class="button" href="' .
|
24 |
+
esc_url(
|
25 |
+
add_query_arg(
|
26 |
+
array(
|
27 |
+
'wcj_generate_country_groups' => $autogenerate_button_id,
|
28 |
+
'wcj_generate_country_groups-nonce' => wp_create_nonce( 'wcj_generate_country_groups' ),
|
29 |
+
),
|
30 |
+
remove_query_arg( 'recalculate_price_filter_products_prices' )
|
31 |
+
)
|
32 |
+
) . '"' .
|
33 |
wcj_get_js_confirmation( __( 'All existing country groups will be deleted and new groups will be created. Are you sure?', 'woocommerce-jetpack' ) ) . '>' .
|
34 |
$autogenerate_button_desc .
|
35 |
'</a>' );
|
204 |
'recalculate_price_filter_products_prices' => '1',
|
205 |
'recalculate_price_filter_products_prices-nonce' => wp_create_nonce( 'recalculate_price_filter_products_prices' ),
|
206 |
),
|
207 |
+
remove_query_arg( array( 'wcj_generate_country_groups', 'wcj_generate_country_groups-nonce' ) )
|
208 |
)
|
209 |
) . '">' .
|
210 |
__( 'Recalculate price filter widget and sorting by price product prices.', 'woocommerce-jetpack' ) . '</a>',
|
431 |
'auto' => __( 'Automatically via Currency Exchange Rates module', 'woocommerce-jetpack' ),
|
432 |
),
|
433 |
'desc' => ( '' === apply_filters( 'booster_message', '', 'desc' ) )
|
434 |
+
? __( 'Visit', 'woocommerce-jetpack' ) . ' <a href="' . admin_url( wcj_admin_tab_url() . '&wcj-cat=prices_and_currencies§ion=currency_exchange_rates' ) . '">' . __( 'Currency Exchange Rates module', 'woocommerce-jetpack' ) . '</a>'
|
435 |
: apply_filters( 'booster_message', '', 'desc' ),
|
436 |
'custom_attributes' => apply_filters( 'booster_message', '', 'disabled' ),
|
437 |
),
|
includes/settings/wcj-settings-price-by-user-role.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Settings - Price based on User Role
|
4 |
*
|
5 |
-
* @version 5.6.
|
6 |
* @since 2.8.0
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/settings
|
@@ -156,7 +156,7 @@ $settings = array(
|
|
156 |
'desc' => sprintf(
|
157 |
/* translators: %s: translators Added */
|
158 |
__( 'Custom roles can be added via "Add/Manage Custom Roles" tool in Booster\'s <a href="%s">General</a> module.', 'woocommerce-jetpack' ),
|
159 |
-
admin_url( '
|
160 |
),
|
161 |
'id' => 'wcj_price_by_user_role_multipliers_options',
|
162 |
),
|
2 |
/**
|
3 |
* Booster for WooCommerce - Settings - Price based on User Role
|
4 |
*
|
5 |
+
* @version 5.6.8
|
6 |
* @since 2.8.0
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/settings
|
156 |
'desc' => sprintf(
|
157 |
/* translators: %s: translators Added */
|
158 |
__( 'Custom roles can be added via "Add/Manage Custom Roles" tool in Booster\'s <a href="%s">General</a> module.', 'woocommerce-jetpack' ),
|
159 |
+
admin_url( wcj_admin_tab_url() . '&wcj-cat=emails_and_misc§ion=general' )
|
160 |
),
|
161 |
'id' => 'wcj_price_by_user_role_multipliers_options',
|
162 |
),
|
includes/settings/wcj-settings-product-by-user.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce Settings - Product by User
|
4 |
*
|
5 |
-
* @version 5.6.
|
6 |
* @since 2.8.0
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/settings
|
@@ -85,7 +85,7 @@ $settings = array_merge(
|
|
85 |
'desc' => sprintf(
|
86 |
/* translators: %s: translators Added */
|
87 |
__( 'Custom roles can be added via "Add/Manage Custom Roles" tool in Booster\'s <a href="%s">General</a> module', 'woocommerce-jetpack' ),
|
88 |
-
admin_url( '
|
89 |
),
|
90 |
'id' => 'wcj_product_by_user_user_visibility',
|
91 |
'default' => array(),
|
2 |
/**
|
3 |
* Booster for WooCommerce Settings - Product by User
|
4 |
*
|
5 |
+
* @version 5.6.8
|
6 |
* @since 2.8.0
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/settings
|
85 |
'desc' => sprintf(
|
86 |
/* translators: %s: translators Added */
|
87 |
__( 'Custom roles can be added via "Add/Manage Custom Roles" tool in Booster\'s <a href="%s">General</a> module', 'woocommerce-jetpack' ),
|
88 |
+
admin_url( wcj_admin_tab_url() . '&wcj-cat=emails_and_misc§ion=general' )
|
89 |
),
|
90 |
'id' => 'wcj_product_by_user_user_visibility',
|
91 |
'default' => array(),
|
includes/settings/wcj-settings-related-products.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Settings - Related Products
|
4 |
*
|
5 |
-
* @version 5.6.
|
6 |
* @since 2.8.0
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/settings
|
@@ -36,7 +36,7 @@ $orderby_options = array(
|
|
36 |
'title' => __( 'Title', 'woocommerce-jetpack' ),
|
37 |
);
|
38 |
if ( WCJ_IS_WC_VERSION_BELOW_3 ) {
|
39 |
-
$orderby_options['meta_value'] = __( 'Meta Value', 'woocommerce-jetpack' ); // phpcs:ignore
|
40 |
$orderby_options['meta_value_num'] = __( 'Meta Value (Numeric)', 'woocommerce-jetpack' );
|
41 |
} else {
|
42 |
$orderby_options['id'] = __( 'ID', 'woocommerce-jetpack' );
|
2 |
/**
|
3 |
* Booster for WooCommerce - Settings - Related Products
|
4 |
*
|
5 |
+
* @version 5.6.8
|
6 |
* @since 2.8.0
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/settings
|
36 |
'title' => __( 'Title', 'woocommerce-jetpack' ),
|
37 |
);
|
38 |
if ( WCJ_IS_WC_VERSION_BELOW_3 ) {
|
39 |
+
$orderby_options['meta_value'] = __( 'Meta Value', 'woocommerce-jetpack' ); // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_meta_value
|
40 |
$orderby_options['meta_value_num'] = __( 'Meta Value (Numeric)', 'woocommerce-jetpack' );
|
41 |
} else {
|
42 |
$orderby_options['id'] = __( 'ID', 'woocommerce-jetpack' );
|
includes/settings/wcj-settings-shipping-options.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Settings - Shipping Options
|
4 |
*
|
5 |
-
* @version 5.6.
|
6 |
* @since 2.9.0
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/settings
|
@@ -60,7 +60,7 @@ $settings = array_merge(
|
|
60 |
sprintf(
|
61 |
/* translators: %s: translators Added */
|
62 |
__( 'Similar results can be achieved with %s module.', 'woocommerce-jetpack' ),
|
63 |
-
'<a href="' . admin_url( '
|
64 |
__( 'Shipping Methods by Products', 'woocommerce-jetpack' ) . '</a>'
|
65 |
),
|
66 |
'type' => 'title',
|
2 |
/**
|
3 |
* Booster for WooCommerce - Settings - Shipping Options
|
4 |
*
|
5 |
+
* @version 5.6.8
|
6 |
* @since 2.9.0
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/settings
|
60 |
sprintf(
|
61 |
/* translators: %s: translators Added */
|
62 |
__( 'Similar results can be achieved with %s module.', 'woocommerce-jetpack' ),
|
63 |
+
'<a href="' . admin_url( wcj_admin_tab_url() . '&wcj-cat=shipping_and_orders§ion=shipping_by_products' ) . '">' .
|
64 |
__( 'Shipping Methods by Products', 'woocommerce-jetpack' ) . '</a>'
|
65 |
),
|
66 |
'type' => 'title',
|
includes/settings/wcj-settings-url-coupons.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Settings - URL Coupons
|
4 |
*
|
5 |
-
* @version 5.6.
|
6 |
* @since 2.9.1
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/settings
|
@@ -18,7 +18,7 @@ $settings = array(
|
|
18 |
'desc' => sprintf(
|
19 |
/* translators: %s: translators Added */
|
20 |
__( 'Additionally you can hide standard coupon field on cart page in Booster\'s <a href="%s">Cart Customization</a> module.', 'woocommerce-jetpack' ),
|
21 |
-
admin_url( '
|
22 |
),
|
23 |
'type' => 'title',
|
24 |
'id' => 'wcj_url_coupons_options',
|
2 |
/**
|
3 |
* Booster for WooCommerce - Settings - URL Coupons
|
4 |
*
|
5 |
+
* @version 5.6.8
|
6 |
* @since 2.9.1
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/settings
|
18 |
'desc' => sprintf(
|
19 |
/* translators: %s: translators Added */
|
20 |
__( 'Additionally you can hide standard coupon field on cart page in Booster\'s <a href="%s">Cart Customization</a> module.', 'woocommerce-jetpack' ),
|
21 |
+
admin_url( wcj_admin_tab_url() . '&wcj-cat=cart_and_checkout§ion=cart_customization' )
|
22 |
),
|
23 |
'type' => 'title',
|
24 |
'id' => 'wcj_url_coupons_options',
|
includes/shipping/class-wc-shipping-wcj-custom-with-shipping-zones.php
CHANGED
@@ -1,8 +1,8 @@
|
|
1 |
-
<?php
|
2 |
/**
|
3 |
* Booster for WooCommerce - Shipping - Custom Shipping with Shipping Zones
|
4 |
*
|
5 |
-
* @version 5.6.
|
6 |
* @since 2.5.6
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/includes
|
@@ -12,13 +12,13 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
12 |
exit; // Exit if accessed directly.
|
13 |
}
|
14 |
|
15 |
-
if ( ! class_exists( '
|
16 |
/**
|
17 |
-
*
|
18 |
*
|
19 |
-
* @version
|
20 |
*/
|
21 |
-
class
|
22 |
/**
|
23 |
* Form_field_ids
|
24 |
*
|
1 |
+
<?php
|
2 |
/**
|
3 |
* Booster for WooCommerce - Shipping - Custom Shipping with Shipping Zones
|
4 |
*
|
5 |
+
* @version 5.6.8
|
6 |
* @since 2.5.6
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/includes
|
12 |
exit; // Exit if accessed directly.
|
13 |
}
|
14 |
|
15 |
+
if ( ! class_exists( 'WC_Shipping_WCJ_Custom_With_Shipping_Zones' ) ) :
|
16 |
/**
|
17 |
+
* WC_Shipping_WCJ_Custom_With_Shipping_Zones
|
18 |
*
|
19 |
+
* @version 5.6.8
|
20 |
*/
|
21 |
+
class WC_Shipping_WCJ_Custom_With_Shipping_Zones extends WC_Shipping_Method {
|
22 |
/**
|
23 |
* Form_field_ids
|
24 |
*
|
includes/shortcodes/class-wcj-general-shortcodes.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Shortcodes - General
|
4 |
*
|
5 |
-
* @version 5.6.
|
6 |
* @author Pluggabl LLC.
|
7 |
* @package Booster_For_WooCommerce/shortcodes
|
8 |
*/
|
@@ -476,7 +476,7 @@ if ( ! class_exists( 'WCJ_General_Shortcodes' ) ) :
|
|
476 |
/**
|
477 |
* Wcj_selector.
|
478 |
*
|
479 |
-
* @version 5.6.
|
480 |
* @since 3.1.0
|
481 |
* @todo add `default` attribute
|
482 |
* @todo (maybe) add more selector types (e.g.: currency)
|
@@ -498,7 +498,6 @@ if ( ! class_exists( 'WCJ_General_Shortcodes' ) ) :
|
|
498 |
break;
|
499 |
default: // 'all'.
|
500 |
$countries = wcj_get_countries();
|
501 |
-
asort( $options );
|
502 |
break;
|
503 |
}
|
504 |
|
@@ -518,6 +517,7 @@ if ( ! class_exists( 'WCJ_General_Shortcodes' ) ) :
|
|
518 |
'<select name="wcj_' . $atts['selector_type'] . '_selector" class="wcj_' . $atts['selector_type'] . '_selector" onchange="this.form.submit()">' .
|
519 |
$html .
|
520 |
'</select>' .
|
|
|
521 |
'</form>';
|
522 |
}
|
523 |
|
@@ -604,34 +604,34 @@ if ( ! class_exists( 'WCJ_General_Shortcodes' ) ) :
|
|
604 |
/**
|
605 |
* Wcj_current_time.
|
606 |
*
|
607 |
-
* @version 5.6.
|
608 |
* @since 2.6.0
|
609 |
* @param array $atts The user defined shortcode attributes.
|
610 |
*/
|
611 |
public function wcj_current_time( $atts ) {
|
612 |
-
return date_i18n( $atts['time_format'],
|
613 |
}
|
614 |
|
615 |
/**
|
616 |
* Wcj_current_datetime.
|
617 |
*
|
618 |
-
* @version 5.6.
|
619 |
* @since 2.6.0
|
620 |
* @param array $atts The user defined shortcode attributes.
|
621 |
*/
|
622 |
public function wcj_current_datetime( $atts ) {
|
623 |
-
return date_i18n( $atts['datetime_format'],
|
624 |
}
|
625 |
|
626 |
/**
|
627 |
* Wcj_current_timestamp.
|
628 |
*
|
629 |
-
* @version 5.6.
|
630 |
* @since 2.6.0
|
631 |
* @param array $atts The user defined shortcode attributes.
|
632 |
*/
|
633 |
public function wcj_current_timestamp( $atts ) {
|
634 |
-
return
|
635 |
}
|
636 |
|
637 |
/**
|
@@ -838,7 +838,7 @@ if ( ! class_exists( 'WCJ_General_Shortcodes' ) ) :
|
|
838 |
/**
|
839 |
* Wcj_currency_select_link_list.
|
840 |
*
|
841 |
-
* @version 5.
|
842 |
* @since 2.4.5
|
843 |
* @param array $atts The user defined shortcode attributes.
|
844 |
* @param array | string $content The user defined shortcode content.
|
@@ -875,7 +875,7 @@ if ( ! class_exists( 'WCJ_General_Shortcodes' ) ) :
|
|
875 |
'%currency_symbol%' => get_woocommerce_currency_symbol( $currency_code ),
|
876 |
);
|
877 |
$currency_switcher_output = str_replace( array_keys( $template_replaced_values ), array_values( $template_replaced_values ), $switcher_template );
|
878 |
-
$the_link = '<a href="' . esc_url( add_query_arg( 'wcj-currency', $currency_code ) ) . '">' . $currency_switcher_output . '</a>';
|
879 |
if ( $currency_code !== $selected_currency ) {
|
880 |
$links[] = $the_link;
|
881 |
} else {
|
@@ -917,7 +917,7 @@ if ( ! class_exists( 'WCJ_General_Shortcodes' ) ) :
|
|
917 |
/**
|
918 |
* Get_currency_selector.
|
919 |
*
|
920 |
-
* @version
|
921 |
* @since 2.4.5
|
922 |
* @param array $atts The user defined shortcode attributes.
|
923 |
* @param array | string $content The user defined shortcode content.
|
@@ -976,6 +976,7 @@ if ( ! class_exists( 'WCJ_General_Shortcodes' ) ) :
|
|
976 |
if ( 'select' === $type ) {
|
977 |
$html .= '</select>';
|
978 |
}
|
|
|
979 |
$html .= '</form>';
|
980 |
return $html;
|
981 |
}
|
@@ -1007,7 +1008,7 @@ if ( ! class_exists( 'WCJ_General_Shortcodes' ) ) :
|
|
1007 |
/**
|
1008 |
* Wcj_country_select_drop_down_list.
|
1009 |
*
|
1010 |
-
* @version
|
1011 |
* @param array $atts The user defined shortcode attributes.
|
1012 |
* @param array | string $content The user defined shortcode content.
|
1013 |
*/
|
@@ -1046,6 +1047,7 @@ if ( ! class_exists( 'WCJ_General_Shortcodes' ) ) :
|
|
1046 |
}
|
1047 |
}
|
1048 |
}
|
|
|
1049 |
$html .= '</select>';
|
1050 |
$html .= '</form>';
|
1051 |
return $html;
|
@@ -1087,11 +1089,11 @@ if ( ! class_exists( 'WCJ_General_Shortcodes' ) ) :
|
|
1087 |
/**
|
1088 |
* Wcj_current_date.
|
1089 |
*
|
1090 |
-
* @version
|
1091 |
* @param array $atts The user defined shortcode attributes.
|
1092 |
*/
|
1093 |
public function wcj_current_date( $atts ) {
|
1094 |
-
return date_i18n( $atts['date_format'],
|
1095 |
}
|
1096 |
|
1097 |
/**
|
2 |
/**
|
3 |
* Booster for WooCommerce - Shortcodes - General
|
4 |
*
|
5 |
+
* @version 5.6.8
|
6 |
* @author Pluggabl LLC.
|
7 |
* @package Booster_For_WooCommerce/shortcodes
|
8 |
*/
|
476 |
/**
|
477 |
* Wcj_selector.
|
478 |
*
|
479 |
+
* @version 5.6.8
|
480 |
* @since 3.1.0
|
481 |
* @todo add `default` attribute
|
482 |
* @todo (maybe) add more selector types (e.g.: currency)
|
498 |
break;
|
499 |
default: // 'all'.
|
500 |
$countries = wcj_get_countries();
|
|
|
501 |
break;
|
502 |
}
|
503 |
|
517 |
'<select name="wcj_' . $atts['selector_type'] . '_selector" class="wcj_' . $atts['selector_type'] . '_selector" onchange="this.form.submit()">' .
|
518 |
$html .
|
519 |
'</select>' .
|
520 |
+
wp_nonce_field( 'wcj_' . $atts['selector_type'] . '_selector', 'wcj_' . $atts['selector_type'] . '_selector-nonce' ) .
|
521 |
'</form>';
|
522 |
}
|
523 |
|
604 |
/**
|
605 |
* Wcj_current_time.
|
606 |
*
|
607 |
+
* @version 5.6.8
|
608 |
* @since 2.6.0
|
609 |
* @param array $atts The user defined shortcode attributes.
|
610 |
*/
|
611 |
public function wcj_current_time( $atts ) {
|
612 |
+
return date_i18n( $atts['time_format'], wcj_get_timestamp_date_from_gmt() );
|
613 |
}
|
614 |
|
615 |
/**
|
616 |
* Wcj_current_datetime.
|
617 |
*
|
618 |
+
* @version 5.6.8
|
619 |
* @since 2.6.0
|
620 |
* @param array $atts The user defined shortcode attributes.
|
621 |
*/
|
622 |
public function wcj_current_datetime( $atts ) {
|
623 |
+
return date_i18n( $atts['datetime_format'], wcj_get_timestamp_date_from_gmt() );
|
624 |
}
|
625 |
|
626 |
/**
|
627 |
* Wcj_current_timestamp.
|
628 |
*
|
629 |
+
* @version 5.6.8
|
630 |
* @since 2.6.0
|
631 |
* @param array $atts The user defined shortcode attributes.
|
632 |
*/
|
633 |
public function wcj_current_timestamp( $atts ) {
|
634 |
+
return wcj_get_timestamp_date_from_gmt();
|
635 |
}
|
636 |
|
637 |
/**
|
838 |
/**
|
839 |
* Wcj_currency_select_link_list.
|
840 |
*
|
841 |
+
* @version 5.6.8
|
842 |
* @since 2.4.5
|
843 |
* @param array $atts The user defined shortcode attributes.
|
844 |
* @param array | string $content The user defined shortcode content.
|
875 |
'%currency_symbol%' => get_woocommerce_currency_symbol( $currency_code ),
|
876 |
);
|
877 |
$currency_switcher_output = str_replace( array_keys( $template_replaced_values ), array_values( $template_replaced_values ), $switcher_template );
|
878 |
+
$the_link = '<a href="' . esc_url( wp_nonce_url( add_query_arg( 'wcj-currency', $currency_code ), 'wcj-currency', 'wcj-currency-nonce' ) ) . '">' . $currency_switcher_output . '</a>';
|
879 |
if ( $currency_code !== $selected_currency ) {
|
880 |
$links[] = $the_link;
|
881 |
} else {
|
917 |
/**
|
918 |
* Get_currency_selector.
|
919 |
*
|
920 |
+
* @version 5.6.8
|
921 |
* @since 2.4.5
|
922 |
* @param array $atts The user defined shortcode attributes.
|
923 |
* @param array | string $content The user defined shortcode content.
|
976 |
if ( 'select' === $type ) {
|
977 |
$html .= '</select>';
|
978 |
}
|
979 |
+
$html .= wp_nonce_field( 'wcj-currency', 'wcj-currency-nonce' );
|
980 |
$html .= '</form>';
|
981 |
return $html;
|
982 |
}
|
1008 |
/**
|
1009 |
* Wcj_country_select_drop_down_list.
|
1010 |
*
|
1011 |
+
* @version 5.6.8
|
1012 |
* @param array $atts The user defined shortcode attributes.
|
1013 |
* @param array | string $content The user defined shortcode content.
|
1014 |
*/
|
1047 |
}
|
1048 |
}
|
1049 |
}
|
1050 |
+
$html .= wp_nonce_field( 'wcj-country', 'wcj-country-nonce' );
|
1051 |
$html .= '</select>';
|
1052 |
$html .= '</form>';
|
1053 |
return $html;
|
1089 |
/**
|
1090 |
* Wcj_current_date.
|
1091 |
*
|
1092 |
+
* @version 5.6.8
|
1093 |
* @param array $atts The user defined shortcode attributes.
|
1094 |
*/
|
1095 |
public function wcj_current_date( $atts ) {
|
1096 |
+
return date_i18n( $atts['date_format'], wcj_get_timestamp_date_from_gmt() );
|
1097 |
}
|
1098 |
|
1099 |
/**
|
includes/shortcodes/class-wcj-invoices-shortcodes.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Shortcodes - Invoices
|
4 |
*
|
5 |
-
* @version 5.6.
|
6 |
* @author Pluggabl LLC.
|
7 |
* @package Booster_For_WooCommerce/shortcodes
|
8 |
*/
|
@@ -57,17 +57,14 @@ if ( ! class_exists( 'WCJ_Invoices_Shortcodes' ) ) :
|
|
57 |
/**
|
58 |
* Init_atts.
|
59 |
*
|
60 |
-
* @version 5.6.
|
61 |
* @param array $atts The user defined shortcode attributes.
|
62 |
*/
|
63 |
public function init_atts( $atts ) {
|
64 |
// Atts.
|
65 |
-
|
66 |
-
if ( function_exists( 'wp_verify_nonce' ) ) {
|
67 |
-
$wpnonce = isset( $_REQUEST['_wpnonce'] ) ? wp_verify_nonce( sanitize_key( isset( $_REQUEST['_wpnonce'] ) ? $_REQUEST['_wpnonce'] : '' ) ) : true;
|
68 |
-
}
|
69 |
if ( 0 === $atts['order_id'] ) {
|
70 |
-
$atts['order_id'] = ( isset( $_GET['order_id'] )
|
71 |
wp_unslash(
|
72 |
$_GET['order_id']
|
73 |
)
|
@@ -79,6 +76,7 @@ if ( ! class_exists( 'WCJ_Invoices_Shortcodes' ) ) :
|
|
79 |
if ( 'shop_order' !== get_post_type( $atts['order_id'] ) ) {
|
80 |
return false;
|
81 |
}
|
|
|
82 |
|
83 |
return $atts;
|
84 |
}
|
2 |
/**
|
3 |
* Booster for WooCommerce - Shortcodes - Invoices
|
4 |
*
|
5 |
+
* @version 5.6.8
|
6 |
* @author Pluggabl LLC.
|
7 |
* @package Booster_For_WooCommerce/shortcodes
|
8 |
*/
|
57 |
/**
|
58 |
* Init_atts.
|
59 |
*
|
60 |
+
* @version 5.6.8
|
61 |
* @param array $atts The user defined shortcode attributes.
|
62 |
*/
|
63 |
public function init_atts( $atts ) {
|
64 |
// Atts.
|
65 |
+
// phpcs:disable WordPress.Security.NonceVerification
|
|
|
|
|
|
|
66 |
if ( 0 === $atts['order_id'] ) {
|
67 |
+
$atts['order_id'] = ( isset( $_GET['order_id'] ) ) ? sanitize_text_field(
|
68 |
wp_unslash(
|
69 |
$_GET['order_id']
|
70 |
)
|
76 |
if ( 'shop_order' !== get_post_type( $atts['order_id'] ) ) {
|
77 |
return false;
|
78 |
}
|
79 |
+
// phpcs:enable WordPress.Security.NonceVerification
|
80 |
|
81 |
return $atts;
|
82 |
}
|
includes/shortcodes/class-wcj-orders-shortcodes.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Shortcodes - Orders
|
4 |
*
|
5 |
-
* @version 5.6.
|
6 |
* @author Pluggabl LLC.
|
7 |
* @package Booster_For_WooCommerce/shortcodes
|
8 |
*/
|
@@ -20,7 +20,7 @@ if ( ! class_exists( 'WCJ_Orders_Shortcodes' ) ) :
|
|
20 |
/**
|
21 |
* Constructor.
|
22 |
*
|
23 |
-
* @version 5.6.
|
24 |
*/
|
25 |
public function __construct() {
|
26 |
|
@@ -110,7 +110,7 @@ if ( ! class_exists( 'WCJ_Orders_Shortcodes' ) ) :
|
|
110 |
/**
|
111 |
* Add_extra_atts.
|
112 |
*
|
113 |
-
* @version 5.6.
|
114 |
* @param array $atts The user defined shortcode attributes.
|
115 |
*/
|
116 |
public function add_extra_atts( $atts ) {
|
@@ -136,7 +136,7 @@ if ( ! class_exists( 'WCJ_Orders_Shortcodes' ) ) :
|
|
136 |
'item_number' => 'all',
|
137 |
'field' => 'name',
|
138 |
'order_user_roles' => '',
|
139 |
-
'meta_key' => '', // phpcs:ignore
|
140 |
'tax_class' => '',
|
141 |
'fallback_billing_address' => 'no',
|
142 |
'tax_display' => '',
|
@@ -199,14 +199,16 @@ if ( ! class_exists( 'WCJ_Orders_Shortcodes' ) ) :
|
|
199 |
public function init_atts( $atts ) {
|
200 |
|
201 |
// Atts.
|
|
|
202 |
$atts['excl_tax'] = ( 'yes' === $atts['excl_tax'] );
|
203 |
if ( 0 === $atts['order_id'] ) {
|
204 |
-
$atts['order_id'] = ( isset( $_GET['order_id'] ) ) ? sanitize_text_field( wp_unslash( $_GET['order_id'] ) ) : get_the_ID();
|
205 |
}
|
206 |
if ( 0 === $atts['order_id'] ) {
|
207 |
-
$atts['order_id'] = ( isset( $_GET['pdf_invoice'] ) ) ? sanitize_text_field( wp_unslash( $_GET['pdf_invoice'] ) ) : 0;
|
208 |
// PDF Invoices V1 compatibility.
|
209 |
}
|
|
|
210 |
if ( 0 === $atts['order_id'] ) {
|
211 |
return false;
|
212 |
}
|
2 |
/**
|
3 |
* Booster for WooCommerce - Shortcodes - Orders
|
4 |
*
|
5 |
+
* @version 5.6.8
|
6 |
* @author Pluggabl LLC.
|
7 |
* @package Booster_For_WooCommerce/shortcodes
|
8 |
*/
|
20 |
/**
|
21 |
* Constructor.
|
22 |
*
|
23 |
+
* @version 5.6.8
|
24 |
*/
|
25 |
public function __construct() {
|
26 |
|
110 |
/**
|
111 |
* Add_extra_atts.
|
112 |
*
|
113 |
+
* @version 5.6.8
|
114 |
* @param array $atts The user defined shortcode attributes.
|
115 |
*/
|
116 |
public function add_extra_atts( $atts ) {
|
136 |
'item_number' => 'all',
|
137 |
'field' => 'name',
|
138 |
'order_user_roles' => '',
|
139 |
+
'meta_key' => '', // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_meta_key
|
140 |
'tax_class' => '',
|
141 |
'fallback_billing_address' => 'no',
|
142 |
'tax_display' => '',
|
199 |
public function init_atts( $atts ) {
|
200 |
|
201 |
// Atts.
|
202 |
+
// phpcs:disable WordPress.Security.NonceVerification
|
203 |
$atts['excl_tax'] = ( 'yes' === $atts['excl_tax'] );
|
204 |
if ( 0 === $atts['order_id'] ) {
|
205 |
+
$atts['order_id'] = ( isset( $_GET['order_id'] ) ) ? sanitize_text_field( wp_unslash( $_GET['order_id'] ) ) : get_the_ID();
|
206 |
}
|
207 |
if ( 0 === $atts['order_id'] ) {
|
208 |
+
$atts['order_id'] = ( isset( $_GET['pdf_invoice'] ) ) ? sanitize_text_field( wp_unslash( $_GET['pdf_invoice'] ) ) : 0;
|
209 |
// PDF Invoices V1 compatibility.
|
210 |
}
|
211 |
+
// phpcs:enable WordPress.Security.NonceVerification
|
212 |
if ( 0 === $atts['order_id'] ) {
|
213 |
return false;
|
214 |
}
|
includes/shortcodes/class-wcj-products-add-form-shortcodes.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Shortcodes - Products Add Form
|
4 |
*
|
5 |
-
* @version 5.6.
|
6 |
* @since 2.5.0
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/shortcodes
|
@@ -269,21 +269,18 @@ if ( ! class_exists( 'WCJ_Products_Add_Form_Shortcodes' ) ) :
|
|
269 |
/**
|
270 |
* Wcj_product_add_new.
|
271 |
*
|
272 |
-
* @version 5.6.
|
273 |
* @since 2.5.0
|
274 |
* @todo `multipart` only if image
|
275 |
* @param array $atts The user defined shortcode atts.
|
276 |
*/
|
277 |
public function wcj_product_add_new( $atts ) {
|
278 |
-
$wpnonce = isset( $_REQUEST['
|
279 |
$header_html = '';
|
280 |
$notice_html = '';
|
281 |
$input_fields_html = '';
|
282 |
$footer_html = '';
|
283 |
|
284 |
-
if ( ! $wpnonce ) {
|
285 |
-
return;
|
286 |
-
}
|
287 |
$args = array(
|
288 |
'title' => ( isset( $_REQUEST['wcj_add_new_product_title'] ) ) ? sanitize_text_field( wp_unslash( $_REQUEST['wcj_add_new_product_title'] ) ) : '',
|
289 |
'desc' => isset( $_REQUEST['wcj_add_new_product_desc'] ) ? sanitize_text_field( wp_unslash( $_REQUEST['wcj_add_new_product_desc'] ) ) : '',
|
@@ -300,7 +297,7 @@ if ( ! class_exists( 'WCJ_Products_Add_Form_Shortcodes' ) ) :
|
|
300 |
$args[ 'custom_taxonomy_' . $i ] = isset( $_REQUEST[ $param_id ] ) ? sanitize_text_field( wp_unslash( $_REQUEST[ $param_id ] ) ) : array();
|
301 |
}
|
302 |
|
303 |
-
if ( isset( $_REQUEST['wcj_add_new_product'] ) ) {
|
304 |
$validate_args = $this->validate_args( $args, $atts );
|
305 |
if ( true === ( $validate_args ) ) {
|
306 |
$result = $this->wc_add_new_product( $args, $atts );
|
@@ -471,6 +468,7 @@ if ( ! class_exists( 'WCJ_Products_Add_Form_Shortcodes' ) ) :
|
|
471 |
|
472 |
$footer_html .= '<input type="submit" class="button" name="wcj_add_new_product" value="' . ( ( 0 === $atts['product_id'] ) ?
|
473 |
__( 'Add', 'woocommerce-jetpack' ) : __( 'Edit', 'woocommerce-jetpack' ) ) . '">';
|
|
|
474 |
$footer_html .= '</form>';
|
475 |
|
476 |
return $notice_html . $header_html . $input_fields_html . $footer_html;
|
2 |
/**
|
3 |
* Booster for WooCommerce - Shortcodes - Products Add Form
|
4 |
*
|
5 |
+
* @version 5.6.8
|
6 |
* @since 2.5.0
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/shortcodes
|
269 |
/**
|
270 |
* Wcj_product_add_new.
|
271 |
*
|
272 |
+
* @version 5.6.8
|
273 |
* @since 2.5.0
|
274 |
* @todo `multipart` only if image
|
275 |
* @param array $atts The user defined shortcode atts.
|
276 |
*/
|
277 |
public function wcj_product_add_new( $atts ) {
|
278 |
+
$wpnonce = isset( $_REQUEST['wcj_add_new_product-nonce'] ) ? wp_verify_nonce( sanitize_key( $_REQUEST['wcj_add_new_product-nonce'] ), 'wcj_add_new_product' ) : false;
|
279 |
$header_html = '';
|
280 |
$notice_html = '';
|
281 |
$input_fields_html = '';
|
282 |
$footer_html = '';
|
283 |
|
|
|
|
|
|
|
284 |
$args = array(
|
285 |
'title' => ( isset( $_REQUEST['wcj_add_new_product_title'] ) ) ? sanitize_text_field( wp_unslash( $_REQUEST['wcj_add_new_product_title'] ) ) : '',
|
286 |
'desc' => isset( $_REQUEST['wcj_add_new_product_desc'] ) ? sanitize_text_field( wp_unslash( $_REQUEST['wcj_add_new_product_desc'] ) ) : '',
|
297 |
$args[ 'custom_taxonomy_' . $i ] = isset( $_REQUEST[ $param_id ] ) ? sanitize_text_field( wp_unslash( $_REQUEST[ $param_id ] ) ) : array();
|
298 |
}
|
299 |
|
300 |
+
if ( $wpnonce && isset( $_REQUEST['wcj_add_new_product'] ) ) {
|
301 |
$validate_args = $this->validate_args( $args, $atts );
|
302 |
if ( true === ( $validate_args ) ) {
|
303 |
$result = $this->wc_add_new_product( $args, $atts );
|
468 |
|
469 |
$footer_html .= '<input type="submit" class="button" name="wcj_add_new_product" value="' . ( ( 0 === $atts['product_id'] ) ?
|
470 |
__( 'Add', 'woocommerce-jetpack' ) : __( 'Edit', 'woocommerce-jetpack' ) ) . '">';
|
471 |
+
$footer_html .= wp_nonce_field( 'wcj_add_new_product', 'wcj_add_new_product-nonce' );
|
472 |
$footer_html .= '</form>';
|
473 |
|
474 |
return $notice_html . $header_html . $input_fields_html . $footer_html;
|
includes/shortcodes/class-wcj-products-crowdfunding-shortcodes.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Shortcodes - Products Crowdfunding
|
4 |
*
|
5 |
-
* @version 5.6.
|
6 |
* @since 2.5.4
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/includes
|
@@ -217,12 +217,12 @@ if ( ! class_exists( 'WCJ_Products_Crowdfunding_Shortcodes' ) ) :
|
|
217 |
/**
|
218 |
* Wcj_product_crowdfunding_time_remaining.
|
219 |
*
|
220 |
-
* @version 5.6.
|
221 |
* @since 2.2.6
|
222 |
* @param array $atts The user defined shortcode attributes.
|
223 |
*/
|
224 |
public function wcj_product_crowdfunding_time_remaining( $atts ) {
|
225 |
-
$seconds_remaining = strtotime( $this->wcj_product_crowdfunding_deadline( $atts ) ) -
|
226 |
$days_remaining = floor( $seconds_remaining / ( 24 * 60 * 60 ) );
|
227 |
$hours_remaining = floor( $seconds_remaining / ( 60 * 60 ) );
|
228 |
$minutes_remaining = floor( $seconds_remaining / 60 );
|
@@ -244,7 +244,7 @@ if ( ! class_exists( 'WCJ_Products_Crowdfunding_Shortcodes' ) ) :
|
|
244 |
/**
|
245 |
* Wcj_product_crowdfunding_time_remaining_progress_bar.
|
246 |
*
|
247 |
-
* @version 5.6.
|
248 |
* @since 2.5.0
|
249 |
* @param array $atts The user defined shortcode attributes.
|
250 |
*/
|
@@ -252,7 +252,7 @@ if ( ! class_exists( 'WCJ_Products_Crowdfunding_Shortcodes' ) ) :
|
|
252 |
$deadline_seconds = strtotime( get_post_meta( wcj_get_product_id_or_variation_parent_id( $this->the_product ), '_wcj_crowdfunding_deadline', true ) );
|
253 |
$startdate_seconds = strtotime( get_post_meta( wcj_get_product_id_or_variation_parent_id( $this->the_product ), '_wcj_crowdfunding_startdate', true ) );
|
254 |
|
255 |
-
$seconds_remaining = $deadline_seconds -
|
256 |
$seconds_total = $deadline_seconds - $startdate_seconds;
|
257 |
|
258 |
$current_value = $seconds_remaining;
|
2 |
/**
|
3 |
* Booster for WooCommerce - Shortcodes - Products Crowdfunding
|
4 |
*
|
5 |
+
* @version 5.6.8
|
6 |
* @since 2.5.4
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/includes
|
217 |
/**
|
218 |
* Wcj_product_crowdfunding_time_remaining.
|
219 |
*
|
220 |
+
* @version 5.6.8
|
221 |
* @since 2.2.6
|
222 |
* @param array $atts The user defined shortcode attributes.
|
223 |
*/
|
224 |
public function wcj_product_crowdfunding_time_remaining( $atts ) {
|
225 |
+
$seconds_remaining = strtotime( $this->wcj_product_crowdfunding_deadline( $atts ) ) - wcj_get_timestamp_date_from_gmt();
|
226 |
$days_remaining = floor( $seconds_remaining / ( 24 * 60 * 60 ) );
|
227 |
$hours_remaining = floor( $seconds_remaining / ( 60 * 60 ) );
|
228 |
$minutes_remaining = floor( $seconds_remaining / 60 );
|
244 |
/**
|
245 |
* Wcj_product_crowdfunding_time_remaining_progress_bar.
|
246 |
*
|
247 |
+
* @version 5.6.8
|
248 |
* @since 2.5.0
|
249 |
* @param array $atts The user defined shortcode attributes.
|
250 |
*/
|
252 |
$deadline_seconds = strtotime( get_post_meta( wcj_get_product_id_or_variation_parent_id( $this->the_product ), '_wcj_crowdfunding_deadline', true ) );
|
253 |
$startdate_seconds = strtotime( get_post_meta( wcj_get_product_id_or_variation_parent_id( $this->the_product ), '_wcj_crowdfunding_startdate', true ) );
|
254 |
|
255 |
+
$seconds_remaining = $deadline_seconds - wcj_get_timestamp_date_from_gmt();
|
256 |
$seconds_total = $deadline_seconds - $startdate_seconds;
|
257 |
|
258 |
$current_value = $seconds_remaining;
|
includes/shortcodes/class-wcj-products-shortcodes.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Shortcodes - Products
|
4 |
*
|
5 |
-
* @version 5.6.
|
6 |
* @author Pluggabl LLC.
|
7 |
* @package Booster_For_WooCommerce/shortcodes
|
8 |
*/
|
@@ -21,7 +21,7 @@ if ( ! class_exists( 'WCJ_Products_Shortcodes' ) ) :
|
|
21 |
/**
|
22 |
* Constructor.
|
23 |
*
|
24 |
-
* @version 5.
|
25 |
* @todo (maybe) add `[wcj_product_stock_price]`
|
26 |
*/
|
27 |
public function __construct() {
|
@@ -128,7 +128,7 @@ if ( ! class_exists( 'WCJ_Products_Shortcodes' ) ) :
|
|
128 |
'width' => 0,
|
129 |
'height' => 0,
|
130 |
'color' => 'black',
|
131 |
-
'meta_key' => '', //phpcs:ignore
|
132 |
);
|
133 |
|
134 |
parent::__construct();
|
@@ -313,7 +313,7 @@ if ( ! class_exists( 'WCJ_Products_Shortcodes' ) ) :
|
|
313 |
/**
|
314 |
* Wcj_product_time_since_last_sale.
|
315 |
*
|
316 |
-
* @version 5.6.
|
317 |
* @since 2.4.0
|
318 |
* @param array $atts Shortcode atts.
|
319 |
*/
|
@@ -346,7 +346,7 @@ if ( ! class_exists( 'WCJ_Products_Shortcodes' ) ) :
|
|
346 |
if ( $item['product_id'] === $atts['product_id'] ) {
|
347 |
// Found sale!
|
348 |
/* translators: %s: search term */
|
349 |
-
return sprintf( __( '%s ago', 'woocommerce-jetpack' ), human_time_diff( get_the_time( 'U', $order_id ), (
|
350 |
}
|
351 |
}
|
352 |
}
|
2 |
/**
|
3 |
* Booster for WooCommerce - Shortcodes - Products
|
4 |
*
|
5 |
+
* @version 5.6.8
|
6 |
* @author Pluggabl LLC.
|
7 |
* @package Booster_For_WooCommerce/shortcodes
|
8 |
*/
|
21 |
/**
|
22 |
* Constructor.
|
23 |
*
|
24 |
+
* @version 5.6.8
|
25 |
* @todo (maybe) add `[wcj_product_stock_price]`
|
26 |
*/
|
27 |
public function __construct() {
|
128 |
'width' => 0,
|
129 |
'height' => 0,
|
130 |
'color' => 'black',
|
131 |
+
'meta_key' => '', // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_meta_key
|
132 |
);
|
133 |
|
134 |
parent::__construct();
|
313 |
/**
|
314 |
* Wcj_product_time_since_last_sale.
|
315 |
*
|
316 |
+
* @version 5.6.8
|
317 |
* @since 2.4.0
|
318 |
* @param array $atts Shortcode atts.
|
319 |
*/
|
346 |
if ( $item['product_id'] === $atts['product_id'] ) {
|
347 |
// Found sale!
|
348 |
/* translators: %s: search term */
|
349 |
+
return sprintf( __( '%s ago', 'woocommerce-jetpack' ), human_time_diff( get_the_time( 'U', $order_id ), wcj_get_timestamp_date_from_gmt() ) );
|
350 |
}
|
351 |
}
|
352 |
}
|
includes/tools/class-wcj-eu-countries-vat-rates-tool.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Tool - EU Countries VAT Rates
|
4 |
*
|
5 |
-
* @version 5.6.
|
6 |
* @since 2.3.10
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/tools
|
@@ -35,14 +35,11 @@ if ( ! class_exists( 'WCJ_EU_Countries_VAT_Rates_Tool' ) ) :
|
|
35 |
/**
|
36 |
* Add_eu_countries_vat_rates.
|
37 |
*
|
38 |
-
* @version 5.6.
|
39 |
* @since 2.3.10
|
40 |
*/
|
41 |
public function add_eu_countries_vat_rates() {
|
42 |
-
$wpnonce =
|
43 |
-
if ( function_exists( 'wp_verify_nonce' ) ) {
|
44 |
-
$wpnonce = isset( $_REQUEST['_wpnonce'] ) ? wp_verify_nonce( sanitize_key( isset( $_REQUEST['_wpnonce'] ) ? $_REQUEST['_wpnonce'] : '' ) ) : true;
|
45 |
-
}
|
46 |
if ( ! $wpnonce || ! isset( $_POST['add_eu_countries_vat_rates'] ) ) {
|
47 |
return;
|
48 |
}
|
@@ -72,36 +69,42 @@ if ( ! class_exists( 'WCJ_EU_Countries_VAT_Rates_Tool' ) ) :
|
|
72 |
/**
|
73 |
* Create_eu_countries_vat_rates_tool.
|
74 |
*
|
75 |
-
* @version 5.6.
|
76 |
* @since 2.3.10
|
77 |
* @param string $header_html Get html data.
|
78 |
*/
|
79 |
public function create_eu_countries_vat_rates_tool( $header_html ) {
|
|
|
|
|
|
|
|
|
|
|
80 |
|
81 |
$the_tool_html = '';
|
82 |
$the_tool_html .= '<div class="wcj-setting-jetpack-body wcj_tools_cnt_main">';
|
83 |
$the_tool_html .= $header_html;
|
84 |
|
85 |
-
$data
|
86 |
-
$
|
87 |
-
if ( function_exists( 'wp_verify_nonce' ) ) {
|
88 |
-
$wpnonce = isset( $_REQUEST['_wpnonce'] ) ? wp_verify_nonce( sanitize_key( isset( $_REQUEST['_wpnonce'] ) ? $_REQUEST['_wpnonce'] : '' ) ) : true;
|
89 |
-
}
|
90 |
-
$the_name = ( $wpnonce && isset( $_POST['wcj_tax_name'] ) ) ? sanitize_text_field( wp_unslash( $_POST['wcj_tax_name'] ) ) : __( 'VAT', 'woocommerce' );
|
91 |
$data[] = array(
|
92 |
__( 'Name', 'woocommerce-jetpack' ),
|
93 |
'<input class="input-text" type="text" name="wcj_tax_name" value="' . $the_name . '">',
|
|
|
94 |
);
|
95 |
$data[] = array(
|
96 |
'',
|
97 |
-
'<input class="button-primary" type="submit" name="add_eu_countries_vat_rates" value="' . __( 'Add EU Countries VAT Rates', 'woocommerce-jetpack' ) . '">' .
|
|
|
98 |
);
|
99 |
-
$the_tool_html .= '<p>';
|
100 |
$the_tool_html .= '<form method="post" action="">';
|
101 |
-
$the_tool_html .= wcj_get_table_html(
|
|
|
|
|
|
|
|
|
|
|
|
|
102 |
$the_tool_html .= '</form>';
|
103 |
-
$the_tool_html .= '</p>';
|
104 |
-
|
105 |
$the_tool_html .= '<h4>' . __( 'List of EU VAT rates to be added', 'woocommerce-jetpack' ) . '</h4>';
|
106 |
$eu_vat_rates = wcj_get_european_union_countries_with_vat();
|
107 |
$data = array();
|
2 |
/**
|
3 |
* Booster for WooCommerce - Tool - EU Countries VAT Rates
|
4 |
*
|
5 |
+
* @version 5.6.8
|
6 |
* @since 2.3.10
|
7 |
* @author Pluggabl LLC.
|
8 |
* @package Booster_For_WooCommerce/tools
|
35 |
/**
|
36 |
* Add_eu_countries_vat_rates.
|
37 |
*
|
38 |
+
* @version 5.6.8
|
39 |
* @since 2.3.10
|
40 |
*/
|
41 |
public function add_eu_countries_vat_rates() {
|
42 |
+
$wpnonce = isset( $_REQUEST['add_eu_countries_vat_rates-nonce'] ) ? wp_verify_nonce( sanitize_key( $_REQUEST['add_eu_countries_vat_rates-nonce'] ), 'add_eu_countries_vat_rates' ) : false;
|
|
|
|
|
|
|
43 |
if ( ! $wpnonce || ! isset( $_POST['add_eu_countries_vat_rates'] ) ) {
|
44 |
return;
|
45 |
}
|
69 |
/**
|
70 |
* Create_eu_countries_vat_rates_tool.
|
71 |
*
|
72 |
+
* @version 5.6.8
|
73 |
* @since 2.3.10
|
74 |
* @param string $header_html Get html data.
|
75 |
*/
|
76 |
public function create_eu_countries_vat_rates_tool( $header_html ) {
|
77 |
+
$wpnonce = isset( $_REQUEST['wcj_tools_nonce'] ) ? wp_verify_nonce( sanitize_key( $_REQUEST['wcj_tools_nonce'] ), 'wcj_tools' ) : false;
|
78 |
+
if ( ! $wpnonce ) {
|
79 |
+
wp_safe_redirect( admin_url( 'admin.php?page=wcj-tools' ) );
|
80 |
+
exit;
|
81 |
+
}
|
82 |
|
83 |
$the_tool_html = '';
|
84 |
$the_tool_html .= '<div class="wcj-setting-jetpack-body wcj_tools_cnt_main">';
|
85 |
$the_tool_html .= $header_html;
|
86 |
|
87 |
+
$data = array();
|
88 |
+
$the_name = isset( $_POST['wcj_tax_name'] ) ? sanitize_text_field( wp_unslash( $_POST['wcj_tax_name'] ) ) : __( 'VAT', 'woocommerce' );
|
|
|
|
|
|
|
|
|
89 |
$data[] = array(
|
90 |
__( 'Name', 'woocommerce-jetpack' ),
|
91 |
'<input class="input-text" type="text" name="wcj_tax_name" value="' . $the_name . '">',
|
92 |
+
'',
|
93 |
);
|
94 |
$data[] = array(
|
95 |
'',
|
96 |
+
'<input class="button-primary" type="submit" name="add_eu_countries_vat_rates" value="' . __( 'Add EU Countries VAT Rates', 'woocommerce-jetpack' ) . '">' . wp_nonce_field( 'add_eu_countries_vat_rates', 'add_eu_countries_vat_rates-nonce' ),
|
97 |
+
__( 'Note: will add duplicates.', 'woocommerce-jetpack' ),
|
98 |
);
|
|
|
99 |
$the_tool_html .= '<form method="post" action="">';
|
100 |
+
$the_tool_html .= wcj_get_table_html(
|
101 |
+
$data,
|
102 |
+
array(
|
103 |
+
'table_class' => 'widefat striped',
|
104 |
+
'table_heading_type' => 'vertical',
|
105 |
+
)
|
106 |
+
);
|
107 |
$the_tool_html .= '</form>';
|
|
|
|
|
108 |
$the_tool_html .= '<h4>' . __( 'List of EU VAT rates to be added', 'woocommerce-jetpack' ) . '</h4>';
|
109 |
$eu_vat_rates = wcj_get_european_union_countries_with_vat();
|
110 |
$data = array();
|
langs/woocommerce-jetpack.pot
CHANGED
@@ -34,28 +34,28 @@ msgid "Product category (archive) view"
|
|
34 |
msgstr ""
|
35 |
|
36 |
#: includes/admin/class-wc-settings-jetpack.php:33
|
37 |
-
#: includes/admin/class-wc-settings-jetpack.php:
|
38 |
#: includes/class-wcj-admin-bar.php:299
|
39 |
#: includes/class-wcj-checkout-files-upload.php:273
|
40 |
-
#: includes/class-wcj-eu-vat-number.php:
|
41 |
-
#: includes/class-wcj-max-products-per-user.php:
|
42 |
#: includes/class-wcj-orders.php:133 includes/class-wcj-orders.php:170
|
43 |
-
#: includes/class-wcj-payment-gateways.php:
|
44 |
-
#: includes/class-wcj-track-users.php:
|
45 |
-
#: includes/classes/class-wcj-module.php:
|
46 |
-
#: includes/classes/class-wcj-module.php:
|
47 |
-
#: includes/settings/wcj-settings-price-by-country.php:
|
48 |
msgid "Booster"
|
49 |
msgstr ""
|
50 |
|
51 |
-
#: includes/admin/class-wc-settings-jetpack.php:
|
52 |
#, php-format
|
53 |
msgid ""
|
54 |
"You're using Booster free version. To unlock more features please consider <a "
|
55 |
"target=\"_blank\" href=\"%s\">Upgrade Booster to unlock this feature</a>."
|
56 |
msgstr ""
|
57 |
|
58 |
-
#: includes/admin/class-wc-settings-jetpack.php:
|
59 |
#, php-format
|
60 |
msgid ""
|
61 |
"Please rate <strong>Booster for WooCommerce</strong> %1$s on <a href=\"%2$s\" "
|
@@ -63,7 +63,7 @@ msgid ""
|
|
63 |
"from Booster team!"
|
64 |
msgstr ""
|
65 |
|
66 |
-
#: includes/admin/class-wc-settings-jetpack.php:
|
67 |
#, php-format
|
68 |
msgid ""
|
69 |
"Please rate <strong>Booster for WooCommerce</strong> %1$s on <a href=\"%2$s"
|
@@ -71,39 +71,39 @@ msgid ""
|
|
71 |
"from Booster team!"
|
72 |
msgstr ""
|
73 |
|
74 |
-
#: includes/admin/class-wc-settings-jetpack.php:
|
75 |
-
#: includes/admin/class-wc-settings-jetpack.php:
|
76 |
-
#: includes/admin/class-wc-settings-jetpack.php:
|
77 |
#: includes/admin/wcj-modules-cats.php:17 includes/class-wcj-admin-bar.php:234
|
78 |
#: includes/class-wcj-my-account.php:39
|
79 |
msgid "Dashboard"
|
80 |
msgstr ""
|
81 |
|
82 |
-
#: includes/admin/class-wc-settings-jetpack.php:
|
83 |
msgid "All Module"
|
84 |
msgstr ""
|
85 |
|
86 |
-
#: includes/admin/class-wc-settings-jetpack.php:
|
87 |
msgid "Active Modules"
|
88 |
msgstr ""
|
89 |
|
90 |
-
#: includes/admin/class-wc-settings-jetpack.php:
|
91 |
#: includes/class-wcj-admin-bar.php:167
|
92 |
msgid "Manage Settings"
|
93 |
msgstr ""
|
94 |
|
95 |
-
#: includes/admin/class-wc-settings-jetpack.php:
|
96 |
#, php-format
|
97 |
msgid ""
|
98 |
"Please note that current <em>%1$s</em> module is deprecated and will be "
|
99 |
"removed in future updates. Please use <em>%2$s</em> module instead."
|
100 |
msgstr ""
|
101 |
|
102 |
-
#: includes/admin/class-wc-settings-jetpack.php:
|
103 |
msgid "Module will be removed from the module's list as soon as you disable it."
|
104 |
msgstr ""
|
105 |
|
106 |
-
#: includes/admin/class-wc-settings-jetpack.php:
|
107 |
#, php-format
|
108 |
msgid ""
|
109 |
"Please note that <em>%s</em> module is currently under development. Until "
|
@@ -111,253 +111,253 @@ msgid ""
|
|
111 |
"be moved to paid plugin version."
|
112 |
msgstr ""
|
113 |
|
114 |
-
#: includes/admin/class-wc-settings-jetpack.php:
|
115 |
#: includes/class-wcj-admin-bar.php:411
|
116 |
#: includes/settings/wcj-settings-emails-verification.php:152
|
117 |
-
#: includes/settings/wcj-settings-price-by-country.php:
|
118 |
msgid "WooCommerce"
|
119 |
msgstr ""
|
120 |
|
121 |
-
#: includes/admin/class-wc-settings-jetpack.php:
|
122 |
-
#: includes/admin/class-wc-settings-jetpack.php:
|
123 |
#: includes/class-wcj-admin-bar.php:184 includes/class-wcj-admin-bar.php:535
|
124 |
#: includes/class-wcj-admin-bar.php:635 includes/core/class-wcj-admin.php:140
|
125 |
msgid "Settings"
|
126 |
msgstr ""
|
127 |
|
128 |
-
#: includes/admin/class-wc-settings-jetpack.php:
|
129 |
msgid ""
|
130 |
"This section lets you export, import or reset all Booster's modules settings."
|
131 |
msgstr ""
|
132 |
|
133 |
-
#: includes/admin/class-wc-settings-jetpack.php:
|
134 |
-
#: includes/admin/class-wc-settings-jetpack.php:
|
135 |
#: includes/class-wcj-export-import.php:31
|
136 |
msgid "Export"
|
137 |
msgstr ""
|
138 |
|
139 |
-
#: includes/admin/class-wc-settings-jetpack.php:
|
140 |
msgid "Export all Booster's options to a file."
|
141 |
msgstr ""
|
142 |
|
143 |
-
#: includes/admin/class-wc-settings-jetpack.php:
|
144 |
-
#: includes/admin/class-wc-settings-jetpack.php:
|
145 |
-
#: includes/class-wcj-purchase-data.php:
|
146 |
msgid "Import"
|
147 |
msgstr ""
|
148 |
|
149 |
-
#: includes/admin/class-wc-settings-jetpack.php:
|
150 |
msgid "Import all Booster's options from a file."
|
151 |
msgstr ""
|
152 |
|
153 |
-
#: includes/admin/class-wc-settings-jetpack.php:
|
154 |
msgid ""
|
155 |
"This will reset settings to defaults for all Booster modules. Are you sure?"
|
156 |
msgstr ""
|
157 |
|
158 |
-
#: includes/admin/class-wc-settings-jetpack.php:
|
159 |
-
#: includes/admin/class-wc-settings-jetpack.php:
|
160 |
msgid "Reset"
|
161 |
msgstr ""
|
162 |
|
163 |
-
#: includes/admin/class-wc-settings-jetpack.php:
|
164 |
msgid "Reset all Booster's options."
|
165 |
msgstr ""
|
166 |
|
167 |
-
#: includes/admin/class-wc-settings-jetpack.php:
|
168 |
msgid "This will delete all Booster meta. Are you sure?"
|
169 |
msgstr ""
|
170 |
|
171 |
-
#: includes/admin/class-wc-settings-jetpack.php:
|
172 |
-
#: includes/admin/class-wc-settings-jetpack.php:
|
173 |
msgid "Reset meta"
|
174 |
msgstr ""
|
175 |
|
176 |
-
#: includes/admin/class-wc-settings-jetpack.php:
|
177 |
msgid "Reset all Booster's meta."
|
178 |
msgstr ""
|
179 |
|
180 |
-
#: includes/admin/class-wc-settings-jetpack.php:
|
181 |
msgid "Version"
|
182 |
msgstr ""
|
183 |
|
184 |
-
#: includes/admin/class-wc-settings-jetpack.php:
|
185 |
-
#: includes/admin/class-wc-settings-jetpack.php:
|
186 |
msgid "Select All"
|
187 |
msgstr ""
|
188 |
|
189 |
-
#: includes/admin/class-wc-settings-jetpack.php:
|
190 |
-
#: includes/admin/class-wc-settings-jetpack.php:
|
191 |
msgid "Module"
|
192 |
msgstr ""
|
193 |
|
194 |
-
#: includes/admin/class-wc-settings-jetpack.php:
|
195 |
-
#: includes/admin/class-wc-settings-jetpack.php:
|
196 |
#: includes/export/class-wcj-export-fields-helper.php:297
|
197 |
-
#: includes/gateways/class-wc-gateway-wcj-custom.php:67
|
198 |
#: includes/settings/wcj-settings-checkout-custom-fields.php:181
|
199 |
#: includes/settings/wcj-settings-eu-vat-number.php:37
|
200 |
#: includes/settings/wcj-settings-product-by-user.php:16
|
201 |
#: includes/shortcodes/class-wcj-products-add-form-shortcodes.php:190
|
202 |
-
#: includes/shortcodes/class-wcj-products-add-form-shortcodes.php:
|
203 |
msgid "Description"
|
204 |
msgstr ""
|
205 |
|
206 |
-
#: includes/admin/class-wc-settings-jetpack.php:
|
207 |
-
#: includes/admin/class-wc-settings-jetpack.php:
|
208 |
#: includes/class-wcj-admin-bar.php:188
|
209 |
-
#: includes/classes/class-wcj-module.php:
|
210 |
msgid "Documentation"
|
211 |
msgstr ""
|
212 |
|
213 |
-
#: includes/admin/class-wc-settings-jetpack.php:
|
214 |
msgid "No active modules found."
|
215 |
msgstr ""
|
216 |
|
217 |
-
#: includes/admin/class-wc-settings-jetpack.php:
|
218 |
msgid "Total Modules:"
|
219 |
msgstr ""
|
220 |
|
221 |
-
#: includes/admin/class-wc-settings-jetpack.php:
|
222 |
msgid "Autoload Booster's Options"
|
223 |
msgstr ""
|
224 |
|
225 |
-
#: includes/admin/class-wc-settings-jetpack.php:
|
226 |
msgid ""
|
227 |
"Choose if you want Booster's options to be autoloaded when calling "
|
228 |
"add_option. After saving this option, you need to Reset all Booster's "
|
229 |
"settings. Leave default value (i.e. Enabled) if not sure."
|
230 |
msgstr ""
|
231 |
|
232 |
-
#: includes/admin/class-wc-settings-jetpack.php:
|
233 |
msgid "Load Modules on Init Hook"
|
234 |
msgstr ""
|
235 |
|
236 |
-
#: includes/admin/class-wc-settings-jetpack.php:
|
237 |
msgid "Choose if you want to load Booster Modules on Init hook."
|
238 |
msgstr ""
|
239 |
|
240 |
-
#: includes/admin/class-wc-settings-jetpack.php:
|
241 |
msgid ""
|
242 |
"It will load the locale appropriately if users change it from the profile "
|
243 |
"page."
|
244 |
msgstr ""
|
245 |
|
246 |
-
#: includes/admin/class-wc-settings-jetpack.php:
|
247 |
msgid "Use List Instead of Comma Separated Text for Products in Settings"
|
248 |
msgstr ""
|
249 |
|
250 |
-
#: includes/admin/class-wc-settings-jetpack.php:
|
251 |
-
#: includes/admin/class-wc-settings-jetpack.php:
|
252 |
-
#: includes/admin/class-wc-settings-jetpack.php:
|
253 |
#, php-format
|
254 |
msgid "Supported modules: %s."
|
255 |
msgstr ""
|
256 |
|
257 |
-
#: includes/admin/class-wc-settings-jetpack.php:
|
258 |
#: includes/class-wcj-payment-gateways-per-category.php:31
|
259 |
msgid "Gateways per Product or Category"
|
260 |
msgstr ""
|
261 |
|
262 |
-
#: includes/admin/class-wc-settings-jetpack.php:
|
263 |
#: includes/class-wcj-global-discount.php:38
|
264 |
#: includes/settings/wcj-settings-product-addons.php:275
|
265 |
msgid "Global Discount"
|
266 |
msgstr ""
|
267 |
|
268 |
-
#: includes/admin/class-wc-settings-jetpack.php:
|
269 |
-
#: includes/admin/class-wc-settings-jetpack.php:
|
270 |
-
#: includes/admin/class-wc-settings-jetpack.php:
|
271 |
#: includes/class-wcj-product-custom-info.php:29
|
272 |
-
#: includes/functions/wcj-functions-general.php:
|
273 |
msgid "Product Info"
|
274 |
msgstr ""
|
275 |
|
276 |
-
#: includes/admin/class-wc-settings-jetpack.php:
|
277 |
#: includes/admin/wcj-welcome-screen-content.php:82
|
278 |
#: includes/class-wcj-product-input-fields.php:29
|
279 |
#: includes/input-fields/class-wcj-product-input-fields-core.php:214
|
280 |
msgid "Product Input Fields"
|
281 |
msgstr ""
|
282 |
|
283 |
-
#: includes/admin/class-wc-settings-jetpack.php:
|
284 |
msgid "Products XML"
|
285 |
msgstr ""
|
286 |
|
287 |
-
#: includes/admin/class-wc-settings-jetpack.php:
|
288 |
-
#: includes/class-wcj-related-products.php:
|
289 |
#: includes/settings/meta-box/wcj-settings-meta-box-related-products.php:33
|
290 |
#: includes/settings/wcj-settings-free-price.php:23
|
291 |
msgid "Related Products"
|
292 |
msgstr ""
|
293 |
|
294 |
-
#: includes/admin/class-wc-settings-jetpack.php:
|
295 |
msgid ""
|
296 |
"Use List Instead of Comma Separated Text for Products Categories in Settings"
|
297 |
msgstr ""
|
298 |
|
299 |
-
#: includes/admin/class-wc-settings-jetpack.php:
|
300 |
msgid "Use List Instead of Comma Separated Text for Products Tags in Settings"
|
301 |
msgstr ""
|
302 |
|
303 |
-
#: includes/admin/class-wc-settings-jetpack.php:
|
304 |
#: includes/core/class-wcj-admin.php:124
|
305 |
msgid "Booster for WooCommerce"
|
306 |
msgstr ""
|
307 |
|
308 |
-
#: includes/admin/class-wc-settings-jetpack.php:
|
309 |
msgid "Need Help?"
|
310 |
msgstr ""
|
311 |
|
312 |
-
#: includes/admin/class-wc-settings-jetpack.php:
|
313 |
#: includes/class-wcj-my-account.php:32
|
314 |
msgid "My Account"
|
315 |
msgstr ""
|
316 |
|
317 |
-
#: includes/admin/class-wc-settings-jetpack.php:
|
318 |
msgid "Get Booster Plus"
|
319 |
msgstr ""
|
320 |
|
321 |
-
#: includes/admin/class-wc-settings-jetpack.php:
|
322 |
msgid "Getting Started"
|
323 |
msgstr ""
|
324 |
|
325 |
-
#: includes/admin/class-wc-settings-jetpack.php:
|
326 |
msgid "Navigating Categories"
|
327 |
msgstr ""
|
328 |
|
329 |
-
#: includes/admin/class-wc-settings-jetpack.php:
|
330 |
msgid "How to get started with booster"
|
331 |
msgstr ""
|
332 |
|
333 |
-
#: includes/admin/class-wc-settings-jetpack.php:
|
334 |
msgid "Frequently Asked Questions"
|
335 |
msgstr ""
|
336 |
|
337 |
-
#: includes/admin/class-wc-settings-jetpack.php:
|
338 |
msgid "Do I need to have coding skills to use Booster Plus?"
|
339 |
msgstr ""
|
340 |
|
341 |
-
#: includes/admin/class-wc-settings-jetpack.php:
|
342 |
msgid ""
|
343 |
"Absolutely not. You can configure pretty much everything Booster Plus has to "
|
344 |
"offer without any coding knowledge."
|
345 |
msgstr ""
|
346 |
|
347 |
-
#: includes/admin/class-wc-settings-jetpack.php:
|
348 |
msgid "Will Booster Plus slow down my website?"
|
349 |
msgstr ""
|
350 |
|
351 |
-
#: includes/admin/class-wc-settings-jetpack.php:
|
352 |
msgid ""
|
353 |
"Absolutely not. Booster Plus is carefully built with performance in mind."
|
354 |
msgstr ""
|
355 |
|
356 |
-
#: includes/admin/class-wc-settings-jetpack.php:
|
357 |
msgid "Do you offer refunds?"
|
358 |
msgstr ""
|
359 |
|
360 |
-
#: includes/admin/class-wc-settings-jetpack.php:
|
361 |
#, php-format
|
362 |
msgid ""
|
363 |
"If you are not completely satisfied with Booster Plus within the fist 30 "
|
@@ -365,38 +365,38 @@ msgid ""
|
|
365 |
"no questions asked."
|
366 |
msgstr ""
|
367 |
|
368 |
-
#: includes/admin/class-wc-settings-jetpack.php:
|
369 |
msgid "Can I use Booster Plus on client sites?"
|
370 |
msgstr ""
|
371 |
|
372 |
-
#: includes/admin/class-wc-settings-jetpack.php:
|
373 |
msgid ""
|
374 |
"Yes, you can use Booster Plus on client sites. You can purchase the multiple "
|
375 |
"sites license of Booster Plus."
|
376 |
msgstr ""
|
377 |
|
378 |
-
#: includes/admin/class-wc-settings-jetpack.php:
|
379 |
msgid "Do you have an affiliate program?"
|
380 |
msgstr ""
|
381 |
|
382 |
-
#: includes/admin/class-wc-settings-jetpack.php:
|
383 |
msgid "Yes, We do have an affiliate program. "
|
384 |
msgstr ""
|
385 |
|
386 |
-
#: includes/admin/class-wc-settings-jetpack.php:
|
387 |
msgid "Click here"
|
388 |
msgstr ""
|
389 |
|
390 |
-
#: includes/admin/class-wc-settings-jetpack.php:
|
391 |
msgid " for the details."
|
392 |
msgstr ""
|
393 |
|
394 |
-
#: includes/admin/class-wc-settings-jetpack.php:
|
395 |
msgid ""
|
396 |
"Why should I choose the Booster Plus suite over other individual plugins?"
|
397 |
msgstr ""
|
398 |
|
399 |
-
#: includes/admin/class-wc-settings-jetpack.php:
|
400 |
msgid ""
|
401 |
"Oh, that's an easy one! Implementing just a few modules from the Booster Plus "
|
402 |
"suite is more cost-effective than using dozens of individual plugins often "
|
@@ -408,171 +408,171 @@ msgid ""
|
|
408 |
"your WooCommerce site easily."
|
409 |
msgstr ""
|
410 |
|
411 |
-
#: includes/admin/class-wc-settings-jetpack.php:
|
412 |
msgid "What features does Booster Plus have?"
|
413 |
msgstr ""
|
414 |
|
415 |
-
#: includes/admin/class-wc-settings-jetpack.php:
|
416 |
msgid "You can see all the features at "
|
417 |
msgstr ""
|
418 |
|
419 |
-
#: includes/admin/class-wc-settings-jetpack.php:
|
420 |
msgid "About Booster"
|
421 |
msgstr ""
|
422 |
|
423 |
-
#: includes/admin/class-wc-settings-jetpack.php:
|
424 |
msgid " page."
|
425 |
msgstr ""
|
426 |
|
427 |
-
#: includes/admin/class-wc-settings-jetpack.php:
|
428 |
msgid "Still have a question?"
|
429 |
msgstr ""
|
430 |
|
431 |
-
#: includes/admin/class-wc-settings-jetpack.php:
|
432 |
msgid "CONTACT BOOSTER SUPPORT"
|
433 |
msgstr ""
|
434 |
|
435 |
-
#: includes/admin/class-wc-settings-jetpack.php:
|
436 |
msgid "Connect with Booster"
|
437 |
msgstr ""
|
438 |
|
439 |
-
#: includes/admin/class-wc-settings-jetpack.php:
|
440 |
msgid "BOOSTER WEBSITE"
|
441 |
msgstr ""
|
442 |
|
443 |
-
#: includes/admin/class-wc-settings-jetpack.php:
|
444 |
-
#: includes/class-wcj-general.php:250 includes/class-wcj-product-by-user.php:
|
445 |
#: includes/settings/wcj-settings-pdf-invoicing-advanced.php:166
|
446 |
#: includes/tools/class-wcj-order-statuses-tool.php:191
|
447 |
#: includes/tools/class-wcj-order-statuses-tool.php:285
|
448 |
msgid "Actions"
|
449 |
msgstr ""
|
450 |
|
451 |
-
#: includes/admin/class-wc-settings-jetpack.php:
|
452 |
msgid "Import Booster options"
|
453 |
msgstr ""
|
454 |
|
455 |
-
#: includes/admin/class-wc-settings-jetpack.php:
|
456 |
msgid "Export Booster options"
|
457 |
msgstr ""
|
458 |
|
459 |
-
#: includes/admin/class-wc-settings-jetpack.php:
|
460 |
msgid "Reset all Booster's options"
|
461 |
msgstr ""
|
462 |
|
463 |
-
#: includes/admin/class-wc-settings-jetpack.php:
|
464 |
msgid "Reset all Booster's meta"
|
465 |
msgstr ""
|
466 |
|
467 |
-
#: includes/admin/class-wc-settings-jetpack.php:
|
468 |
msgid "Here you can find all documentation of Booster"
|
469 |
msgstr ""
|
470 |
|
471 |
-
#: includes/admin/class-wc-settings-jetpack.php:
|
472 |
msgid "See Documentation"
|
473 |
msgstr ""
|
474 |
|
475 |
-
#: includes/admin/class-wc-settings-jetpack.php:
|
476 |
msgid "Latest updates"
|
477 |
msgstr ""
|
478 |
|
479 |
-
#: includes/admin/class-wc-settings-jetpack.php:
|
480 |
msgid "Version "
|
481 |
msgstr ""
|
482 |
|
483 |
-
#: includes/admin/class-wc-settings-jetpack.php:
|
484 |
msgid "SEE MORE"
|
485 |
msgstr ""
|
486 |
|
487 |
-
#: includes/admin/class-wc-settings-jetpack.php:
|
488 |
#: includes/core/class-wcj-admin.php:98
|
489 |
msgid "Please rate "
|
490 |
msgstr ""
|
491 |
|
492 |
-
#: includes/admin/class-wc-settings-jetpack.php:
|
493 |
#: includes/core/class-wcj-admin.php:98
|
494 |
msgid "Booster for Woocommerce"
|
495 |
msgstr ""
|
496 |
|
497 |
-
#: includes/admin/class-wc-settings-jetpack.php:
|
498 |
#: includes/core/class-wcj-admin.php:106
|
499 |
msgid "WordPress.org"
|
500 |
msgstr ""
|
501 |
|
502 |
-
#: includes/admin/class-wc-settings-jetpack.php:
|
503 |
#: includes/core/class-wcj-admin.php:106
|
504 |
msgid " to help us spread the word. Thank you from Booster team!"
|
505 |
msgstr ""
|
506 |
|
507 |
-
#: includes/admin/class-wc-settings-jetpack.php:
|
508 |
msgid "Upgrade today to unlock these popular premium features:"
|
509 |
msgstr ""
|
510 |
|
511 |
-
#: includes/admin/class-wc-settings-jetpack.php:
|
512 |
msgid "+ PDF Invoices and Packing slips –"
|
513 |
msgstr ""
|
514 |
|
515 |
-
#: includes/admin/class-wc-settings-jetpack.php:
|
516 |
msgid ""
|
517 |
"Add ability to create Proforma Invoices, Credit Notes and Packaging slips"
|
518 |
msgstr ""
|
519 |
|
520 |
-
#: includes/admin/class-wc-settings-jetpack.php:
|
521 |
msgid "+ Empty Cart –"
|
522 |
msgstr ""
|
523 |
|
524 |
-
#: includes/admin/class-wc-settings-jetpack.php:
|
525 |
msgid ""
|
526 |
"customize empty cart button text, different button positions on cart page"
|
527 |
msgstr ""
|
528 |
|
529 |
-
#: includes/admin/class-wc-settings-jetpack.php:
|
530 |
msgid "+ Cart and checkout –"
|
531 |
msgstr ""
|
532 |
|
533 |
-
#: includes/admin/class-wc-settings-jetpack.php:
|
534 |
msgid "add multiple – custom fields, custom info blocks, check out file uploads"
|
535 |
msgstr ""
|
536 |
|
537 |
-
#: includes/admin/class-wc-settings-jetpack.php:
|
538 |
msgid "+ Mini cart –"
|
539 |
msgstr ""
|
540 |
|
541 |
-
#: includes/admin/class-wc-settings-jetpack.php:
|
542 |
msgid "More custom information options"
|
543 |
msgstr ""
|
544 |
|
545 |
-
#: includes/admin/class-wc-settings-jetpack.php:
|
546 |
msgid "+ Prices and currencies –"
|
547 |
msgstr ""
|
548 |
|
549 |
-
#: includes/admin/class-wc-settings-jetpack.php:
|
550 |
msgid "add more unlimited number of currencies to WooCommerce"
|
551 |
msgstr ""
|
552 |
|
553 |
-
#: includes/admin/class-wc-settings-jetpack.php:
|
554 |
msgid "+ Export options –"
|
555 |
msgstr ""
|
556 |
|
557 |
-
#: includes/admin/class-wc-settings-jetpack.php:
|
558 |
msgid "more fields enabled"
|
559 |
msgstr ""
|
560 |
|
561 |
-
#: includes/admin/class-wc-settings-jetpack.php:
|
562 |
msgid "+ Add to cart –"
|
563 |
msgstr ""
|
564 |
|
565 |
-
#: includes/admin/class-wc-settings-jetpack.php:
|
566 |
msgid ""
|
567 |
"customize add to cart messages, Button labels - multiple category groups "
|
568 |
"allowed+ +"
|
569 |
msgstr ""
|
570 |
|
571 |
-
#: includes/admin/class-wc-settings-jetpack.php:
|
572 |
msgid "+ More configuration options for payments and shipping"
|
573 |
msgstr ""
|
574 |
|
575 |
-
#: includes/admin/class-wc-settings-jetpack.php:
|
576 |
msgid "Upgrade to Booster Plus"
|
577 |
msgstr ""
|
578 |
|
@@ -585,51 +585,51 @@ msgstr ""
|
|
585 |
msgid "Doesn't apply rounding, offset etc."
|
586 |
msgstr ""
|
587 |
|
588 |
-
#: includes/admin/class-wcj-settings-custom-fields.php:
|
589 |
msgid "Save changes"
|
590 |
msgstr ""
|
591 |
|
592 |
-
#: includes/admin/class-wcj-settings-manager.php:
|
593 |
msgid "Please upload a file to import!"
|
594 |
msgstr ""
|
595 |
|
596 |
-
#: includes/admin/class-wcj-settings-manager.php:
|
597 |
-
#: includes/admin/class-wcj-settings-manager.php:
|
598 |
msgid "Wrong file format!"
|
599 |
msgstr ""
|
600 |
|
601 |
-
#: includes/admin/class-wcj-settings-manager.php:
|
602 |
#, php-format
|
603 |
msgid "%d options successfully imported."
|
604 |
msgstr ""
|
605 |
|
606 |
-
#: includes/admin/class-wcj-settings-manager.php:
|
607 |
#, php-format
|
608 |
msgid "%d meta successfully deleted."
|
609 |
msgstr ""
|
610 |
|
611 |
-
#: includes/admin/class-wcj-settings-manager.php:
|
612 |
#, php-format
|
613 |
msgid "%d options successfully deleted."
|
614 |
msgstr ""
|
615 |
|
616 |
-
#: includes/admin/class-wcj-tools.php:
|
617 |
msgid "Booster for WooCommerce Tools"
|
618 |
msgstr ""
|
619 |
|
620 |
-
#: includes/admin/class-wcj-tools.php:
|
621 |
msgid "Booster Tools"
|
622 |
msgstr ""
|
623 |
|
624 |
-
#: includes/admin/class-wcj-tools.php:
|
625 |
msgid "Tools Dashboard"
|
626 |
msgstr ""
|
627 |
|
628 |
-
#: includes/admin/class-wcj-tools.php:
|
629 |
msgid "Booster for WooCommerce Tools - Dashboard"
|
630 |
msgstr ""
|
631 |
|
632 |
-
#: includes/admin/class-wcj-tools.php:
|
633 |
msgid ""
|
634 |
"This dashboard lets you check statuses and short descriptions of all "
|
635 |
"available Booster for WooCommerce tools. Tools can be enabled through "
|
@@ -637,8 +637,8 @@ msgid ""
|
|
637 |
"above."
|
638 |
msgstr ""
|
639 |
|
640 |
-
#: includes/admin/class-wcj-welcome.php:
|
641 |
-
#: includes/admin/class-wcj-welcome.php:
|
642 |
msgid "Welcome to Booster"
|
643 |
msgstr ""
|
644 |
|
@@ -670,7 +670,7 @@ msgstr ""
|
|
670 |
|
671 |
#: includes/admin/wcj-modules-cats.php:61 includes/class-wcj-admin-bar.php:493
|
672 |
#: includes/class-wcj-admin-bar.php:497 includes/class-wcj-admin-bar.php:543
|
673 |
-
#: includes/class-wcj-product-bulk-meta-editor.php:
|
674 |
#: includes/class-wcj-product-by-user.php:176
|
675 |
#: includes/class-wcj-product-by-user.php:213
|
676 |
#: includes/class-wcj-shipping-by-products.php:40
|
@@ -993,7 +993,7 @@ msgstr ""
|
|
993 |
|
994 |
#: includes/class-wcj-admin-bar.php:267 includes/class-wcj-admin-bar.php:311
|
995 |
#: includes/class-wcj-admin-bar.php:659
|
996 |
-
#: includes/classes/class-wcj-module.php:
|
997 |
#: includes/settings/wcj-settings-wpml.php:97
|
998 |
msgid "Tools"
|
999 |
msgstr ""
|
@@ -1058,7 +1058,7 @@ msgstr ""
|
|
1058 |
#: includes/class-wcj-admin-bar.php:418 includes/class-wcj-admin-bar.php:422
|
1059 |
#: includes/class-wcj-admin-bar.php:440 includes/class-wcj-my-account.php:40
|
1060 |
#: includes/class-wcj-my-account.php:48 includes/class-wcj-orders.php:31
|
1061 |
-
#: includes/reports/wcj-
|
1062 |
#: includes/settings/wcj-settings-reports.php:24
|
1063 |
#: includes/settings/wcj-settings-reports.php:62
|
1064 |
#: includes/settings/wcj-settings-reports.php:103
|
@@ -1111,7 +1111,7 @@ msgstr ""
|
|
1111 |
msgid "Most Stocked"
|
1112 |
msgstr ""
|
1113 |
|
1114 |
-
#: includes/class-wcj-admin-bar.php:477 includes/class-wcj-eu-vat-number.php:
|
1115 |
msgid "Taxes"
|
1116 |
msgstr ""
|
1117 |
|
@@ -1127,11 +1127,11 @@ msgstr ""
|
|
1127 |
msgid "Add product"
|
1128 |
msgstr ""
|
1129 |
|
1130 |
-
#: includes/class-wcj-admin-bar.php:505 includes/class-wcj-sku.php:
|
1131 |
#: includes/export/class-wcj-export-fields-helper.php:322
|
1132 |
#: includes/settings/wcj-settings-product-by-user.php:22
|
1133 |
#: includes/shortcodes/class-wcj-products-add-form-shortcodes.php:196
|
1134 |
-
#: includes/shortcodes/class-wcj-products-add-form-shortcodes.php:
|
1135 |
msgid "Categories"
|
1136 |
msgstr ""
|
1137 |
|
@@ -1139,7 +1139,7 @@ msgstr ""
|
|
1139 |
#: includes/export/class-wcj-export-fields-helper.php:323
|
1140 |
#: includes/settings/wcj-settings-product-by-user.php:23
|
1141 |
#: includes/shortcodes/class-wcj-products-add-form-shortcodes.php:197
|
1142 |
-
#: includes/shortcodes/class-wcj-products-add-form-shortcodes.php:
|
1143 |
msgid "Tags"
|
1144 |
msgstr ""
|
1145 |
|
@@ -1284,21 +1284,21 @@ msgstr ""
|
|
1284 |
msgid "Not Completed"
|
1285 |
msgstr ""
|
1286 |
|
1287 |
-
#: includes/class-wcj-admin-orders-list.php:
|
1288 |
msgid "Trash"
|
1289 |
msgstr ""
|
1290 |
|
1291 |
-
#: includes/class-wcj-admin-orders-list.php:
|
1292 |
-
#: includes/class-wcj-product-by-country.php:
|
1293 |
-
#: includes/class-wcj-product-by-country.php:
|
1294 |
msgid "All countries"
|
1295 |
msgstr ""
|
1296 |
|
1297 |
-
#: includes/class-wcj-admin-orders-list.php:
|
1298 |
msgid "All currencies"
|
1299 |
msgstr ""
|
1300 |
|
1301 |
-
#: includes/class-wcj-admin-orders-list.php:
|
1302 |
#: includes/export/class-wcj-export-fields-helper.php:52
|
1303 |
#: includes/export/class-wcj-export-fields-helper.php:136
|
1304 |
#: includes/export/class-wcj-export-fields-helper.php:219
|
@@ -1306,7 +1306,7 @@ msgstr ""
|
|
1306 |
msgid "Billing Country"
|
1307 |
msgstr ""
|
1308 |
|
1309 |
-
#: includes/class-wcj-admin-orders-list.php:
|
1310 |
#: includes/settings/wcj-settings-admin-orders-list.php:37
|
1311 |
msgid "Currency Code"
|
1312 |
msgstr ""
|
@@ -1357,38 +1357,38 @@ msgstr ""
|
|
1357 |
msgid "Order Meta"
|
1358 |
msgstr ""
|
1359 |
|
1360 |
-
#: includes/class-wcj-admin-tools.php:
|
1361 |
msgid "Order Items Meta"
|
1362 |
msgstr ""
|
1363 |
|
1364 |
-
#: includes/class-wcj-admin-tools.php:
|
1365 |
msgid "Item Key"
|
1366 |
msgstr ""
|
1367 |
|
1368 |
-
#: includes/class-wcj-admin-tools.php:
|
1369 |
msgid "Item Meta Key"
|
1370 |
msgstr ""
|
1371 |
|
1372 |
-
#: includes/class-wcj-admin-tools.php:
|
1373 |
msgid "Item Meta Value"
|
1374 |
msgstr ""
|
1375 |
|
1376 |
-
#: includes/class-wcj-admin-tools.php:
|
1377 |
-
#: includes/class-wcj-admin-tools.php:
|
1378 |
-
#: includes/class-wcj-product-bulk-meta-editor.php:
|
1379 |
-
#: includes/class-wcj-sku.php:
|
1380 |
-
#: includes/reports/class-wcj-reports-sales.php:
|
1381 |
#: includes/reports/class-wcj-reports-stock.php:289
|
1382 |
msgid "Product"
|
1383 |
msgstr ""
|
1384 |
|
1385 |
-
#: includes/class-wcj-admin-tools.php:
|
1386 |
-
#: includes/class-wcj-admin-tools.php:
|
1387 |
#: includes/reports/class-wcj-reports-stock.php:290
|
1388 |
msgid "Category"
|
1389 |
msgstr ""
|
1390 |
|
1391 |
-
#: includes/class-wcj-admin-tools.php:
|
1392 |
msgid "Total Products:"
|
1393 |
msgstr ""
|
1394 |
|
@@ -1682,8 +1682,8 @@ msgstr ""
|
|
1682 |
|
1683 |
#: includes/class-wcj-coupon-by-user-role.php:94
|
1684 |
#: includes/class-wcj-coupon-by-user-role.php:95
|
|
|
1685 |
#: includes/class-wcj-coupon-by-user-role.php:117
|
1686 |
-
#: includes/class-wcj-coupon-by-user-role.php:118
|
1687 |
#: includes/settings/wcj-settings-coupon-by-user-role.php:71
|
1688 |
msgid "Coupon is not valid for your user role."
|
1689 |
msgstr ""
|
@@ -1932,34 +1932,34 @@ msgid ""
|
|
1932 |
"currency rate with real conversion then enable it"
|
1933 |
msgstr ""
|
1934 |
|
1935 |
-
#: includes/class-wcj-currency-exchange-rates.php:
|
1936 |
#: includes/settings/wcj-settings-currency-exchange-rates.php:52
|
1937 |
msgid "Exchange Rates Server"
|
1938 |
msgstr ""
|
1939 |
|
1940 |
-
#: includes/class-wcj-currency-exchange-rates.php:
|
1941 |
#, php-format
|
1942 |
msgid "Use default: %s"
|
1943 |
msgstr ""
|
1944 |
|
1945 |
-
#: includes/class-wcj-currency-exchange-rates.php:
|
1946 |
msgid "Exchange Rates Offset (Percent)"
|
1947 |
msgstr ""
|
1948 |
|
1949 |
-
#: includes/class-wcj-currency-exchange-rates.php:
|
1950 |
#, php-format
|
1951 |
msgid "Use default: %s%%"
|
1952 |
msgstr ""
|
1953 |
|
1954 |
-
#: includes/class-wcj-currency-exchange-rates.php:
|
1955 |
msgid "Custom offset"
|
1956 |
msgstr ""
|
1957 |
|
1958 |
-
#: includes/class-wcj-currency-exchange-rates.php:
|
1959 |
msgid "Custom offset (Percent)"
|
1960 |
msgstr ""
|
1961 |
|
1962 |
-
#: includes/class-wcj-currency-exchange-rates.php:
|
1963 |
msgid "Used when \"Custom offset\" option is selected above."
|
1964 |
msgstr ""
|
1965 |
|
@@ -2270,7 +2270,7 @@ msgid ""
|
|
2270 |
msgstr ""
|
2271 |
|
2272 |
#: includes/class-wcj-eu-vat-number.php:30
|
2273 |
-
#: includes/class-wcj-eu-vat-number.php:
|
2274 |
#: includes/settings/wcj-settings-eu-vat-number.php:25
|
2275 |
#: includes/settings/wcj-settings-eu-vat-number.php:32
|
2276 |
msgid "EU VAT Number"
|
@@ -2298,45 +2298,45 @@ msgstr ""
|
|
2298 |
msgid "Add all EU countries VAT standard rates to WooCommerce."
|
2299 |
msgstr ""
|
2300 |
|
2301 |
-
#: includes/class-wcj-eu-vat-number.php:
|
2302 |
msgid "Customer IP"
|
2303 |
msgstr ""
|
2304 |
|
2305 |
-
#: includes/class-wcj-eu-vat-number.php:
|
2306 |
#: includes/settings/wcj-settings-orders.php:129
|
2307 |
#: includes/settings/wcj-settings-payment-gateways-by-country.php:30
|
2308 |
msgid "Country by IP"
|
2309 |
msgstr ""
|
2310 |
|
2311 |
-
#: includes/class-wcj-eu-vat-number.php:
|
2312 |
msgid "Customer EU VAT Number"
|
2313 |
msgstr ""
|
2314 |
|
2315 |
-
#: includes/class-wcj-eu-vat-number.php:
|
2316 |
#: includes/settings/wcj-settings-eu-vat-number.php:169
|
2317 |
msgid "Validating VAT. Please wait..."
|
2318 |
msgstr ""
|
2319 |
|
2320 |
-
#: includes/class-wcj-eu-vat-number.php:
|
2321 |
#: includes/settings/wcj-settings-eu-vat-number.php:176
|
2322 |
msgid "VAT is valid."
|
2323 |
msgstr ""
|
2324 |
|
2325 |
-
#: includes/class-wcj-eu-vat-number.php:
|
2326 |
#: includes/settings/wcj-settings-eu-vat-number.php:183
|
2327 |
msgid "VAT is not valid."
|
2328 |
msgstr ""
|
2329 |
|
2330 |
-
#: includes/class-wcj-eu-vat-number.php:
|
2331 |
#: includes/settings/wcj-settings-eu-vat-number.php:191
|
2332 |
msgid "Validation failed. Please try again."
|
2333 |
msgstr ""
|
2334 |
|
2335 |
-
#: includes/class-wcj-eu-vat-number.php:
|
2336 |
msgid "<strong>Billing EU VAT Number</strong>is a required field."
|
2337 |
msgstr ""
|
2338 |
|
2339 |
-
#: includes/class-wcj-eu-vat-number.php:
|
2340 |
#: includes/settings/wcj-settings-eu-vat-number.php:78
|
2341 |
msgid "<strong>EU VAT Number</strong> is not valid."
|
2342 |
msgstr ""
|
@@ -2398,32 +2398,32 @@ msgstr ""
|
|
2398 |
msgid "Export Products."
|
2399 |
msgstr ""
|
2400 |
|
2401 |
-
#: includes/class-wcj-export-import.php:
|
2402 |
-
#: includes/class-wcj-export-import.php:
|
2403 |
msgid "Filter by Billing Country"
|
2404 |
msgstr ""
|
2405 |
|
2406 |
-
#: includes/class-wcj-export-import.php:
|
2407 |
msgid "Filter by Product Title"
|
2408 |
msgstr ""
|
2409 |
|
2410 |
-
#: includes/class-wcj-export-import.php:
|
2411 |
-
#: includes/reports/class-wcj-reports-product-sales-daily.php:
|
2412 |
-
#: includes/reports/wcj-
|
2413 |
#: includes/settings/wcj-settings-orders.php:48
|
2414 |
msgid "Filter"
|
2415 |
msgstr ""
|
2416 |
|
2417 |
-
#: includes/class-wcj-export-import.php:
|
2418 |
#: includes/class-wcj-track-users.php:45
|
2419 |
msgid "All time"
|
2420 |
msgstr ""
|
2421 |
|
2422 |
-
#: includes/class-wcj-export-import.php:
|
2423 |
msgid "Custom:"
|
2424 |
msgstr ""
|
2425 |
|
2426 |
-
#: includes/class-wcj-export-import.php:
|
2427 |
msgid "Go"
|
2428 |
msgstr ""
|
2429 |
|
@@ -2476,8 +2476,8 @@ msgid "Booster User Role"
|
|
2476 |
msgstr ""
|
2477 |
|
2478 |
#: includes/class-wcj-general.php:250 includes/class-wcj-general.php:272
|
2479 |
-
#: includes/class-wcj-sku.php:
|
2480 |
-
#: includes/reports/class-wcj-reports-sales.php:
|
2481 |
#: includes/settings/wcj-settings-cross-sells.php:46
|
2482 |
#: includes/settings/wcj-settings-order-numbers.php:172
|
2483 |
#: includes/settings/wcj-settings-product-by-user.php:175
|
@@ -2488,10 +2488,10 @@ msgid "ID"
|
|
2488 |
msgstr ""
|
2489 |
|
2490 |
#: includes/class-wcj-general.php:250 includes/class-wcj-general.php:273
|
2491 |
-
#: includes/class-wcj-offer-price.php:
|
2492 |
#: includes/export/class-wcj-export-fields-helper.php:287
|
2493 |
-
#: includes/tools/class-wcj-eu-countries-vat-rates-tool.php:
|
2494 |
-
#: includes/tools/class-wcj-eu-countries-vat-rates-tool.php:
|
2495 |
msgid "Name"
|
2496 |
msgstr ""
|
2497 |
|
@@ -2500,12 +2500,12 @@ msgid "Capabilities"
|
|
2500 |
msgstr ""
|
2501 |
|
2502 |
#: includes/class-wcj-general.php:264
|
2503 |
-
#: includes/class-wcj-payment-gateways.php:
|
2504 |
-
#: includes/class-wcj-product-bulk-meta-editor.php:
|
2505 |
-
#: includes/class-wcj-product-by-user.php:
|
2506 |
#: includes/pdf-invoices/submodules/class-wcj-pdf-invoicing-display.php:163
|
2507 |
#: includes/pdf-invoices/submodules/class-wcj-pdf-invoicing-display.php:387
|
2508 |
-
#: includes/shortcodes/class-wcj-products-add-form-shortcodes.php:
|
2509 |
#: includes/tools/class-wcj-order-statuses-tool.php:213
|
2510 |
msgid "Delete"
|
2511 |
msgstr ""
|
@@ -2562,39 +2562,39 @@ msgid ""
|
|
2562 |
msgstr ""
|
2563 |
|
2564 |
#: includes/class-wcj-max-products-per-user.php:139
|
2565 |
-
#: includes/class-wcj-max-products-per-user.php:
|
2566 |
#: includes/settings/wcj-settings-max-products-per-user.php:77
|
2567 |
msgid ""
|
2568 |
"You can only buy maximum %max_qty% pcs. of %product_title% (you already "
|
2569 |
"bought %qty_already_bought% pcs.)."
|
2570 |
msgstr ""
|
2571 |
|
2572 |
-
#: includes/class-wcj-max-products-per-user.php:
|
2573 |
msgid "Data re-calculated."
|
2574 |
msgstr ""
|
2575 |
|
2576 |
-
#: includes/class-wcj-max-products-per-user.php:
|
2577 |
#, php-format
|
2578 |
msgid "%s order(s) processed."
|
2579 |
msgstr ""
|
2580 |
|
2581 |
-
#: includes/class-wcj-max-products-per-user.php:
|
2582 |
msgid "Maximum Products per User: Sales Data"
|
2583 |
msgstr ""
|
2584 |
|
2585 |
-
#: includes/class-wcj-max-products-per-user.php:
|
2586 |
msgid "User ID"
|
2587 |
msgstr ""
|
2588 |
|
2589 |
-
#: includes/class-wcj-max-products-per-user.php:
|
2590 |
msgid "User Name"
|
2591 |
msgstr ""
|
2592 |
|
2593 |
-
#: includes/class-wcj-max-products-per-user.php:
|
2594 |
msgid "Qty Bought"
|
2595 |
msgstr ""
|
2596 |
|
2597 |
-
#: includes/class-wcj-max-products-per-user.php:
|
2598 |
#: includes/functions/wcj-functions-users.php:179
|
2599 |
#: includes/functions/wcj-functions-users.php:215
|
2600 |
msgid "Guest"
|
@@ -2723,12 +2723,12 @@ msgstr ""
|
|
2723 |
msgid "Lost password"
|
2724 |
msgstr ""
|
2725 |
|
2726 |
-
#: includes/class-wcj-my-account.php:
|
2727 |
#, php-format
|
2728 |
msgid "Hello %1$s (not %1$s? <a href=\"%2$s\">Log out</a>)"
|
2729 |
msgstr ""
|
2730 |
|
2731 |
-
#: includes/class-wcj-my-account.php:
|
2732 |
#, php-format
|
2733 |
msgid ""
|
2734 |
"From your account dashboard you can view your <a href=\"%1$s\">recent orders</"
|
@@ -2736,7 +2736,7 @@ msgid ""
|
|
2736 |
"href=\"%3$s\">edit your password and account details</a>."
|
2737 |
msgstr ""
|
2738 |
|
2739 |
-
#: includes/class-wcj-my-account.php:
|
2740 |
msgid "User role"
|
2741 |
msgstr ""
|
2742 |
|
@@ -2754,11 +2754,11 @@ msgstr ""
|
|
2754 |
msgid "Let your customers suggest their price for products."
|
2755 |
msgstr ""
|
2756 |
|
2757 |
-
#: includes/class-wcj-offer-price.php:
|
2758 |
msgid "Booster: Offer Price History"
|
2759 |
msgstr ""
|
2760 |
|
2761 |
-
#: includes/class-wcj-offer-price.php:
|
2762 |
#: includes/settings/wcj-settings-cross-sells.php:47
|
2763 |
#: includes/settings/wcj-settings-order-numbers.php:173
|
2764 |
#: includes/settings/wcj-settings-products-xml.php:244
|
@@ -2767,7 +2767,7 @@ msgstr ""
|
|
2767 |
msgid "Date"
|
2768 |
msgstr ""
|
2769 |
|
2770 |
-
#: includes/class-wcj-offer-price.php:
|
2771 |
#: includes/export/class-wcj-export-fields-helper.php:293
|
2772 |
#: includes/reports/class-wcj-reports-stock.php:291
|
2773 |
#: includes/settings/meta-box/wcj-settings-meta-box-wholesale-price.php:71
|
@@ -2778,7 +2778,7 @@ msgstr ""
|
|
2778 |
msgid "Price"
|
2779 |
msgstr ""
|
2780 |
|
2781 |
-
#: includes/class-wcj-offer-price.php:
|
2782 |
#: includes/settings/wcj-settings-coupon-by-user-role.php:63
|
2783 |
#: includes/settings/wcj-settings-currency-per-product.php:38
|
2784 |
#: includes/settings/wcj-settings-currency-per-product.php:45
|
@@ -2788,7 +2788,7 @@ msgstr ""
|
|
2788 |
msgid "Message"
|
2789 |
msgstr ""
|
2790 |
|
2791 |
-
#: includes/class-wcj-offer-price.php:
|
2792 |
#: includes/export/class-wcj-export-fields-helper.php:83
|
2793 |
#: includes/input-fields/wcj-product-input-fields-options.php:47
|
2794 |
#: includes/reports/class-wcj-reports-customers.php:101
|
@@ -2796,108 +2796,108 @@ msgstr ""
|
|
2796 |
msgid "Email"
|
2797 |
msgstr ""
|
2798 |
|
2799 |
-
#: includes/class-wcj-offer-price.php:
|
2800 |
#: includes/export/class-wcj-export-fields-helper.php:82
|
2801 |
msgid "Customer ID"
|
2802 |
msgstr ""
|
2803 |
|
2804 |
-
#: includes/class-wcj-offer-price.php:
|
2805 |
msgid "User IP"
|
2806 |
msgstr ""
|
2807 |
|
2808 |
-
#: includes/class-wcj-offer-price.php:
|
2809 |
msgid "User Agent"
|
2810 |
msgstr ""
|
2811 |
|
2812 |
-
#: includes/class-wcj-offer-price.php:
|
2813 |
msgid "Sent to"
|
2814 |
msgstr ""
|
2815 |
|
2816 |
-
#: includes/class-wcj-offer-price.php:
|
2817 |
msgid "No price offers yet."
|
2818 |
msgstr ""
|
2819 |
|
2820 |
-
#: includes/class-wcj-offer-price.php:
|
2821 |
#, php-format
|
2822 |
msgid "Average offer: %1$s (from %2$s offer(s))"
|
2823 |
msgstr ""
|
2824 |
|
2825 |
-
#: includes/class-wcj-offer-price.php:
|
2826 |
msgid "Update product after checking the box."
|
2827 |
msgstr ""
|
2828 |
|
2829 |
-
#: includes/class-wcj-offer-price.php:
|
2830 |
#: includes/settings/wcj-settings-offer-price.php:169
|
2831 |
#, php-format
|
2832 |
msgid "Your price (%s)"
|
2833 |
msgstr ""
|
2834 |
|
2835 |
-
#: includes/class-wcj-offer-price.php:
|
2836 |
#: includes/settings/wcj-settings-offer-price.php:241
|
2837 |
#, php-format
|
2838 |
msgid "Suggest your price for %s"
|
2839 |
msgstr ""
|
2840 |
|
2841 |
-
#: includes/class-wcj-offer-price.php:
|
2842 |
#: includes/settings/wcj-settings-offer-price.php:208
|
2843 |
msgid "Your email"
|
2844 |
msgstr ""
|
2845 |
|
2846 |
-
#: includes/class-wcj-offer-price.php:
|
2847 |
#: includes/settings/wcj-settings-offer-price.php:216
|
2848 |
msgid "Your name"
|
2849 |
msgstr ""
|
2850 |
|
2851 |
-
#: includes/class-wcj-offer-price.php:
|
2852 |
#: includes/settings/wcj-settings-offer-price.php:224
|
2853 |
msgid "Your message"
|
2854 |
msgstr ""
|
2855 |
|
2856 |
-
#: includes/class-wcj-offer-price.php:
|
2857 |
#: includes/settings/wcj-settings-offer-price.php:248
|
2858 |
msgid "Send"
|
2859 |
msgstr ""
|
2860 |
|
2861 |
-
#: includes/class-wcj-offer-price.php:
|
2862 |
#: includes/settings/wcj-settings-offer-price.php:232
|
2863 |
msgid "Send a copy to your email"
|
2864 |
msgstr ""
|
2865 |
|
2866 |
-
#: includes/class-wcj-offer-price.php:
|
2867 |
#: includes/settings/wcj-settings-offer-price.php:72
|
2868 |
msgid "Make an offer"
|
2869 |
msgstr ""
|
2870 |
|
2871 |
-
#: includes/class-wcj-offer-price.php:
|
2872 |
#: includes/settings/wcj-settings-offer-price.php:352
|
2873 |
#, php-format
|
2874 |
msgid "Product: %s"
|
2875 |
msgstr ""
|
2876 |
|
2877 |
-
#: includes/class-wcj-offer-price.php:
|
2878 |
#: includes/settings/wcj-settings-offer-price.php:354
|
2879 |
#, php-format
|
2880 |
msgid "Offered price: %s"
|
2881 |
msgstr ""
|
2882 |
|
2883 |
-
#: includes/class-wcj-offer-price.php:
|
2884 |
#: includes/settings/wcj-settings-offer-price.php:356
|
2885 |
#, php-format
|
2886 |
msgid "From: %1$s %2$s"
|
2887 |
msgstr ""
|
2888 |
|
2889 |
-
#: includes/class-wcj-offer-price.php:
|
2890 |
#: includes/settings/wcj-settings-offer-price.php:358
|
2891 |
#, php-format
|
2892 |
msgid "Message: %s"
|
2893 |
msgstr ""
|
2894 |
|
2895 |
-
#: includes/class-wcj-offer-price.php:
|
2896 |
#: includes/settings/wcj-settings-offer-price.php:342
|
2897 |
msgid "Price Offer"
|
2898 |
msgstr ""
|
2899 |
|
2900 |
-
#: includes/class-wcj-offer-price.php:
|
2901 |
#: includes/settings/wcj-settings-offer-price.php:269
|
2902 |
msgid "Your price offer has been sent."
|
2903 |
msgstr ""
|
@@ -3058,23 +3058,23 @@ msgstr ""
|
|
3058 |
msgid "Tool renumerates all orders."
|
3059 |
msgstr ""
|
3060 |
|
3061 |
-
#: includes/class-wcj-order-numbers.php:
|
3062 |
msgid "Orders successfully renumerated!"
|
3063 |
msgstr ""
|
3064 |
|
3065 |
-
#: includes/class-wcj-order-numbers.php:
|
3066 |
#, php-format
|
3067 |
msgid "Sequential number generation is enabled. Next order number will be %s."
|
3068 |
msgstr ""
|
3069 |
|
3070 |
-
#: includes/class-wcj-order-numbers.php:
|
3071 |
#, php-format
|
3072 |
msgid ""
|
3073 |
"Press the button below to renumerate all existing orders starting from order "
|
3074 |
"counter settings in <a href=\"%s\">Order Numbers</a> module."
|
3075 |
msgstr ""
|
3076 |
|
3077 |
-
#: includes/class-wcj-order-numbers.php:
|
3078 |
msgid "Renumerate orders"
|
3079 |
msgstr ""
|
3080 |
|
@@ -3165,6 +3165,31 @@ msgid_plural "Download permissions regenerated for %s orders."
|
|
3165 |
msgstr[0] ""
|
3166 |
msgstr[1] ""
|
3167 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3168 |
#: includes/class-wcj-payment-gateways-by-country.php:29
|
3169 |
msgid "Gateways by Country, State or Postcode"
|
3170 |
msgstr ""
|
@@ -3281,12 +3306,12 @@ msgstr ""
|
|
3281 |
msgid "Add multiple custom payment gateways to WooCommerce."
|
3282 |
msgstr ""
|
3283 |
|
3284 |
-
#: includes/class-wcj-payment-gateways.php:
|
3285 |
#, php-format
|
3286 |
msgid "<strong>%s</strong> is a required field."
|
3287 |
msgstr ""
|
3288 |
|
3289 |
-
#: includes/class-wcj-payment-gateways.php:
|
3290 |
#, php-format
|
3291 |
msgid "%s Fields"
|
3292 |
msgstr ""
|
@@ -3448,10 +3473,10 @@ msgid "After the price"
|
|
3448 |
msgstr ""
|
3449 |
|
3450 |
#: includes/class-wcj-price-labels.php:46
|
3451 |
-
#: includes/class-wcj-product-by-country.php:
|
3452 |
#: includes/class-wcj-product-by-user-role.php:62
|
3453 |
#: includes/class-wcj-product-info.php:255
|
3454 |
-
#: includes/class-wcj-product-price-by-formula.php:
|
3455 |
#: includes/class-wcj-shipping-by-products.php:214
|
3456 |
#: includes/class-wcj-shipping-options.php:191
|
3457 |
#: includes/classes/class-wcj-module.php:221
|
@@ -3600,18 +3625,18 @@ msgstr ""
|
|
3600 |
#: includes/settings/wcj-settings-pdf-invoicing-numbering.php:28
|
3601 |
#: includes/settings/wcj-settings-pdf-invoicing-page.php:107
|
3602 |
#: includes/settings/wcj-settings-pdf-invoicing-styling.php:81
|
3603 |
-
#: includes/settings/wcj-settings-price-by-country.php:73
|
3604 |
#: includes/settings/wcj-settings-price-by-country.php:81
|
3605 |
-
#: includes/settings/wcj-settings-price-by-country.php:
|
3606 |
-
#: includes/settings/wcj-settings-price-by-country.php:
|
3607 |
-
#: includes/settings/wcj-settings-price-by-country.php:
|
3608 |
-
#: includes/settings/wcj-settings-price-by-country.php:
|
3609 |
-
#: includes/settings/wcj-settings-price-by-country.php:
|
3610 |
-
#: includes/settings/wcj-settings-price-by-country.php:
|
3611 |
-
#: includes/settings/wcj-settings-price-by-country.php:
|
3612 |
-
#: includes/settings/wcj-settings-price-by-country.php:
|
3613 |
-
#: includes/settings/wcj-settings-price-by-country.php:
|
3614 |
#: includes/settings/wcj-settings-price-by-country.php:292
|
|
|
3615 |
#: includes/settings/wcj-settings-price-by-user-role.php:23
|
3616 |
#: includes/settings/wcj-settings-price-by-user-role.php:50
|
3617 |
#: includes/settings/wcj-settings-price-by-user-role.php:97
|
@@ -3841,11 +3866,15 @@ msgid ""
|
|
3841 |
"addon in pdf."
|
3842 |
msgstr ""
|
3843 |
|
3844 |
-
#: includes/class-wcj-product-addons.php:
|
3845 |
msgid "Some of the required addons are not selected!"
|
3846 |
msgstr ""
|
3847 |
|
3848 |
-
#: includes/class-wcj-product-addons.php:
|
|
|
|
|
|
|
|
|
3849 |
msgid ""
|
3850 |
"Booster: Free plugin's version is limited to only three products with per "
|
3851 |
"product addons enabled at a time. You will need to get <a href=\"https://"
|
@@ -3867,14 +3896,19 @@ msgid ""
|
|
3867 |
"product's edit page."
|
3868 |
msgstr ""
|
3869 |
|
|
|
|
|
|
|
|
|
|
|
3870 |
#: includes/class-wcj-product-bookings.php:159
|
3871 |
-
#: includes/class-wcj-product-bookings.php:
|
3872 |
#: includes/settings/wcj-settings-product-bookings.php:80
|
3873 |
msgid "\"Date to\" must be after \"Date from\""
|
3874 |
msgstr ""
|
3875 |
|
3876 |
#: includes/class-wcj-product-bookings.php:173
|
3877 |
-
#: includes/class-wcj-product-open-pricing.php:
|
3878 |
#: includes/settings/wcj-settings-add-to-cart.php:153
|
3879 |
#: includes/settings/wcj-settings-add-to-cart.php:185
|
3880 |
#: includes/settings/wcj-settings-add-to-cart.php:220
|
@@ -3886,32 +3920,32 @@ msgstr ""
|
|
3886 |
msgid "Period"
|
3887 |
msgstr ""
|
3888 |
|
3889 |
-
#: includes/class-wcj-product-bookings.php:
|
3890 |
#: includes/settings/wcj-settings-product-bookings.php:66
|
3891 |
msgid "\"Date from\" must be set"
|
3892 |
msgstr ""
|
3893 |
|
3894 |
-
#: includes/class-wcj-product-bookings.php:
|
3895 |
#: includes/settings/wcj-settings-product-bookings.php:73
|
3896 |
msgid "\"Date to\" must be set"
|
3897 |
msgstr ""
|
3898 |
|
3899 |
-
#: includes/class-wcj-product-bookings.php:
|
3900 |
#: includes/settings/wcj-settings-product-bookings.php:38
|
3901 |
msgid "Date from"
|
3902 |
msgstr ""
|
3903 |
|
3904 |
-
#: includes/class-wcj-product-bookings.php:
|
3905 |
#: includes/settings/wcj-settings-product-bookings.php:45
|
3906 |
msgid "Date to"
|
3907 |
msgstr ""
|
3908 |
|
3909 |
-
#: includes/class-wcj-product-bookings.php:
|
3910 |
#: includes/settings/wcj-settings-product-bookings.php:59
|
3911 |
msgid "/ day"
|
3912 |
msgstr ""
|
3913 |
|
3914 |
-
#: includes/class-wcj-product-bookings.php:
|
3915 |
msgid ""
|
3916 |
"Booster: Free plugin's version is limited to only one bookings product "
|
3917 |
"enabled at a time. You will need to get <a href=\"https://booster.io/buy-"
|
@@ -3936,30 +3970,30 @@ msgstr ""
|
|
3936 |
msgid "Product Bulk Meta Editor Tool."
|
3937 |
msgstr ""
|
3938 |
|
3939 |
-
#: includes/class-wcj-product-bulk-meta-editor.php:
|
3940 |
msgid "Please enter meta key."
|
3941 |
msgstr ""
|
3942 |
|
3943 |
-
#: includes/class-wcj-product-bulk-meta-editor.php:
|
3944 |
#, php-format
|
3945 |
msgid "Meta for <strong>%d</strong> product(s) was updated."
|
3946 |
msgstr ""
|
3947 |
|
3948 |
-
#: includes/class-wcj-product-bulk-meta-editor.php:
|
3949 |
#, php-format
|
3950 |
msgid "Meta for <strong>%d</strong> product(s) was not updated."
|
3951 |
msgstr ""
|
3952 |
|
3953 |
-
#: includes/class-wcj-product-bulk-meta-editor.php:
|
3954 |
msgid "Meta key"
|
3955 |
msgstr ""
|
3956 |
|
3957 |
-
#: includes/class-wcj-product-bulk-meta-editor.php:
|
3958 |
#, php-format
|
3959 |
msgid "for example %s"
|
3960 |
msgstr ""
|
3961 |
|
3962 |
-
#: includes/class-wcj-product-bulk-meta-editor.php:
|
3963 |
#: includes/settings/meta-box/wcj-settings-meta-box-add-to-cart-button-visibility.php:22
|
3964 |
#: includes/settings/meta-box/wcj-settings-meta-box-add-to-cart-button-visibility.php:41
|
3965 |
#: includes/settings/wcj-settings-price-by-user-role.php:73
|
@@ -3968,33 +4002,33 @@ msgstr ""
|
|
3968 |
msgid "Show"
|
3969 |
msgstr ""
|
3970 |
|
3971 |
-
#: includes/class-wcj-product-bulk-meta-editor.php:
|
3972 |
-
#: includes/class-wcj-product-bulk-meta-editor.php:
|
3973 |
#: includes/settings/wcj-settings-product-add-to-cart.php:312
|
3974 |
msgid "Meta"
|
3975 |
msgstr ""
|
3976 |
|
3977 |
-
#: includes/class-wcj-product-bulk-meta-editor.php:
|
3978 |
msgid ""
|
3979 |
"Hold <strong>Control</strong> key to select multiple products. Press "
|
3980 |
"<strong>Control</strong> + <strong>A</strong> to select all products."
|
3981 |
msgstr ""
|
3982 |
|
3983 |
-
#: includes/class-wcj-product-bulk-meta-editor.php:
|
3984 |
-
#: includes/class-wcj-product-by-user.php:
|
3985 |
-
#: includes/class-wcj-purchase-data.php:
|
3986 |
-
#: includes/classes/class-wcj-module.php:
|
3987 |
#: includes/functions/wcj-functions-general.php:208
|
3988 |
-
#: includes/functions/wcj-functions-html.php:
|
3989 |
-
#: includes/reports/class-wcj-reports-monthly-sales.php:
|
3990 |
#: includes/settings/wcj-settings-empty-cart.php:88
|
3991 |
-
#: includes/shortcodes/class-wcj-products-add-form-shortcodes.php:
|
3992 |
#: includes/tools/class-wcj-order-statuses-tool.php:213
|
3993 |
#: includes/tools/class-wcj-order-statuses-tool.php:363
|
3994 |
msgid "Are you sure?"
|
3995 |
msgstr ""
|
3996 |
|
3997 |
-
#: includes/class-wcj-product-bulk-meta-editor.php:
|
3998 |
#: includes/settings/wcj-settings-admin-orders-list.php:79
|
3999 |
#: includes/settings/wcj-settings-admin-products-list.php:64
|
4000 |
#: includes/settings/wcj-settings-checkout-fees.php:81
|
@@ -4005,45 +4039,45 @@ msgstr ""
|
|
4005 |
msgid "Value"
|
4006 |
msgstr ""
|
4007 |
|
4008 |
-
#: includes/class-wcj-product-bulk-meta-editor.php:
|
4009 |
msgid "Set"
|
4010 |
msgstr ""
|
4011 |
|
4012 |
-
#: includes/class-wcj-product-bulk-meta-editor.php:
|
4013 |
msgid "Set Meta for All Products"
|
4014 |
msgstr ""
|
4015 |
|
4016 |
-
#: includes/class-wcj-product-bulk-meta-editor.php:
|
4017 |
msgid "Save all"
|
4018 |
msgstr ""
|
4019 |
|
4020 |
-
#: includes/class-wcj-product-bulk-meta-editor.php:
|
4021 |
msgid "Delete all"
|
4022 |
msgstr ""
|
4023 |
|
4024 |
-
#: includes/class-wcj-product-bulk-meta-editor.php:
|
4025 |
msgid "Save"
|
4026 |
msgstr ""
|
4027 |
|
4028 |
-
#: includes/class-wcj-product-bulk-meta-editor.php:
|
4029 |
-
#: includes/class-wcj-purchase-data.php:
|
4030 |
#: includes/export/class-wcj-export-fields-helper.php:285
|
4031 |
#: includes/functions/wcj-functions-reports.php:27
|
4032 |
#: includes/settings/wcj-settings-product-bulk-meta-editor.php:45
|
4033 |
msgid "Product ID"
|
4034 |
msgstr ""
|
4035 |
|
4036 |
-
#: includes/class-wcj-product-bulk-meta-editor.php:
|
4037 |
#: includes/settings/wcj-settings-product-bulk-meta-editor.php:46
|
4038 |
msgid "Product status"
|
4039 |
msgstr ""
|
4040 |
|
4041 |
-
#: includes/class-wcj-product-bulk-meta-editor.php:
|
4042 |
#: includes/settings/wcj-settings-product-bulk-meta-editor.php:47
|
4043 |
msgid "Meta keys"
|
4044 |
msgstr ""
|
4045 |
|
4046 |
-
#: includes/class-wcj-product-bulk-meta-editor.php:
|
4047 |
msgid "Show all"
|
4048 |
msgstr ""
|
4049 |
|
@@ -4060,74 +4094,74 @@ msgstr ""
|
|
4060 |
msgid "Bulk Price Converter Tool."
|
4061 |
msgstr ""
|
4062 |
|
4063 |
-
#: includes/class-wcj-product-bulk-price-converter.php:
|
4064 |
msgid "Multiply value must be above zero."
|
4065 |
msgstr ""
|
4066 |
|
4067 |
-
#: includes/class-wcj-product-bulk-price-converter.php:
|
4068 |
msgid "Prices changed successfully!"
|
4069 |
msgstr ""
|
4070 |
|
4071 |
-
#: includes/class-wcj-product-bulk-price-converter.php:
|
4072 |
msgid "Multiply all product prices by"
|
4073 |
msgstr ""
|
4074 |
|
4075 |
-
#: includes/class-wcj-product-bulk-price-converter.php:
|
4076 |
msgid "Price type to modify"
|
4077 |
msgstr ""
|
4078 |
|
4079 |
-
#: includes/class-wcj-product-bulk-price-converter.php:
|
4080 |
msgid "Both"
|
4081 |
msgstr ""
|
4082 |
|
4083 |
-
#: includes/class-wcj-product-bulk-price-converter.php:
|
4084 |
msgid "Sale prices only"
|
4085 |
msgstr ""
|
4086 |
|
4087 |
-
#: includes/class-wcj-product-bulk-price-converter.php:
|
4088 |
msgid "Regular prices only"
|
4089 |
msgstr ""
|
4090 |
|
4091 |
-
#: includes/class-wcj-product-bulk-price-converter.php:
|
4092 |
msgid "Products category"
|
4093 |
msgstr ""
|
4094 |
|
4095 |
-
#: includes/class-wcj-product-bulk-price-converter.php:
|
4096 |
#: includes/shortcodes/class-wcj-products-shortcodes.php:376
|
4097 |
msgid "Any"
|
4098 |
msgstr ""
|
4099 |
|
4100 |
-
#: includes/class-wcj-product-bulk-price-converter.php:
|
4101 |
#: includes/settings/wcj-settings-global-discount.php:113
|
4102 |
msgid "None"
|
4103 |
msgstr ""
|
4104 |
|
4105 |
-
#: includes/class-wcj-product-bulk-price-converter.php:
|
4106 |
msgid "\"Pretty prices\" threshold"
|
4107 |
msgstr ""
|
4108 |
|
4109 |
-
#: includes/class-wcj-product-bulk-price-converter.php:
|
4110 |
#: includes/settings/wcj-settings-payment-gateways-min-max.php:90
|
4111 |
msgid "Leave zero to disable."
|
4112 |
msgstr ""
|
4113 |
|
4114 |
-
#: includes/class-wcj-product-bulk-price-converter.php:
|
4115 |
msgid ""
|
4116 |
"Otherwise - all prices below \"threshold\" will end with 0,99 and all prices "
|
4117 |
"above or equal to \"threshold\" will end with 9,00."
|
4118 |
msgstr ""
|
4119 |
|
4120 |
-
#: includes/class-wcj-product-bulk-price-converter.php:
|
4121 |
msgid ""
|
4122 |
"E.g.: if you set \"threshold\" to 100, then all prices below 100 will be like "
|
4123 |
"45,99 and all other prices will be like 109,00."
|
4124 |
msgstr ""
|
4125 |
|
4126 |
-
#: includes/class-wcj-product-bulk-price-converter.php:
|
4127 |
msgid "Preview Prices"
|
4128 |
msgstr ""
|
4129 |
|
4130 |
-
#: includes/class-wcj-product-bulk-price-converter.php:
|
4131 |
msgid "Change Prices"
|
4132 |
msgstr ""
|
4133 |
|
@@ -4157,54 +4191,54 @@ msgstr ""
|
|
4157 |
msgid "Countries"
|
4158 |
msgstr ""
|
4159 |
|
4160 |
-
#: includes/class-wcj-product-by-country.php:
|
4161 |
msgid "User Country Selection Options"
|
4162 |
msgstr ""
|
4163 |
|
4164 |
-
#: includes/class-wcj-product-by-country.php:
|
4165 |
msgid "User Country Selection Method"
|
4166 |
msgstr ""
|
4167 |
|
4168 |
-
#: includes/class-wcj-product-by-country.php:
|
4169 |
msgid "Possible values: \"Automatically by IP\" or \"Manually\"."
|
4170 |
msgstr ""
|
4171 |
|
4172 |
-
#: includes/class-wcj-product-by-country.php:
|
4173 |
#, php-format
|
4174 |
msgid ""
|
4175 |
"If \"Manually\" option is selected, you can add country selection drop box to "
|
4176 |
"frontend with \"%1$s\" widget or %2$s shortcode."
|
4177 |
msgstr ""
|
4178 |
|
4179 |
-
#: includes/class-wcj-product-by-country.php:
|
4180 |
#: includes/class-wcj-product-custom-visibility.php:38
|
4181 |
#: includes/widgets/class-wcj-widget-selector.php:37
|
4182 |
msgid "Booster - Selector"
|
4183 |
msgstr ""
|
4184 |
|
4185 |
-
#: includes/class-wcj-product-by-country.php:
|
4186 |
msgid "Automatically by IP"
|
4187 |
msgstr ""
|
4188 |
|
4189 |
-
#: includes/class-wcj-product-by-country.php:
|
4190 |
#: includes/settings/wcj-settings-pdf-invoicing.php:36
|
4191 |
msgid "Manually"
|
4192 |
msgstr ""
|
4193 |
|
4194 |
-
#: includes/class-wcj-product-by-country.php:
|
4195 |
-
#: includes/class-wcj-product-by-country.php:
|
4196 |
msgid "Country List"
|
4197 |
msgstr ""
|
4198 |
|
4199 |
-
#: includes/class-wcj-product-by-country.php:
|
4200 |
msgid ""
|
4201 |
"This option sets which countries will be added to the list in [wcj_selector "
|
4202 |
"selector_type=\"country\"] shortcode. Possible values: \"All countries\" or "
|
4203 |
"\"WooCommerce selling locations\"."
|
4204 |
msgstr ""
|
4205 |
|
4206 |
-
#: includes/class-wcj-product-by-country.php:
|
4207 |
-
#: includes/class-wcj-product-by-country.php:
|
4208 |
#, php-format
|
4209 |
msgid ""
|
4210 |
"If \"WooCommerce selling locations\" option is selected, country list will be "
|
@@ -4212,24 +4246,24 @@ msgid ""
|
|
4212 |
"a>."
|
4213 |
msgstr ""
|
4214 |
|
4215 |
-
#: includes/class-wcj-product-by-country.php:
|
4216 |
-
#: includes/class-wcj-product-by-country.php:
|
4217 |
msgid "WooCommerce selling locations"
|
4218 |
msgstr ""
|
4219 |
|
4220 |
-
#: includes/class-wcj-product-by-country.php:
|
4221 |
msgid "Overwrite by Billing Country"
|
4222 |
msgstr ""
|
4223 |
|
4224 |
-
#: includes/class-wcj-product-by-country.php:
|
4225 |
msgid "Tries to overwrite Country by User Billing Country on Checkout Page."
|
4226 |
msgstr ""
|
4227 |
|
4228 |
-
#: includes/class-wcj-product-by-country.php:
|
4229 |
msgid "Admin Country List Options"
|
4230 |
msgstr ""
|
4231 |
|
4232 |
-
#: includes/class-wcj-product-by-country.php:
|
4233 |
msgid ""
|
4234 |
"This option sets which countries will be added to list in product's edit "
|
4235 |
"page. Possible values: \"All countries\" or \"WooCommerce selling locations\"."
|
@@ -4278,17 +4312,17 @@ msgstr ""
|
|
4278 |
msgid "Set product availability by time."
|
4279 |
msgstr ""
|
4280 |
|
4281 |
-
#: includes/class-wcj-product-by-time.php:
|
4282 |
#: includes/settings/wcj-settings-product-by-time.php:95
|
4283 |
msgid "%product_title% is not available today."
|
4284 |
msgstr ""
|
4285 |
|
4286 |
-
#: includes/class-wcj-product-by-time.php:
|
4287 |
msgid "<p >%product_title% is not available today."
|
4288 |
msgstr ""
|
4289 |
|
4290 |
-
#: includes/class-wcj-product-by-time.php:
|
4291 |
-
#: includes/class-wcj-product-by-time.php:
|
4292 |
#: includes/settings/wcj-settings-product-by-time.php:84
|
4293 |
msgid "%product_title% is available only at %time_today% today."
|
4294 |
msgstr ""
|
@@ -4358,19 +4392,19 @@ msgid ""
|
|
4358 |
"form to frontend."
|
4359 |
msgstr ""
|
4360 |
|
4361 |
-
#: includes/class-wcj-product-by-user.php:
|
4362 |
-
#: includes/class-wcj-product-by-user.php:
|
4363 |
msgid "Wrong user ID!"
|
4364 |
msgstr ""
|
4365 |
|
4366 |
-
#: includes/class-wcj-product-by-user.php:
|
4367 |
#: includes/export/class-wcj-export-fields-helper.php:298
|
4368 |
msgid "Status"
|
4369 |
msgstr ""
|
4370 |
|
4371 |
-
#: includes/class-wcj-product-by-user.php:
|
4372 |
#: includes/class-wcj-product-tabs.php:663
|
4373 |
-
#: includes/gateways/class-wc-gateway-wcj-custom.php:59
|
4374 |
#: includes/input-fields/wcj-product-input-fields-options.php:53
|
4375 |
#: includes/settings/meta-box/wcj-settings-meta-box-product-addons.php:104
|
4376 |
#: includes/settings/wcj-settings-admin-orders-list.php:187
|
@@ -4393,7 +4427,7 @@ msgstr ""
|
|
4393 |
#: includes/settings/wcj-settings-upsells.php:45
|
4394 |
#: includes/shipping/class-wc-shipping-wcj-custom-template.php:122
|
4395 |
#: includes/shipping/class-wc-shipping-wcj-custom-with-shipping-zones.php:223
|
4396 |
-
#: includes/shortcodes/class-wcj-products-add-form-shortcodes.php:
|
4397 |
#: includes/widgets/class-wcj-widget-country-switcher.php:77
|
4398 |
#: includes/widgets/class-wcj-widget-left-to-free-shipping.php:63
|
4399 |
#: includes/widgets/class-wcj-widget-multicurrency.php:85
|
@@ -4401,8 +4435,8 @@ msgstr ""
|
|
4401 |
msgid "Title"
|
4402 |
msgstr ""
|
4403 |
|
4404 |
-
#: includes/class-wcj-product-by-user.php:
|
4405 |
-
#: includes/shortcodes/class-wcj-products-add-form-shortcodes.php:
|
4406 |
#: includes/tools/class-wcj-order-statuses-tool.php:222
|
4407 |
#: includes/tools/class-wcj-order-statuses-tool.php:300
|
4408 |
msgid "Edit"
|
@@ -4448,11 +4482,11 @@ msgstr ""
|
|
4448 |
msgid "Custom Visibility"
|
4449 |
msgstr ""
|
4450 |
|
4451 |
-
#: includes/class-wcj-product-custom-visibility.php:
|
4452 |
msgid "Options List"
|
4453 |
msgstr ""
|
4454 |
|
4455 |
-
#: includes/class-wcj-product-custom-visibility.php:
|
4456 |
#: includes/settings/wcj-settings-admin-bar.php:17
|
4457 |
#: includes/settings/wcj-settings-breadcrumbs.php:17
|
4458 |
#: includes/settings/wcj-settings-cart-customization.php:17
|
@@ -4485,11 +4519,11 @@ msgstr ""
|
|
4485 |
msgid "Options"
|
4486 |
msgstr ""
|
4487 |
|
4488 |
-
#: includes/class-wcj-product-custom-visibility.php:
|
4489 |
msgid "One per line."
|
4490 |
msgstr ""
|
4491 |
|
4492 |
-
#: includes/class-wcj-product-custom-visibility.php:
|
4493 |
msgid ""
|
4494 |
"Can not be empty. Options will be added to each product's admin edit page and "
|
4495 |
"to the selection drop box on frontend."
|
@@ -4667,7 +4701,7 @@ msgid "Save and display product MSRP in WooCommerce."
|
|
4667 |
msgstr ""
|
4668 |
|
4669 |
#: includes/class-wcj-product-msrp.php:134
|
4670 |
-
#: includes/class-wcj-product-msrp.php:
|
4671 |
#: includes/settings/meta-box/wcj-settings-meta-box-product-msrp.php:51
|
4672 |
msgid "MSRP"
|
4673 |
msgstr ""
|
@@ -4684,22 +4718,22 @@ msgstr ""
|
|
4684 |
msgid "Open Pricing"
|
4685 |
msgstr ""
|
4686 |
|
4687 |
-
#: includes/class-wcj-product-open-pricing.php:
|
4688 |
#: includes/settings/wcj-settings-product-open-pricing.php:79
|
4689 |
msgid "Price is required!"
|
4690 |
msgstr ""
|
4691 |
|
4692 |
-
#: includes/class-wcj-product-open-pricing.php:
|
4693 |
#: includes/settings/wcj-settings-product-open-pricing.php:87
|
4694 |
msgid "Entered price is too small!"
|
4695 |
msgstr ""
|
4696 |
|
4697 |
-
#: includes/class-wcj-product-open-pricing.php:
|
4698 |
#: includes/settings/wcj-settings-product-open-pricing.php:95
|
4699 |
msgid "Entered price is too big!"
|
4700 |
msgstr ""
|
4701 |
|
4702 |
-
#: includes/class-wcj-product-open-pricing.php:
|
4703 |
#: includes/settings/wcj-settings-product-open-pricing.php:32
|
4704 |
msgid "Name Your Price"
|
4705 |
msgstr ""
|
@@ -4718,26 +4752,26 @@ msgstr ""
|
|
4718 |
msgid "Set formula for automatic product price calculation."
|
4719 |
msgstr ""
|
4720 |
|
4721 |
-
#: includes/class-wcj-product-price-by-formula.php:
|
4722 |
msgid "Booking cost"
|
4723 |
msgstr ""
|
4724 |
|
4725 |
-
#: includes/class-wcj-product-price-by-formula.php:
|
4726 |
#, php-format
|
4727 |
msgid "From: %s"
|
4728 |
msgstr ""
|
4729 |
|
4730 |
-
#: includes/class-wcj-product-price-by-formula.php:
|
4731 |
msgid "Reset products"
|
4732 |
msgstr ""
|
4733 |
|
4734 |
-
#: includes/class-wcj-product-price-by-formula.php:
|
4735 |
msgid ""
|
4736 |
"If enabled will also reset formula related settings on products when "
|
4737 |
"<code>Reset Settings</code> button is pressed."
|
4738 |
msgstr ""
|
4739 |
|
4740 |
-
#: includes/class-wcj-product-price-by-formula.php:
|
4741 |
msgid ""
|
4742 |
"It's necessary to <code>Save changes</code> first with the option enabled so "
|
4743 |
"the <code>Reset settings</code> can be pressed."
|
@@ -4942,7 +4976,7 @@ msgstr ""
|
|
4942 |
|
4943 |
#: includes/class-wcj-products-xml.php:102
|
4944 |
#: includes/exchange-rates/class-wcj-exchange-rates-crons.php:227
|
4945 |
-
#: tracking/class-plugin-usage-tracker.php:
|
4946 |
msgid "Once Weekly"
|
4947 |
msgstr ""
|
4948 |
|
@@ -4951,11 +4985,11 @@ msgstr ""
|
|
4951 |
msgid "Once a Minute"
|
4952 |
msgstr ""
|
4953 |
|
4954 |
-
#: includes/class-wcj-products-xml.php:
|
4955 |
msgid "An error has occurred while creating products XML file."
|
4956 |
msgstr ""
|
4957 |
|
4958 |
-
#: includes/class-wcj-products-xml.php:
|
4959 |
#, php-format
|
4960 |
msgid "Products XML file #%s created successfully."
|
4961 |
msgstr ""
|
@@ -4989,19 +5023,19 @@ msgstr ""
|
|
4989 |
msgid "Import products costs from \"WooCommerce Cost of Goods\"."
|
4990 |
msgstr ""
|
4991 |
|
4992 |
-
#: includes/class-wcj-purchase-data.php:
|
4993 |
msgid "Product Title"
|
4994 |
msgstr ""
|
4995 |
|
4996 |
-
#: includes/class-wcj-purchase-data.php:
|
4997 |
msgid "WooCommerce Cost of Goods (source)"
|
4998 |
msgstr ""
|
4999 |
|
5000 |
-
#: includes/class-wcj-purchase-data.php:
|
5001 |
msgid "Booster: Product cost (destination)"
|
5002 |
msgstr ""
|
5003 |
|
5004 |
-
#: includes/class-wcj-purchase-data.php:
|
5005 |
#: includes/shipping/class-wc-shipping-wcj-custom-template.php:137
|
5006 |
#: includes/shipping/class-wc-shipping-wcj-custom-template.php:194
|
5007 |
#: includes/shipping/class-wc-shipping-wcj-custom-with-shipping-zones.php:163
|
@@ -5009,48 +5043,48 @@ msgstr ""
|
|
5009 |
msgid "Cost"
|
5010 |
msgstr ""
|
5011 |
|
5012 |
-
#: includes/class-wcj-purchase-data.php:
|
5013 |
-
#: includes/class-wcj-purchase-data.php:
|
5014 |
-
#: includes/class-wcj-purchase-data.php:
|
5015 |
#: includes/functions/wcj-functions-reports.php:31
|
5016 |
#: includes/settings/wcj-settings-purchase-data.php:152
|
5017 |
#: includes/settings/wcj-settings-purchase-data.php:180
|
5018 |
msgid "Profit"
|
5019 |
msgstr ""
|
5020 |
|
5021 |
-
#: includes/class-wcj-purchase-data.php:
|
5022 |
#: includes/settings/wcj-settings-purchase-data.php:161
|
5023 |
#: includes/settings/wcj-settings-purchase-data.php:187
|
5024 |
msgid "Purchase Cost"
|
5025 |
msgstr ""
|
5026 |
|
5027 |
-
#: includes/class-wcj-purchase-data.php:
|
5028 |
msgid "Selling"
|
5029 |
msgstr ""
|
5030 |
|
5031 |
-
#: includes/class-wcj-purchase-data.php:
|
5032 |
msgid "Buying"
|
5033 |
msgstr ""
|
5034 |
|
5035 |
-
#: includes/class-wcj-purchase-data.php:
|
5036 |
msgid "Report"
|
5037 |
msgstr ""
|
5038 |
|
5039 |
-
#: includes/class-wcj-related-products.php:
|
5040 |
msgid ""
|
5041 |
"Change displayed related products number, columns, order; relate by tag, "
|
5042 |
"category, product attribute or manually on per product basis (Plus). Hide "
|
5043 |
"related products completely."
|
5044 |
msgstr ""
|
5045 |
|
5046 |
-
#: includes/class-wcj-related-products.php:
|
5047 |
msgid ""
|
5048 |
"Change displayed related products number, columns, order; relate by tag, "
|
5049 |
"category, product attribute or manually on per product basis. Hide related "
|
5050 |
"products completely."
|
5051 |
msgstr ""
|
5052 |
|
5053 |
-
#: includes/class-wcj-related-products.php:
|
5054 |
#, php-format
|
5055 |
msgid ""
|
5056 |
"You may need to <a href=\"%s\">clear all products transients</a> to "
|
@@ -5063,51 +5097,51 @@ msgstr ""
|
|
5063 |
msgid "Stock, sales, customers etc. reports."
|
5064 |
msgstr ""
|
5065 |
|
5066 |
-
#: includes/class-wcj-reports.php:
|
5067 |
msgid "Booster: More Ranges - Months"
|
5068 |
msgstr ""
|
5069 |
|
5070 |
-
#: includes/class-wcj-reports.php:
|
5071 |
msgid "Select Range"
|
5072 |
msgstr ""
|
5073 |
|
5074 |
-
#: includes/class-wcj-reports.php:
|
5075 |
msgid "Booster: More Ranges"
|
5076 |
msgstr ""
|
5077 |
|
5078 |
-
#: includes/class-wcj-reports.php:
|
5079 |
msgid "Booster: Product Sales (Daily)"
|
5080 |
msgstr ""
|
5081 |
|
5082 |
-
#: includes/class-wcj-reports.php:
|
5083 |
msgid "Booster: Product Sales (Monthly)"
|
5084 |
msgstr ""
|
5085 |
|
5086 |
-
#: includes/class-wcj-reports.php:
|
5087 |
msgid "Booster: Monthly Sales (with Currency Conversion)"
|
5088 |
msgstr ""
|
5089 |
|
5090 |
-
#: includes/class-wcj-reports.php:
|
5091 |
msgid "Booster: Payment Gateways"
|
5092 |
msgstr ""
|
5093 |
|
5094 |
-
#: includes/class-wcj-reports.php:
|
5095 |
msgid "Booster: All in stock"
|
5096 |
msgstr ""
|
5097 |
|
5098 |
-
#: includes/class-wcj-reports.php:
|
5099 |
msgid "Booster: Understocked"
|
5100 |
msgstr ""
|
5101 |
|
5102 |
-
#: includes/class-wcj-reports.php:
|
5103 |
msgid "Booster: Overstocked"
|
5104 |
msgstr ""
|
5105 |
|
5106 |
-
#: includes/class-wcj-reports.php:
|
5107 |
msgid "Booster: Customers by Country"
|
5108 |
msgstr ""
|
5109 |
|
5110 |
-
#: includes/class-wcj-reports.php:
|
5111 |
msgid "Booster: Customers by Country Sets"
|
5112 |
msgstr ""
|
5113 |
|
@@ -5315,8 +5349,8 @@ msgstr ""
|
|
5315 |
#: includes/settings/wcj-settings-order-min-amount.php:69
|
5316 |
#: includes/settings/wcj-settings-orders.php:135
|
5317 |
#: includes/settings/wcj-settings-orders.php:162
|
5318 |
-
#: includes/settings/wcj-settings-pdf-invoicing-advanced.php:
|
5319 |
-
#: includes/settings/wcj-settings-pdf-invoicing-advanced.php:
|
5320 |
#: includes/settings/wcj-settings-product-by-condition.php:115
|
5321 |
#: includes/settings/wcj-settings-product-by-user.php:122
|
5322 |
#: includes/settings/wcj-settings-product-open-pricing.php:131
|
@@ -5327,7 +5361,7 @@ msgstr ""
|
|
5327 |
#: includes/settings/wcj-settings-purchase-data.php:188
|
5328 |
#: includes/settings/wcj-settings-sku.php:314
|
5329 |
#: includes/settings/wcj-settings-sku.php:341
|
5330 |
-
#: includes/shortcodes/class-wcj-products-add-form-shortcodes.php:
|
5331 |
#: includes/tools/class-wcj-order-statuses-tool.php:300
|
5332 |
msgid "Add"
|
5333 |
msgstr ""
|
@@ -5551,7 +5585,7 @@ msgstr ""
|
|
5551 |
msgid "Add multiple custom shipping methods to WooCommerce."
|
5552 |
msgstr ""
|
5553 |
|
5554 |
-
#: includes/class-wcj-sku.php:30 includes/class-wcj-sku.php:
|
5555 |
#: includes/export/class-wcj-export-fields-helper.php:288
|
5556 |
msgid "SKU"
|
5557 |
msgstr ""
|
@@ -5575,33 +5609,33 @@ msgstr ""
|
|
5575 |
msgid "The tool generates and sets product SKUs for existing products."
|
5576 |
msgstr ""
|
5577 |
|
5578 |
-
#: includes/class-wcj-sku.php:
|
5579 |
msgid "Old SKU"
|
5580 |
msgstr ""
|
5581 |
|
5582 |
-
#: includes/class-wcj-sku.php:
|
5583 |
msgid "SKUs generated and set successfully!"
|
5584 |
msgstr ""
|
5585 |
|
5586 |
-
#: includes/class-wcj-sku.php:
|
5587 |
msgid "Preview SKUs"
|
5588 |
msgstr ""
|
5589 |
|
5590 |
-
#: includes/class-wcj-sku.php:
|
5591 |
msgid "Set SKUs"
|
5592 |
msgstr ""
|
5593 |
|
5594 |
-
#: includes/class-wcj-sku.php:
|
5595 |
msgid ""
|
5596 |
"You can optionally limit affected products by main product's ID (set option "
|
5597 |
"to zero to ignore):"
|
5598 |
msgstr ""
|
5599 |
|
5600 |
-
#: includes/class-wcj-sku.php:
|
5601 |
msgid "Min ID"
|
5602 |
msgstr ""
|
5603 |
|
5604 |
-
#: includes/class-wcj-sku.php:
|
5605 |
msgid "Max ID"
|
5606 |
msgstr ""
|
5607 |
|
@@ -5699,20 +5733,20 @@ msgstr ""
|
|
5699 |
msgid "Referer Type"
|
5700 |
msgstr ""
|
5701 |
|
5702 |
-
#: includes/class-wcj-track-users.php:
|
5703 |
msgid "Acquisition Source"
|
5704 |
msgstr ""
|
5705 |
|
5706 |
-
#: includes/class-wcj-track-users.php:
|
5707 |
#: includes/settings/wcj-settings-products-xml.php:144
|
5708 |
msgid "URL:"
|
5709 |
msgstr ""
|
5710 |
|
5711 |
-
#: includes/class-wcj-track-users.php:
|
5712 |
msgid "Type:"
|
5713 |
msgstr ""
|
5714 |
|
5715 |
-
#: includes/class-wcj-track-users.php:
|
5716 |
#, php-format
|
5717 |
msgid "Top %d countries by visits"
|
5718 |
msgstr ""
|
@@ -5720,8 +5754,8 @@ msgstr ""
|
|
5720 |
#: includes/class-wcj-track-users.php:341
|
5721 |
#: includes/input-fields/wcj-product-input-fields-options.php:46
|
5722 |
#: includes/settings/wcj-settings-checkout-custom-fields.php:154
|
5723 |
-
#: includes/tools/class-wcj-eu-countries-vat-rates-tool.php:
|
5724 |
-
#: includes/tools/class-wcj-eu-countries-vat-rates-tool.php:
|
5725 |
msgid "Country"
|
5726 |
msgstr ""
|
5727 |
|
@@ -5729,12 +5763,12 @@ msgstr ""
|
|
5729 |
msgid "Visits"
|
5730 |
msgstr ""
|
5731 |
|
5732 |
-
#: includes/class-wcj-track-users.php:
|
5733 |
#, php-format
|
5734 |
msgid "Stats generated at %1$s. Next update is scheduled at %2$s."
|
5735 |
msgstr ""
|
5736 |
|
5737 |
-
#: includes/class-wcj-track-users.php:
|
5738 |
msgid "Update now"
|
5739 |
msgstr ""
|
5740 |
|
@@ -5789,7 +5823,7 @@ msgstr ""
|
|
5789 |
msgid "Booster for WooCommerce basic WPML support."
|
5790 |
msgstr ""
|
5791 |
|
5792 |
-
#: includes/class-wcj-wpml.php:
|
5793 |
msgid "File wpml-config.xml successfully regenerated!"
|
5794 |
msgstr ""
|
5795 |
|
@@ -5832,30 +5866,30 @@ msgid ""
|
|
5832 |
"\" products."
|
5833 |
msgstr ""
|
5834 |
|
5835 |
-
#: includes/classes/class-wcj-module.php:
|
5836 |
#, php-format
|
5837 |
msgid "Selected: %s."
|
5838 |
msgstr ""
|
5839 |
|
5840 |
-
#: includes/classes/class-wcj-module.php:
|
5841 |
msgid "Back to Module Settings"
|
5842 |
msgstr ""
|
5843 |
|
5844 |
-
#: includes/classes/class-wcj-module.php:
|
5845 |
#: includes/settings/wcj-settings-wpml.php:102
|
5846 |
msgid "Module Tools"
|
5847 |
msgstr ""
|
5848 |
|
5849 |
-
#: includes/classes/class-wcj-module.php:
|
5850 |
#: includes/settings/wcj-settings-checkout-core-fields.php:82
|
5851 |
msgid "enabled"
|
5852 |
msgstr ""
|
5853 |
|
5854 |
-
#: includes/classes/class-wcj-module.php:
|
5855 |
msgid "disabled"
|
5856 |
msgstr ""
|
5857 |
|
5858 |
-
#: includes/classes/class-wcj-module.php:
|
5859 |
#: includes/settings/wcj-settings-product-tabs.php:181
|
5860 |
#: includes/settings/wcj-settings-product-tabs.php:196
|
5861 |
#: includes/settings/wcj-settings-product-tabs.php:211
|
@@ -5863,27 +5897,27 @@ msgstr ""
|
|
5863 |
msgid "Deprecated"
|
5864 |
msgstr ""
|
5865 |
|
5866 |
-
#: includes/classes/class-wcj-module.php:
|
5867 |
msgid "Reset Settings"
|
5868 |
msgstr ""
|
5869 |
|
5870 |
-
#: includes/classes/class-wcj-module.php:
|
5871 |
msgid "Reset Module to Default Settings"
|
5872 |
msgstr ""
|
5873 |
|
5874 |
-
#: includes/classes/class-wcj-module.php:
|
5875 |
msgid "Reset Submodule to Default Settings"
|
5876 |
msgstr ""
|
5877 |
|
5878 |
-
#: includes/classes/class-wcj-module.php:
|
5879 |
msgid "Reset settings"
|
5880 |
msgstr ""
|
5881 |
|
5882 |
-
#: includes/classes/class-wcj-module.php:
|
5883 |
msgid "Module Options"
|
5884 |
msgstr ""
|
5885 |
|
5886 |
-
#: includes/classes/class-wcj-module.php:
|
5887 |
msgid "Enable Module"
|
5888 |
msgstr ""
|
5889 |
|
@@ -5970,7 +6004,7 @@ msgid "Order status %1$s to %2$s"
|
|
5970 |
msgstr ""
|
5971 |
|
5972 |
#: includes/emails/class-wc-email-wcj-custom.php:247
|
5973 |
-
#: includes/gateways/class-wc-gateway-wcj-custom.php:52
|
5974 |
#: includes/settings/wcj-settings-admin-products-list.php:22
|
5975 |
#: includes/settings/wcj-settings-admin-products-list.php:86
|
5976 |
#: includes/settings/wcj-settings-checkout-custom-fields.php:130
|
@@ -6229,7 +6263,7 @@ msgstr ""
|
|
6229 |
|
6230 |
#: includes/export/class-wcj-export-fields-helper.php:88
|
6231 |
#: includes/export/class-wcj-export-fields-helper.php:299
|
6232 |
-
#: includes/gateways/class-wc-gateway-wcj-custom.php:152
|
6233 |
msgid "URL"
|
6234 |
msgstr ""
|
6235 |
|
@@ -6434,7 +6468,7 @@ msgstr ""
|
|
6434 |
#: includes/settings/meta-box/wcj-settings-meta-box-price-by-user-role.php:108
|
6435 |
#: includes/settings/wcj-settings-product-by-user.php:19
|
6436 |
#: includes/shortcodes/class-wcj-products-add-form-shortcodes.php:193
|
6437 |
-
#: includes/shortcodes/class-wcj-products-add-form-shortcodes.php:
|
6438 |
msgid "Regular Price"
|
6439 |
msgstr ""
|
6440 |
|
@@ -6444,7 +6478,7 @@ msgstr ""
|
|
6444 |
#: includes/settings/meta-box/wcj-settings-meta-box-price-by-user-role.php:117
|
6445 |
#: includes/settings/wcj-settings-product-by-user.php:20
|
6446 |
#: includes/shortcodes/class-wcj-products-add-form-shortcodes.php:194
|
6447 |
-
#: includes/shortcodes/class-wcj-products-add-form-shortcodes.php:
|
6448 |
msgid "Sale Price"
|
6449 |
msgstr ""
|
6450 |
|
@@ -6474,7 +6508,7 @@ msgstr ""
|
|
6474 |
#: includes/export/class-wcj-export-fields-helper.php:296
|
6475 |
#: includes/settings/wcj-settings-product-by-user.php:17
|
6476 |
#: includes/shortcodes/class-wcj-products-add-form-shortcodes.php:191
|
6477 |
-
#: includes/shortcodes/class-wcj-products-add-form-shortcodes.php:
|
6478 |
msgid "Short Description"
|
6479 |
msgstr ""
|
6480 |
|
@@ -6583,22 +6617,22 @@ msgstr ""
|
|
6583 |
msgid "Availability Class"
|
6584 |
msgstr ""
|
6585 |
|
6586 |
-
#: includes/functions/wcj-functions-admin.php:
|
6587 |
#, php-format
|
6588 |
msgid ""
|
6589 |
"<strong>Booster for WooCommerce</strong> plugin was successfully updated to "
|
6590 |
"version <strong>%s</strong>."
|
6591 |
msgstr ""
|
6592 |
|
6593 |
-
#: includes/functions/wcj-functions-admin.php:
|
6594 |
msgid "Search…"
|
6595 |
msgstr ""
|
6596 |
|
6597 |
-
#: includes/functions/wcj-functions-admin.php:
|
6598 |
msgid "Enter comma separated list of IDs."
|
6599 |
msgstr ""
|
6600 |
|
6601 |
-
#: includes/functions/wcj-functions-admin.php:
|
6602 |
#: includes/settings/wcj-settings-emails-verification.php:79
|
6603 |
#: includes/settings/wcj-settings-emails-verification.php:88
|
6604 |
#: includes/settings/wcj-settings-emails-verification.php:136
|
@@ -6606,60 +6640,60 @@ msgstr ""
|
|
6606 |
msgid "Replaced value: %s"
|
6607 |
msgstr ""
|
6608 |
|
6609 |
-
#: includes/functions/wcj-functions-admin.php:
|
6610 |
#, php-format
|
6611 |
msgid "Replaced values: %s"
|
6612 |
msgstr ""
|
6613 |
|
6614 |
-
#: includes/functions/wcj-functions-admin.php:
|
6615 |
msgid "Upgrade Booster to unlock this feature"
|
6616 |
msgstr ""
|
6617 |
|
6618 |
-
#: includes/functions/wcj-functions-admin.php:
|
6619 |
#, php-format
|
6620 |
msgid ""
|
6621 |
"Some settings fields are locked and you will need %s to modify all locked "
|
6622 |
"fields."
|
6623 |
msgstr ""
|
6624 |
|
6625 |
-
#: includes/functions/wcj-functions-admin.php:
|
6626 |
msgid "Buy now"
|
6627 |
msgstr ""
|
6628 |
|
6629 |
-
#: includes/functions/wcj-functions-admin.php:
|
6630 |
msgid "Visit Booster Site"
|
6631 |
msgstr ""
|
6632 |
|
6633 |
-
#: includes/functions/wcj-functions-admin.php:
|
6634 |
#, php-format
|
6635 |
msgid "Upgrade <a href=\"%s\" target=\"_blank\">Booster</a> to change value."
|
6636 |
msgstr ""
|
6637 |
|
6638 |
-
#: includes/functions/wcj-functions-admin.php:
|
6639 |
#, php-format
|
6640 |
msgid ""
|
6641 |
"Upgrade <a href=\"%1$s\" target=\"_blank\">Booster to unlock this feature</a> "
|
6642 |
"to enable \"%2$s\" option."
|
6643 |
msgstr ""
|
6644 |
|
6645 |
-
#: includes/functions/wcj-functions-admin.php:
|
6646 |
#, php-format
|
6647 |
msgid "Upgrade Booster to to enable \"%s\" option."
|
6648 |
msgstr ""
|
6649 |
|
6650 |
-
#: includes/functions/wcj-functions-admin.php:
|
6651 |
#, php-format
|
6652 |
msgid ""
|
6653 |
"Upgrade <a href=\"%s\" target=\"_blank\">Booster</a> to change values below."
|
6654 |
msgstr ""
|
6655 |
|
6656 |
-
#: includes/functions/wcj-functions-admin.php:
|
6657 |
#, php-format
|
6658 |
msgid ""
|
6659 |
"Upgrade <a href=\"%s\" target=\"_blank\">Booster </a> to change values above."
|
6660 |
msgstr ""
|
6661 |
|
6662 |
-
#: includes/functions/wcj-functions-admin.php:
|
6663 |
msgid "Upgrade Booster to change value."
|
6664 |
msgstr ""
|
6665 |
|
@@ -7697,26 +7731,6 @@ msgstr ""
|
|
7697 |
msgid "%s seconds till next run."
|
7698 |
msgstr ""
|
7699 |
|
7700 |
-
#: includes/functions/wcj-functions-crons.php:116
|
7701 |
-
msgid "Once weekly"
|
7702 |
-
msgstr ""
|
7703 |
-
|
7704 |
-
#: includes/functions/wcj-functions-crons.php:120
|
7705 |
-
msgid "Once every 30 minutes"
|
7706 |
-
msgstr ""
|
7707 |
-
|
7708 |
-
#: includes/functions/wcj-functions-crons.php:124
|
7709 |
-
msgid "Once every 15 minutes"
|
7710 |
-
msgstr ""
|
7711 |
-
|
7712 |
-
#: includes/functions/wcj-functions-crons.php:128
|
7713 |
-
msgid "Once every 5 minutes"
|
7714 |
-
msgstr ""
|
7715 |
-
|
7716 |
-
#: includes/functions/wcj-functions-crons.php:132
|
7717 |
-
msgid "Once a minute"
|
7718 |
-
msgstr ""
|
7719 |
-
|
7720 |
#: includes/functions/wcj-functions-exchange-rates.php:76
|
7721 |
msgid "European Central Bank (ECB)"
|
7722 |
msgstr ""
|
@@ -7745,92 +7759,92 @@ msgstr ""
|
|
7745 |
msgid "CoinMarketCap"
|
7746 |
msgstr ""
|
7747 |
|
7748 |
-
#: includes/functions/wcj-functions-general.php:
|
7749 |
#: includes/settings/wcj-settings-cross-sells.php:78
|
7750 |
#: includes/settings/wcj-settings-empty-cart.php:50
|
7751 |
msgid "Before cart"
|
7752 |
msgstr ""
|
7753 |
|
7754 |
-
#: includes/functions/wcj-functions-general.php:
|
7755 |
msgid "Before cart table"
|
7756 |
msgstr ""
|
7757 |
|
7758 |
-
#: includes/functions/wcj-functions-general.php:
|
7759 |
msgid "Before cart contents"
|
7760 |
msgstr ""
|
7761 |
|
7762 |
-
#: includes/functions/wcj-functions-general.php:
|
7763 |
msgid "Cart contents"
|
7764 |
msgstr ""
|
7765 |
|
7766 |
-
#: includes/functions/wcj-functions-general.php:
|
7767 |
msgid "Cart coupon"
|
7768 |
msgstr ""
|
7769 |
|
7770 |
-
#: includes/functions/wcj-functions-general.php:
|
7771 |
msgid "Cart actions"
|
7772 |
msgstr ""
|
7773 |
|
7774 |
-
#: includes/functions/wcj-functions-general.php:
|
7775 |
msgid "After cart contents"
|
7776 |
msgstr ""
|
7777 |
|
7778 |
-
#: includes/functions/wcj-functions-general.php:
|
7779 |
msgid "After cart table"
|
7780 |
msgstr ""
|
7781 |
|
7782 |
-
#: includes/functions/wcj-functions-general.php:
|
7783 |
#: includes/settings/wcj-settings-cross-sells.php:79
|
7784 |
msgid "Cart collaterals"
|
7785 |
msgstr ""
|
7786 |
|
7787 |
-
#: includes/functions/wcj-functions-general.php:
|
7788 |
#: includes/settings/wcj-settings-cross-sells.php:80
|
7789 |
#: includes/settings/wcj-settings-empty-cart.php:59
|
7790 |
msgid "After cart"
|
7791 |
msgstr ""
|
7792 |
|
7793 |
-
#: includes/functions/wcj-functions-general.php:
|
7794 |
msgid "Before cart totals"
|
7795 |
msgstr ""
|
7796 |
|
7797 |
-
#: includes/functions/wcj-functions-general.php:
|
7798 |
#: includes/settings/wcj-settings-empty-cart.php:52
|
7799 |
msgid "Cart totals: Before shipping"
|
7800 |
msgstr ""
|
7801 |
|
7802 |
-
#: includes/functions/wcj-functions-general.php:
|
7803 |
#: includes/settings/wcj-settings-empty-cart.php:53
|
7804 |
msgid "Cart totals: After shipping"
|
7805 |
msgstr ""
|
7806 |
|
7807 |
-
#: includes/functions/wcj-functions-general.php:
|
7808 |
#: includes/settings/wcj-settings-empty-cart.php:54
|
7809 |
msgid "Cart totals: Before order total"
|
7810 |
msgstr ""
|
7811 |
|
7812 |
-
#: includes/functions/wcj-functions-general.php:
|
7813 |
#: includes/settings/wcj-settings-empty-cart.php:55
|
7814 |
msgid "Cart totals: After order total"
|
7815 |
msgstr ""
|
7816 |
|
7817 |
-
#: includes/functions/wcj-functions-general.php:
|
7818 |
msgid "Proceed to checkout"
|
7819 |
msgstr ""
|
7820 |
|
7821 |
-
#: includes/functions/wcj-functions-general.php:
|
7822 |
msgid "After cart totals"
|
7823 |
msgstr ""
|
7824 |
|
7825 |
-
#: includes/functions/wcj-functions-general.php:
|
7826 |
msgid "Before shipping calculator"
|
7827 |
msgstr ""
|
7828 |
|
7829 |
-
#: includes/functions/wcj-functions-general.php:
|
7830 |
msgid "After shipping calculator"
|
7831 |
msgstr ""
|
7832 |
|
7833 |
-
#: includes/functions/wcj-functions-general.php:
|
7834 |
msgid "If cart is empty"
|
7835 |
msgstr ""
|
7836 |
|
@@ -7839,23 +7853,23 @@ msgstr ""
|
|
7839 |
msgid "Current image path: %s."
|
7840 |
msgstr ""
|
7841 |
|
7842 |
-
#: includes/functions/wcj-functions-invoicing.php:
|
7843 |
msgid "Invoice"
|
7844 |
msgstr ""
|
7845 |
|
7846 |
-
#: includes/functions/wcj-functions-invoicing.php:
|
7847 |
msgid "Proforma Invoice"
|
7848 |
msgstr ""
|
7849 |
|
7850 |
-
#: includes/functions/wcj-functions-invoicing.php:
|
7851 |
msgid "Packing Slip"
|
7852 |
msgstr ""
|
7853 |
|
7854 |
-
#: includes/functions/wcj-functions-invoicing.php:
|
7855 |
msgid "Credit Note"
|
7856 |
msgstr ""
|
7857 |
|
7858 |
-
#: includes/functions/wcj-functions-invoicing.php:
|
7859 |
msgid "Custom Document"
|
7860 |
msgstr ""
|
7861 |
|
@@ -7956,139 +7970,139 @@ msgstr ""
|
|
7956 |
msgid "You have Free delivery"
|
7957 |
msgstr ""
|
7958 |
|
7959 |
-
#: includes/gateways/class-wc-gateway-wcj-custom.php:54
|
7960 |
msgid "Enable Custom Payment"
|
7961 |
msgstr ""
|
7962 |
|
7963 |
-
#: includes/gateways/class-wc-gateway-wcj-custom.php:61
|
7964 |
#: includes/shipping/class-wc-shipping-wcj-custom-template.php:124
|
7965 |
#: includes/shipping/class-wc-shipping-wcj-custom-with-shipping-zones.php:225
|
7966 |
msgid "This controls the title which the user sees during checkout."
|
7967 |
msgstr ""
|
7968 |
|
7969 |
-
#: includes/gateways/class-wc-gateway-wcj-custom.php:62
|
7970 |
msgid "Custom Payment"
|
7971 |
msgstr ""
|
7972 |
|
7973 |
-
#: includes/gateways/class-wc-gateway-wcj-custom.php:69
|
7974 |
msgid "Payment method description that the customer will see on your checkout."
|
7975 |
msgstr ""
|
7976 |
|
7977 |
-
#: includes/gateways/class-wc-gateway-wcj-custom.php:70
|
7978 |
msgid "You can add input fields with [wcj_input_field] shortcode."
|
7979 |
msgstr ""
|
7980 |
|
7981 |
-
#: includes/gateways/class-wc-gateway-wcj-custom.php:71
|
7982 |
msgid "Custom Payment Description."
|
7983 |
msgstr ""
|
7984 |
|
7985 |
-
#: includes/gateways/class-wc-gateway-wcj-custom.php:76
|
7986 |
msgid "Instructions"
|
7987 |
msgstr ""
|
7988 |
|
7989 |
-
#: includes/gateways/class-wc-gateway-wcj-custom.php:78
|
7990 |
msgid "Instructions that will be added to the thank you page."
|
7991 |
msgstr ""
|
7992 |
|
7993 |
-
#: includes/gateways/class-wc-gateway-wcj-custom.php:84
|
7994 |
msgid "Email Instructions"
|
7995 |
msgstr ""
|
7996 |
|
7997 |
-
#: includes/gateways/class-wc-gateway-wcj-custom.php:86
|
7998 |
msgid "Instructions that will be added to the emails."
|
7999 |
msgstr ""
|
8000 |
|
8001 |
-
#: includes/gateways/class-wc-gateway-wcj-custom.php:92
|
8002 |
msgid "Icon"
|
8003 |
msgstr ""
|
8004 |
|
8005 |
-
#: includes/gateways/class-wc-gateway-wcj-custom.php:94
|
8006 |
#: includes/settings/wcj-settings-payment-gateways-icons.php:19
|
8007 |
msgid ""
|
8008 |
"If you want to show an image next to the gateway's name on the frontend, "
|
8009 |
"enter a URL to an image."
|
8010 |
msgstr ""
|
8011 |
|
8012 |
-
#: includes/gateways/class-wc-gateway-wcj-custom.php:101
|
8013 |
#: includes/settings/wcj-settings-shipping-by-order-amount.php:62
|
8014 |
msgid "Minimum order amount"
|
8015 |
msgstr ""
|
8016 |
|
8017 |
-
#: includes/gateways/class-wc-gateway-wcj-custom.php:103
|
8018 |
msgid ""
|
8019 |
"If you want to set minimum order amount (excluding fees) to show this gateway "
|
8020 |
"on frontend, enter a number here. Set to 0 to disable."
|
8021 |
msgstr ""
|
8022 |
|
8023 |
-
#: includes/gateways/class-wc-gateway-wcj-custom.php:110
|
8024 |
#: includes/settings/wcj-settings-payment-gateways-by-shipping.php:67
|
8025 |
msgid "Enable for shipping methods"
|
8026 |
msgstr ""
|
8027 |
|
8028 |
-
#: includes/gateways/class-wc-gateway-wcj-custom.php:115
|
8029 |
msgid ""
|
8030 |
"If gateway is only available for certain shipping methods, set it up here. "
|
8031 |
"Leave blank to enable for all methods."
|
8032 |
msgstr ""
|
8033 |
|
8034 |
-
#: includes/gateways/class-wc-gateway-wcj-custom.php:118
|
8035 |
#: includes/settings/wcj-settings-payment-gateways-by-shipping.php:74
|
8036 |
msgid "Select shipping methods"
|
8037 |
msgstr ""
|
8038 |
|
8039 |
-
#: includes/gateways/class-wc-gateway-wcj-custom.php:122
|
8040 |
msgid "Enable for virtual orders"
|
8041 |
msgstr ""
|
8042 |
|
8043 |
-
#: includes/gateways/class-wc-gateway-wcj-custom.php:123
|
8044 |
msgid "Enable gateway if the order is virtual"
|
8045 |
msgstr ""
|
8046 |
|
8047 |
-
#: includes/gateways/class-wc-gateway-wcj-custom.php:129
|
8048 |
#: includes/settings/wcj-settings-order-custom-statuses.php:22
|
8049 |
msgid "Default Order Status"
|
8050 |
msgstr ""
|
8051 |
|
8052 |
-
#: includes/gateways/class-wc-gateway-wcj-custom.php:130
|
8053 |
msgid "Enable Custom Statuses feature to add custom statuses to the list."
|
8054 |
msgstr ""
|
8055 |
|
8056 |
-
#: includes/gateways/class-wc-gateway-wcj-custom.php:137
|
8057 |
msgid "Send Additional Emails"
|
8058 |
msgstr ""
|
8059 |
|
8060 |
-
#: includes/gateways/class-wc-gateway-wcj-custom.php:138
|
8061 |
msgid "Send to Admin"
|
8062 |
msgstr ""
|
8063 |
|
8064 |
-
#: includes/gateways/class-wc-gateway-wcj-custom.php:144
|
8065 |
msgid "Send to Customer"
|
8066 |
msgstr ""
|
8067 |
|
8068 |
-
#: includes/gateways/class-wc-gateway-wcj-custom.php:145
|
8069 |
msgid ""
|
8070 |
"This may help if you are using pending or custom default status and not "
|
8071 |
"getting new order emails."
|
8072 |
msgstr ""
|
8073 |
|
8074 |
-
#: includes/gateways/class-wc-gateway-wcj-custom.php:151
|
8075 |
msgid "Custom Return URL (Thank You Page)"
|
8076 |
msgstr ""
|
8077 |
|
8078 |
-
#: includes/gateways/class-wc-gateway-wcj-custom.php:153
|
8079 |
msgid "Enter full URL with http(s)."
|
8080 |
msgstr ""
|
8081 |
|
8082 |
-
#: includes/gateways/class-wc-gateway-wcj-custom.php:154
|
8083 |
msgid "Optional. Leave blank to use default URL."
|
8084 |
msgstr ""
|
8085 |
|
8086 |
-
#: includes/gateways/class-wc-gateway-wcj-custom.php:359
|
8087 |
#: includes/settings/wcj-settings-payment-gateways.php:48
|
8088 |
msgid "Custom Gateway"
|
8089 |
msgstr ""
|
8090 |
|
8091 |
-
#: includes/gateways/class-wc-gateway-wcj-custom.php:361
|
8092 |
msgid "Booster for WooCommerce: Custom Payment Gateway"
|
8093 |
msgstr ""
|
8094 |
|
@@ -8106,15 +8120,15 @@ msgstr ""
|
|
8106 |
msgid "Product Input Field"
|
8107 |
msgstr ""
|
8108 |
|
8109 |
-
#: includes/input-fields/class-wcj-product-input-fields-core.php:
|
8110 |
msgid "Wrong file type!"
|
8111 |
msgstr ""
|
8112 |
|
8113 |
-
#: includes/input-fields/class-wcj-product-input-fields-core.php:
|
8114 |
msgid "File is too big!"
|
8115 |
msgstr ""
|
8116 |
|
8117 |
-
#: includes/input-fields/class-wcj-product-input-fields-core.php:
|
8118 |
msgid "Select a country…"
|
8119 |
msgstr ""
|
8120 |
|
@@ -8167,7 +8181,6 @@ msgstr ""
|
|
8167 |
#: includes/settings/meta-box/wcj-settings-meta-box-product-addons.php:97
|
8168 |
#: includes/settings/wcj-settings-checkout-custom-fields.php:147
|
8169 |
#: includes/settings/wcj-settings-product-addons.php:100
|
8170 |
-
#: tracking/class-example-settings.php:84
|
8171 |
msgid "Checkbox"
|
8172 |
msgstr ""
|
8173 |
|
@@ -8193,7 +8206,6 @@ msgstr ""
|
|
8193 |
|
8194 |
#: includes/input-fields/wcj-product-input-fields-options.php:43
|
8195 |
#: includes/settings/wcj-settings-checkout-custom-fields.php:151
|
8196 |
-
#: tracking/class-example-settings.php:91
|
8197 |
msgid "Select"
|
8198 |
msgstr ""
|
8199 |
|
@@ -8449,77 +8461,77 @@ msgstr ""
|
|
8449 |
msgid "Select/Radio: Options"
|
8450 |
msgstr ""
|
8451 |
|
8452 |
-
#: includes/pdf-invoices/class-wcj-pdf-invoicing-renumerate-tool.php:
|
8453 |
msgid "Invoices successfully renumerated!"
|
8454 |
msgstr ""
|
8455 |
|
8456 |
-
#: includes/pdf-invoices/class-wcj-pdf-invoicing-renumerate-tool.php:
|
8457 |
msgid "Please select at least one order status."
|
8458 |
msgstr ""
|
8459 |
|
8460 |
-
#: includes/pdf-invoices/class-wcj-pdf-invoicing-renumerate-tool.php:
|
8461 |
msgid "Booster - Renumerate Invoices"
|
8462 |
msgstr ""
|
8463 |
|
8464 |
-
#: includes/pdf-invoices/class-wcj-pdf-invoicing-renumerate-tool.php:
|
8465 |
msgid ""
|
8466 |
"The tool renumerates invoices from choosen date. Invoice number format is set "
|
8467 |
"in WooCommerce > Settings > Booster > PDF Invoicing & Packing Slips > "
|
8468 |
"Numbering."
|
8469 |
msgstr ""
|
8470 |
|
8471 |
-
#: includes/pdf-invoices/class-wcj-pdf-invoicing-renumerate-tool.php:
|
8472 |
#: includes/settings/meta-box/wcj-settings-meta-box-crowdfunding.php:26
|
8473 |
msgid "Start Date"
|
8474 |
msgstr ""
|
8475 |
|
8476 |
-
#: includes/pdf-invoices/class-wcj-pdf-invoicing-renumerate-tool.php:
|
8477 |
msgid "Date to start renumerating. Leave blank to renumerate all invoices."
|
8478 |
msgstr ""
|
8479 |
|
8480 |
-
#: includes/pdf-invoices/class-wcj-pdf-invoicing-renumerate-tool.php:
|
8481 |
msgid "End Date"
|
8482 |
msgstr ""
|
8483 |
|
8484 |
-
#: includes/pdf-invoices/class-wcj-pdf-invoicing-renumerate-tool.php:
|
8485 |
msgid "Date to end renumerating. Leave blank to renumerate all invoices."
|
8486 |
msgstr ""
|
8487 |
|
8488 |
-
#: includes/pdf-invoices/class-wcj-pdf-invoicing-renumerate-tool.php:
|
8489 |
msgid "Start Number"
|
8490 |
msgstr ""
|
8491 |
|
8492 |
-
#: includes/pdf-invoices/class-wcj-pdf-invoicing-renumerate-tool.php:
|
8493 |
msgid "Counter to start renumerating. Leave 0 to continue from current counter."
|
8494 |
msgstr ""
|
8495 |
|
8496 |
-
#: includes/pdf-invoices/class-wcj-pdf-invoicing-renumerate-tool.php:
|
8497 |
msgid "Delete All"
|
8498 |
msgstr ""
|
8499 |
|
8500 |
-
#: includes/pdf-invoices/class-wcj-pdf-invoicing-renumerate-tool.php:
|
8501 |
msgid "Clear all invoices before renumerating"
|
8502 |
msgstr ""
|
8503 |
|
8504 |
-
#: includes/pdf-invoices/class-wcj-pdf-invoicing-renumerate-tool.php:
|
8505 |
#: includes/pdf-invoices/class-wcj-pdf-invoicing-report-tool.php:156
|
8506 |
msgid "Document Type"
|
8507 |
msgstr ""
|
8508 |
|
8509 |
-
#: includes/pdf-invoices/class-wcj-pdf-invoicing-renumerate-tool.php:
|
8510 |
msgid "Order Statuses"
|
8511 |
msgstr ""
|
8512 |
|
8513 |
-
#: includes/pdf-invoices/class-wcj-pdf-invoicing-renumerate-tool.php:
|
8514 |
msgid "Renumerate invoices"
|
8515 |
msgstr ""
|
8516 |
|
8517 |
-
#: includes/pdf-invoices/class-wcj-pdf-invoicing-renumerate-tool.php:
|
8518 |
#, php-format
|
8519 |
msgid "Total documents created: %d"
|
8520 |
msgstr ""
|
8521 |
|
8522 |
-
#: includes/pdf-invoices/class-wcj-pdf-invoicing-renumerate-tool.php:
|
8523 |
#, php-format
|
8524 |
msgid "Total documents deleted: %d"
|
8525 |
msgstr ""
|
@@ -8532,10 +8544,6 @@ msgid ""
|
|
8532 |
"Settings > Booster > PDF Invoicing & Packing Slips > Advanced</a>."
|
8533 |
msgstr ""
|
8534 |
|
8535 |
-
#: includes/pdf-invoices/class-wcj-pdf-invoicing-report-tool.php:99
|
8536 |
-
msgid "Sorry, but something went wrong..."
|
8537 |
-
msgstr ""
|
8538 |
-
|
8539 |
#: includes/pdf-invoices/class-wcj-pdf-invoicing-report-tool.php:105
|
8540 |
#: includes/pdf-invoices/class-wcj-pdf-invoicing-report-tool.php:127
|
8541 |
msgid "Please fill year and month values."
|
@@ -8575,7 +8583,7 @@ msgstr ""
|
|
8575 |
#: includes/settings/wcj-settings-multicurrency-base-price.php:67
|
8576 |
#: includes/settings/wcj-settings-multicurrency.php:244
|
8577 |
#: includes/settings/wcj-settings-order-min-amount.php:87
|
8578 |
-
#: includes/settings/wcj-settings-price-by-country.php:
|
8579 |
#: includes/settings/wcj-settings-price-by-user-role.php:110
|
8580 |
#: includes/settings/wcj-settings-product-addons.php:251
|
8581 |
msgid "Advanced"
|
@@ -8709,28 +8717,28 @@ msgstr ""
|
|
8709 |
msgid "Templates"
|
8710 |
msgstr ""
|
8711 |
|
8712 |
-
#: includes/price-by-country/class-wcj-price-by-country-group-generator.php:
|
8713 |
msgid "Country groups successfully generated."
|
8714 |
msgstr ""
|
8715 |
|
8716 |
-
#: includes/price-by-country/class-wcj-price-by-country-group-generator.php:
|
8717 |
msgid "Country groups generation failed."
|
8718 |
msgstr ""
|
8719 |
|
8720 |
#: includes/price-by-country/class-wcj-price-by-country-local.php:124
|
8721 |
#: includes/settings/meta-box/wcj-settings-meta-box-price-by-country.php:77
|
8722 |
-
#: includes/settings/wcj-settings-price-by-country.php:
|
8723 |
msgid "Make empty price"
|
8724 |
msgstr ""
|
8725 |
|
8726 |
#: includes/price-by-country/class-wcj-price-by-country-local.php:249
|
8727 |
#: includes/settings/meta-box/wcj-settings-meta-box-price-by-country.php:21
|
8728 |
#: includes/settings/wcj-settings-add-to-cart.php:59
|
8729 |
-
#: includes/settings/wcj-settings-price-by-country.php:
|
8730 |
-
#: includes/settings/wcj-settings-price-by-country.php:
|
8731 |
-
#: includes/settings/wcj-settings-price-by-country.php:
|
8732 |
-
#: includes/settings/wcj-settings-price-by-country.php:
|
8733 |
-
#: includes/settings/wcj-settings-price-by-country.php:
|
8734 |
msgid "Group"
|
8735 |
msgstr ""
|
8736 |
|
@@ -8801,7 +8809,7 @@ msgid "Orders Average / Day"
|
|
8801 |
msgstr ""
|
8802 |
|
8803 |
#: includes/reports/class-wcj-reports-monthly-sales.php:102
|
8804 |
-
#: includes/reports/class-wcj-reports-sales.php:
|
8805 |
msgid "Total Sum"
|
8806 |
msgstr ""
|
8807 |
|
@@ -8825,103 +8833,113 @@ msgstr ""
|
|
8825 |
msgid "Orders by Currency"
|
8826 |
msgstr ""
|
8827 |
|
8828 |
-
#: includes/reports/class-wcj-reports-monthly-sales.php:
|
8829 |
-
#: includes/reports/class-wcj-reports-monthly-sales.php:
|
8830 |
-
#: includes/reports/class-wcj-reports-monthly-sales.php:
|
8831 |
-
#: includes/reports/class-wcj-reports-monthly-sales.php:
|
8832 |
#, php-format
|
8833 |
msgid "Forecast: %s"
|
8834 |
msgstr ""
|
8835 |
|
8836 |
-
#: includes/reports/class-wcj-reports-monthly-sales.php:
|
8837 |
msgid "Grab average rate"
|
8838 |
msgstr ""
|
8839 |
|
8840 |
-
#: includes/reports/class-wcj-reports-monthly-sales.php:
|
8841 |
msgid "Totals"
|
8842 |
msgstr ""
|
8843 |
|
8844 |
-
#: includes/reports/class-wcj-reports-monthly-sales.php:
|
8845 |
msgid "Report currency"
|
8846 |
msgstr ""
|
8847 |
|
8848 |
-
#: includes/reports/class-wcj-reports-monthly-sales.php:
|
8849 |
#, php-format
|
8850 |
msgid "Report generated in: %s s"
|
8851 |
msgstr ""
|
8852 |
|
8853 |
-
#: includes/reports/class-wcj-reports-monthly-sales.php:
|
8854 |
msgid "Save Currency Rates"
|
8855 |
msgstr ""
|
8856 |
|
8857 |
-
#: includes/reports/class-wcj-reports-monthly-sales.php:
|
8858 |
msgid "Reset Currency Rates"
|
8859 |
msgstr ""
|
8860 |
|
8861 |
#: includes/reports/class-wcj-reports-product-sales-daily.php:180
|
8862 |
-
#: includes/reports/class-wcj-reports-sales.php:
|
8863 |
-
#: includes/reports/wcj-
|
8864 |
msgid "Reports Settings"
|
8865 |
msgstr ""
|
8866 |
|
8867 |
-
#: includes/reports/class-wcj-reports-product-sales-daily.php:
|
8868 |
-
#: includes/reports/wcj-
|
8869 |
msgid "From:"
|
8870 |
msgstr ""
|
8871 |
|
8872 |
-
#: includes/reports/class-wcj-reports-product-sales-daily.php:
|
8873 |
-
#: includes/reports/wcj-
|
8874 |
msgid "To:"
|
8875 |
msgstr ""
|
8876 |
|
8877 |
-
#: includes/reports/class-wcj-reports-product-sales-daily.php:
|
8878 |
msgid "Product:"
|
8879 |
msgstr ""
|
8880 |
|
8881 |
-
#: includes/reports/class-wcj-reports-product-sales-daily.php:
|
8882 |
#, php-format
|
8883 |
msgid "Total: %d"
|
8884 |
msgstr ""
|
8885 |
|
8886 |
-
#: includes/reports/class-wcj-reports-product-sales-daily.php:
|
8887 |
-
#: includes/reports/class-wcj-reports-product-sales-daily.php:
|
8888 |
#, php-format
|
8889 |
msgid "Total: %s"
|
8890 |
msgstr ""
|
8891 |
|
8892 |
-
#: includes/reports/class-wcj-reports-product-sales-daily.php:
|
8893 |
-
#: includes/reports/wcj-
|
8894 |
#, php-format
|
8895 |
msgid "Total orders: %d"
|
8896 |
msgstr ""
|
8897 |
|
8898 |
-
#: includes/reports/class-wcj-reports-product-sales-daily.php:
|
8899 |
-
#: includes/reports/class-wcj-reports-sales.php:
|
8900 |
-
#: includes/reports/wcj-
|
8901 |
msgid "No sales data for current period."
|
8902 |
msgstr ""
|
8903 |
|
8904 |
-
#: includes/reports/class-wcj-reports-sales.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
8905 |
msgid "Variation"
|
8906 |
msgstr ""
|
8907 |
|
8908 |
-
#: includes/reports/class-wcj-reports-sales.php:
|
8909 |
msgid "Last Sale"
|
8910 |
msgstr ""
|
8911 |
|
8912 |
-
#: includes/reports/class-wcj-reports-sales.php:
|
8913 |
msgid "Total"
|
8914 |
msgstr ""
|
8915 |
|
8916 |
-
#: includes/reports/class-wcj-reports-sales.php:
|
8917 |
msgid "Total Items"
|
8918 |
msgstr ""
|
8919 |
|
8920 |
-
#: includes/reports/class-wcj-reports-sales.php:
|
8921 |
msgid "Total Profit"
|
8922 |
msgstr ""
|
8923 |
|
8924 |
-
#: includes/reports/class-wcj-reports-sales.php:
|
8925 |
msgid "Filter products"
|
8926 |
msgstr ""
|
8927 |
|
@@ -8960,12 +8978,6 @@ msgid ""
|
|
8960 |
"accounted."
|
8961 |
msgstr ""
|
8962 |
|
8963 |
-
#: includes/reports/class-wcj-reports-stock.php:121
|
8964 |
-
#: includes/reports/class-wcj-reports-stock.php:197
|
8965 |
-
#: includes/reports/wcj-class-reports-sales-gateways.php:98
|
8966 |
-
msgid "N/A"
|
8967 |
-
msgstr ""
|
8968 |
-
|
8969 |
#: includes/reports/class-wcj-reports-stock.php:293
|
8970 |
msgid "Stock price"
|
8971 |
msgstr ""
|
@@ -9031,10 +9043,6 @@ msgstr ""
|
|
9031 |
msgid "Report was generated in: "
|
9032 |
msgstr ""
|
9033 |
|
9034 |
-
#: includes/reports/wcj-class-reports-sales-gateways.php:182
|
9035 |
-
msgid "Gateway"
|
9036 |
-
msgstr ""
|
9037 |
-
|
9038 |
#: includes/settings/meta-box/wcj-settings-meta-box-add-to-cart-button-visibility.php:21
|
9039 |
#: includes/settings/meta-box/wcj-settings-meta-box-add-to-cart-button-visibility.php:40
|
9040 |
#: includes/settings/wcj-settings-admin-orders-list.php:139
|
@@ -9312,7 +9320,7 @@ msgstr ""
|
|
9312 |
#: includes/settings/wcj-settings-general.php:129
|
9313 |
#: includes/settings/wcj-settings-general.php:137
|
9314 |
#: includes/settings/wcj-settings-pdf-invoicing-advanced.php:93
|
9315 |
-
#: includes/settings/wcj-settings-pdf-invoicing-advanced.php:
|
9316 |
#: includes/settings/wcj-settings-price-by-user-role.php:59
|
9317 |
#: includes/settings/wcj-settings-price-by-user-role.php:165
|
9318 |
#: includes/settings/wcj-settings-product-add-to-cart.php:135
|
@@ -10504,7 +10512,7 @@ msgid "Fields Options"
|
|
10504 |
msgstr ""
|
10505 |
|
10506 |
#: includes/settings/wcj-settings-checkout-core-fields.php:94
|
10507 |
-
#: includes/shortcodes/class-wcj-products-add-form-shortcodes.php:
|
10508 |
msgid "required"
|
10509 |
msgstr ""
|
10510 |
|
@@ -11508,7 +11516,8 @@ msgid "Before"
|
|
11508 |
msgstr ""
|
11509 |
|
11510 |
#: includes/settings/wcj-settings-checkout-files-upload.php:334
|
11511 |
-
|
|
|
11512 |
msgstr ""
|
11513 |
|
11514 |
#: includes/settings/wcj-settings-checkout-files-upload.php:342
|
@@ -11519,7 +11528,8 @@ msgid "Field"
|
|
11519 |
msgstr ""
|
11520 |
|
11521 |
#: includes/settings/wcj-settings-checkout-files-upload.php:344
|
11522 |
-
|
|
|
11523 |
msgstr ""
|
11524 |
|
11525 |
#: includes/settings/wcj-settings-checkout-files-upload.php:352
|
@@ -11859,7 +11869,7 @@ msgstr ""
|
|
11859 |
#: includes/settings/wcj-settings-multicurrency-base-price.php:26
|
11860 |
#: includes/settings/wcj-settings-multicurrency.php:26
|
11861 |
#: includes/settings/wcj-settings-payment-gateways-currency.php:76
|
11862 |
-
#: includes/settings/wcj-settings-price-by-country.php:
|
11863 |
msgid "Exchange Rates Updates"
|
11864 |
msgstr ""
|
11865 |
|
@@ -11973,7 +11983,7 @@ msgid "Custom Currency"
|
|
11973 |
msgstr ""
|
11974 |
|
11975 |
#: includes/settings/wcj-settings-currency-exchange-rates.php:192
|
11976 |
-
#: includes/settings/wcj-settings-price-by-country.php:
|
11977 |
msgid "Exchange Rates"
|
11978 |
msgstr ""
|
11979 |
|
@@ -11993,7 +12003,7 @@ msgstr ""
|
|
11993 |
#: includes/settings/wcj-settings-multicurrency-base-price.php:151
|
11994 |
#: includes/settings/wcj-settings-multicurrency.php:322
|
11995 |
#: includes/settings/wcj-settings-multicurrency.php:366
|
11996 |
-
#: includes/settings/wcj-settings-price-by-country.php:
|
11997 |
#: includes/settings/wcj-settings-price-formats.php:68
|
11998 |
msgid "Currency"
|
11999 |
msgstr ""
|
@@ -12066,7 +12076,7 @@ msgstr ""
|
|
12066 |
#: includes/settings/wcj-settings-multicurrency-base-price.php:31
|
12067 |
#: includes/settings/wcj-settings-multicurrency.php:32
|
12068 |
#: includes/settings/wcj-settings-payment-gateways-currency.php:81
|
12069 |
-
#: includes/settings/wcj-settings-price-by-country.php:
|
12070 |
msgid "Enter Rates Manually"
|
12071 |
msgstr ""
|
12072 |
|
@@ -12074,7 +12084,7 @@ msgstr ""
|
|
12074 |
#: includes/settings/wcj-settings-multicurrency-base-price.php:32
|
12075 |
#: includes/settings/wcj-settings-multicurrency.php:33
|
12076 |
#: includes/settings/wcj-settings-payment-gateways-currency.php:82
|
12077 |
-
#: includes/settings/wcj-settings-price-by-country.php:
|
12078 |
msgid "Automatically via Currency Exchange Rates module"
|
12079 |
msgstr ""
|
12080 |
|
@@ -12082,7 +12092,7 @@ msgstr ""
|
|
12082 |
#: includes/settings/wcj-settings-multicurrency-base-price.php:35
|
12083 |
#: includes/settings/wcj-settings-multicurrency.php:36
|
12084 |
#: includes/settings/wcj-settings-payment-gateways-currency.php:85
|
12085 |
-
#: includes/settings/wcj-settings-price-by-country.php:
|
12086 |
msgid "Visit"
|
12087 |
msgstr ""
|
12088 |
|
@@ -12090,7 +12100,7 @@ msgstr ""
|
|
12090 |
#: includes/settings/wcj-settings-multicurrency-base-price.php:35
|
12091 |
#: includes/settings/wcj-settings-multicurrency.php:36
|
12092 |
#: includes/settings/wcj-settings-payment-gateways-currency.php:87
|
12093 |
-
#: includes/settings/wcj-settings-price-by-country.php:
|
12094 |
msgid "Currency Exchange Rates module"
|
12095 |
msgstr ""
|
12096 |
|
@@ -12249,7 +12259,7 @@ msgstr ""
|
|
12249 |
msgid "System Info"
|
12250 |
msgstr ""
|
12251 |
|
12252 |
-
#: includes/settings/wcj-settings-debug-tools.php:
|
12253 |
msgid "Show extended info"
|
12254 |
msgstr ""
|
12255 |
|
@@ -12640,7 +12650,7 @@ msgid "Export Options"
|
|
12640 |
msgstr ""
|
12641 |
|
12642 |
#: includes/settings/wcj-settings-export.php:23
|
12643 |
-
#: includes/settings/wcj-settings-pdf-invoicing-advanced.php:
|
12644 |
msgid "CSV Separator"
|
12645 |
msgstr ""
|
12646 |
|
@@ -13072,7 +13082,7 @@ msgstr ""
|
|
13072 |
|
13073 |
#: includes/settings/wcj-settings-global-discount.php:114
|
13074 |
#: includes/settings/wcj-settings-multicurrency.php:84
|
13075 |
-
#: includes/settings/wcj-settings-price-by-country.php:
|
13076 |
#: includes/settings/wcj-settings-product-price-by-formula.php:79
|
13077 |
#: includes/shipping/class-wc-shipping-wcj-custom-with-shipping-zones.php:256
|
13078 |
msgid "Round"
|
@@ -13199,7 +13209,7 @@ msgstr ""
|
|
13199 |
#: includes/settings/wcj-settings-global-discount.php:231
|
13200 |
#: includes/settings/wcj-settings-multicurrency-base-price.php:80
|
13201 |
#: includes/settings/wcj-settings-multicurrency.php:259
|
13202 |
-
#: includes/settings/wcj-settings-price-by-country.php:
|
13203 |
#: includes/settings/wcj-settings-price-by-user-role.php:115
|
13204 |
#: includes/settings/wcj-settings-product-addons.php:279
|
13205 |
#: includes/settings/wcj-settings-product-price-by-formula.php:136
|
@@ -13209,7 +13219,7 @@ msgstr ""
|
|
13209 |
#: includes/settings/wcj-settings-global-discount.php:232
|
13210 |
#: includes/settings/wcj-settings-multicurrency-base-price.php:81
|
13211 |
#: includes/settings/wcj-settings-multicurrency.php:260
|
13212 |
-
#: includes/settings/wcj-settings-price-by-country.php:
|
13213 |
#: includes/settings/wcj-settings-price-by-user-role.php:116
|
13214 |
#: includes/settings/wcj-settings-product-addons.php:280
|
13215 |
#: includes/settings/wcj-settings-product-price-by-formula.php:137
|
@@ -13436,7 +13446,7 @@ msgstr ""
|
|
13436 |
|
13437 |
#: includes/settings/wcj-settings-multicurrency-base-price.php:72
|
13438 |
#: includes/settings/wcj-settings-multicurrency.php:274
|
13439 |
-
#: includes/settings/wcj-settings-price-by-country.php:
|
13440 |
#: includes/settings/wcj-settings-product-price-by-formula.php:143
|
13441 |
msgid "Save Calculated Products Prices"
|
13442 |
msgstr ""
|
@@ -13453,7 +13463,7 @@ msgstr ""
|
|
13453 |
#: includes/settings/wcj-settings-order-min-amount.php:119
|
13454 |
#: includes/settings/wcj-settings-order-numbers.php:143
|
13455 |
#: includes/settings/wcj-settings-payment-gateways-min-max.php:72
|
13456 |
-
#: includes/settings/wcj-settings-price-by-country.php:
|
13457 |
#: includes/settings/wcj-settings-price-by-user-role.php:135
|
13458 |
#: includes/settings/wcj-settings-product-msrp.php:116
|
13459 |
msgid "Compatibility"
|
@@ -13551,20 +13561,20 @@ msgid "If using exchange rates, choose rounding here."
|
|
13551 |
msgstr ""
|
13552 |
|
13553 |
#: includes/settings/wcj-settings-multicurrency.php:83
|
13554 |
-
#: includes/settings/wcj-settings-price-by-country.php:
|
13555 |
#: includes/shipping/class-wc-shipping-wcj-custom-with-shipping-zones.php:255
|
13556 |
msgid "No rounding"
|
13557 |
msgstr ""
|
13558 |
|
13559 |
#: includes/settings/wcj-settings-multicurrency.php:85
|
13560 |
-
#: includes/settings/wcj-settings-price-by-country.php:
|
13561 |
#: includes/settings/wcj-settings-product-price-by-formula.php:80
|
13562 |
#: includes/shipping/class-wc-shipping-wcj-custom-with-shipping-zones.php:257
|
13563 |
msgid "Round up"
|
13564 |
msgstr ""
|
13565 |
|
13566 |
#: includes/settings/wcj-settings-multicurrency.php:86
|
13567 |
-
#: includes/settings/wcj-settings-price-by-country.php:
|
13568 |
#: includes/settings/wcj-settings-product-price-by-formula.php:81
|
13569 |
#: includes/shipping/class-wc-shipping-wcj-custom-with-shipping-zones.php:258
|
13570 |
msgid "Round down"
|
@@ -13596,12 +13606,12 @@ msgid ""
|
|
13596 |
msgstr ""
|
13597 |
|
13598 |
#: includes/settings/wcj-settings-multicurrency.php:125
|
13599 |
-
#: includes/settings/wcj-settings-price-by-country.php:
|
13600 |
msgid "Free Shipping"
|
13601 |
msgstr ""
|
13602 |
|
13603 |
#: includes/settings/wcj-settings-multicurrency.php:128
|
13604 |
-
#: includes/settings/wcj-settings-price-by-country.php:
|
13605 |
msgid "Converts minimum amount from WooCommerce Free Shipping native method."
|
13606 |
msgstr ""
|
13607 |
|
@@ -13610,7 +13620,7 @@ msgid "WooCommerce Fixed Coupons"
|
|
13610 |
msgstr ""
|
13611 |
|
13612 |
#: includes/settings/wcj-settings-multicurrency.php:136
|
13613 |
-
#: includes/settings/wcj-settings-price-by-country.php:
|
13614 |
msgid ""
|
13615 |
"When a fixed coupon is used its value changes according to the current "
|
13616 |
"currency."
|
@@ -13750,7 +13760,7 @@ msgid ""
|
|
13750 |
msgstr ""
|
13751 |
|
13752 |
#: includes/settings/wcj-settings-multicurrency.php:275
|
13753 |
-
#: includes/settings/wcj-settings-price-by-country.php:
|
13754 |
#: includes/settings/wcj-settings-product-price-by-formula.php:144
|
13755 |
msgid ""
|
13756 |
"This may help if you are experiencing compatibility issues with other plugins."
|
@@ -15593,69 +15603,69 @@ msgstr ""
|
|
15593 |
msgid "Fonts Manager"
|
15594 |
msgstr ""
|
15595 |
|
15596 |
-
#: includes/settings/wcj-settings-pdf-invoicing-advanced.php:
|
15597 |
msgid "Re-download"
|
15598 |
msgstr ""
|
15599 |
|
15600 |
-
#: includes/settings/wcj-settings-pdf-invoicing-advanced.php:
|
15601 |
msgid "Download"
|
15602 |
msgstr ""
|
15603 |
|
15604 |
-
#: includes/settings/wcj-settings-pdf-invoicing-advanced.php:
|
15605 |
msgid "Disable Fonts Download"
|
15606 |
msgstr ""
|
15607 |
|
15608 |
-
#: includes/settings/wcj-settings-pdf-invoicing-advanced.php:
|
15609 |
msgid "General Display Options"
|
15610 |
msgstr ""
|
15611 |
|
15612 |
-
#: includes/settings/wcj-settings-pdf-invoicing-advanced.php:
|
15613 |
msgid "Add PDF Invoices Meta Box to Admin Edit Order Page"
|
15614 |
msgstr ""
|
15615 |
|
15616 |
-
#: includes/settings/wcj-settings-pdf-invoicing-advanced.php:
|
15617 |
msgid "Open docs in new window"
|
15618 |
msgstr ""
|
15619 |
|
15620 |
-
#: includes/settings/wcj-settings-pdf-invoicing-advanced.php:
|
15621 |
msgid "Add editable numbers and dates"
|
15622 |
msgstr ""
|
15623 |
|
15624 |
-
#: includes/settings/wcj-settings-pdf-invoicing-advanced.php:
|
15625 |
msgid "Report Tool Options"
|
15626 |
msgstr ""
|
15627 |
|
15628 |
-
#: includes/settings/wcj-settings-pdf-invoicing-advanced.php:
|
15629 |
msgid "Reports Filename"
|
15630 |
msgstr ""
|
15631 |
|
15632 |
-
#: includes/settings/wcj-settings-pdf-invoicing-advanced.php:
|
15633 |
msgid "Report Columns"
|
15634 |
msgstr ""
|
15635 |
|
15636 |
-
#: includes/settings/wcj-settings-pdf-invoicing-advanced.php:
|
15637 |
msgid "Leave blank to show all columns."
|
15638 |
msgstr ""
|
15639 |
|
15640 |
-
#: includes/settings/wcj-settings-pdf-invoicing-advanced.php:
|
15641 |
msgid "Tax Percent Precision"
|
15642 |
msgstr ""
|
15643 |
|
15644 |
-
#: includes/settings/wcj-settings-pdf-invoicing-advanced.php:
|
15645 |
msgid "CSV UTF-8 BOM"
|
15646 |
msgstr ""
|
15647 |
|
15648 |
-
#: includes/settings/wcj-settings-pdf-invoicing-advanced.php:
|
15649 |
msgid "Replace Periods with Commas in CSV Data"
|
15650 |
msgstr ""
|
15651 |
|
15652 |
-
#: includes/settings/wcj-settings-pdf-invoicing-advanced.php:
|
15653 |
#: includes/settings/wcj-settings-product-open-pricing.php:183
|
15654 |
msgid "Replace"
|
15655 |
msgstr ""
|
15656 |
|
15657 |
#: includes/settings/wcj-settings-pdf-invoicing-display.php:30
|
15658 |
-
#: includes/settings/wcj-settings-price-by-country.php:
|
15659 |
#: includes/settings/wcj-settings-shipping.php:34
|
15660 |
msgid "Admin Title"
|
15661 |
msgstr ""
|
@@ -15998,99 +16008,99 @@ msgstr ""
|
|
15998 |
msgid "Available in Booster Plus only."
|
15999 |
msgstr ""
|
16000 |
|
16001 |
-
#: includes/settings/wcj-settings-price-by-country.php:
|
16002 |
msgid ""
|
16003 |
"All existing country groups will be deleted and new groups will be created. "
|
16004 |
"Are you sure?"
|
16005 |
msgstr ""
|
16006 |
|
16007 |
-
#: includes/settings/wcj-settings-price-by-country.php:
|
16008 |
msgid "Price by Country Options"
|
16009 |
msgstr ""
|
16010 |
|
16011 |
-
#: includes/settings/wcj-settings-price-by-country.php:
|
16012 |
msgid ""
|
16013 |
"Change product's price and currency by customer's country. Customer's country "
|
16014 |
"is detected automatically by IP, or selected by customer manually."
|
16015 |
msgstr ""
|
16016 |
|
16017 |
-
#: includes/settings/wcj-settings-price-by-country.php:
|
16018 |
msgid "Customer Country Detection Method"
|
16019 |
msgstr ""
|
16020 |
|
16021 |
-
#: includes/settings/wcj-settings-price-by-country.php:
|
16022 |
msgid ""
|
16023 |
"If you choose \"by user selection\", use [wcj_country_select_drop_down_list] "
|
16024 |
"shortcode to display country selection list on frontend."
|
16025 |
msgstr ""
|
16026 |
|
16027 |
-
#: includes/settings/wcj-settings-price-by-country.php:
|
16028 |
msgid "by IP"
|
16029 |
msgstr ""
|
16030 |
|
16031 |
-
#: includes/settings/wcj-settings-price-by-country.php:
|
16032 |
msgid "by IP, then by user selection"
|
16033 |
msgstr ""
|
16034 |
|
16035 |
-
#: includes/settings/wcj-settings-price-by-country.php:
|
16036 |
msgid "by user selection"
|
16037 |
msgstr ""
|
16038 |
|
16039 |
-
#: includes/settings/wcj-settings-price-by-country.php:
|
16040 |
msgid "Override Country Options"
|
16041 |
msgstr ""
|
16042 |
|
16043 |
-
#: includes/settings/wcj-settings-price-by-country.php:
|
16044 |
msgid "No Override"
|
16045 |
msgstr ""
|
16046 |
|
16047 |
-
#: includes/settings/wcj-settings-price-by-country.php:
|
16048 |
msgid "Override Country with Customer's Checkout Billing Country"
|
16049 |
msgstr ""
|
16050 |
|
16051 |
-
#: includes/settings/wcj-settings-price-by-country.php:
|
16052 |
msgid "Override Country with Customer's Checkout Shipping Country"
|
16053 |
msgstr ""
|
16054 |
|
16055 |
-
#: includes/settings/wcj-settings-price-by-country.php:
|
16056 |
msgid "Override Scope"
|
16057 |
msgstr ""
|
16058 |
|
16059 |
-
#: includes/settings/wcj-settings-price-by-country.php:
|
16060 |
msgid "All site"
|
16061 |
msgstr ""
|
16062 |
|
16063 |
-
#: includes/settings/wcj-settings-price-by-country.php:
|
16064 |
msgid "Checkout only"
|
16065 |
msgstr ""
|
16066 |
|
16067 |
-
#: includes/settings/wcj-settings-price-by-country.php:
|
16068 |
msgid "Revert Currency to Default on Checkout"
|
16069 |
msgstr ""
|
16070 |
|
16071 |
-
#: includes/settings/wcj-settings-price-by-country.php:
|
16072 |
msgid ""
|
16073 |
"If selected currency is € and your shop currency is $, So if you "
|
16074 |
"want to show $ on the checkout page you can enable the option."
|
16075 |
msgstr ""
|
16076 |
|
16077 |
-
#: includes/settings/wcj-settings-price-by-country.php:
|
16078 |
msgid "Auto set default checkout billing country"
|
16079 |
msgstr ""
|
16080 |
|
16081 |
-
#: includes/settings/wcj-settings-price-by-country.php:
|
16082 |
msgid "Price Rounding"
|
16083 |
msgstr ""
|
16084 |
|
16085 |
-
#: includes/settings/wcj-settings-price-by-country.php:
|
16086 |
msgid "If you choose to multiply price, set rounding options here."
|
16087 |
msgstr ""
|
16088 |
|
16089 |
-
#: includes/settings/wcj-settings-price-by-country.php:
|
16090 |
msgid "Make Pretty Price"
|
16091 |
msgstr ""
|
16092 |
|
16093 |
-
#: includes/settings/wcj-settings-price-by-country.php:
|
16094 |
msgid ""
|
16095 |
"If enabled, this will be applied if exchange rates are used. Final converted "
|
16096 |
"price will be rounded, then decreased by smallest possible value. For "
|
@@ -16099,211 +16109,211 @@ msgid ""
|
|
16099 |
"above zero."
|
16100 |
msgstr ""
|
16101 |
|
16102 |
-
#: includes/settings/wcj-settings-price-by-country.php:
|
16103 |
msgid "Discount Min Amount Multiplier"
|
16104 |
msgstr ""
|
16105 |
|
16106 |
-
#: includes/settings/wcj-settings-price-by-country.php:
|
16107 |
msgid ""
|
16108 |
"If \"Make Pretty Price\" is enabled, here you can set by how many smallest "
|
16109 |
"possible values (e.g. cents) final price should be decreased."
|
16110 |
msgstr ""
|
16111 |
|
16112 |
-
#: includes/settings/wcj-settings-price-by-country.php:
|
16113 |
msgid "Price by Country on per Product Basis"
|
16114 |
msgstr ""
|
16115 |
|
16116 |
-
#: includes/settings/wcj-settings-price-by-country.php:
|
16117 |
msgid "This will add product data fields in product edit."
|
16118 |
msgstr ""
|
16119 |
|
16120 |
-
#: includes/settings/wcj-settings-price-by-country.php:
|
16121 |
msgid "Per product options - backend style"
|
16122 |
msgstr ""
|
16123 |
|
16124 |
-
#: includes/settings/wcj-settings-price-by-country.php:
|
16125 |
#: includes/settings/wcj-settings-product-msrp.php:107
|
16126 |
msgid "Inline"
|
16127 |
msgstr ""
|
16128 |
|
16129 |
-
#: includes/settings/wcj-settings-price-by-country.php:
|
16130 |
msgid "Separate meta box"
|
16131 |
msgstr ""
|
16132 |
|
16133 |
-
#: includes/settings/wcj-settings-price-by-country.php:
|
16134 |
msgid "Per product options - backend user role visibility"
|
16135 |
msgstr ""
|
16136 |
|
16137 |
-
#: includes/settings/wcj-settings-price-by-country.php:
|
16138 |
msgid "Leave empty to show to all user roles."
|
16139 |
msgstr ""
|
16140 |
|
16141 |
-
#: includes/settings/wcj-settings-price-by-country.php:
|
16142 |
msgid "Add Countries Flags Images to Select Drop-Down Box"
|
16143 |
msgstr ""
|
16144 |
|
16145 |
-
#: includes/settings/wcj-settings-price-by-country.php:
|
16146 |
msgid ""
|
16147 |
"If you are using [wcj_country_select_drop_down_list] shortcode or \"Booster: "
|
16148 |
"Country Switcher\" widget, this will add country flags to these select boxes."
|
16149 |
msgstr ""
|
16150 |
|
16151 |
-
#: includes/settings/wcj-settings-price-by-country.php:
|
16152 |
#: includes/settings/wcj-settings-price-by-user-role.php:65
|
16153 |
msgid "Search Engine Bots"
|
16154 |
msgstr ""
|
16155 |
|
16156 |
-
#: includes/settings/wcj-settings-price-by-country.php:
|
16157 |
msgid "Disable Price by Country for Bots"
|
16158 |
msgstr ""
|
16159 |
|
16160 |
-
#: includes/settings/wcj-settings-price-by-country.php:
|
16161 |
msgid "Active Webtofee subscription Section"
|
16162 |
msgstr ""
|
16163 |
|
16164 |
-
#: includes/settings/wcj-settings-price-by-country.php:
|
16165 |
msgid "Compatibility with Webtofee subscription PLugin"
|
16166 |
msgstr ""
|
16167 |
|
16168 |
-
#: includes/settings/wcj-settings-price-by-country.php:
|
16169 |
-
#: includes/settings/wcj-settings-price-by-country.php:
|
16170 |
msgid "Active B2B Plugin Price Section"
|
16171 |
msgstr ""
|
16172 |
|
16173 |
-
#: includes/settings/wcj-settings-price-by-country.php:
|
16174 |
#: includes/settings/wcj-settings-product-price-by-formula.php:117
|
16175 |
msgid "Disable Quick Edit Product For Admin Scope"
|
16176 |
msgstr ""
|
16177 |
|
16178 |
-
#: includes/settings/wcj-settings-price-by-country.php:
|
16179 |
#: includes/settings/wcj-settings-product-price-by-formula.php:118
|
16180 |
msgid "Disable For Admin Quick Edit Scope."
|
16181 |
msgstr ""
|
16182 |
|
16183 |
-
#: includes/settings/wcj-settings-price-by-country.php:
|
16184 |
msgid "Disable module on Edit Product For Admin scope."
|
16185 |
msgstr ""
|
16186 |
|
16187 |
-
#: includes/settings/wcj-settings-price-by-country.php:
|
16188 |
#: includes/settings/wcj-settings-product-price-by-formula.php:119
|
16189 |
msgid ""
|
16190 |
"For example if you use Quick Edit Product and donot want change the deafult "
|
16191 |
"price then the box ticked"
|
16192 |
msgstr ""
|
16193 |
|
16194 |
-
#: includes/settings/wcj-settings-price-by-country.php:
|
16195 |
msgid "Price Filter Widget and Sorting by Price Support"
|
16196 |
msgstr ""
|
16197 |
|
16198 |
-
#: includes/settings/wcj-settings-price-by-country.php:
|
16199 |
msgid "Recalculate price filter widget and sorting by price product prices."
|
16200 |
msgstr ""
|
16201 |
|
16202 |
-
#: includes/settings/wcj-settings-price-by-country.php:
|
16203 |
msgid "WooCommerce Coupons"
|
16204 |
msgstr ""
|
16205 |
|
16206 |
-
#: includes/settings/wcj-settings-price-by-country.php:
|
16207 |
msgid "Woo Discount Rules"
|
16208 |
msgstr ""
|
16209 |
|
16210 |
-
#: includes/settings/wcj-settings-price-by-country.php:
|
16211 |
#, php-format
|
16212 |
msgid ""
|
16213 |
"Adds compatibility with <a href=\"%s\" target=\"_blank\">Woo Discount Rules</"
|
16214 |
"a> plugin."
|
16215 |
msgstr ""
|
16216 |
|
16217 |
-
#: includes/settings/wcj-settings-price-by-country.php:
|
16218 |
#, php-format
|
16219 |
msgid ""
|
16220 |
"If it doesn't work properly try to enable <a href=\"%s\">redirect to the cart "
|
16221 |
"page after successful addition</a> option."
|
16222 |
msgstr ""
|
16223 |
|
16224 |
-
#: includes/settings/wcj-settings-price-by-country.php:
|
16225 |
msgid "WooCommerce Points and Rewards"
|
16226 |
msgstr ""
|
16227 |
|
16228 |
-
#: includes/settings/wcj-settings-price-by-country.php:
|
16229 |
#, php-format
|
16230 |
msgid ""
|
16231 |
"Adds compatibility with <a href=\"%s\" target=\"_blank\">WooCommerce Points "
|
16232 |
"and Rewards</a> plugin."
|
16233 |
msgstr ""
|
16234 |
|
16235 |
-
#: includes/settings/wcj-settings-price-by-country.php:
|
16236 |
msgid "User IP Detection Method"
|
16237 |
msgstr ""
|
16238 |
|
16239 |
-
#: includes/settings/wcj-settings-price-by-country.php:
|
16240 |
msgid "Price Format Method"
|
16241 |
msgstr ""
|
16242 |
|
16243 |
-
#: includes/settings/wcj-settings-price-by-country.php:
|
16244 |
msgid "The moment \"Pretty Price\" and \"Rounding\" will be applied"
|
16245 |
msgstr ""
|
16246 |
|
16247 |
-
#: includes/settings/wcj-settings-price-by-country.php:
|
16248 |
msgid "get_price()"
|
16249 |
msgstr ""
|
16250 |
|
16251 |
-
#: includes/settings/wcj-settings-price-by-country.php:
|
16252 |
msgid "wc_get_price_to_display()"
|
16253 |
msgstr ""
|
16254 |
|
16255 |
-
#: includes/settings/wcj-settings-price-by-country.php:
|
16256 |
msgid "Save Country Group ID"
|
16257 |
msgstr ""
|
16258 |
|
16259 |
-
#: includes/settings/wcj-settings-price-by-country.php:
|
16260 |
msgid ""
|
16261 |
"Try to disable it if the country detection is not correct, most probably if "
|
16262 |
"\"Override Country Options\" is enabled."
|
16263 |
msgstr ""
|
16264 |
|
16265 |
-
#: includes/settings/wcj-settings-price-by-country.php:
|
16266 |
msgid "Country Groups"
|
16267 |
msgstr ""
|
16268 |
|
16269 |
-
#: includes/settings/wcj-settings-price-by-country.php:
|
16270 |
msgid "Countries Selection"
|
16271 |
msgstr ""
|
16272 |
|
16273 |
-
#: includes/settings/wcj-settings-price-by-country.php:
|
16274 |
msgid "Choose how do you want to enter countries groups in admin."
|
16275 |
msgstr ""
|
16276 |
|
16277 |
-
#: includes/settings/wcj-settings-price-by-country.php:
|
16278 |
msgid "Comma separated list"
|
16279 |
msgstr ""
|
16280 |
|
16281 |
-
#: includes/settings/wcj-settings-price-by-country.php:
|
16282 |
msgid "Multiselect"
|
16283 |
msgstr ""
|
16284 |
|
16285 |
-
#: includes/settings/wcj-settings-price-by-country.php:
|
16286 |
#: includes/settings/wcj-settings-product-by-condition.php:90
|
16287 |
#: includes/settings/wcj-settings-related-products.php:181
|
16288 |
msgid "Chosen select"
|
16289 |
msgstr ""
|
16290 |
|
16291 |
-
#: includes/settings/wcj-settings-price-by-country.php:
|
16292 |
msgid "Autogenerate Groups"
|
16293 |
msgstr ""
|
16294 |
|
16295 |
-
#: includes/settings/wcj-settings-price-by-country.php:
|
16296 |
msgid "Groups Number"
|
16297 |
msgstr ""
|
16298 |
|
16299 |
-
#: includes/settings/wcj-settings-price-by-country.php:
|
16300 |
msgid ""
|
16301 |
"Countries. List of comma separated country codes.<br>For country codes and "
|
16302 |
"predefined sets visit <a href=\"https://booster.io/country-codes/\" target="
|
16303 |
"\"_blank\">https://booster.io/country-codes/</a>"
|
16304 |
msgstr ""
|
16305 |
|
16306 |
-
#: includes/settings/wcj-settings-price-by-country.php:
|
16307 |
msgid "Multiply Price by"
|
16308 |
msgstr ""
|
16309 |
|
@@ -17334,7 +17344,7 @@ msgstr ""
|
|
17334 |
|
17335 |
#: includes/settings/wcj-settings-product-by-user.php:18
|
17336 |
#: includes/shortcodes/class-wcj-products-add-form-shortcodes.php:192
|
17337 |
-
#: includes/shortcodes/class-wcj-products-add-form-shortcodes.php:
|
17338 |
msgid "Image"
|
17339 |
msgstr ""
|
17340 |
|
@@ -17383,7 +17393,7 @@ msgid "Message: Product Successfully Added"
|
|
17383 |
msgstr ""
|
17384 |
|
17385 |
#: includes/settings/wcj-settings-product-by-user.php:130
|
17386 |
-
#: includes/shortcodes/class-wcj-products-add-form-shortcodes.php:
|
17387 |
msgid "\"%product_title%\" successfully added!"
|
17388 |
msgstr ""
|
17389 |
|
@@ -17392,7 +17402,7 @@ msgid "Message: Product Successfully Edited"
|
|
17392 |
msgstr ""
|
17393 |
|
17394 |
#: includes/settings/wcj-settings-product-by-user.php:137
|
17395 |
-
#: includes/shortcodes/class-wcj-products-add-form-shortcodes.php:
|
17396 |
msgid "\"%product_title%\" successfully edited!"
|
17397 |
msgstr ""
|
17398 |
|
@@ -20611,7 +20621,7 @@ msgstr ""
|
|
20611 |
msgid "Attribute \"name\" is required!"
|
20612 |
msgstr ""
|
20613 |
|
20614 |
-
#: includes/shortcodes/class-wcj-orders-shortcodes.php:
|
20615 |
#, php-format
|
20616 |
msgid "Refund #%1$s - %2$s"
|
20617 |
msgstr ""
|
@@ -20629,7 +20639,7 @@ msgid "Product exists!"
|
|
20629 |
msgstr ""
|
20630 |
|
20631 |
#: includes/shortcodes/class-wcj-products-add-form-shortcodes.php:195
|
20632 |
-
#: includes/shortcodes/class-wcj-products-add-form-shortcodes.php:
|
20633 |
msgid "Product URL"
|
20634 |
msgstr ""
|
20635 |
|
@@ -20642,15 +20652,15 @@ msgstr ""
|
|
20642 |
msgid "Sale price must be less than the regular price!"
|
20643 |
msgstr ""
|
20644 |
|
20645 |
-
#: includes/shortcodes/class-wcj-products-add-form-shortcodes.php:
|
20646 |
msgid "Error!"
|
20647 |
msgstr ""
|
20648 |
|
20649 |
-
#: includes/shortcodes/class-wcj-products-add-form-shortcodes.php:
|
20650 |
msgid "Add New Product"
|
20651 |
msgstr ""
|
20652 |
|
20653 |
-
#: includes/shortcodes/class-wcj-products-add-form-shortcodes.php:
|
20654 |
msgid "Edit Product"
|
20655 |
msgstr ""
|
20656 |
|
@@ -20675,12 +20685,12 @@ msgstr ""
|
|
20675 |
msgid "This product is currently out of stock and unavailable."
|
20676 |
msgstr ""
|
20677 |
|
20678 |
-
#: includes/tools/class-wcj-eu-countries-vat-rates-tool.php:
|
20679 |
-
#: includes/tools/class-wcj-eu-countries-vat-rates-tool.php:
|
20680 |
msgid "VAT"
|
20681 |
msgstr ""
|
20682 |
|
20683 |
-
#: includes/tools/class-wcj-eu-countries-vat-rates-tool.php:
|
20684 |
msgid "Add EU Countries VAT Rates"
|
20685 |
msgstr ""
|
20686 |
|
@@ -20688,16 +20698,16 @@ msgstr ""
|
|
20688 |
msgid "Note: will add duplicates."
|
20689 |
msgstr ""
|
20690 |
|
20691 |
-
#: includes/tools/class-wcj-eu-countries-vat-rates-tool.php:
|
20692 |
msgid "List of EU VAT rates to be added"
|
20693 |
msgstr ""
|
20694 |
|
20695 |
-
#: includes/tools/class-wcj-eu-countries-vat-rates-tool.php:
|
20696 |
-
#: includes/tools/class-wcj-eu-countries-vat-rates-tool.php:
|
20697 |
msgid "Rate"
|
20698 |
msgstr ""
|
20699 |
|
20700 |
-
#: includes/tools/class-wcj-eu-countries-vat-rates-tool.php:
|
20701 |
msgid "Current standard tax rates"
|
20702 |
msgstr ""
|
20703 |
|
@@ -20879,33 +20889,17 @@ msgstr ""
|
|
20879 |
msgid "Product custom visibility"
|
20880 |
msgstr ""
|
20881 |
|
20882 |
-
#: tracking/class-
|
20883 |
-
msgid "Example Settings"
|
20884 |
-
msgstr ""
|
20885 |
-
|
20886 |
-
#: tracking/class-example-settings.php:77
|
20887 |
-
msgid "Text field:"
|
20888 |
-
msgstr ""
|
20889 |
-
|
20890 |
-
#: tracking/class-example-settings.php:98
|
20891 |
-
msgid "Opt out"
|
20892 |
-
msgstr ""
|
20893 |
-
|
20894 |
-
#: tracking/class-example-settings.php:118
|
20895 |
-
msgid "Default setting"
|
20896 |
-
msgstr ""
|
20897 |
-
|
20898 |
-
#: tracking/class-plugin-usage-tracker.php:161
|
20899 |
msgid "Once Monthly"
|
20900 |
msgstr ""
|
20901 |
|
20902 |
-
#: tracking/class-plugin-usage-tracker.php:
|
20903 |
msgid ""
|
20904 |
"We can't detect any product information. This is most probably because you "
|
20905 |
"have not included the code snippet."
|
20906 |
msgstr ""
|
20907 |
|
20908 |
-
#: tracking/class-plugin-usage-tracker.php:
|
20909 |
#, php-format
|
20910 |
msgid ""
|
20911 |
"Thank you for installing our %1$s. We would like to track its usage on your "
|
@@ -20914,7 +20908,7 @@ msgid ""
|
|
20914 |
"improvements to the %1$s. Tracking is completely optional."
|
20915 |
msgstr ""
|
20916 |
|
20917 |
-
#: tracking/class-plugin-usage-tracker.php:
|
20918 |
#, php-format
|
20919 |
msgid ""
|
20920 |
"Thank you for installing our %1$s. We'd like your permission to track its "
|
@@ -20923,79 +20917,79 @@ msgid ""
|
|
20923 |
"help us make improvements to the %1$s. Tracking is completely optional."
|
20924 |
msgstr ""
|
20925 |
|
20926 |
-
#: tracking/class-plugin-usage-tracker.php:
|
20927 |
msgid "Allow"
|
20928 |
msgstr ""
|
20929 |
|
20930 |
-
#: tracking/class-plugin-usage-tracker.php:
|
20931 |
msgid "Do Not Allow"
|
20932 |
msgstr ""
|
20933 |
|
20934 |
-
#: tracking/class-plugin-usage-tracker.php:
|
20935 |
#, php-format
|
20936 |
msgid ""
|
20937 |
"Thank you for opting in to tracking. Would you like to receive occasional "
|
20938 |
"news about this %s, including details of new features and special offers?"
|
20939 |
msgstr ""
|
20940 |
|
20941 |
-
#: tracking/class-plugin-usage-tracker.php:
|
20942 |
msgid "Yes Please"
|
20943 |
msgstr ""
|
20944 |
|
20945 |
-
#: tracking/class-plugin-usage-tracker.php:
|
20946 |
msgid "No Thank You"
|
20947 |
msgstr ""
|
20948 |
|
20949 |
-
#: tracking/class-plugin-usage-tracker.php:
|
20950 |
msgid "Sorry to see you go"
|
20951 |
msgstr ""
|
20952 |
|
20953 |
-
#: tracking/class-plugin-usage-tracker.php:
|
20954 |
msgid ""
|
20955 |
"Before you deactivate the plugin, would you quickly give us your reason for "
|
20956 |
"doing so?"
|
20957 |
msgstr ""
|
20958 |
|
20959 |
-
#: tracking/class-plugin-usage-tracker.php:
|
20960 |
msgid "Set up is too difficult"
|
20961 |
msgstr ""
|
20962 |
|
20963 |
-
#: tracking/class-plugin-usage-tracker.php:
|
20964 |
msgid "Lack of documentation"
|
20965 |
msgstr ""
|
20966 |
|
20967 |
-
#: tracking/class-plugin-usage-tracker.php:
|
20968 |
msgid "Not the features I wanted"
|
20969 |
msgstr ""
|
20970 |
|
20971 |
-
#: tracking/class-plugin-usage-tracker.php:
|
20972 |
msgid "Found a better plugin"
|
20973 |
msgstr ""
|
20974 |
|
20975 |
-
#: tracking/class-plugin-usage-tracker.php:
|
20976 |
msgid "Installed by mistake"
|
20977 |
msgstr ""
|
20978 |
|
20979 |
-
#: tracking/class-plugin-usage-tracker.php:
|
20980 |
msgid "Only required temporarily"
|
20981 |
msgstr ""
|
20982 |
|
20983 |
-
#: tracking/class-plugin-usage-tracker.php:
|
20984 |
msgid "Didn't work"
|
20985 |
msgstr ""
|
20986 |
|
20987 |
-
#: tracking/class-plugin-usage-tracker.php:
|
20988 |
msgid "Details (optional)"
|
20989 |
msgstr ""
|
20990 |
|
20991 |
-
#: tracking/class-plugin-usage-tracker.php:
|
20992 |
msgid "Submitting form"
|
20993 |
msgstr ""
|
20994 |
|
20995 |
-
#: tracking/class-plugin-usage-tracker.php:
|
20996 |
msgid "Submit and Deactivate"
|
20997 |
msgstr ""
|
20998 |
|
20999 |
-
#: tracking/class-plugin-usage-tracker.php:
|
21000 |
msgid "Just Deactivate"
|
21001 |
msgstr ""
|
34 |
msgstr ""
|
35 |
|
36 |
#: includes/admin/class-wc-settings-jetpack.php:33
|
37 |
+
#: includes/admin/class-wc-settings-jetpack.php:414
|
38 |
#: includes/class-wcj-admin-bar.php:299
|
39 |
#: includes/class-wcj-checkout-files-upload.php:273
|
40 |
+
#: includes/class-wcj-eu-vat-number.php:176
|
41 |
+
#: includes/class-wcj-max-products-per-user.php:219
|
42 |
#: includes/class-wcj-orders.php:133 includes/class-wcj-orders.php:170
|
43 |
+
#: includes/class-wcj-payment-gateways.php:103
|
44 |
+
#: includes/class-wcj-track-users.php:175 includes/class-wcj-track-users.php:266
|
45 |
+
#: includes/classes/class-wcj-module.php:676
|
46 |
+
#: includes/classes/class-wcj-module.php:885
|
47 |
+
#: includes/settings/wcj-settings-price-by-country.php:275
|
48 |
msgid "Booster"
|
49 |
msgstr ""
|
50 |
|
51 |
+
#: includes/admin/class-wc-settings-jetpack.php:108
|
52 |
#, php-format
|
53 |
msgid ""
|
54 |
"You're using Booster free version. To unlock more features please consider <a "
|
55 |
"target=\"_blank\" href=\"%s\">Upgrade Booster to unlock this feature</a>."
|
56 |
msgstr ""
|
57 |
|
58 |
+
#: includes/admin/class-wc-settings-jetpack.php:133
|
59 |
#, php-format
|
60 |
msgid ""
|
61 |
"Please rate <strong>Booster for WooCommerce</strong> %1$s on <a href=\"%2$s\" "
|
63 |
"from Booster team!"
|
64 |
msgstr ""
|
65 |
|
66 |
+
#: includes/admin/class-wc-settings-jetpack.php:192
|
67 |
#, php-format
|
68 |
msgid ""
|
69 |
"Please rate <strong>Booster for WooCommerce</strong> %1$s on <a href=\"%2$s"
|
71 |
"from Booster team!"
|
72 |
msgstr ""
|
73 |
|
74 |
+
#: includes/admin/class-wc-settings-jetpack.php:267
|
75 |
+
#: includes/admin/class-wc-settings-jetpack.php:333
|
76 |
+
#: includes/admin/class-wc-settings-jetpack.php:942
|
77 |
#: includes/admin/wcj-modules-cats.php:17 includes/class-wcj-admin-bar.php:234
|
78 |
#: includes/class-wcj-my-account.php:39
|
79 |
msgid "Dashboard"
|
80 |
msgstr ""
|
81 |
|
82 |
+
#: includes/admin/class-wc-settings-jetpack.php:268
|
83 |
msgid "All Module"
|
84 |
msgstr ""
|
85 |
|
86 |
+
#: includes/admin/class-wc-settings-jetpack.php:269
|
87 |
msgid "Active Modules"
|
88 |
msgstr ""
|
89 |
|
90 |
+
#: includes/admin/class-wc-settings-jetpack.php:270
|
91 |
#: includes/class-wcj-admin-bar.php:167
|
92 |
msgid "Manage Settings"
|
93 |
msgstr ""
|
94 |
|
95 |
+
#: includes/admin/class-wc-settings-jetpack.php:381
|
96 |
#, php-format
|
97 |
msgid ""
|
98 |
"Please note that current <em>%1$s</em> module is deprecated and will be "
|
99 |
"removed in future updates. Please use <em>%2$s</em> module instead."
|
100 |
msgstr ""
|
101 |
|
102 |
+
#: includes/admin/class-wc-settings-jetpack.php:387
|
103 |
msgid "Module will be removed from the module's list as soon as you disable it."
|
104 |
msgstr ""
|
105 |
|
106 |
+
#: includes/admin/class-wc-settings-jetpack.php:399
|
107 |
#, php-format
|
108 |
msgid ""
|
109 |
"Please note that <em>%s</em> module is currently under development. Until "
|
111 |
"be moved to paid plugin version."
|
112 |
msgstr ""
|
113 |
|
114 |
+
#: includes/admin/class-wc-settings-jetpack.php:410
|
115 |
#: includes/class-wcj-admin-bar.php:411
|
116 |
#: includes/settings/wcj-settings-emails-verification.php:152
|
117 |
+
#: includes/settings/wcj-settings-price-by-country.php:274
|
118 |
msgid "WooCommerce"
|
119 |
msgstr ""
|
120 |
|
121 |
+
#: includes/admin/class-wc-settings-jetpack.php:412
|
122 |
+
#: includes/admin/class-wc-settings-jetpack.php:640
|
123 |
#: includes/class-wcj-admin-bar.php:184 includes/class-wcj-admin-bar.php:535
|
124 |
#: includes/class-wcj-admin-bar.php:635 includes/core/class-wcj-admin.php:140
|
125 |
msgid "Settings"
|
126 |
msgstr ""
|
127 |
|
128 |
+
#: includes/admin/class-wc-settings-jetpack.php:466
|
129 |
msgid ""
|
130 |
"This section lets you export, import or reset all Booster's modules settings."
|
131 |
msgstr ""
|
132 |
|
133 |
+
#: includes/admin/class-wc-settings-jetpack.php:494
|
134 |
+
#: includes/admin/class-wc-settings-jetpack.php:1060
|
135 |
#: includes/class-wcj-export-import.php:31
|
136 |
msgid "Export"
|
137 |
msgstr ""
|
138 |
|
139 |
+
#: includes/admin/class-wc-settings-jetpack.php:495
|
140 |
msgid "Export all Booster's options to a file."
|
141 |
msgstr ""
|
142 |
|
143 |
+
#: includes/admin/class-wc-settings-jetpack.php:498
|
144 |
+
#: includes/admin/class-wc-settings-jetpack.php:1051
|
145 |
+
#: includes/class-wcj-purchase-data.php:121
|
146 |
msgid "Import"
|
147 |
msgstr ""
|
148 |
|
149 |
+
#: includes/admin/class-wc-settings-jetpack.php:500
|
150 |
msgid "Import all Booster's options from a file."
|
151 |
msgstr ""
|
152 |
|
153 |
+
#: includes/admin/class-wc-settings-jetpack.php:504
|
154 |
msgid ""
|
155 |
"This will reset settings to defaults for all Booster modules. Are you sure?"
|
156 |
msgstr ""
|
157 |
|
158 |
+
#: includes/admin/class-wc-settings-jetpack.php:505
|
159 |
+
#: includes/admin/class-wc-settings-jetpack.php:1071
|
160 |
msgid "Reset"
|
161 |
msgstr ""
|
162 |
|
163 |
+
#: includes/admin/class-wc-settings-jetpack.php:506
|
164 |
msgid "Reset all Booster's options."
|
165 |
msgstr ""
|
166 |
|
167 |
+
#: includes/admin/class-wc-settings-jetpack.php:510
|
168 |
msgid "This will delete all Booster meta. Are you sure?"
|
169 |
msgstr ""
|
170 |
|
171 |
+
#: includes/admin/class-wc-settings-jetpack.php:511
|
172 |
+
#: includes/admin/class-wc-settings-jetpack.php:1080
|
173 |
msgid "Reset meta"
|
174 |
msgstr ""
|
175 |
|
176 |
+
#: includes/admin/class-wc-settings-jetpack.php:512
|
177 |
msgid "Reset all Booster's meta."
|
178 |
msgstr ""
|
179 |
|
180 |
+
#: includes/admin/class-wc-settings-jetpack.php:565
|
181 |
msgid "Version"
|
182 |
msgstr ""
|
183 |
|
184 |
+
#: includes/admin/class-wc-settings-jetpack.php:592
|
185 |
+
#: includes/admin/class-wc-settings-jetpack.php:601
|
186 |
msgid "Select All"
|
187 |
msgstr ""
|
188 |
|
189 |
+
#: includes/admin/class-wc-settings-jetpack.php:594
|
190 |
+
#: includes/admin/class-wc-settings-jetpack.php:602
|
191 |
msgid "Module"
|
192 |
msgstr ""
|
193 |
|
194 |
+
#: includes/admin/class-wc-settings-jetpack.php:596
|
195 |
+
#: includes/admin/class-wc-settings-jetpack.php:605
|
196 |
#: includes/export/class-wcj-export-fields-helper.php:297
|
197 |
+
#: includes/gateways/class-wc-gateway-wcj-custom-template.php:67
|
198 |
#: includes/settings/wcj-settings-checkout-custom-fields.php:181
|
199 |
#: includes/settings/wcj-settings-eu-vat-number.php:37
|
200 |
#: includes/settings/wcj-settings-product-by-user.php:16
|
201 |
#: includes/shortcodes/class-wcj-products-add-form-shortcodes.php:190
|
202 |
+
#: includes/shortcodes/class-wcj-products-add-form-shortcodes.php:369
|
203 |
msgid "Description"
|
204 |
msgstr ""
|
205 |
|
206 |
+
#: includes/admin/class-wc-settings-jetpack.php:642
|
207 |
+
#: includes/admin/class-wc-settings-jetpack.php:1089
|
208 |
#: includes/class-wcj-admin-bar.php:188
|
209 |
+
#: includes/classes/class-wcj-module.php:1038
|
210 |
msgid "Documentation"
|
211 |
msgstr ""
|
212 |
|
213 |
+
#: includes/admin/class-wc-settings-jetpack.php:653
|
214 |
msgid "No active modules found."
|
215 |
msgstr ""
|
216 |
|
217 |
+
#: includes/admin/class-wc-settings-jetpack.php:659
|
218 |
msgid "Total Modules:"
|
219 |
msgstr ""
|
220 |
|
221 |
+
#: includes/admin/class-wc-settings-jetpack.php:723
|
222 |
msgid "Autoload Booster's Options"
|
223 |
msgstr ""
|
224 |
|
225 |
+
#: includes/admin/class-wc-settings-jetpack.php:725
|
226 |
msgid ""
|
227 |
"Choose if you want Booster's options to be autoloaded when calling "
|
228 |
"add_option. After saving this option, you need to Reset all Booster's "
|
229 |
"settings. Leave default value (i.e. Enabled) if not sure."
|
230 |
msgstr ""
|
231 |
|
232 |
+
#: includes/admin/class-wc-settings-jetpack.php:730
|
233 |
msgid "Load Modules on Init Hook"
|
234 |
msgstr ""
|
235 |
|
236 |
+
#: includes/admin/class-wc-settings-jetpack.php:732
|
237 |
msgid "Choose if you want to load Booster Modules on Init hook."
|
238 |
msgstr ""
|
239 |
|
240 |
+
#: includes/admin/class-wc-settings-jetpack.php:732
|
241 |
msgid ""
|
242 |
"It will load the locale appropriately if users change it from the profile "
|
243 |
"page."
|
244 |
msgstr ""
|
245 |
|
246 |
+
#: includes/admin/class-wc-settings-jetpack.php:737
|
247 |
msgid "Use List Instead of Comma Separated Text for Products in Settings"
|
248 |
msgstr ""
|
249 |
|
250 |
+
#: includes/admin/class-wc-settings-jetpack.php:741
|
251 |
+
#: includes/admin/class-wc-settings-jetpack.php:762
|
252 |
+
#: includes/admin/class-wc-settings-jetpack.php:778
|
253 |
#, php-format
|
254 |
msgid "Supported modules: %s."
|
255 |
msgstr ""
|
256 |
|
257 |
+
#: includes/admin/class-wc-settings-jetpack.php:745
|
258 |
#: includes/class-wcj-payment-gateways-per-category.php:31
|
259 |
msgid "Gateways per Product or Category"
|
260 |
msgstr ""
|
261 |
|
262 |
+
#: includes/admin/class-wc-settings-jetpack.php:746
|
263 |
#: includes/class-wcj-global-discount.php:38
|
264 |
#: includes/settings/wcj-settings-product-addons.php:275
|
265 |
msgid "Global Discount"
|
266 |
msgstr ""
|
267 |
|
268 |
+
#: includes/admin/class-wc-settings-jetpack.php:747
|
269 |
+
#: includes/admin/class-wc-settings-jetpack.php:766
|
270 |
+
#: includes/admin/class-wc-settings-jetpack.php:782
|
271 |
#: includes/class-wcj-product-custom-info.php:29
|
272 |
+
#: includes/functions/wcj-functions-general.php:485
|
273 |
msgid "Product Info"
|
274 |
msgstr ""
|
275 |
|
276 |
+
#: includes/admin/class-wc-settings-jetpack.php:748
|
277 |
#: includes/admin/wcj-welcome-screen-content.php:82
|
278 |
#: includes/class-wcj-product-input-fields.php:29
|
279 |
#: includes/input-fields/class-wcj-product-input-fields-core.php:214
|
280 |
msgid "Product Input Fields"
|
281 |
msgstr ""
|
282 |
|
283 |
+
#: includes/admin/class-wc-settings-jetpack.php:749
|
284 |
msgid "Products XML"
|
285 |
msgstr ""
|
286 |
|
287 |
+
#: includes/admin/class-wc-settings-jetpack.php:750
|
288 |
+
#: includes/class-wcj-related-products.php:30
|
289 |
#: includes/settings/meta-box/wcj-settings-meta-box-related-products.php:33
|
290 |
#: includes/settings/wcj-settings-free-price.php:23
|
291 |
msgid "Related Products"
|
292 |
msgstr ""
|
293 |
|
294 |
+
#: includes/admin/class-wc-settings-jetpack.php:758
|
295 |
msgid ""
|
296 |
"Use List Instead of Comma Separated Text for Products Categories in Settings"
|
297 |
msgstr ""
|
298 |
|
299 |
+
#: includes/admin/class-wc-settings-jetpack.php:774
|
300 |
msgid "Use List Instead of Comma Separated Text for Products Tags in Settings"
|
301 |
msgstr ""
|
302 |
|
303 |
+
#: includes/admin/class-wc-settings-jetpack.php:810
|
304 |
#: includes/core/class-wcj-admin.php:124
|
305 |
msgid "Booster for WooCommerce"
|
306 |
msgstr ""
|
307 |
|
308 |
+
#: includes/admin/class-wc-settings-jetpack.php:901
|
309 |
msgid "Need Help?"
|
310 |
msgstr ""
|
311 |
|
312 |
+
#: includes/admin/class-wc-settings-jetpack.php:928
|
313 |
#: includes/class-wcj-my-account.php:32
|
314 |
msgid "My Account"
|
315 |
msgstr ""
|
316 |
|
317 |
+
#: includes/admin/class-wc-settings-jetpack.php:932
|
318 |
msgid "Get Booster Plus"
|
319 |
msgstr ""
|
320 |
|
321 |
+
#: includes/admin/class-wc-settings-jetpack.php:939
|
322 |
msgid "Getting Started"
|
323 |
msgstr ""
|
324 |
|
325 |
+
#: includes/admin/class-wc-settings-jetpack.php:943
|
326 |
msgid "Navigating Categories"
|
327 |
msgstr ""
|
328 |
|
329 |
+
#: includes/admin/class-wc-settings-jetpack.php:944
|
330 |
msgid "How to get started with booster"
|
331 |
msgstr ""
|
332 |
|
333 |
+
#: includes/admin/class-wc-settings-jetpack.php:949
|
334 |
msgid "Frequently Asked Questions"
|
335 |
msgstr ""
|
336 |
|
337 |
+
#: includes/admin/class-wc-settings-jetpack.php:954
|
338 |
msgid "Do I need to have coding skills to use Booster Plus?"
|
339 |
msgstr ""
|
340 |
|
341 |
+
#: includes/admin/class-wc-settings-jetpack.php:958
|
342 |
msgid ""
|
343 |
"Absolutely not. You can configure pretty much everything Booster Plus has to "
|
344 |
"offer without any coding knowledge."
|
345 |
msgstr ""
|
346 |
|
347 |
+
#: includes/admin/class-wc-settings-jetpack.php:963
|
348 |
msgid "Will Booster Plus slow down my website?"
|
349 |
msgstr ""
|
350 |
|
351 |
+
#: includes/admin/class-wc-settings-jetpack.php:967
|
352 |
msgid ""
|
353 |
"Absolutely not. Booster Plus is carefully built with performance in mind."
|
354 |
msgstr ""
|
355 |
|
356 |
+
#: includes/admin/class-wc-settings-jetpack.php:972
|
357 |
msgid "Do you offer refunds?"
|
358 |
msgstr ""
|
359 |
|
360 |
+
#: includes/admin/class-wc-settings-jetpack.php:976
|
361 |
#, php-format
|
362 |
msgid ""
|
363 |
"If you are not completely satisfied with Booster Plus within the fist 30 "
|
365 |
"no questions asked."
|
366 |
msgstr ""
|
367 |
|
368 |
+
#: includes/admin/class-wc-settings-jetpack.php:981
|
369 |
msgid "Can I use Booster Plus on client sites?"
|
370 |
msgstr ""
|
371 |
|
372 |
+
#: includes/admin/class-wc-settings-jetpack.php:985
|
373 |
msgid ""
|
374 |
"Yes, you can use Booster Plus on client sites. You can purchase the multiple "
|
375 |
"sites license of Booster Plus."
|
376 |
msgstr ""
|
377 |
|
378 |
+
#: includes/admin/class-wc-settings-jetpack.php:990
|
379 |
msgid "Do you have an affiliate program?"
|
380 |
msgstr ""
|
381 |
|
382 |
+
#: includes/admin/class-wc-settings-jetpack.php:994
|
383 |
msgid "Yes, We do have an affiliate program. "
|
384 |
msgstr ""
|
385 |
|
386 |
+
#: includes/admin/class-wc-settings-jetpack.php:994
|
387 |
msgid "Click here"
|
388 |
msgstr ""
|
389 |
|
390 |
+
#: includes/admin/class-wc-settings-jetpack.php:994
|
391 |
msgid " for the details."
|
392 |
msgstr ""
|
393 |
|
394 |
+
#: includes/admin/class-wc-settings-jetpack.php:999
|
395 |
msgid ""
|
396 |
"Why should I choose the Booster Plus suite over other individual plugins?"
|
397 |
msgstr ""
|
398 |
|
399 |
+
#: includes/admin/class-wc-settings-jetpack.php:1003
|
400 |
msgid ""
|
401 |
"Oh, that's an easy one! Implementing just a few modules from the Booster Plus "
|
402 |
"suite is more cost-effective than using dozens of individual plugins often "
|
408 |
"your WooCommerce site easily."
|
409 |
msgstr ""
|
410 |
|
411 |
+
#: includes/admin/class-wc-settings-jetpack.php:1008
|
412 |
msgid "What features does Booster Plus have?"
|
413 |
msgstr ""
|
414 |
|
415 |
+
#: includes/admin/class-wc-settings-jetpack.php:1012
|
416 |
msgid "You can see all the features at "
|
417 |
msgstr ""
|
418 |
|
419 |
+
#: includes/admin/class-wc-settings-jetpack.php:1012
|
420 |
msgid "About Booster"
|
421 |
msgstr ""
|
422 |
|
423 |
+
#: includes/admin/class-wc-settings-jetpack.php:1012
|
424 |
msgid " page."
|
425 |
msgstr ""
|
426 |
|
427 |
+
#: includes/admin/class-wc-settings-jetpack.php:1016
|
428 |
msgid "Still have a question?"
|
429 |
msgstr ""
|
430 |
|
431 |
+
#: includes/admin/class-wc-settings-jetpack.php:1017
|
432 |
msgid "CONTACT BOOSTER SUPPORT"
|
433 |
msgstr ""
|
434 |
|
435 |
+
#: includes/admin/class-wc-settings-jetpack.php:1023
|
436 |
msgid "Connect with Booster"
|
437 |
msgstr ""
|
438 |
|
439 |
+
#: includes/admin/class-wc-settings-jetpack.php:1027
|
440 |
msgid "BOOSTER WEBSITE"
|
441 |
msgstr ""
|
442 |
|
443 |
+
#: includes/admin/class-wc-settings-jetpack.php:1041
|
444 |
+
#: includes/class-wcj-general.php:250 includes/class-wcj-product-by-user.php:276
|
445 |
#: includes/settings/wcj-settings-pdf-invoicing-advanced.php:166
|
446 |
#: includes/tools/class-wcj-order-statuses-tool.php:191
|
447 |
#: includes/tools/class-wcj-order-statuses-tool.php:285
|
448 |
msgid "Actions"
|
449 |
msgstr ""
|
450 |
|
451 |
+
#: includes/admin/class-wc-settings-jetpack.php:1052
|
452 |
msgid "Import Booster options"
|
453 |
msgstr ""
|
454 |
|
455 |
+
#: includes/admin/class-wc-settings-jetpack.php:1061
|
456 |
msgid "Export Booster options"
|
457 |
msgstr ""
|
458 |
|
459 |
+
#: includes/admin/class-wc-settings-jetpack.php:1072
|
460 |
msgid "Reset all Booster's options"
|
461 |
msgstr ""
|
462 |
|
463 |
+
#: includes/admin/class-wc-settings-jetpack.php:1081
|
464 |
msgid "Reset all Booster's meta"
|
465 |
msgstr ""
|
466 |
|
467 |
+
#: includes/admin/class-wc-settings-jetpack.php:1096
|
468 |
msgid "Here you can find all documentation of Booster"
|
469 |
msgstr ""
|
470 |
|
471 |
+
#: includes/admin/class-wc-settings-jetpack.php:1098
|
472 |
msgid "See Documentation"
|
473 |
msgstr ""
|
474 |
|
475 |
+
#: includes/admin/class-wc-settings-jetpack.php:1105
|
476 |
msgid "Latest updates"
|
477 |
msgstr ""
|
478 |
|
479 |
+
#: includes/admin/class-wc-settings-jetpack.php:1108
|
480 |
msgid "Version "
|
481 |
msgstr ""
|
482 |
|
483 |
+
#: includes/admin/class-wc-settings-jetpack.php:1113
|
484 |
msgid "SEE MORE"
|
485 |
msgstr ""
|
486 |
|
487 |
+
#: includes/admin/class-wc-settings-jetpack.php:1124
|
488 |
#: includes/core/class-wcj-admin.php:98
|
489 |
msgid "Please rate "
|
490 |
msgstr ""
|
491 |
|
492 |
+
#: includes/admin/class-wc-settings-jetpack.php:1124
|
493 |
#: includes/core/class-wcj-admin.php:98
|
494 |
msgid "Booster for Woocommerce"
|
495 |
msgstr ""
|
496 |
|
497 |
+
#: includes/admin/class-wc-settings-jetpack.php:1132
|
498 |
#: includes/core/class-wcj-admin.php:106
|
499 |
msgid "WordPress.org"
|
500 |
msgstr ""
|
501 |
|
502 |
+
#: includes/admin/class-wc-settings-jetpack.php:1132
|
503 |
#: includes/core/class-wcj-admin.php:106
|
504 |
msgid " to help us spread the word. Thank you from Booster team!"
|
505 |
msgstr ""
|
506 |
|
507 |
+
#: includes/admin/class-wc-settings-jetpack.php:1136
|
508 |
msgid "Upgrade today to unlock these popular premium features:"
|
509 |
msgstr ""
|
510 |
|
511 |
+
#: includes/admin/class-wc-settings-jetpack.php:1138
|
512 |
msgid "+ PDF Invoices and Packing slips –"
|
513 |
msgstr ""
|
514 |
|
515 |
+
#: includes/admin/class-wc-settings-jetpack.php:1138
|
516 |
msgid ""
|
517 |
"Add ability to create Proforma Invoices, Credit Notes and Packaging slips"
|
518 |
msgstr ""
|
519 |
|
520 |
+
#: includes/admin/class-wc-settings-jetpack.php:1139
|
521 |
msgid "+ Empty Cart –"
|
522 |
msgstr ""
|
523 |
|
524 |
+
#: includes/admin/class-wc-settings-jetpack.php:1139
|
525 |
msgid ""
|
526 |
"customize empty cart button text, different button positions on cart page"
|
527 |
msgstr ""
|
528 |
|
529 |
+
#: includes/admin/class-wc-settings-jetpack.php:1140
|
530 |
msgid "+ Cart and checkout –"
|
531 |
msgstr ""
|
532 |
|
533 |
+
#: includes/admin/class-wc-settings-jetpack.php:1140
|
534 |
msgid "add multiple – custom fields, custom info blocks, check out file uploads"
|
535 |
msgstr ""
|
536 |
|
537 |
+
#: includes/admin/class-wc-settings-jetpack.php:1141
|
538 |
msgid "+ Mini cart –"
|
539 |
msgstr ""
|
540 |
|
541 |
+
#: includes/admin/class-wc-settings-jetpack.php:1141
|
542 |
msgid "More custom information options"
|
543 |
msgstr ""
|
544 |
|
545 |
+
#: includes/admin/class-wc-settings-jetpack.php:1142
|
546 |
msgid "+ Prices and currencies –"
|
547 |
msgstr ""
|
548 |
|
549 |
+
#: includes/admin/class-wc-settings-jetpack.php:1142
|
550 |
msgid "add more unlimited number of currencies to WooCommerce"
|
551 |
msgstr ""
|
552 |
|
553 |
+
#: includes/admin/class-wc-settings-jetpack.php:1143
|
554 |
msgid "+ Export options –"
|
555 |
msgstr ""
|
556 |
|
557 |
+
#: includes/admin/class-wc-settings-jetpack.php:1143
|
558 |
msgid "more fields enabled"
|
559 |
msgstr ""
|
560 |
|
561 |
+
#: includes/admin/class-wc-settings-jetpack.php:1144
|
562 |
msgid "+ Add to cart –"
|
563 |
msgstr ""
|
564 |
|
565 |
+
#: includes/admin/class-wc-settings-jetpack.php:1144
|
566 |
msgid ""
|
567 |
"customize add to cart messages, Button labels - multiple category groups "
|
568 |
"allowed+ +"
|
569 |
msgstr ""
|
570 |
|
571 |
+
#: includes/admin/class-wc-settings-jetpack.php:1145
|
572 |
msgid "+ More configuration options for payments and shipping"
|
573 |
msgstr ""
|
574 |
|
575 |
+
#: includes/admin/class-wc-settings-jetpack.php:1148
|
576 |
msgid "Upgrade to Booster Plus"
|
577 |
msgstr ""
|
578 |
|
585 |
msgid "Doesn't apply rounding, offset etc."
|
586 |
msgstr ""
|
587 |
|
588 |
+
#: includes/admin/class-wcj-settings-custom-fields.php:348
|
589 |
msgid "Save changes"
|
590 |
msgstr ""
|
591 |
|
592 |
+
#: includes/admin/class-wcj-settings-manager.php:76
|
593 |
msgid "Please upload a file to import!"
|
594 |
msgstr ""
|
595 |
|
596 |
+
#: includes/admin/class-wcj-settings-manager.php:92
|
597 |
+
#: includes/admin/class-wcj-settings-manager.php:97
|
598 |
msgid "Wrong file format!"
|
599 |
msgstr ""
|
600 |
|
601 |
+
#: includes/admin/class-wcj-settings-manager.php:107
|
602 |
#, php-format
|
603 |
msgid "%d options successfully imported."
|
604 |
msgstr ""
|
605 |
|
606 |
+
#: includes/admin/class-wcj-settings-manager.php:167
|
607 |
#, php-format
|
608 |
msgid "%d meta successfully deleted."
|
609 |
msgstr ""
|
610 |
|
611 |
+
#: includes/admin/class-wcj-settings-manager.php:186
|
612 |
#, php-format
|
613 |
msgid "%d options successfully deleted."
|
614 |
msgstr ""
|
615 |
|
616 |
+
#: includes/admin/class-wcj-tools.php:57
|
617 |
msgid "Booster for WooCommerce Tools"
|
618 |
msgstr ""
|
619 |
|
620 |
+
#: includes/admin/class-wcj-tools.php:58
|
621 |
msgid "Booster Tools"
|
622 |
msgstr ""
|
623 |
|
624 |
+
#: includes/admin/class-wcj-tools.php:79
|
625 |
msgid "Tools Dashboard"
|
626 |
msgstr ""
|
627 |
|
628 |
+
#: includes/admin/class-wcj-tools.php:106
|
629 |
msgid "Booster for WooCommerce Tools - Dashboard"
|
630 |
msgstr ""
|
631 |
|
632 |
+
#: includes/admin/class-wcj-tools.php:107
|
633 |
msgid ""
|
634 |
"This dashboard lets you check statuses and short descriptions of all "
|
635 |
"available Booster for WooCommerce tools. Tools can be enabled through "
|
637 |
"above."
|
638 |
msgstr ""
|
639 |
|
640 |
+
#: includes/admin/class-wcj-welcome.php:53
|
641 |
+
#: includes/admin/class-wcj-welcome.php:54
|
642 |
msgid "Welcome to Booster"
|
643 |
msgstr ""
|
644 |
|
670 |
|
671 |
#: includes/admin/wcj-modules-cats.php:61 includes/class-wcj-admin-bar.php:493
|
672 |
#: includes/class-wcj-admin-bar.php:497 includes/class-wcj-admin-bar.php:543
|
673 |
+
#: includes/class-wcj-product-bulk-meta-editor.php:299
|
674 |
#: includes/class-wcj-product-by-user.php:176
|
675 |
#: includes/class-wcj-product-by-user.php:213
|
676 |
#: includes/class-wcj-shipping-by-products.php:40
|
993 |
|
994 |
#: includes/class-wcj-admin-bar.php:267 includes/class-wcj-admin-bar.php:311
|
995 |
#: includes/class-wcj-admin-bar.php:659
|
996 |
+
#: includes/classes/class-wcj-module.php:856
|
997 |
#: includes/settings/wcj-settings-wpml.php:97
|
998 |
msgid "Tools"
|
999 |
msgstr ""
|
1058 |
#: includes/class-wcj-admin-bar.php:418 includes/class-wcj-admin-bar.php:422
|
1059 |
#: includes/class-wcj-admin-bar.php:440 includes/class-wcj-my-account.php:40
|
1060 |
#: includes/class-wcj-my-account.php:48 includes/class-wcj-orders.php:31
|
1061 |
+
#: includes/reports/class-wcj-reports-sales-gateways.php:179
|
1062 |
#: includes/settings/wcj-settings-reports.php:24
|
1063 |
#: includes/settings/wcj-settings-reports.php:62
|
1064 |
#: includes/settings/wcj-settings-reports.php:103
|
1111 |
msgid "Most Stocked"
|
1112 |
msgstr ""
|
1113 |
|
1114 |
+
#: includes/class-wcj-admin-bar.php:477 includes/class-wcj-eu-vat-number.php:240
|
1115 |
msgid "Taxes"
|
1116 |
msgstr ""
|
1117 |
|
1127 |
msgid "Add product"
|
1128 |
msgstr ""
|
1129 |
|
1130 |
+
#: includes/class-wcj-admin-bar.php:505 includes/class-wcj-sku.php:708
|
1131 |
#: includes/export/class-wcj-export-fields-helper.php:322
|
1132 |
#: includes/settings/wcj-settings-product-by-user.php:22
|
1133 |
#: includes/shortcodes/class-wcj-products-add-form-shortcodes.php:196
|
1134 |
+
#: includes/shortcodes/class-wcj-products-add-form-shortcodes.php:433
|
1135 |
msgid "Categories"
|
1136 |
msgstr ""
|
1137 |
|
1139 |
#: includes/export/class-wcj-export-fields-helper.php:323
|
1140 |
#: includes/settings/wcj-settings-product-by-user.php:23
|
1141 |
#: includes/shortcodes/class-wcj-products-add-form-shortcodes.php:197
|
1142 |
+
#: includes/shortcodes/class-wcj-products-add-form-shortcodes.php:443
|
1143 |
msgid "Tags"
|
1144 |
msgstr ""
|
1145 |
|
1284 |
msgid "Not Completed"
|
1285 |
msgstr ""
|
1286 |
|
1287 |
+
#: includes/class-wcj-admin-orders-list.php:266
|
1288 |
msgid "Trash"
|
1289 |
msgstr ""
|
1290 |
|
1291 |
+
#: includes/class-wcj-admin-orders-list.php:359
|
1292 |
+
#: includes/class-wcj-product-by-country.php:194
|
1293 |
+
#: includes/class-wcj-product-by-country.php:230
|
1294 |
msgid "All countries"
|
1295 |
msgstr ""
|
1296 |
|
1297 |
+
#: includes/class-wcj-admin-orders-list.php:368
|
1298 |
msgid "All currencies"
|
1299 |
msgstr ""
|
1300 |
|
1301 |
+
#: includes/class-wcj-admin-orders-list.php:411
|
1302 |
#: includes/export/class-wcj-export-fields-helper.php:52
|
1303 |
#: includes/export/class-wcj-export-fields-helper.php:136
|
1304 |
#: includes/export/class-wcj-export-fields-helper.php:219
|
1306 |
msgid "Billing Country"
|
1307 |
msgstr ""
|
1308 |
|
1309 |
+
#: includes/class-wcj-admin-orders-list.php:414
|
1310 |
#: includes/settings/wcj-settings-admin-orders-list.php:37
|
1311 |
msgid "Currency Code"
|
1312 |
msgstr ""
|
1357 |
msgid "Order Meta"
|
1358 |
msgstr ""
|
1359 |
|
1360 |
+
#: includes/class-wcj-admin-tools.php:249
|
1361 |
msgid "Order Items Meta"
|
1362 |
msgstr ""
|
1363 |
|
1364 |
+
#: includes/class-wcj-admin-tools.php:251
|
1365 |
msgid "Item Key"
|
1366 |
msgstr ""
|
1367 |
|
1368 |
+
#: includes/class-wcj-admin-tools.php:251
|
1369 |
msgid "Item Meta Key"
|
1370 |
msgstr ""
|
1371 |
|
1372 |
+
#: includes/class-wcj-admin-tools.php:251
|
1373 |
msgid "Item Meta Value"
|
1374 |
msgstr ""
|
1375 |
|
1376 |
+
#: includes/class-wcj-admin-tools.php:299 includes/class-wcj-admin-tools.php:344
|
1377 |
+
#: includes/class-wcj-admin-tools.php:354
|
1378 |
+
#: includes/class-wcj-product-bulk-meta-editor.php:390
|
1379 |
+
#: includes/class-wcj-sku.php:707
|
1380 |
+
#: includes/reports/class-wcj-reports-sales.php:210
|
1381 |
#: includes/reports/class-wcj-reports-stock.php:289
|
1382 |
msgid "Product"
|
1383 |
msgstr ""
|
1384 |
|
1385 |
+
#: includes/class-wcj-admin-tools.php:300 includes/class-wcj-admin-tools.php:345
|
1386 |
+
#: includes/class-wcj-admin-tools.php:355
|
1387 |
#: includes/reports/class-wcj-reports-stock.php:290
|
1388 |
msgid "Category"
|
1389 |
msgstr ""
|
1390 |
|
1391 |
+
#: includes/class-wcj-admin-tools.php:373
|
1392 |
msgid "Total Products:"
|
1393 |
msgstr ""
|
1394 |
|
1682 |
|
1683 |
#: includes/class-wcj-coupon-by-user-role.php:94
|
1684 |
#: includes/class-wcj-coupon-by-user-role.php:95
|
1685 |
+
#: includes/class-wcj-coupon-by-user-role.php:116
|
1686 |
#: includes/class-wcj-coupon-by-user-role.php:117
|
|
|
1687 |
#: includes/settings/wcj-settings-coupon-by-user-role.php:71
|
1688 |
msgid "Coupon is not valid for your user role."
|
1689 |
msgstr ""
|
1932 |
"currency rate with real conversion then enable it"
|
1933 |
msgstr ""
|
1934 |
|
1935 |
+
#: includes/class-wcj-currency-exchange-rates.php:225
|
1936 |
#: includes/settings/wcj-settings-currency-exchange-rates.php:52
|
1937 |
msgid "Exchange Rates Server"
|
1938 |
msgstr ""
|
1939 |
|
1940 |
+
#: includes/class-wcj-currency-exchange-rates.php:231
|
1941 |
#, php-format
|
1942 |
msgid "Use default: %s"
|
1943 |
msgstr ""
|
1944 |
|
1945 |
+
#: includes/class-wcj-currency-exchange-rates.php:258
|
1946 |
msgid "Exchange Rates Offset (Percent)"
|
1947 |
msgstr ""
|
1948 |
|
1949 |
+
#: includes/class-wcj-currency-exchange-rates.php:264
|
1950 |
#, php-format
|
1951 |
msgid "Use default: %s%%"
|
1952 |
msgstr ""
|
1953 |
|
1954 |
+
#: includes/class-wcj-currency-exchange-rates.php:265
|
1955 |
msgid "Custom offset"
|
1956 |
msgstr ""
|
1957 |
|
1958 |
+
#: includes/class-wcj-currency-exchange-rates.php:269
|
1959 |
msgid "Custom offset (Percent)"
|
1960 |
msgstr ""
|
1961 |
|
1962 |
+
#: includes/class-wcj-currency-exchange-rates.php:270
|
1963 |
msgid "Used when \"Custom offset\" option is selected above."
|
1964 |
msgstr ""
|
1965 |
|
2270 |
msgstr ""
|
2271 |
|
2272 |
#: includes/class-wcj-eu-vat-number.php:30
|
2273 |
+
#: includes/class-wcj-eu-vat-number.php:338
|
2274 |
#: includes/settings/wcj-settings-eu-vat-number.php:25
|
2275 |
#: includes/settings/wcj-settings-eu-vat-number.php:32
|
2276 |
msgid "EU VAT Number"
|
2298 |
msgid "Add all EU countries VAT standard rates to WooCommerce."
|
2299 |
msgstr ""
|
2300 |
|
2301 |
+
#: includes/class-wcj-eu-vat-number.php:228
|
2302 |
msgid "Customer IP"
|
2303 |
msgstr ""
|
2304 |
|
2305 |
+
#: includes/class-wcj-eu-vat-number.php:232 includes/class-wcj-orders.php:170
|
2306 |
#: includes/settings/wcj-settings-orders.php:129
|
2307 |
#: includes/settings/wcj-settings-payment-gateways-by-country.php:30
|
2308 |
msgid "Country by IP"
|
2309 |
msgstr ""
|
2310 |
|
2311 |
+
#: includes/class-wcj-eu-vat-number.php:236
|
2312 |
msgid "Customer EU VAT Number"
|
2313 |
msgstr ""
|
2314 |
|
2315 |
+
#: includes/class-wcj-eu-vat-number.php:452
|
2316 |
#: includes/settings/wcj-settings-eu-vat-number.php:169
|
2317 |
msgid "Validating VAT. Please wait..."
|
2318 |
msgstr ""
|
2319 |
|
2320 |
+
#: includes/class-wcj-eu-vat-number.php:453
|
2321 |
#: includes/settings/wcj-settings-eu-vat-number.php:176
|
2322 |
msgid "VAT is valid."
|
2323 |
msgstr ""
|
2324 |
|
2325 |
+
#: includes/class-wcj-eu-vat-number.php:454
|
2326 |
#: includes/settings/wcj-settings-eu-vat-number.php:183
|
2327 |
msgid "VAT is not valid."
|
2328 |
msgstr ""
|
2329 |
|
2330 |
+
#: includes/class-wcj-eu-vat-number.php:455
|
2331 |
#: includes/settings/wcj-settings-eu-vat-number.php:191
|
2332 |
msgid "Validation failed. Please try again."
|
2333 |
msgstr ""
|
2334 |
|
2335 |
+
#: includes/class-wcj-eu-vat-number.php:595
|
2336 |
msgid "<strong>Billing EU VAT Number</strong>is a required field."
|
2337 |
msgstr ""
|
2338 |
|
2339 |
+
#: includes/class-wcj-eu-vat-number.php:614
|
2340 |
#: includes/settings/wcj-settings-eu-vat-number.php:78
|
2341 |
msgid "<strong>EU VAT Number</strong> is not valid."
|
2342 |
msgstr ""
|
2398 |
msgid "Export Products."
|
2399 |
msgstr ""
|
2400 |
|
2401 |
+
#: includes/class-wcj-export-import.php:243
|
2402 |
+
#: includes/class-wcj-export-import.php:249
|
2403 |
msgid "Filter by Billing Country"
|
2404 |
msgstr ""
|
2405 |
|
2406 |
+
#: includes/class-wcj-export-import.php:244
|
2407 |
msgid "Filter by Product Title"
|
2408 |
msgstr ""
|
2409 |
|
2410 |
+
#: includes/class-wcj-export-import.php:263
|
2411 |
+
#: includes/reports/class-wcj-reports-product-sales-daily.php:218
|
2412 |
+
#: includes/reports/class-wcj-reports-sales-gateways.php:162
|
2413 |
#: includes/settings/wcj-settings-orders.php:48
|
2414 |
msgid "Filter"
|
2415 |
msgstr ""
|
2416 |
|
2417 |
+
#: includes/class-wcj-export-import.php:292
|
2418 |
#: includes/class-wcj-track-users.php:45
|
2419 |
msgid "All time"
|
2420 |
msgstr ""
|
2421 |
|
2422 |
+
#: includes/class-wcj-export-import.php:311
|
2423 |
msgid "Custom:"
|
2424 |
msgstr ""
|
2425 |
|
2426 |
+
#: includes/class-wcj-export-import.php:317
|
2427 |
msgid "Go"
|
2428 |
msgstr ""
|
2429 |
|
2476 |
msgstr ""
|
2477 |
|
2478 |
#: includes/class-wcj-general.php:250 includes/class-wcj-general.php:272
|
2479 |
+
#: includes/class-wcj-sku.php:706
|
2480 |
+
#: includes/reports/class-wcj-reports-sales.php:209
|
2481 |
#: includes/settings/wcj-settings-cross-sells.php:46
|
2482 |
#: includes/settings/wcj-settings-order-numbers.php:172
|
2483 |
#: includes/settings/wcj-settings-product-by-user.php:175
|
2488 |
msgstr ""
|
2489 |
|
2490 |
#: includes/class-wcj-general.php:250 includes/class-wcj-general.php:273
|
2491 |
+
#: includes/class-wcj-offer-price.php:167
|
2492 |
#: includes/export/class-wcj-export-fields-helper.php:287
|
2493 |
+
#: includes/tools/class-wcj-eu-countries-vat-rates-tool.php:90
|
2494 |
+
#: includes/tools/class-wcj-eu-countries-vat-rates-tool.php:135
|
2495 |
msgid "Name"
|
2496 |
msgstr ""
|
2497 |
|
2500 |
msgstr ""
|
2501 |
|
2502 |
#: includes/class-wcj-general.php:264
|
2503 |
+
#: includes/class-wcj-payment-gateways.php:135
|
2504 |
+
#: includes/class-wcj-product-bulk-meta-editor.php:418
|
2505 |
+
#: includes/class-wcj-product-by-user.php:301
|
2506 |
#: includes/pdf-invoices/submodules/class-wcj-pdf-invoicing-display.php:163
|
2507 |
#: includes/pdf-invoices/submodules/class-wcj-pdf-invoicing-display.php:387
|
2508 |
+
#: includes/shortcodes/class-wcj-products-add-form-shortcodes.php:391
|
2509 |
#: includes/tools/class-wcj-order-statuses-tool.php:213
|
2510 |
msgid "Delete"
|
2511 |
msgstr ""
|
2562 |
msgstr ""
|
2563 |
|
2564 |
#: includes/class-wcj-max-products-per-user.php:139
|
2565 |
+
#: includes/class-wcj-max-products-per-user.php:387
|
2566 |
#: includes/settings/wcj-settings-max-products-per-user.php:77
|
2567 |
msgid ""
|
2568 |
"You can only buy maximum %max_qty% pcs. of %product_title% (you already "
|
2569 |
"bought %qty_already_bought% pcs.)."
|
2570 |
msgstr ""
|
2571 |
|
2572 |
+
#: includes/class-wcj-max-products-per-user.php:159
|
2573 |
msgid "Data re-calculated."
|
2574 |
msgstr ""
|
2575 |
|
2576 |
+
#: includes/class-wcj-max-products-per-user.php:161
|
2577 |
#, php-format
|
2578 |
msgid "%s order(s) processed."
|
2579 |
msgstr ""
|
2580 |
|
2581 |
+
#: includes/class-wcj-max-products-per-user.php:219
|
2582 |
msgid "Maximum Products per User: Sales Data"
|
2583 |
msgstr ""
|
2584 |
|
2585 |
+
#: includes/class-wcj-max-products-per-user.php:237
|
2586 |
msgid "User ID"
|
2587 |
msgstr ""
|
2588 |
|
2589 |
+
#: includes/class-wcj-max-products-per-user.php:237
|
2590 |
msgid "User Name"
|
2591 |
msgstr ""
|
2592 |
|
2593 |
+
#: includes/class-wcj-max-products-per-user.php:237
|
2594 |
msgid "Qty Bought"
|
2595 |
msgstr ""
|
2596 |
|
2597 |
+
#: includes/class-wcj-max-products-per-user.php:240
|
2598 |
#: includes/functions/wcj-functions-users.php:179
|
2599 |
#: includes/functions/wcj-functions-users.php:215
|
2600 |
msgid "Guest"
|
2723 |
msgid "Lost password"
|
2724 |
msgstr ""
|
2725 |
|
2726 |
+
#: includes/class-wcj-my-account.php:335
|
2727 |
#, php-format
|
2728 |
msgid "Hello %1$s (not %1$s? <a href=\"%2$s\">Log out</a>)"
|
2729 |
msgstr ""
|
2730 |
|
2731 |
+
#: includes/class-wcj-my-account.php:346
|
2732 |
#, php-format
|
2733 |
msgid ""
|
2734 |
"From your account dashboard you can view your <a href=\"%1$s\">recent orders</"
|
2736 |
"href=\"%3$s\">edit your password and account details</a>."
|
2737 |
msgstr ""
|
2738 |
|
2739 |
+
#: includes/class-wcj-my-account.php:456
|
2740 |
msgid "User role"
|
2741 |
msgstr ""
|
2742 |
|
2754 |
msgid "Let your customers suggest their price for products."
|
2755 |
msgstr ""
|
2756 |
|
2757 |
+
#: includes/class-wcj-offer-price.php:148
|
2758 |
msgid "Booster: Offer Price History"
|
2759 |
msgstr ""
|
2760 |
|
2761 |
+
#: includes/class-wcj-offer-price.php:164
|
2762 |
#: includes/settings/wcj-settings-cross-sells.php:47
|
2763 |
#: includes/settings/wcj-settings-order-numbers.php:173
|
2764 |
#: includes/settings/wcj-settings-products-xml.php:244
|
2767 |
msgid "Date"
|
2768 |
msgstr ""
|
2769 |
|
2770 |
+
#: includes/class-wcj-offer-price.php:165
|
2771 |
#: includes/export/class-wcj-export-fields-helper.php:293
|
2772 |
#: includes/reports/class-wcj-reports-stock.php:291
|
2773 |
#: includes/settings/meta-box/wcj-settings-meta-box-wholesale-price.php:71
|
2778 |
msgid "Price"
|
2779 |
msgstr ""
|
2780 |
|
2781 |
+
#: includes/class-wcj-offer-price.php:166
|
2782 |
#: includes/settings/wcj-settings-coupon-by-user-role.php:63
|
2783 |
#: includes/settings/wcj-settings-currency-per-product.php:38
|
2784 |
#: includes/settings/wcj-settings-currency-per-product.php:45
|
2788 |
msgid "Message"
|
2789 |
msgstr ""
|
2790 |
|
2791 |
+
#: includes/class-wcj-offer-price.php:168
|
2792 |
#: includes/export/class-wcj-export-fields-helper.php:83
|
2793 |
#: includes/input-fields/wcj-product-input-fields-options.php:47
|
2794 |
#: includes/reports/class-wcj-reports-customers.php:101
|
2796 |
msgid "Email"
|
2797 |
msgstr ""
|
2798 |
|
2799 |
+
#: includes/class-wcj-offer-price.php:169
|
2800 |
#: includes/export/class-wcj-export-fields-helper.php:82
|
2801 |
msgid "Customer ID"
|
2802 |
msgstr ""
|
2803 |
|
2804 |
+
#: includes/class-wcj-offer-price.php:170
|
2805 |
msgid "User IP"
|
2806 |
msgstr ""
|
2807 |
|
2808 |
+
#: includes/class-wcj-offer-price.php:171
|
2809 |
msgid "User Agent"
|
2810 |
msgstr ""
|
2811 |
|
2812 |
+
#: includes/class-wcj-offer-price.php:172
|
2813 |
msgid "Sent to"
|
2814 |
msgstr ""
|
2815 |
|
2816 |
+
#: includes/class-wcj-offer-price.php:185
|
2817 |
msgid "No price offers yet."
|
2818 |
msgstr ""
|
2819 |
|
2820 |
+
#: includes/class-wcj-offer-price.php:249
|
2821 |
#, php-format
|
2822 |
msgid "Average offer: %1$s (from %2$s offer(s))"
|
2823 |
msgstr ""
|
2824 |
|
2825 |
+
#: includes/class-wcj-offer-price.php:258
|
2826 |
msgid "Update product after checking the box."
|
2827 |
msgstr ""
|
2828 |
|
2829 |
+
#: includes/class-wcj-offer-price.php:339
|
2830 |
#: includes/settings/wcj-settings-offer-price.php:169
|
2831 |
#, php-format
|
2832 |
msgid "Your price (%s)"
|
2833 |
msgstr ""
|
2834 |
|
2835 |
+
#: includes/class-wcj-offer-price.php:346
|
2836 |
#: includes/settings/wcj-settings-offer-price.php:241
|
2837 |
#, php-format
|
2838 |
msgid "Suggest your price for %s"
|
2839 |
msgstr ""
|
2840 |
|
2841 |
+
#: includes/class-wcj-offer-price.php:404
|
2842 |
#: includes/settings/wcj-settings-offer-price.php:208
|
2843 |
msgid "Your email"
|
2844 |
msgstr ""
|
2845 |
|
2846 |
+
#: includes/class-wcj-offer-price.php:408
|
2847 |
#: includes/settings/wcj-settings-offer-price.php:216
|
2848 |
msgid "Your name"
|
2849 |
msgstr ""
|
2850 |
|
2851 |
+
#: includes/class-wcj-offer-price.php:412
|
2852 |
#: includes/settings/wcj-settings-offer-price.php:224
|
2853 |
msgid "Your message"
|
2854 |
msgstr ""
|
2855 |
|
2856 |
+
#: includes/class-wcj-offer-price.php:416
|
2857 |
#: includes/settings/wcj-settings-offer-price.php:248
|
2858 |
msgid "Send"
|
2859 |
msgstr ""
|
2860 |
|
2861 |
+
#: includes/class-wcj-offer-price.php:418
|
2862 |
#: includes/settings/wcj-settings-offer-price.php:232
|
2863 |
msgid "Send a copy to your email"
|
2864 |
msgstr ""
|
2865 |
|
2866 |
+
#: includes/class-wcj-offer-price.php:488
|
2867 |
#: includes/settings/wcj-settings-offer-price.php:72
|
2868 |
msgid "Make an offer"
|
2869 |
msgstr ""
|
2870 |
|
2871 |
+
#: includes/class-wcj-offer-price.php:553
|
2872 |
#: includes/settings/wcj-settings-offer-price.php:352
|
2873 |
#, php-format
|
2874 |
msgid "Product: %s"
|
2875 |
msgstr ""
|
2876 |
|
2877 |
+
#: includes/class-wcj-offer-price.php:555
|
2878 |
#: includes/settings/wcj-settings-offer-price.php:354
|
2879 |
#, php-format
|
2880 |
msgid "Offered price: %s"
|
2881 |
msgstr ""
|
2882 |
|
2883 |
+
#: includes/class-wcj-offer-price.php:557
|
2884 |
#: includes/settings/wcj-settings-offer-price.php:356
|
2885 |
#, php-format
|
2886 |
msgid "From: %1$s %2$s"
|
2887 |
msgstr ""
|
2888 |
|
2889 |
+
#: includes/class-wcj-offer-price.php:559
|
2890 |
#: includes/settings/wcj-settings-offer-price.php:358
|
2891 |
#, php-format
|
2892 |
msgid "Message: %s"
|
2893 |
msgstr ""
|
2894 |
|
2895 |
+
#: includes/class-wcj-offer-price.php:573
|
2896 |
#: includes/settings/wcj-settings-offer-price.php:342
|
2897 |
msgid "Price Offer"
|
2898 |
msgstr ""
|
2899 |
|
2900 |
+
#: includes/class-wcj-offer-price.php:583
|
2901 |
#: includes/settings/wcj-settings-offer-price.php:269
|
2902 |
msgid "Your price offer has been sent."
|
2903 |
msgstr ""
|
3058 |
msgid "Tool renumerates all orders."
|
3059 |
msgstr ""
|
3060 |
|
3061 |
+
#: includes/class-wcj-order-numbers.php:352
|
3062 |
msgid "Orders successfully renumerated!"
|
3063 |
msgstr ""
|
3064 |
|
3065 |
+
#: includes/class-wcj-order-numbers.php:357
|
3066 |
#, php-format
|
3067 |
msgid "Sequential number generation is enabled. Next order number will be %s."
|
3068 |
msgstr ""
|
3069 |
|
3070 |
+
#: includes/class-wcj-order-numbers.php:370
|
3071 |
#, php-format
|
3072 |
msgid ""
|
3073 |
"Press the button below to renumerate all existing orders starting from order "
|
3074 |
"counter settings in <a href=\"%s\">Order Numbers</a> module."
|
3075 |
msgstr ""
|
3076 |
|
3077 |
+
#: includes/class-wcj-order-numbers.php:378
|
3078 |
msgid "Renumerate orders"
|
3079 |
msgstr ""
|
3080 |
|
3165 |
msgstr[0] ""
|
3166 |
msgstr[1] ""
|
3167 |
|
3168 |
+
#: includes/class-wcj-orders.php:365
|
3169 |
+
#: includes/functions/wcj-functions-crons.php:116
|
3170 |
+
msgid "Once weekly"
|
3171 |
+
msgstr ""
|
3172 |
+
|
3173 |
+
#: includes/class-wcj-orders.php:369
|
3174 |
+
#: includes/functions/wcj-functions-crons.php:120
|
3175 |
+
msgid "Once every 30 minutes"
|
3176 |
+
msgstr ""
|
3177 |
+
|
3178 |
+
#: includes/class-wcj-orders.php:373
|
3179 |
+
#: includes/functions/wcj-functions-crons.php:124
|
3180 |
+
msgid "Once every 15 minutes"
|
3181 |
+
msgstr ""
|
3182 |
+
|
3183 |
+
#: includes/class-wcj-orders.php:377
|
3184 |
+
#: includes/functions/wcj-functions-crons.php:128
|
3185 |
+
msgid "Once every 5 minutes"
|
3186 |
+
msgstr ""
|
3187 |
+
|
3188 |
+
#: includes/class-wcj-orders.php:381
|
3189 |
+
#: includes/functions/wcj-functions-crons.php:132
|
3190 |
+
msgid "Once a minute"
|
3191 |
+
msgstr ""
|
3192 |
+
|
3193 |
#: includes/class-wcj-payment-gateways-by-country.php:29
|
3194 |
msgid "Gateways by Country, State or Postcode"
|
3195 |
msgstr ""
|
3306 |
msgid "Add multiple custom payment gateways to WooCommerce."
|
3307 |
msgstr ""
|
3308 |
|
3309 |
+
#: includes/class-wcj-payment-gateways.php:78
|
3310 |
#, php-format
|
3311 |
msgid "<strong>%s</strong> is a required field."
|
3312 |
msgstr ""
|
3313 |
|
3314 |
+
#: includes/class-wcj-payment-gateways.php:103
|
3315 |
#, php-format
|
3316 |
msgid "%s Fields"
|
3317 |
msgstr ""
|
3473 |
msgstr ""
|
3474 |
|
3475 |
#: includes/class-wcj-price-labels.php:46
|
3476 |
+
#: includes/class-wcj-product-by-country.php:203
|
3477 |
#: includes/class-wcj-product-by-user-role.php:62
|
3478 |
#: includes/class-wcj-product-info.php:255
|
3479 |
+
#: includes/class-wcj-product-price-by-formula.php:171
|
3480 |
#: includes/class-wcj-shipping-by-products.php:214
|
3481 |
#: includes/class-wcj-shipping-options.php:191
|
3482 |
#: includes/classes/class-wcj-module.php:221
|
3625 |
#: includes/settings/wcj-settings-pdf-invoicing-numbering.php:28
|
3626 |
#: includes/settings/wcj-settings-pdf-invoicing-page.php:107
|
3627 |
#: includes/settings/wcj-settings-pdf-invoicing-styling.php:81
|
|
|
3628 |
#: includes/settings/wcj-settings-price-by-country.php:81
|
3629 |
+
#: includes/settings/wcj-settings-price-by-country.php:89
|
3630 |
+
#: includes/settings/wcj-settings-price-by-country.php:109
|
3631 |
+
#: includes/settings/wcj-settings-price-by-country.php:125
|
3632 |
+
#: includes/settings/wcj-settings-price-by-country.php:152
|
3633 |
+
#: includes/settings/wcj-settings-price-by-country.php:199
|
3634 |
+
#: includes/settings/wcj-settings-price-by-country.php:217
|
3635 |
+
#: includes/settings/wcj-settings-price-by-country.php:226
|
3636 |
+
#: includes/settings/wcj-settings-price-by-country.php:235
|
3637 |
+
#: includes/settings/wcj-settings-price-by-country.php:245
|
3638 |
#: includes/settings/wcj-settings-price-by-country.php:292
|
3639 |
+
#: includes/settings/wcj-settings-price-by-country.php:300
|
3640 |
#: includes/settings/wcj-settings-price-by-user-role.php:23
|
3641 |
#: includes/settings/wcj-settings-price-by-user-role.php:50
|
3642 |
#: includes/settings/wcj-settings-price-by-user-role.php:97
|
3866 |
"addon in pdf."
|
3867 |
msgstr ""
|
3868 |
|
3869 |
+
#: includes/class-wcj-product-addons.php:300
|
3870 |
msgid "Some of the required addons are not selected!"
|
3871 |
msgstr ""
|
3872 |
|
3873 |
+
#: includes/class-wcj-product-addons.php:306
|
3874 |
+
msgid "Invalid security nonce"
|
3875 |
+
msgstr ""
|
3876 |
+
|
3877 |
+
#: includes/class-wcj-product-addons.php:319
|
3878 |
msgid ""
|
3879 |
"Booster: Free plugin's version is limited to only three products with per "
|
3880 |
"product addons enabled at a time. You will need to get <a href=\"https://"
|
3896 |
"product's edit page."
|
3897 |
msgstr ""
|
3898 |
|
3899 |
+
#: includes/class-wcj-product-bookings.php:129
|
3900 |
+
#: includes/pdf-invoices/class-wcj-pdf-invoicing-report-tool.php:99
|
3901 |
+
msgid "Sorry, but something went wrong..."
|
3902 |
+
msgstr ""
|
3903 |
+
|
3904 |
#: includes/class-wcj-product-bookings.php:159
|
3905 |
+
#: includes/class-wcj-product-bookings.php:287
|
3906 |
#: includes/settings/wcj-settings-product-bookings.php:80
|
3907 |
msgid "\"Date to\" must be after \"Date from\""
|
3908 |
msgstr ""
|
3909 |
|
3910 |
#: includes/class-wcj-product-bookings.php:173
|
3911 |
+
#: includes/class-wcj-product-open-pricing.php:298
|
3912 |
#: includes/settings/wcj-settings-add-to-cart.php:153
|
3913 |
#: includes/settings/wcj-settings-add-to-cart.php:185
|
3914 |
#: includes/settings/wcj-settings-add-to-cart.php:220
|
3920 |
msgid "Period"
|
3921 |
msgstr ""
|
3922 |
|
3923 |
+
#: includes/class-wcj-product-bookings.php:277
|
3924 |
#: includes/settings/wcj-settings-product-bookings.php:66
|
3925 |
msgid "\"Date from\" must be set"
|
3926 |
msgstr ""
|
3927 |
|
3928 |
+
#: includes/class-wcj-product-bookings.php:281
|
3929 |
#: includes/settings/wcj-settings-product-bookings.php:73
|
3930 |
msgid "\"Date to\" must be set"
|
3931 |
msgstr ""
|
3932 |
|
3933 |
+
#: includes/class-wcj-product-bookings.php:420
|
3934 |
#: includes/settings/wcj-settings-product-bookings.php:38
|
3935 |
msgid "Date from"
|
3936 |
msgstr ""
|
3937 |
|
3938 |
+
#: includes/class-wcj-product-bookings.php:424
|
3939 |
#: includes/settings/wcj-settings-product-bookings.php:45
|
3940 |
msgid "Date to"
|
3941 |
msgstr ""
|
3942 |
|
3943 |
+
#: includes/class-wcj-product-bookings.php:450
|
3944 |
#: includes/settings/wcj-settings-product-bookings.php:59
|
3945 |
msgid "/ day"
|
3946 |
msgstr ""
|
3947 |
|
3948 |
+
#: includes/class-wcj-product-bookings.php:541
|
3949 |
msgid ""
|
3950 |
"Booster: Free plugin's version is limited to only one bookings product "
|
3951 |
"enabled at a time. You will need to get <a href=\"https://booster.io/buy-"
|
3970 |
msgid "Product Bulk Meta Editor Tool."
|
3971 |
msgstr ""
|
3972 |
|
3973 |
+
#: includes/class-wcj-product-bulk-meta-editor.php:185
|
3974 |
msgid "Please enter meta key."
|
3975 |
msgstr ""
|
3976 |
|
3977 |
+
#: includes/class-wcj-product-bulk-meta-editor.php:207
|
3978 |
#, php-format
|
3979 |
msgid "Meta for <strong>%d</strong> product(s) was updated."
|
3980 |
msgstr ""
|
3981 |
|
3982 |
+
#: includes/class-wcj-product-bulk-meta-editor.php:211
|
3983 |
#, php-format
|
3984 |
msgid "Meta for <strong>%d</strong> product(s) was not updated."
|
3985 |
msgstr ""
|
3986 |
|
3987 |
+
#: includes/class-wcj-product-bulk-meta-editor.php:256
|
3988 |
msgid "Meta key"
|
3989 |
msgstr ""
|
3990 |
|
3991 |
+
#: includes/class-wcj-product-bulk-meta-editor.php:259
|
3992 |
#, php-format
|
3993 |
msgid "for example %s"
|
3994 |
msgstr ""
|
3995 |
|
3996 |
+
#: includes/class-wcj-product-bulk-meta-editor.php:266
|
3997 |
#: includes/settings/meta-box/wcj-settings-meta-box-add-to-cart-button-visibility.php:22
|
3998 |
#: includes/settings/meta-box/wcj-settings-meta-box-add-to-cart-button-visibility.php:41
|
3999 |
#: includes/settings/wcj-settings-price-by-user-role.php:73
|
4002 |
msgid "Show"
|
4003 |
msgstr ""
|
4004 |
|
4005 |
+
#: includes/class-wcj-product-bulk-meta-editor.php:270
|
4006 |
+
#: includes/class-wcj-product-bulk-meta-editor.php:391
|
4007 |
#: includes/settings/wcj-settings-product-add-to-cart.php:312
|
4008 |
msgid "Meta"
|
4009 |
msgstr ""
|
4010 |
|
4011 |
+
#: includes/class-wcj-product-bulk-meta-editor.php:295
|
4012 |
msgid ""
|
4013 |
"Hold <strong>Control</strong> key to select multiple products. Press "
|
4014 |
"<strong>Control</strong> + <strong>A</strong> to select all products."
|
4015 |
msgstr ""
|
4016 |
|
4017 |
+
#: includes/class-wcj-product-bulk-meta-editor.php:320
|
4018 |
+
#: includes/class-wcj-product-by-user.php:301
|
4019 |
+
#: includes/class-wcj-purchase-data.php:122
|
4020 |
+
#: includes/classes/class-wcj-module.php:998
|
4021 |
#: includes/functions/wcj-functions-general.php:208
|
4022 |
+
#: includes/functions/wcj-functions-html.php:138
|
4023 |
+
#: includes/reports/class-wcj-reports-monthly-sales.php:389
|
4024 |
#: includes/settings/wcj-settings-empty-cart.php:88
|
4025 |
+
#: includes/shortcodes/class-wcj-products-add-form-shortcodes.php:391
|
4026 |
#: includes/tools/class-wcj-order-statuses-tool.php:213
|
4027 |
#: includes/tools/class-wcj-order-statuses-tool.php:363
|
4028 |
msgid "Are you sure?"
|
4029 |
msgstr ""
|
4030 |
|
4031 |
+
#: includes/class-wcj-product-bulk-meta-editor.php:337
|
4032 |
#: includes/settings/wcj-settings-admin-orders-list.php:79
|
4033 |
#: includes/settings/wcj-settings-admin-products-list.php:64
|
4034 |
#: includes/settings/wcj-settings-checkout-fees.php:81
|
4039 |
msgid "Value"
|
4040 |
msgstr ""
|
4041 |
|
4042 |
+
#: includes/class-wcj-product-bulk-meta-editor.php:343
|
4043 |
msgid "Set"
|
4044 |
msgstr ""
|
4045 |
|
4046 |
+
#: includes/class-wcj-product-bulk-meta-editor.php:347
|
4047 |
msgid "Set Meta for All Products"
|
4048 |
msgstr ""
|
4049 |
|
4050 |
+
#: includes/class-wcj-product-bulk-meta-editor.php:367
|
4051 |
msgid "Save all"
|
4052 |
msgstr ""
|
4053 |
|
4054 |
+
#: includes/class-wcj-product-bulk-meta-editor.php:370
|
4055 |
msgid "Delete all"
|
4056 |
msgstr ""
|
4057 |
|
4058 |
+
#: includes/class-wcj-product-bulk-meta-editor.php:415
|
4059 |
msgid "Save"
|
4060 |
msgstr ""
|
4061 |
|
4062 |
+
#: includes/class-wcj-product-bulk-meta-editor.php:444
|
4063 |
+
#: includes/class-wcj-purchase-data.php:105
|
4064 |
#: includes/export/class-wcj-export-fields-helper.php:285
|
4065 |
#: includes/functions/wcj-functions-reports.php:27
|
4066 |
#: includes/settings/wcj-settings-product-bulk-meta-editor.php:45
|
4067 |
msgid "Product ID"
|
4068 |
msgstr ""
|
4069 |
|
4070 |
+
#: includes/class-wcj-product-bulk-meta-editor.php:447
|
4071 |
#: includes/settings/wcj-settings-product-bulk-meta-editor.php:46
|
4072 |
msgid "Product status"
|
4073 |
msgstr ""
|
4074 |
|
4075 |
+
#: includes/class-wcj-product-bulk-meta-editor.php:450
|
4076 |
#: includes/settings/wcj-settings-product-bulk-meta-editor.php:47
|
4077 |
msgid "Meta keys"
|
4078 |
msgstr ""
|
4079 |
|
4080 |
+
#: includes/class-wcj-product-bulk-meta-editor.php:475
|
4081 |
msgid "Show all"
|
4082 |
msgstr ""
|
4083 |
|
4094 |
msgid "Bulk Price Converter Tool."
|
4095 |
msgstr ""
|
4096 |
|
4097 |
+
#: includes/class-wcj-product-bulk-price-converter.php:261
|
4098 |
msgid "Multiply value must be above zero."
|
4099 |
msgstr ""
|
4100 |
|
4101 |
+
#: includes/class-wcj-product-bulk-price-converter.php:267
|
4102 |
msgid "Prices changed successfully!"
|
4103 |
msgstr ""
|
4104 |
|
4105 |
+
#: includes/class-wcj-product-bulk-price-converter.php:292
|
4106 |
msgid "Multiply all product prices by"
|
4107 |
msgstr ""
|
4108 |
|
4109 |
+
#: includes/class-wcj-product-bulk-price-converter.php:300
|
4110 |
msgid "Price type to modify"
|
4111 |
msgstr ""
|
4112 |
|
4113 |
+
#: includes/class-wcj-product-bulk-price-converter.php:302
|
4114 |
msgid "Both"
|
4115 |
msgstr ""
|
4116 |
|
4117 |
+
#: includes/class-wcj-product-bulk-price-converter.php:304
|
4118 |
msgid "Sale prices only"
|
4119 |
msgstr ""
|
4120 |
|
4121 |
+
#: includes/class-wcj-product-bulk-price-converter.php:306
|
4122 |
msgid "Regular prices only"
|
4123 |
msgstr ""
|
4124 |
|
4125 |
+
#: includes/class-wcj-product-bulk-price-converter.php:313
|
4126 |
msgid "Products category"
|
4127 |
msgstr ""
|
4128 |
|
4129 |
+
#: includes/class-wcj-product-bulk-price-converter.php:315
|
4130 |
#: includes/shortcodes/class-wcj-products-shortcodes.php:376
|
4131 |
msgid "Any"
|
4132 |
msgstr ""
|
4133 |
|
4134 |
+
#: includes/class-wcj-product-bulk-price-converter.php:317
|
4135 |
#: includes/settings/wcj-settings-global-discount.php:113
|
4136 |
msgid "None"
|
4137 |
msgstr ""
|
4138 |
|
4139 |
+
#: includes/class-wcj-product-bulk-price-converter.php:324
|
4140 |
msgid "\"Pretty prices\" threshold"
|
4141 |
msgstr ""
|
4142 |
|
4143 |
+
#: includes/class-wcj-product-bulk-price-converter.php:325
|
4144 |
#: includes/settings/wcj-settings-payment-gateways-min-max.php:90
|
4145 |
msgid "Leave zero to disable."
|
4146 |
msgstr ""
|
4147 |
|
4148 |
+
#: includes/class-wcj-product-bulk-price-converter.php:326
|
4149 |
msgid ""
|
4150 |
"Otherwise - all prices below \"threshold\" will end with 0,99 and all prices "
|
4151 |
"above or equal to \"threshold\" will end with 9,00."
|
4152 |
msgstr ""
|
4153 |
|
4154 |
+
#: includes/class-wcj-product-bulk-price-converter.php:327
|
4155 |
msgid ""
|
4156 |
"E.g.: if you set \"threshold\" to 100, then all prices below 100 will be like "
|
4157 |
"45,99 and all other prices will be like 109,00."
|
4158 |
msgstr ""
|
4159 |
|
4160 |
+
#: includes/class-wcj-product-bulk-price-converter.php:335
|
4161 |
msgid "Preview Prices"
|
4162 |
msgstr ""
|
4163 |
|
4164 |
+
#: includes/class-wcj-product-bulk-price-converter.php:342
|
4165 |
msgid "Change Prices"
|
4166 |
msgstr ""
|
4167 |
|
4191 |
msgid "Countries"
|
4192 |
msgstr ""
|
4193 |
|
4194 |
+
#: includes/class-wcj-product-by-country.php:157
|
4195 |
msgid "User Country Selection Options"
|
4196 |
msgstr ""
|
4197 |
|
4198 |
+
#: includes/class-wcj-product-by-country.php:162
|
4199 |
msgid "User Country Selection Method"
|
4200 |
msgstr ""
|
4201 |
|
4202 |
+
#: includes/class-wcj-product-by-country.php:163
|
4203 |
msgid "Possible values: \"Automatically by IP\" or \"Manually\"."
|
4204 |
msgstr ""
|
4205 |
|
4206 |
+
#: includes/class-wcj-product-by-country.php:166
|
4207 |
#, php-format
|
4208 |
msgid ""
|
4209 |
"If \"Manually\" option is selected, you can add country selection drop box to "
|
4210 |
"frontend with \"%1$s\" widget or %2$s shortcode."
|
4211 |
msgstr ""
|
4212 |
|
4213 |
+
#: includes/class-wcj-product-by-country.php:167
|
4214 |
#: includes/class-wcj-product-custom-visibility.php:38
|
4215 |
#: includes/widgets/class-wcj-widget-selector.php:37
|
4216 |
msgid "Booster - Selector"
|
4217 |
msgstr ""
|
4218 |
|
4219 |
+
#: includes/class-wcj-product-by-country.php:175
|
4220 |
msgid "Automatically by IP"
|
4221 |
msgstr ""
|
4222 |
|
4223 |
+
#: includes/class-wcj-product-by-country.php:176
|
4224 |
#: includes/settings/wcj-settings-pdf-invoicing.php:36
|
4225 |
msgid "Manually"
|
4226 |
msgstr ""
|
4227 |
|
4228 |
+
#: includes/class-wcj-product-by-country.php:182
|
4229 |
+
#: includes/class-wcj-product-by-country.php:218
|
4230 |
msgid "Country List"
|
4231 |
msgstr ""
|
4232 |
|
4233 |
+
#: includes/class-wcj-product-by-country.php:183
|
4234 |
msgid ""
|
4235 |
"This option sets which countries will be added to the list in [wcj_selector "
|
4236 |
"selector_type=\"country\"] shortcode. Possible values: \"All countries\" or "
|
4237 |
"\"WooCommerce selling locations\"."
|
4238 |
msgstr ""
|
4239 |
|
4240 |
+
#: includes/class-wcj-product-by-country.php:186
|
4241 |
+
#: includes/class-wcj-product-by-country.php:222
|
4242 |
#, php-format
|
4243 |
msgid ""
|
4244 |
"If \"WooCommerce selling locations\" option is selected, country list will be "
|
4246 |
"a>."
|
4247 |
msgstr ""
|
4248 |
|
4249 |
+
#: includes/class-wcj-product-by-country.php:195
|
4250 |
+
#: includes/class-wcj-product-by-country.php:231
|
4251 |
msgid "WooCommerce selling locations"
|
4252 |
msgstr ""
|
4253 |
|
4254 |
+
#: includes/class-wcj-product-by-country.php:201
|
4255 |
msgid "Overwrite by Billing Country"
|
4256 |
msgstr ""
|
4257 |
|
4258 |
+
#: includes/class-wcj-product-by-country.php:202
|
4259 |
msgid "Tries to overwrite Country by User Billing Country on Checkout Page."
|
4260 |
msgstr ""
|
4261 |
|
4262 |
+
#: includes/class-wcj-product-by-country.php:213
|
4263 |
msgid "Admin Country List Options"
|
4264 |
msgstr ""
|
4265 |
|
4266 |
+
#: includes/class-wcj-product-by-country.php:219
|
4267 |
msgid ""
|
4268 |
"This option sets which countries will be added to list in product's edit "
|
4269 |
"page. Possible values: \"All countries\" or \"WooCommerce selling locations\"."
|
4312 |
msgid "Set product availability by time."
|
4313 |
msgstr ""
|
4314 |
|
4315 |
+
#: includes/class-wcj-product-by-time.php:98
|
4316 |
#: includes/settings/wcj-settings-product-by-time.php:95
|
4317 |
msgid "%product_title% is not available today."
|
4318 |
msgstr ""
|
4319 |
|
4320 |
+
#: includes/class-wcj-product-by-time.php:101
|
4321 |
msgid "<p >%product_title% is not available today."
|
4322 |
msgstr ""
|
4323 |
|
4324 |
+
#: includes/class-wcj-product-by-time.php:106
|
4325 |
+
#: includes/class-wcj-product-by-time.php:109
|
4326 |
#: includes/settings/wcj-settings-product-by-time.php:84
|
4327 |
msgid "%product_title% is available only at %time_today% today."
|
4328 |
msgstr ""
|
4392 |
"form to frontend."
|
4393 |
msgstr ""
|
4394 |
|
4395 |
+
#: includes/class-wcj-product-by-user.php:234
|
4396 |
+
#: includes/class-wcj-product-by-user.php:243
|
4397 |
msgid "Wrong user ID!"
|
4398 |
msgstr ""
|
4399 |
|
4400 |
+
#: includes/class-wcj-product-by-user.php:276
|
4401 |
#: includes/export/class-wcj-export-fields-helper.php:298
|
4402 |
msgid "Status"
|
4403 |
msgstr ""
|
4404 |
|
4405 |
+
#: includes/class-wcj-product-by-user.php:276
|
4406 |
#: includes/class-wcj-product-tabs.php:663
|
4407 |
+
#: includes/gateways/class-wc-gateway-wcj-custom-template.php:59
|
4408 |
#: includes/input-fields/wcj-product-input-fields-options.php:53
|
4409 |
#: includes/settings/meta-box/wcj-settings-meta-box-product-addons.php:104
|
4410 |
#: includes/settings/wcj-settings-admin-orders-list.php:187
|
4427 |
#: includes/settings/wcj-settings-upsells.php:45
|
4428 |
#: includes/shipping/class-wc-shipping-wcj-custom-template.php:122
|
4429 |
#: includes/shipping/class-wc-shipping-wcj-custom-with-shipping-zones.php:223
|
4430 |
+
#: includes/shortcodes/class-wcj-products-add-form-shortcodes.php:361
|
4431 |
#: includes/widgets/class-wcj-widget-country-switcher.php:77
|
4432 |
#: includes/widgets/class-wcj-widget-left-to-free-shipping.php:63
|
4433 |
#: includes/widgets/class-wcj-widget-multicurrency.php:85
|
4435 |
msgid "Title"
|
4436 |
msgstr ""
|
4437 |
|
4438 |
+
#: includes/class-wcj-product-by-user.php:292
|
4439 |
+
#: includes/shortcodes/class-wcj-products-add-form-shortcodes.php:470
|
4440 |
#: includes/tools/class-wcj-order-statuses-tool.php:222
|
4441 |
#: includes/tools/class-wcj-order-statuses-tool.php:300
|
4442 |
msgid "Edit"
|
4482 |
msgid "Custom Visibility"
|
4483 |
msgstr ""
|
4484 |
|
4485 |
+
#: includes/class-wcj-product-custom-visibility.php:102
|
4486 |
msgid "Options List"
|
4487 |
msgstr ""
|
4488 |
|
4489 |
+
#: includes/class-wcj-product-custom-visibility.php:107
|
4490 |
#: includes/settings/wcj-settings-admin-bar.php:17
|
4491 |
#: includes/settings/wcj-settings-breadcrumbs.php:17
|
4492 |
#: includes/settings/wcj-settings-cart-customization.php:17
|
4519 |
msgid "Options"
|
4520 |
msgstr ""
|
4521 |
|
4522 |
+
#: includes/class-wcj-product-custom-visibility.php:108
|
4523 |
msgid "One per line."
|
4524 |
msgstr ""
|
4525 |
|
4526 |
+
#: includes/class-wcj-product-custom-visibility.php:109
|
4527 |
msgid ""
|
4528 |
"Can not be empty. Options will be added to each product's admin edit page and "
|
4529 |
"to the selection drop box on frontend."
|
4701 |
msgstr ""
|
4702 |
|
4703 |
#: includes/class-wcj-product-msrp.php:134
|
4704 |
+
#: includes/class-wcj-product-msrp.php:170
|
4705 |
#: includes/settings/meta-box/wcj-settings-meta-box-product-msrp.php:51
|
4706 |
msgid "MSRP"
|
4707 |
msgstr ""
|
4718 |
msgid "Open Pricing"
|
4719 |
msgstr ""
|
4720 |
|
4721 |
+
#: includes/class-wcj-product-open-pricing.php:382
|
4722 |
#: includes/settings/wcj-settings-product-open-pricing.php:79
|
4723 |
msgid "Price is required!"
|
4724 |
msgstr ""
|
4725 |
|
4726 |
+
#: includes/class-wcj-product-open-pricing.php:394
|
4727 |
#: includes/settings/wcj-settings-product-open-pricing.php:87
|
4728 |
msgid "Entered price is too small!"
|
4729 |
msgstr ""
|
4730 |
|
4731 |
+
#: includes/class-wcj-product-open-pricing.php:409
|
4732 |
#: includes/settings/wcj-settings-product-open-pricing.php:95
|
4733 |
msgid "Entered price is too big!"
|
4734 |
msgstr ""
|
4735 |
|
4736 |
+
#: includes/class-wcj-product-open-pricing.php:519
|
4737 |
#: includes/settings/wcj-settings-product-open-pricing.php:32
|
4738 |
msgid "Name Your Price"
|
4739 |
msgstr ""
|
4752 |
msgid "Set formula for automatic product price calculation."
|
4753 |
msgstr ""
|
4754 |
|
4755 |
+
#: includes/class-wcj-product-price-by-formula.php:128
|
4756 |
msgid "Booking cost"
|
4757 |
msgstr ""
|
4758 |
|
4759 |
+
#: includes/class-wcj-product-price-by-formula.php:143
|
4760 |
#, php-format
|
4761 |
msgid "From: %s"
|
4762 |
msgstr ""
|
4763 |
|
4764 |
+
#: includes/class-wcj-product-price-by-formula.php:170
|
4765 |
msgid "Reset products"
|
4766 |
msgstr ""
|
4767 |
|
4768 |
+
#: includes/class-wcj-product-price-by-formula.php:176
|
4769 |
msgid ""
|
4770 |
"If enabled will also reset formula related settings on products when "
|
4771 |
"<code>Reset Settings</code> button is pressed."
|
4772 |
msgstr ""
|
4773 |
|
4774 |
+
#: includes/class-wcj-product-price-by-formula.php:176
|
4775 |
msgid ""
|
4776 |
"It's necessary to <code>Save changes</code> first with the option enabled so "
|
4777 |
"the <code>Reset settings</code> can be pressed."
|
4976 |
|
4977 |
#: includes/class-wcj-products-xml.php:102
|
4978 |
#: includes/exchange-rates/class-wcj-exchange-rates-crons.php:227
|
4979 |
+
#: tracking/class-plugin-usage-tracker.php:213
|
4980 |
msgid "Once Weekly"
|
4981 |
msgstr ""
|
4982 |
|
4985 |
msgid "Once a Minute"
|
4986 |
msgstr ""
|
4987 |
|
4988 |
+
#: includes/class-wcj-products-xml.php:122
|
4989 |
msgid "An error has occurred while creating products XML file."
|
4990 |
msgstr ""
|
4991 |
|
4992 |
+
#: includes/class-wcj-products-xml.php:126
|
4993 |
#, php-format
|
4994 |
msgid "Products XML file #%s created successfully."
|
4995 |
msgstr ""
|
5023 |
msgid "Import products costs from \"WooCommerce Cost of Goods\"."
|
5024 |
msgstr ""
|
5025 |
|
5026 |
+
#: includes/class-wcj-purchase-data.php:106
|
5027 |
msgid "Product Title"
|
5028 |
msgstr ""
|
5029 |
|
5030 |
+
#: includes/class-wcj-purchase-data.php:107
|
5031 |
msgid "WooCommerce Cost of Goods (source)"
|
5032 |
msgstr ""
|
5033 |
|
5034 |
+
#: includes/class-wcj-purchase-data.php:108
|
5035 |
msgid "Booster: Product cost (destination)"
|
5036 |
msgstr ""
|
5037 |
|
5038 |
+
#: includes/class-wcj-purchase-data.php:153
|
5039 |
#: includes/shipping/class-wc-shipping-wcj-custom-template.php:137
|
5040 |
#: includes/shipping/class-wc-shipping-wcj-custom-template.php:194
|
5041 |
#: includes/shipping/class-wc-shipping-wcj-custom-with-shipping-zones.php:163
|
5043 |
msgid "Cost"
|
5044 |
msgstr ""
|
5045 |
|
5046 |
+
#: includes/class-wcj-purchase-data.php:156
|
5047 |
+
#: includes/class-wcj-purchase-data.php:221
|
5048 |
+
#: includes/class-wcj-purchase-data.php:313
|
5049 |
#: includes/functions/wcj-functions-reports.php:31
|
5050 |
#: includes/settings/wcj-settings-purchase-data.php:152
|
5051 |
#: includes/settings/wcj-settings-purchase-data.php:180
|
5052 |
msgid "Profit"
|
5053 |
msgstr ""
|
5054 |
|
5055 |
+
#: includes/class-wcj-purchase-data.php:224
|
5056 |
#: includes/settings/wcj-settings-purchase-data.php:161
|
5057 |
#: includes/settings/wcj-settings-purchase-data.php:187
|
5058 |
msgid "Purchase Cost"
|
5059 |
msgstr ""
|
5060 |
|
5061 |
+
#: includes/class-wcj-purchase-data.php:310
|
5062 |
msgid "Selling"
|
5063 |
msgstr ""
|
5064 |
|
5065 |
+
#: includes/class-wcj-purchase-data.php:311
|
5066 |
msgid "Buying"
|
5067 |
msgstr ""
|
5068 |
|
5069 |
+
#: includes/class-wcj-purchase-data.php:327
|
5070 |
msgid "Report"
|
5071 |
msgstr ""
|
5072 |
|
5073 |
+
#: includes/class-wcj-related-products.php:31
|
5074 |
msgid ""
|
5075 |
"Change displayed related products number, columns, order; relate by tag, "
|
5076 |
"category, product attribute or manually on per product basis (Plus). Hide "
|
5077 |
"related products completely."
|
5078 |
msgstr ""
|
5079 |
|
5080 |
+
#: includes/class-wcj-related-products.php:32
|
5081 |
msgid ""
|
5082 |
"Change displayed related products number, columns, order; relate by tag, "
|
5083 |
"category, product attribute or manually on per product basis. Hide related "
|
5084 |
"products completely."
|
5085 |
msgstr ""
|
5086 |
|
5087 |
+
#: includes/class-wcj-related-products.php:36
|
5088 |
#, php-format
|
5089 |
msgid ""
|
5090 |
"You may need to <a href=\"%s\">clear all products transients</a> to "
|
5097 |
msgid "Stock, sales, customers etc. reports."
|
5098 |
msgstr ""
|
5099 |
|
5100 |
+
#: includes/class-wcj-reports.php:94
|
5101 |
msgid "Booster: More Ranges - Months"
|
5102 |
msgstr ""
|
5103 |
|
5104 |
+
#: includes/class-wcj-reports.php:96 includes/class-wcj-reports.php:148
|
5105 |
msgid "Select Range"
|
5106 |
msgstr ""
|
5107 |
|
5108 |
+
#: includes/class-wcj-reports.php:146
|
5109 |
msgid "Booster: More Ranges"
|
5110 |
msgstr ""
|
5111 |
|
5112 |
+
#: includes/class-wcj-reports.php:258
|
5113 |
msgid "Booster: Product Sales (Daily)"
|
5114 |
msgstr ""
|
5115 |
|
5116 |
+
#: includes/class-wcj-reports.php:265
|
5117 |
msgid "Booster: Product Sales (Monthly)"
|
5118 |
msgstr ""
|
5119 |
|
5120 |
+
#: includes/class-wcj-reports.php:272
|
5121 |
msgid "Booster: Monthly Sales (with Currency Conversion)"
|
5122 |
msgstr ""
|
5123 |
|
5124 |
+
#: includes/class-wcj-reports.php:279
|
5125 |
msgid "Booster: Payment Gateways"
|
5126 |
msgstr ""
|
5127 |
|
5128 |
+
#: includes/class-wcj-reports.php:296
|
5129 |
msgid "Booster: All in stock"
|
5130 |
msgstr ""
|
5131 |
|
5132 |
+
#: includes/class-wcj-reports.php:303
|
5133 |
msgid "Booster: Understocked"
|
5134 |
msgstr ""
|
5135 |
|
5136 |
+
#: includes/class-wcj-reports.php:310
|
5137 |
msgid "Booster: Overstocked"
|
5138 |
msgstr ""
|
5139 |
|
5140 |
+
#: includes/class-wcj-reports.php:327
|
5141 |
msgid "Booster: Customers by Country"
|
5142 |
msgstr ""
|
5143 |
|
5144 |
+
#: includes/class-wcj-reports.php:334
|
5145 |
msgid "Booster: Customers by Country Sets"
|
5146 |
msgstr ""
|
5147 |
|
5349 |
#: includes/settings/wcj-settings-order-min-amount.php:69
|
5350 |
#: includes/settings/wcj-settings-orders.php:135
|
5351 |
#: includes/settings/wcj-settings-orders.php:162
|
5352 |
+
#: includes/settings/wcj-settings-pdf-invoicing-advanced.php:198
|
5353 |
+
#: includes/settings/wcj-settings-pdf-invoicing-advanced.php:256
|
5354 |
#: includes/settings/wcj-settings-product-by-condition.php:115
|
5355 |
#: includes/settings/wcj-settings-product-by-user.php:122
|
5356 |
#: includes/settings/wcj-settings-product-open-pricing.php:131
|
5361 |
#: includes/settings/wcj-settings-purchase-data.php:188
|
5362 |
#: includes/settings/wcj-settings-sku.php:314
|
5363 |
#: includes/settings/wcj-settings-sku.php:341
|
5364 |
+
#: includes/shortcodes/class-wcj-products-add-form-shortcodes.php:470
|
5365 |
#: includes/tools/class-wcj-order-statuses-tool.php:300
|
5366 |
msgid "Add"
|
5367 |
msgstr ""
|
5585 |
msgid "Add multiple custom shipping methods to WooCommerce."
|
5586 |
msgstr ""
|
5587 |
|
5588 |
+
#: includes/class-wcj-sku.php:30 includes/class-wcj-sku.php:709
|
5589 |
#: includes/export/class-wcj-export-fields-helper.php:288
|
5590 |
msgid "SKU"
|
5591 |
msgstr ""
|
5609 |
msgid "The tool generates and sets product SKUs for existing products."
|
5610 |
msgstr ""
|
5611 |
|
5612 |
+
#: includes/class-wcj-sku.php:710
|
5613 |
msgid "Old SKU"
|
5614 |
msgstr ""
|
5615 |
|
5616 |
+
#: includes/class-wcj-sku.php:716
|
5617 |
msgid "SKUs generated and set successfully!"
|
5618 |
msgstr ""
|
5619 |
|
5620 |
+
#: includes/class-wcj-sku.php:727
|
5621 |
msgid "Preview SKUs"
|
5622 |
msgstr ""
|
5623 |
|
5624 |
+
#: includes/class-wcj-sku.php:729
|
5625 |
msgid "Set SKUs"
|
5626 |
msgstr ""
|
5627 |
|
5628 |
+
#: includes/class-wcj-sku.php:732
|
5629 |
msgid ""
|
5630 |
"You can optionally limit affected products by main product's ID (set option "
|
5631 |
"to zero to ignore):"
|
5632 |
msgstr ""
|
5633 |
|
5634 |
+
#: includes/class-wcj-sku.php:734
|
5635 |
msgid "Min ID"
|
5636 |
msgstr ""
|
5637 |
|
5638 |
+
#: includes/class-wcj-sku.php:737
|
5639 |
msgid "Max ID"
|
5640 |
msgstr ""
|
5641 |
|
5733 |
msgid "Referer Type"
|
5734 |
msgstr ""
|
5735 |
|
5736 |
+
#: includes/class-wcj-track-users.php:175
|
5737 |
msgid "Acquisition Source"
|
5738 |
msgstr ""
|
5739 |
|
5740 |
+
#: includes/class-wcj-track-users.php:212
|
5741 |
#: includes/settings/wcj-settings-products-xml.php:144
|
5742 |
msgid "URL:"
|
5743 |
msgstr ""
|
5744 |
|
5745 |
+
#: includes/class-wcj-track-users.php:213
|
5746 |
msgid "Type:"
|
5747 |
msgstr ""
|
5748 |
|
5749 |
+
#: includes/class-wcj-track-users.php:268
|
5750 |
#, php-format
|
5751 |
msgid "Top %d countries by visits"
|
5752 |
msgstr ""
|
5754 |
#: includes/class-wcj-track-users.php:341
|
5755 |
#: includes/input-fields/wcj-product-input-fields-options.php:46
|
5756 |
#: includes/settings/wcj-settings-checkout-custom-fields.php:154
|
5757 |
+
#: includes/tools/class-wcj-eu-countries-vat-rates-tool.php:113
|
5758 |
+
#: includes/tools/class-wcj-eu-countries-vat-rates-tool.php:133
|
5759 |
msgid "Country"
|
5760 |
msgstr ""
|
5761 |
|
5763 |
msgid "Visits"
|
5764 |
msgstr ""
|
5765 |
|
5766 |
+
#: includes/class-wcj-track-users.php:380
|
5767 |
#, php-format
|
5768 |
msgid "Stats generated at %1$s. Next update is scheduled at %2$s."
|
5769 |
msgstr ""
|
5770 |
|
5771 |
+
#: includes/class-wcj-track-users.php:388
|
5772 |
msgid "Update now"
|
5773 |
msgstr ""
|
5774 |
|
5823 |
msgid "Booster for WooCommerce basic WPML support."
|
5824 |
msgstr ""
|
5825 |
|
5826 |
+
#: includes/class-wcj-wpml.php:206
|
5827 |
msgid "File wpml-config.xml successfully regenerated!"
|
5828 |
msgstr ""
|
5829 |
|
5866 |
"\" products."
|
5867 |
msgstr ""
|
5868 |
|
5869 |
+
#: includes/classes/class-wcj-module.php:770
|
5870 |
#, php-format
|
5871 |
msgid "Selected: %s."
|
5872 |
msgstr ""
|
5873 |
|
5874 |
+
#: includes/classes/class-wcj-module.php:841
|
5875 |
msgid "Back to Module Settings"
|
5876 |
msgstr ""
|
5877 |
|
5878 |
+
#: includes/classes/class-wcj-module.php:862
|
5879 |
#: includes/settings/wcj-settings-wpml.php:102
|
5880 |
msgid "Module Tools"
|
5881 |
msgstr ""
|
5882 |
|
5883 |
+
#: includes/classes/class-wcj-module.php:940
|
5884 |
#: includes/settings/wcj-settings-checkout-core-fields.php:82
|
5885 |
msgid "enabled"
|
5886 |
msgstr ""
|
5887 |
|
5888 |
+
#: includes/classes/class-wcj-module.php:941
|
5889 |
msgid "disabled"
|
5890 |
msgstr ""
|
5891 |
|
5892 |
+
#: includes/classes/class-wcj-module.php:949
|
5893 |
#: includes/settings/wcj-settings-product-tabs.php:181
|
5894 |
#: includes/settings/wcj-settings-product-tabs.php:196
|
5895 |
#: includes/settings/wcj-settings-product-tabs.php:211
|
5897 |
msgid "Deprecated"
|
5898 |
msgstr ""
|
5899 |
|
5900 |
+
#: includes/classes/class-wcj-module.php:988
|
5901 |
msgid "Reset Settings"
|
5902 |
msgstr ""
|
5903 |
|
5904 |
+
#: includes/classes/class-wcj-module.php:994
|
5905 |
msgid "Reset Module to Default Settings"
|
5906 |
msgstr ""
|
5907 |
|
5908 |
+
#: includes/classes/class-wcj-module.php:995
|
5909 |
msgid "Reset Submodule to Default Settings"
|
5910 |
msgstr ""
|
5911 |
|
5912 |
+
#: includes/classes/class-wcj-module.php:1004
|
5913 |
msgid "Reset settings"
|
5914 |
msgstr ""
|
5915 |
|
5916 |
+
#: includes/classes/class-wcj-module.php:1042
|
5917 |
msgid "Module Options"
|
5918 |
msgstr ""
|
5919 |
|
5920 |
+
#: includes/classes/class-wcj-module.php:1049
|
5921 |
msgid "Enable Module"
|
5922 |
msgstr ""
|
5923 |
|
6004 |
msgstr ""
|
6005 |
|
6006 |
#: includes/emails/class-wc-email-wcj-custom.php:247
|
6007 |
+
#: includes/gateways/class-wc-gateway-wcj-custom-template.php:52
|
6008 |
#: includes/settings/wcj-settings-admin-products-list.php:22
|
6009 |
#: includes/settings/wcj-settings-admin-products-list.php:86
|
6010 |
#: includes/settings/wcj-settings-checkout-custom-fields.php:130
|
6263 |
|
6264 |
#: includes/export/class-wcj-export-fields-helper.php:88
|
6265 |
#: includes/export/class-wcj-export-fields-helper.php:299
|
6266 |
+
#: includes/gateways/class-wc-gateway-wcj-custom-template.php:152
|
6267 |
msgid "URL"
|
6268 |
msgstr ""
|
6269 |
|
6468 |
#: includes/settings/meta-box/wcj-settings-meta-box-price-by-user-role.php:108
|
6469 |
#: includes/settings/wcj-settings-product-by-user.php:19
|
6470 |
#: includes/shortcodes/class-wcj-products-add-form-shortcodes.php:193
|
6471 |
+
#: includes/shortcodes/class-wcj-products-add-form-shortcodes.php:405
|
6472 |
msgid "Regular Price"
|
6473 |
msgstr ""
|
6474 |
|
6478 |
#: includes/settings/meta-box/wcj-settings-meta-box-price-by-user-role.php:117
|
6479 |
#: includes/settings/wcj-settings-product-by-user.php:20
|
6480 |
#: includes/shortcodes/class-wcj-products-add-form-shortcodes.php:194
|
6481 |
+
#: includes/shortcodes/class-wcj-products-add-form-shortcodes.php:414
|
6482 |
msgid "Sale Price"
|
6483 |
msgstr ""
|
6484 |
|
6508 |
#: includes/export/class-wcj-export-fields-helper.php:296
|
6509 |
#: includes/settings/wcj-settings-product-by-user.php:17
|
6510 |
#: includes/shortcodes/class-wcj-products-add-form-shortcodes.php:191
|
6511 |
+
#: includes/shortcodes/class-wcj-products-add-form-shortcodes.php:378
|
6512 |
msgid "Short Description"
|
6513 |
msgstr ""
|
6514 |
|
6617 |
msgid "Availability Class"
|
6618 |
msgstr ""
|
6619 |
|
6620 |
+
#: includes/functions/wcj-functions-admin.php:146
|
6621 |
#, php-format
|
6622 |
msgid ""
|
6623 |
"<strong>Booster for WooCommerce</strong> plugin was successfully updated to "
|
6624 |
"version <strong>%s</strong>."
|
6625 |
msgstr ""
|
6626 |
|
6627 |
+
#: includes/functions/wcj-functions-admin.php:193
|
6628 |
msgid "Search…"
|
6629 |
msgstr ""
|
6630 |
|
6631 |
+
#: includes/functions/wcj-functions-admin.php:244
|
6632 |
msgid "Enter comma separated list of IDs."
|
6633 |
msgstr ""
|
6634 |
|
6635 |
+
#: includes/functions/wcj-functions-admin.php:325
|
6636 |
#: includes/settings/wcj-settings-emails-verification.php:79
|
6637 |
#: includes/settings/wcj-settings-emails-verification.php:88
|
6638 |
#: includes/settings/wcj-settings-emails-verification.php:136
|
6640 |
msgid "Replaced value: %s"
|
6641 |
msgstr ""
|
6642 |
|
6643 |
+
#: includes/functions/wcj-functions-admin.php:325
|
6644 |
#, php-format
|
6645 |
msgid "Replaced values: %s"
|
6646 |
msgstr ""
|
6647 |
|
6648 |
+
#: includes/functions/wcj-functions-admin.php:357
|
6649 |
msgid "Upgrade Booster to unlock this feature"
|
6650 |
msgstr ""
|
6651 |
|
6652 |
+
#: includes/functions/wcj-functions-admin.php:360
|
6653 |
#, php-format
|
6654 |
msgid ""
|
6655 |
"Some settings fields are locked and you will need %s to modify all locked "
|
6656 |
"fields."
|
6657 |
msgstr ""
|
6658 |
|
6659 |
+
#: includes/functions/wcj-functions-admin.php:364
|
6660 |
msgid "Buy now"
|
6661 |
msgstr ""
|
6662 |
|
6663 |
+
#: includes/functions/wcj-functions-admin.php:364
|
6664 |
msgid "Visit Booster Site"
|
6665 |
msgstr ""
|
6666 |
|
6667 |
+
#: includes/functions/wcj-functions-admin.php:370
|
6668 |
#, php-format
|
6669 |
msgid "Upgrade <a href=\"%s\" target=\"_blank\">Booster</a> to change value."
|
6670 |
msgstr ""
|
6671 |
|
6672 |
+
#: includes/functions/wcj-functions-admin.php:374
|
6673 |
#, php-format
|
6674 |
msgid ""
|
6675 |
"Upgrade <a href=\"%1$s\" target=\"_blank\">Booster to unlock this feature</a> "
|
6676 |
"to enable \"%2$s\" option."
|
6677 |
msgstr ""
|
6678 |
|
6679 |
+
#: includes/functions/wcj-functions-admin.php:378
|
6680 |
#, php-format
|
6681 |
msgid "Upgrade Booster to to enable \"%s\" option."
|
6682 |
msgstr ""
|
6683 |
|
6684 |
+
#: includes/functions/wcj-functions-admin.php:382
|
6685 |
#, php-format
|
6686 |
msgid ""
|
6687 |
"Upgrade <a href=\"%s\" target=\"_blank\">Booster</a> to change values below."
|
6688 |
msgstr ""
|
6689 |
|
6690 |
+
#: includes/functions/wcj-functions-admin.php:386
|
6691 |
#, php-format
|
6692 |
msgid ""
|
6693 |
"Upgrade <a href=\"%s\" target=\"_blank\">Booster </a> to change values above."
|
6694 |
msgstr ""
|
6695 |
|
6696 |
+
#: includes/functions/wcj-functions-admin.php:389
|
6697 |
msgid "Upgrade Booster to change value."
|
6698 |
msgstr ""
|
6699 |
|
7731 |
msgid "%s seconds till next run."
|
7732 |
msgstr ""
|
7733 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
7734 |
#: includes/functions/wcj-functions-exchange-rates.php:76
|
7735 |
msgid "European Central Bank (ECB)"
|
7736 |
msgstr ""
|
7759 |
msgid "CoinMarketCap"
|
7760 |
msgstr ""
|
7761 |
|
7762 |
+
#: includes/functions/wcj-functions-general.php:703
|
7763 |
#: includes/settings/wcj-settings-cross-sells.php:78
|
7764 |
#: includes/settings/wcj-settings-empty-cart.php:50
|
7765 |
msgid "Before cart"
|
7766 |
msgstr ""
|
7767 |
|
7768 |
+
#: includes/functions/wcj-functions-general.php:704
|
7769 |
msgid "Before cart table"
|
7770 |
msgstr ""
|
7771 |
|
7772 |
+
#: includes/functions/wcj-functions-general.php:705
|
7773 |
msgid "Before cart contents"
|
7774 |
msgstr ""
|
7775 |
|
7776 |
+
#: includes/functions/wcj-functions-general.php:706
|
7777 |
msgid "Cart contents"
|
7778 |
msgstr ""
|
7779 |
|
7780 |
+
#: includes/functions/wcj-functions-general.php:707
|
7781 |
msgid "Cart coupon"
|
7782 |
msgstr ""
|
7783 |
|
7784 |
+
#: includes/functions/wcj-functions-general.php:708
|
7785 |
msgid "Cart actions"
|
7786 |
msgstr ""
|
7787 |
|
7788 |
+
#: includes/functions/wcj-functions-general.php:709
|
7789 |
msgid "After cart contents"
|
7790 |
msgstr ""
|
7791 |
|
7792 |
+
#: includes/functions/wcj-functions-general.php:710
|
7793 |
msgid "After cart table"
|
7794 |
msgstr ""
|
7795 |
|
7796 |
+
#: includes/functions/wcj-functions-general.php:711
|
7797 |
#: includes/settings/wcj-settings-cross-sells.php:79
|
7798 |
msgid "Cart collaterals"
|
7799 |
msgstr ""
|
7800 |
|
7801 |
+
#: includes/functions/wcj-functions-general.php:712
|
7802 |
#: includes/settings/wcj-settings-cross-sells.php:80
|
7803 |
#: includes/settings/wcj-settings-empty-cart.php:59
|
7804 |
msgid "After cart"
|
7805 |
msgstr ""
|
7806 |
|
7807 |
+
#: includes/functions/wcj-functions-general.php:714
|
7808 |
msgid "Before cart totals"
|
7809 |
msgstr ""
|
7810 |
|
7811 |
+
#: includes/functions/wcj-functions-general.php:715
|
7812 |
#: includes/settings/wcj-settings-empty-cart.php:52
|
7813 |
msgid "Cart totals: Before shipping"
|
7814 |
msgstr ""
|
7815 |
|
7816 |
+
#: includes/functions/wcj-functions-general.php:716
|
7817 |
#: includes/settings/wcj-settings-empty-cart.php:53
|
7818 |
msgid "Cart totals: After shipping"
|
7819 |
msgstr ""
|
7820 |
|
7821 |
+
#: includes/functions/wcj-functions-general.php:717
|
7822 |
#: includes/settings/wcj-settings-empty-cart.php:54
|
7823 |
msgid "Cart totals: Before order total"
|
7824 |
msgstr ""
|
7825 |
|
7826 |
+
#: includes/functions/wcj-functions-general.php:718
|
7827 |
#: includes/settings/wcj-settings-empty-cart.php:55
|
7828 |
msgid "Cart totals: After order total"
|
7829 |
msgstr ""
|
7830 |
|
7831 |
+
#: includes/functions/wcj-functions-general.php:719
|
7832 |
msgid "Proceed to checkout"
|
7833 |
msgstr ""
|
7834 |
|
7835 |
+
#: includes/functions/wcj-functions-general.php:720
|
7836 |
msgid "After cart totals"
|
7837 |
msgstr ""
|
7838 |
|
7839 |
+
#: includes/functions/wcj-functions-general.php:722
|
7840 |
msgid "Before shipping calculator"
|
7841 |
msgstr ""
|
7842 |
|
7843 |
+
#: includes/functions/wcj-functions-general.php:723
|
7844 |
msgid "After shipping calculator"
|
7845 |
msgstr ""
|
7846 |
|
7847 |
+
#: includes/functions/wcj-functions-general.php:725
|
7848 |
msgid "If cart is empty"
|
7849 |
msgstr ""
|
7850 |
|
7853 |
msgid "Current image path: %s."
|
7854 |
msgstr ""
|
7855 |
|
7856 |
+
#: includes/functions/wcj-functions-invoicing.php:279
|
7857 |
msgid "Invoice"
|
7858 |
msgstr ""
|
7859 |
|
7860 |
+
#: includes/functions/wcj-functions-invoicing.php:285
|
7861 |
msgid "Proforma Invoice"
|
7862 |
msgstr ""
|
7863 |
|
7864 |
+
#: includes/functions/wcj-functions-invoicing.php:291
|
7865 |
msgid "Packing Slip"
|
7866 |
msgstr ""
|
7867 |
|
7868 |
+
#: includes/functions/wcj-functions-invoicing.php:297
|
7869 |
msgid "Credit Note"
|
7870 |
msgstr ""
|
7871 |
|
7872 |
+
#: includes/functions/wcj-functions-invoicing.php:308
|
7873 |
msgid "Custom Document"
|
7874 |
msgstr ""
|
7875 |
|
7970 |
msgid "You have Free delivery"
|
7971 |
msgstr ""
|
7972 |
|
7973 |
+
#: includes/gateways/class-wc-gateway-wcj-custom-template.php:54
|
7974 |
msgid "Enable Custom Payment"
|
7975 |
msgstr ""
|
7976 |
|
7977 |
+
#: includes/gateways/class-wc-gateway-wcj-custom-template.php:61
|
7978 |
#: includes/shipping/class-wc-shipping-wcj-custom-template.php:124
|
7979 |
#: includes/shipping/class-wc-shipping-wcj-custom-with-shipping-zones.php:225
|
7980 |
msgid "This controls the title which the user sees during checkout."
|
7981 |
msgstr ""
|
7982 |
|
7983 |
+
#: includes/gateways/class-wc-gateway-wcj-custom-template.php:62
|
7984 |
msgid "Custom Payment"
|
7985 |
msgstr ""
|
7986 |
|
7987 |
+
#: includes/gateways/class-wc-gateway-wcj-custom-template.php:69
|
7988 |
msgid "Payment method description that the customer will see on your checkout."
|
7989 |
msgstr ""
|
7990 |
|
7991 |
+
#: includes/gateways/class-wc-gateway-wcj-custom-template.php:70
|
7992 |
msgid "You can add input fields with [wcj_input_field] shortcode."
|
7993 |
msgstr ""
|
7994 |
|
7995 |
+
#: includes/gateways/class-wc-gateway-wcj-custom-template.php:71
|
7996 |
msgid "Custom Payment Description."
|
7997 |
msgstr ""
|
7998 |
|
7999 |
+
#: includes/gateways/class-wc-gateway-wcj-custom-template.php:76
|
8000 |
msgid "Instructions"
|
8001 |
msgstr ""
|
8002 |
|
8003 |
+
#: includes/gateways/class-wc-gateway-wcj-custom-template.php:78
|
8004 |
msgid "Instructions that will be added to the thank you page."
|
8005 |
msgstr ""
|
8006 |
|
8007 |
+
#: includes/gateways/class-wc-gateway-wcj-custom-template.php:84
|
8008 |
msgid "Email Instructions"
|
8009 |
msgstr ""
|
8010 |
|
8011 |
+
#: includes/gateways/class-wc-gateway-wcj-custom-template.php:86
|
8012 |
msgid "Instructions that will be added to the emails."
|
8013 |
msgstr ""
|
8014 |
|
8015 |
+
#: includes/gateways/class-wc-gateway-wcj-custom-template.php:92
|
8016 |
msgid "Icon"
|
8017 |
msgstr ""
|
8018 |
|
8019 |
+
#: includes/gateways/class-wc-gateway-wcj-custom-template.php:94
|
8020 |
#: includes/settings/wcj-settings-payment-gateways-icons.php:19
|
8021 |
msgid ""
|
8022 |
"If you want to show an image next to the gateway's name on the frontend, "
|
8023 |
"enter a URL to an image."
|
8024 |
msgstr ""
|
8025 |
|
8026 |
+
#: includes/gateways/class-wc-gateway-wcj-custom-template.php:101
|
8027 |
#: includes/settings/wcj-settings-shipping-by-order-amount.php:62
|
8028 |
msgid "Minimum order amount"
|
8029 |
msgstr ""
|
8030 |
|
8031 |
+
#: includes/gateways/class-wc-gateway-wcj-custom-template.php:103
|
8032 |
msgid ""
|
8033 |
"If you want to set minimum order amount (excluding fees) to show this gateway "
|
8034 |
"on frontend, enter a number here. Set to 0 to disable."
|
8035 |
msgstr ""
|
8036 |
|
8037 |
+
#: includes/gateways/class-wc-gateway-wcj-custom-template.php:110
|
8038 |
#: includes/settings/wcj-settings-payment-gateways-by-shipping.php:67
|
8039 |
msgid "Enable for shipping methods"
|
8040 |
msgstr ""
|
8041 |
|
8042 |
+
#: includes/gateways/class-wc-gateway-wcj-custom-template.php:115
|
8043 |
msgid ""
|
8044 |
"If gateway is only available for certain shipping methods, set it up here. "
|
8045 |
"Leave blank to enable for all methods."
|
8046 |
msgstr ""
|
8047 |
|
8048 |
+
#: includes/gateways/class-wc-gateway-wcj-custom-template.php:118
|
8049 |
#: includes/settings/wcj-settings-payment-gateways-by-shipping.php:74
|
8050 |
msgid "Select shipping methods"
|
8051 |
msgstr ""
|
8052 |
|
8053 |
+
#: includes/gateways/class-wc-gateway-wcj-custom-template.php:122
|
8054 |
msgid "Enable for virtual orders"
|
8055 |
msgstr ""
|
8056 |
|
8057 |
+
#: includes/gateways/class-wc-gateway-wcj-custom-template.php:123
|
8058 |
msgid "Enable gateway if the order is virtual"
|
8059 |
msgstr ""
|
8060 |
|
8061 |
+
#: includes/gateways/class-wc-gateway-wcj-custom-template.php:129
|
8062 |
#: includes/settings/wcj-settings-order-custom-statuses.php:22
|
8063 |
msgid "Default Order Status"
|
8064 |
msgstr ""
|
8065 |
|
8066 |
+
#: includes/gateways/class-wc-gateway-wcj-custom-template.php:130
|
8067 |
msgid "Enable Custom Statuses feature to add custom statuses to the list."
|
8068 |
msgstr ""
|
8069 |
|
8070 |
+
#: includes/gateways/class-wc-gateway-wcj-custom-template.php:137
|
8071 |
msgid "Send Additional Emails"
|
8072 |
msgstr ""
|
8073 |
|
8074 |
+
#: includes/gateways/class-wc-gateway-wcj-custom-template.php:138
|
8075 |
msgid "Send to Admin"
|
8076 |
msgstr ""
|
8077 |
|
8078 |
+
#: includes/gateways/class-wc-gateway-wcj-custom-template.php:144
|
8079 |
msgid "Send to Customer"
|
8080 |
msgstr ""
|
8081 |
|
8082 |
+
#: includes/gateways/class-wc-gateway-wcj-custom-template.php:145
|
8083 |
msgid ""
|
8084 |
"This may help if you are using pending or custom default status and not "
|
8085 |
"getting new order emails."
|
8086 |
msgstr ""
|
8087 |
|
8088 |
+
#: includes/gateways/class-wc-gateway-wcj-custom-template.php:151
|
8089 |
msgid "Custom Return URL (Thank You Page)"
|
8090 |
msgstr ""
|
8091 |
|
8092 |
+
#: includes/gateways/class-wc-gateway-wcj-custom-template.php:153
|
8093 |
msgid "Enter full URL with http(s)."
|
8094 |
msgstr ""
|
8095 |
|
8096 |
+
#: includes/gateways/class-wc-gateway-wcj-custom-template.php:154
|
8097 |
msgid "Optional. Leave blank to use default URL."
|
8098 |
msgstr ""
|
8099 |
|
8100 |
+
#: includes/gateways/class-wc-gateway-wcj-custom-template.php:359
|
8101 |
#: includes/settings/wcj-settings-payment-gateways.php:48
|
8102 |
msgid "Custom Gateway"
|
8103 |
msgstr ""
|
8104 |
|
8105 |
+
#: includes/gateways/class-wc-gateway-wcj-custom-template.php:361
|
8106 |
msgid "Booster for WooCommerce: Custom Payment Gateway"
|
8107 |
msgstr ""
|
8108 |
|
8120 |
msgid "Product Input Field"
|
8121 |
msgstr ""
|
8122 |
|
8123 |
+
#: includes/input-fields/class-wcj-product-input-fields-core.php:540
|
8124 |
msgid "Wrong file type!"
|
8125 |
msgstr ""
|
8126 |
|
8127 |
+
#: includes/input-fields/class-wcj-product-input-fields-core.php:549
|
8128 |
msgid "File is too big!"
|
8129 |
msgstr ""
|
8130 |
|
8131 |
+
#: includes/input-fields/class-wcj-product-input-fields-core.php:781
|
8132 |
msgid "Select a country…"
|
8133 |
msgstr ""
|
8134 |
|
8181 |
#: includes/settings/meta-box/wcj-settings-meta-box-product-addons.php:97
|
8182 |
#: includes/settings/wcj-settings-checkout-custom-fields.php:147
|
8183 |
#: includes/settings/wcj-settings-product-addons.php:100
|
|
|
8184 |
msgid "Checkbox"
|
8185 |
msgstr ""
|
8186 |
|
8206 |
|
8207 |
#: includes/input-fields/wcj-product-input-fields-options.php:43
|
8208 |
#: includes/settings/wcj-settings-checkout-custom-fields.php:151
|
|
|
8209 |
msgid "Select"
|
8210 |
msgstr ""
|
8211 |
|
8461 |
msgid "Select/Radio: Options"
|
8462 |
msgstr ""
|
8463 |
|
8464 |
+
#: includes/pdf-invoices/class-wcj-pdf-invoicing-renumerate-tool.php:75
|
8465 |
msgid "Invoices successfully renumerated!"
|
8466 |
msgstr ""
|
8467 |
|
8468 |
+
#: includes/pdf-invoices/class-wcj-pdf-invoicing-renumerate-tool.php:77
|
8469 |
msgid "Please select at least one order status."
|
8470 |
msgstr ""
|
8471 |
|
8472 |
+
#: includes/pdf-invoices/class-wcj-pdf-invoicing-renumerate-tool.php:82
|
8473 |
msgid "Booster - Renumerate Invoices"
|
8474 |
msgstr ""
|
8475 |
|
8476 |
+
#: includes/pdf-invoices/class-wcj-pdf-invoicing-renumerate-tool.php:83
|
8477 |
msgid ""
|
8478 |
"The tool renumerates invoices from choosen date. Invoice number format is set "
|
8479 |
"in WooCommerce > Settings > Booster > PDF Invoicing & Packing Slips > "
|
8480 |
"Numbering."
|
8481 |
msgstr ""
|
8482 |
|
8483 |
+
#: includes/pdf-invoices/class-wcj-pdf-invoicing-renumerate-tool.php:90
|
8484 |
#: includes/settings/meta-box/wcj-settings-meta-box-crowdfunding.php:26
|
8485 |
msgid "Start Date"
|
8486 |
msgstr ""
|
8487 |
|
8488 |
+
#: includes/pdf-invoices/class-wcj-pdf-invoicing-renumerate-tool.php:92
|
8489 |
msgid "Date to start renumerating. Leave blank to renumerate all invoices."
|
8490 |
msgstr ""
|
8491 |
|
8492 |
+
#: includes/pdf-invoices/class-wcj-pdf-invoicing-renumerate-tool.php:97
|
8493 |
msgid "End Date"
|
8494 |
msgstr ""
|
8495 |
|
8496 |
+
#: includes/pdf-invoices/class-wcj-pdf-invoicing-renumerate-tool.php:99
|
8497 |
msgid "Date to end renumerating. Leave blank to renumerate all invoices."
|
8498 |
msgstr ""
|
8499 |
|
8500 |
+
#: includes/pdf-invoices/class-wcj-pdf-invoicing-renumerate-tool.php:104
|
8501 |
msgid "Start Number"
|
8502 |
msgstr ""
|
8503 |
|
8504 |
+
#: includes/pdf-invoices/class-wcj-pdf-invoicing-renumerate-tool.php:106
|
8505 |
msgid "Counter to start renumerating. Leave 0 to continue from current counter."
|
8506 |
msgstr ""
|
8507 |
|
8508 |
+
#: includes/pdf-invoices/class-wcj-pdf-invoicing-renumerate-tool.php:111
|
8509 |
msgid "Delete All"
|
8510 |
msgstr ""
|
8511 |
|
8512 |
+
#: includes/pdf-invoices/class-wcj-pdf-invoicing-renumerate-tool.php:113
|
8513 |
msgid "Clear all invoices before renumerating"
|
8514 |
msgstr ""
|
8515 |
|
8516 |
+
#: includes/pdf-invoices/class-wcj-pdf-invoicing-renumerate-tool.php:125
|
8517 |
#: includes/pdf-invoices/class-wcj-pdf-invoicing-report-tool.php:156
|
8518 |
msgid "Document Type"
|
8519 |
msgstr ""
|
8520 |
|
8521 |
+
#: includes/pdf-invoices/class-wcj-pdf-invoicing-renumerate-tool.php:134
|
8522 |
msgid "Order Statuses"
|
8523 |
msgstr ""
|
8524 |
|
8525 |
+
#: includes/pdf-invoices/class-wcj-pdf-invoicing-renumerate-tool.php:138
|
8526 |
msgid "Renumerate invoices"
|
8527 |
msgstr ""
|
8528 |
|
8529 |
+
#: includes/pdf-invoices/class-wcj-pdf-invoicing-renumerate-tool.php:245
|
8530 |
#, php-format
|
8531 |
msgid "Total documents created: %d"
|
8532 |
msgstr ""
|
8533 |
|
8534 |
+
#: includes/pdf-invoices/class-wcj-pdf-invoicing-renumerate-tool.php:247
|
8535 |
#, php-format
|
8536 |
msgid "Total documents deleted: %d"
|
8537 |
msgstr ""
|
8544 |
"Settings > Booster > PDF Invoicing & Packing Slips > Advanced</a>."
|
8545 |
msgstr ""
|
8546 |
|
|
|
|
|
|
|
|
|
8547 |
#: includes/pdf-invoices/class-wcj-pdf-invoicing-report-tool.php:105
|
8548 |
#: includes/pdf-invoices/class-wcj-pdf-invoicing-report-tool.php:127
|
8549 |
msgid "Please fill year and month values."
|
8583 |
#: includes/settings/wcj-settings-multicurrency-base-price.php:67
|
8584 |
#: includes/settings/wcj-settings-multicurrency.php:244
|
8585 |
#: includes/settings/wcj-settings-order-min-amount.php:87
|
8586 |
+
#: includes/settings/wcj-settings-price-by-country.php:257
|
8587 |
#: includes/settings/wcj-settings-price-by-user-role.php:110
|
8588 |
#: includes/settings/wcj-settings-product-addons.php:251
|
8589 |
msgid "Advanced"
|
8717 |
msgid "Templates"
|
8718 |
msgstr ""
|
8719 |
|
8720 |
+
#: includes/price-by-country/class-wcj-price-by-country-group-generator.php:41
|
8721 |
msgid "Country groups successfully generated."
|
8722 |
msgstr ""
|
8723 |
|
8724 |
+
#: includes/price-by-country/class-wcj-price-by-country-group-generator.php:44
|
8725 |
msgid "Country groups generation failed."
|
8726 |
msgstr ""
|
8727 |
|
8728 |
#: includes/price-by-country/class-wcj-price-by-country-local.php:124
|
8729 |
#: includes/settings/meta-box/wcj-settings-meta-box-price-by-country.php:77
|
8730 |
+
#: includes/settings/wcj-settings-price-by-country.php:465
|
8731 |
msgid "Make empty price"
|
8732 |
msgstr ""
|
8733 |
|
8734 |
#: includes/price-by-country/class-wcj-price-by-country-local.php:249
|
8735 |
#: includes/settings/meta-box/wcj-settings-meta-box-price-by-country.php:21
|
8736 |
#: includes/settings/wcj-settings-add-to-cart.php:59
|
8737 |
+
#: includes/settings/wcj-settings-price-by-country.php:350
|
8738 |
+
#: includes/settings/wcj-settings-price-by-country.php:351
|
8739 |
+
#: includes/settings/wcj-settings-price-by-country.php:356
|
8740 |
+
#: includes/settings/wcj-settings-price-by-country.php:406
|
8741 |
+
#: includes/settings/wcj-settings-price-by-country.php:456
|
8742 |
msgid "Group"
|
8743 |
msgstr ""
|
8744 |
|
8809 |
msgstr ""
|
8810 |
|
8811 |
#: includes/reports/class-wcj-reports-monthly-sales.php:102
|
8812 |
+
#: includes/reports/class-wcj-reports-sales.php:345
|
8813 |
msgid "Total Sum"
|
8814 |
msgstr ""
|
8815 |
|
8833 |
msgid "Orders by Currency"
|
8834 |
msgstr ""
|
8835 |
|
8836 |
+
#: includes/reports/class-wcj-reports-monthly-sales.php:217
|
8837 |
+
#: includes/reports/class-wcj-reports-monthly-sales.php:233
|
8838 |
+
#: includes/reports/class-wcj-reports-monthly-sales.php:305
|
8839 |
+
#: includes/reports/class-wcj-reports-monthly-sales.php:310
|
8840 |
#, php-format
|
8841 |
msgid "Forecast: %s"
|
8842 |
msgstr ""
|
8843 |
|
8844 |
+
#: includes/reports/class-wcj-reports-monthly-sales.php:257
|
8845 |
msgid "Grab average rate"
|
8846 |
msgstr ""
|
8847 |
|
8848 |
+
#: includes/reports/class-wcj-reports-monthly-sales.php:316
|
8849 |
msgid "Totals"
|
8850 |
msgstr ""
|
8851 |
|
8852 |
+
#: includes/reports/class-wcj-reports-monthly-sales.php:360
|
8853 |
msgid "Report currency"
|
8854 |
msgstr ""
|
8855 |
|
8856 |
+
#: includes/reports/class-wcj-reports-monthly-sales.php:380
|
8857 |
#, php-format
|
8858 |
msgid "Report generated in: %s s"
|
8859 |
msgstr ""
|
8860 |
|
8861 |
+
#: includes/reports/class-wcj-reports-monthly-sales.php:384
|
8862 |
msgid "Save Currency Rates"
|
8863 |
msgstr ""
|
8864 |
|
8865 |
+
#: includes/reports/class-wcj-reports-monthly-sales.php:389
|
8866 |
msgid "Reset Currency Rates"
|
8867 |
msgstr ""
|
8868 |
|
8869 |
#: includes/reports/class-wcj-reports-product-sales-daily.php:180
|
8870 |
+
#: includes/reports/class-wcj-reports-sales-gateways.php:125
|
8871 |
+
#: includes/reports/class-wcj-reports-sales.php:365
|
8872 |
msgid "Reports Settings"
|
8873 |
msgstr ""
|
8874 |
|
8875 |
+
#: includes/reports/class-wcj-reports-product-sales-daily.php:209
|
8876 |
+
#: includes/reports/class-wcj-reports-sales-gateways.php:155
|
8877 |
msgid "From:"
|
8878 |
msgstr ""
|
8879 |
|
8880 |
+
#: includes/reports/class-wcj-reports-product-sales-daily.php:212
|
8881 |
+
#: includes/reports/class-wcj-reports-sales-gateways.php:158
|
8882 |
msgid "To:"
|
8883 |
msgstr ""
|
8884 |
|
8885 |
+
#: includes/reports/class-wcj-reports-product-sales-daily.php:215
|
8886 |
msgid "Product:"
|
8887 |
msgstr ""
|
8888 |
|
8889 |
+
#: includes/reports/class-wcj-reports-product-sales-daily.php:306
|
8890 |
#, php-format
|
8891 |
msgid "Total: %d"
|
8892 |
msgstr ""
|
8893 |
|
8894 |
+
#: includes/reports/class-wcj-reports-product-sales-daily.php:311
|
8895 |
+
#: includes/reports/class-wcj-reports-product-sales-daily.php:316
|
8896 |
#, php-format
|
8897 |
msgid "Total: %s"
|
8898 |
msgstr ""
|
8899 |
|
8900 |
+
#: includes/reports/class-wcj-reports-product-sales-daily.php:335
|
8901 |
+
#: includes/reports/class-wcj-reports-sales-gateways.php:192
|
8902 |
#, php-format
|
8903 |
msgid "Total orders: %d"
|
8904 |
msgstr ""
|
8905 |
|
8906 |
+
#: includes/reports/class-wcj-reports-product-sales-daily.php:336
|
8907 |
+
#: includes/reports/class-wcj-reports-sales-gateways.php:194
|
8908 |
+
#: includes/reports/class-wcj-reports-sales.php:396
|
8909 |
msgid "No sales data for current period."
|
8910 |
msgstr ""
|
8911 |
|
8912 |
+
#: includes/reports/class-wcj-reports-sales-gateways.php:95
|
8913 |
+
#: includes/reports/class-wcj-reports-stock.php:121
|
8914 |
+
#: includes/reports/class-wcj-reports-stock.php:197
|
8915 |
+
msgid "N/A"
|
8916 |
+
msgstr ""
|
8917 |
+
|
8918 |
+
#: includes/reports/class-wcj-reports-sales-gateways.php:178
|
8919 |
+
msgid "Gateway"
|
8920 |
+
msgstr ""
|
8921 |
+
|
8922 |
+
#: includes/reports/class-wcj-reports-sales.php:141
|
8923 |
msgid "Variation"
|
8924 |
msgstr ""
|
8925 |
|
8926 |
+
#: includes/reports/class-wcj-reports-sales.php:211
|
8927 |
msgid "Last Sale"
|
8928 |
msgstr ""
|
8929 |
|
8930 |
+
#: includes/reports/class-wcj-reports-sales.php:212
|
8931 |
msgid "Total"
|
8932 |
msgstr ""
|
8933 |
|
8934 |
+
#: includes/reports/class-wcj-reports-sales.php:334
|
8935 |
msgid "Total Items"
|
8936 |
msgstr ""
|
8937 |
|
8938 |
+
#: includes/reports/class-wcj-reports-sales.php:356
|
8939 |
msgid "Total Profit"
|
8940 |
msgstr ""
|
8941 |
|
8942 |
+
#: includes/reports/class-wcj-reports-sales.php:391
|
8943 |
msgid "Filter products"
|
8944 |
msgstr ""
|
8945 |
|
8978 |
"accounted."
|
8979 |
msgstr ""
|
8980 |
|
|
|
|
|
|
|
|
|
|
|
|
|
8981 |
#: includes/reports/class-wcj-reports-stock.php:293
|
8982 |
msgid "Stock price"
|
8983 |
msgstr ""
|
9043 |
msgid "Report was generated in: "
|
9044 |
msgstr ""
|
9045 |
|
|
|
|
|
|
|
|
|
9046 |
#: includes/settings/meta-box/wcj-settings-meta-box-add-to-cart-button-visibility.php:21
|
9047 |
#: includes/settings/meta-box/wcj-settings-meta-box-add-to-cart-button-visibility.php:40
|
9048 |
#: includes/settings/wcj-settings-admin-orders-list.php:139
|
9320 |
#: includes/settings/wcj-settings-general.php:129
|
9321 |
#: includes/settings/wcj-settings-general.php:137
|
9322 |
#: includes/settings/wcj-settings-pdf-invoicing-advanced.php:93
|
9323 |
+
#: includes/settings/wcj-settings-pdf-invoicing-advanced.php:182
|
9324 |
#: includes/settings/wcj-settings-price-by-user-role.php:59
|
9325 |
#: includes/settings/wcj-settings-price-by-user-role.php:165
|
9326 |
#: includes/settings/wcj-settings-product-add-to-cart.php:135
|
10512 |
msgstr ""
|
10513 |
|
10514 |
#: includes/settings/wcj-settings-checkout-core-fields.php:94
|
10515 |
+
#: includes/shortcodes/class-wcj-products-add-form-shortcodes.php:354
|
10516 |
msgid "required"
|
10517 |
msgstr ""
|
10518 |
|
11516 |
msgstr ""
|
11517 |
|
11518 |
#: includes/settings/wcj-settings-checkout-files-upload.php:334
|
11519 |
+
#, php-format
|
11520 |
+
msgid "Replaced values: %1$s, %2$s, %3$s."
|
11521 |
msgstr ""
|
11522 |
|
11523 |
#: includes/settings/wcj-settings-checkout-files-upload.php:342
|
11528 |
msgstr ""
|
11529 |
|
11530 |
#: includes/settings/wcj-settings-checkout-files-upload.php:344
|
11531 |
+
#, php-format
|
11532 |
+
msgid "Replaced values: %1$s, %2$s."
|
11533 |
msgstr ""
|
11534 |
|
11535 |
#: includes/settings/wcj-settings-checkout-files-upload.php:352
|
11869 |
#: includes/settings/wcj-settings-multicurrency-base-price.php:26
|
11870 |
#: includes/settings/wcj-settings-multicurrency.php:26
|
11871 |
#: includes/settings/wcj-settings-payment-gateways-currency.php:76
|
11872 |
+
#: includes/settings/wcj-settings-price-by-country.php:425
|
11873 |
msgid "Exchange Rates Updates"
|
11874 |
msgstr ""
|
11875 |
|
11983 |
msgstr ""
|
11984 |
|
11985 |
#: includes/settings/wcj-settings-currency-exchange-rates.php:192
|
11986 |
+
#: includes/settings/wcj-settings-price-by-country.php:420
|
11987 |
msgid "Exchange Rates"
|
11988 |
msgstr ""
|
11989 |
|
12003 |
#: includes/settings/wcj-settings-multicurrency-base-price.php:151
|
12004 |
#: includes/settings/wcj-settings-multicurrency.php:322
|
12005 |
#: includes/settings/wcj-settings-multicurrency.php:366
|
12006 |
+
#: includes/settings/wcj-settings-price-by-country.php:397
|
12007 |
#: includes/settings/wcj-settings-price-formats.php:68
|
12008 |
msgid "Currency"
|
12009 |
msgstr ""
|
12076 |
#: includes/settings/wcj-settings-multicurrency-base-price.php:31
|
12077 |
#: includes/settings/wcj-settings-multicurrency.php:32
|
12078 |
#: includes/settings/wcj-settings-payment-gateways-currency.php:81
|
12079 |
+
#: includes/settings/wcj-settings-price-by-country.php:430
|
12080 |
msgid "Enter Rates Manually"
|
12081 |
msgstr ""
|
12082 |
|
12084 |
#: includes/settings/wcj-settings-multicurrency-base-price.php:32
|
12085 |
#: includes/settings/wcj-settings-multicurrency.php:33
|
12086 |
#: includes/settings/wcj-settings-payment-gateways-currency.php:82
|
12087 |
+
#: includes/settings/wcj-settings-price-by-country.php:431
|
12088 |
msgid "Automatically via Currency Exchange Rates module"
|
12089 |
msgstr ""
|
12090 |
|
12092 |
#: includes/settings/wcj-settings-multicurrency-base-price.php:35
|
12093 |
#: includes/settings/wcj-settings-multicurrency.php:36
|
12094 |
#: includes/settings/wcj-settings-payment-gateways-currency.php:85
|
12095 |
+
#: includes/settings/wcj-settings-price-by-country.php:434
|
12096 |
msgid "Visit"
|
12097 |
msgstr ""
|
12098 |
|
12100 |
#: includes/settings/wcj-settings-multicurrency-base-price.php:35
|
12101 |
#: includes/settings/wcj-settings-multicurrency.php:36
|
12102 |
#: includes/settings/wcj-settings-payment-gateways-currency.php:87
|
12103 |
+
#: includes/settings/wcj-settings-price-by-country.php:434
|
12104 |
msgid "Currency Exchange Rates module"
|
12105 |
msgstr ""
|
12106 |
|
12259 |
msgid "System Info"
|
12260 |
msgstr ""
|
12261 |
|
12262 |
+
#: includes/settings/wcj-settings-debug-tools.php:57
|
12263 |
msgid "Show extended info"
|
12264 |
msgstr ""
|
12265 |
|
12650 |
msgstr ""
|
12651 |
|
12652 |
#: includes/settings/wcj-settings-export.php:23
|
12653 |
+
#: includes/settings/wcj-settings-pdf-invoicing-advanced.php:249
|
12654 |
msgid "CSV Separator"
|
12655 |
msgstr ""
|
12656 |
|
13082 |
|
13083 |
#: includes/settings/wcj-settings-global-discount.php:114
|
13084 |
#: includes/settings/wcj-settings-multicurrency.php:84
|
13085 |
+
#: includes/settings/wcj-settings-price-by-country.php:102
|
13086 |
#: includes/settings/wcj-settings-product-price-by-formula.php:79
|
13087 |
#: includes/shipping/class-wc-shipping-wcj-custom-with-shipping-zones.php:256
|
13088 |
msgid "Round"
|
13209 |
#: includes/settings/wcj-settings-global-discount.php:231
|
13210 |
#: includes/settings/wcj-settings-multicurrency-base-price.php:80
|
13211 |
#: includes/settings/wcj-settings-multicurrency.php:259
|
13212 |
+
#: includes/settings/wcj-settings-price-by-country.php:262
|
13213 |
#: includes/settings/wcj-settings-price-by-user-role.php:115
|
13214 |
#: includes/settings/wcj-settings-product-addons.php:279
|
13215 |
#: includes/settings/wcj-settings-product-price-by-formula.php:136
|
13219 |
#: includes/settings/wcj-settings-global-discount.php:232
|
13220 |
#: includes/settings/wcj-settings-multicurrency-base-price.php:81
|
13221 |
#: includes/settings/wcj-settings-multicurrency.php:260
|
13222 |
+
#: includes/settings/wcj-settings-price-by-country.php:263
|
13223 |
#: includes/settings/wcj-settings-price-by-user-role.php:116
|
13224 |
#: includes/settings/wcj-settings-product-addons.php:280
|
13225 |
#: includes/settings/wcj-settings-product-price-by-formula.php:137
|
13446 |
|
13447 |
#: includes/settings/wcj-settings-multicurrency-base-price.php:72
|
13448 |
#: includes/settings/wcj-settings-multicurrency.php:274
|
13449 |
+
#: includes/settings/wcj-settings-price-by-country.php:290
|
13450 |
#: includes/settings/wcj-settings-product-price-by-formula.php:143
|
13451 |
msgid "Save Calculated Products Prices"
|
13452 |
msgstr ""
|
13463 |
#: includes/settings/wcj-settings-order-min-amount.php:119
|
13464 |
#: includes/settings/wcj-settings-order-numbers.php:143
|
13465 |
#: includes/settings/wcj-settings-payment-gateways-min-max.php:72
|
13466 |
+
#: includes/settings/wcj-settings-price-by-country.php:170
|
13467 |
#: includes/settings/wcj-settings-price-by-user-role.php:135
|
13468 |
#: includes/settings/wcj-settings-product-msrp.php:116
|
13469 |
msgid "Compatibility"
|
13561 |
msgstr ""
|
13562 |
|
13563 |
#: includes/settings/wcj-settings-multicurrency.php:83
|
13564 |
+
#: includes/settings/wcj-settings-price-by-country.php:101
|
13565 |
#: includes/shipping/class-wc-shipping-wcj-custom-with-shipping-zones.php:255
|
13566 |
msgid "No rounding"
|
13567 |
msgstr ""
|
13568 |
|
13569 |
#: includes/settings/wcj-settings-multicurrency.php:85
|
13570 |
+
#: includes/settings/wcj-settings-price-by-country.php:104
|
13571 |
#: includes/settings/wcj-settings-product-price-by-formula.php:80
|
13572 |
#: includes/shipping/class-wc-shipping-wcj-custom-with-shipping-zones.php:257
|
13573 |
msgid "Round up"
|
13574 |
msgstr ""
|
13575 |
|
13576 |
#: includes/settings/wcj-settings-multicurrency.php:86
|
13577 |
+
#: includes/settings/wcj-settings-price-by-country.php:103
|
13578 |
#: includes/settings/wcj-settings-product-price-by-formula.php:81
|
13579 |
#: includes/shipping/class-wc-shipping-wcj-custom-with-shipping-zones.php:258
|
13580 |
msgid "Round down"
|
13606 |
msgstr ""
|
13607 |
|
13608 |
#: includes/settings/wcj-settings-multicurrency.php:125
|
13609 |
+
#: includes/settings/wcj-settings-price-by-country.php:216
|
13610 |
msgid "Free Shipping"
|
13611 |
msgstr ""
|
13612 |
|
13613 |
#: includes/settings/wcj-settings-multicurrency.php:128
|
13614 |
+
#: includes/settings/wcj-settings-price-by-country.php:219
|
13615 |
msgid "Converts minimum amount from WooCommerce Free Shipping native method."
|
13616 |
msgstr ""
|
13617 |
|
13620 |
msgstr ""
|
13621 |
|
13622 |
#: includes/settings/wcj-settings-multicurrency.php:136
|
13623 |
+
#: includes/settings/wcj-settings-price-by-country.php:227
|
13624 |
msgid ""
|
13625 |
"When a fixed coupon is used its value changes according to the current "
|
13626 |
"currency."
|
13760 |
msgstr ""
|
13761 |
|
13762 |
#: includes/settings/wcj-settings-multicurrency.php:275
|
13763 |
+
#: includes/settings/wcj-settings-price-by-country.php:291
|
13764 |
#: includes/settings/wcj-settings-product-price-by-formula.php:144
|
13765 |
msgid ""
|
13766 |
"This may help if you are experiencing compatibility issues with other plugins."
|
15603 |
msgid "Fonts Manager"
|
15604 |
msgstr ""
|
15605 |
|
15606 |
+
#: includes/settings/wcj-settings-pdf-invoicing-advanced.php:176
|
15607 |
msgid "Re-download"
|
15608 |
msgstr ""
|
15609 |
|
15610 |
+
#: includes/settings/wcj-settings-pdf-invoicing-advanced.php:176
|
15611 |
msgid "Download"
|
15612 |
msgstr ""
|
15613 |
|
15614 |
+
#: includes/settings/wcj-settings-pdf-invoicing-advanced.php:181
|
15615 |
msgid "Disable Fonts Download"
|
15616 |
msgstr ""
|
15617 |
|
15618 |
+
#: includes/settings/wcj-settings-pdf-invoicing-advanced.php:192
|
15619 |
msgid "General Display Options"
|
15620 |
msgstr ""
|
15621 |
|
15622 |
+
#: includes/settings/wcj-settings-pdf-invoicing-advanced.php:197
|
15623 |
msgid "Add PDF Invoices Meta Box to Admin Edit Order Page"
|
15624 |
msgstr ""
|
15625 |
|
15626 |
+
#: includes/settings/wcj-settings-pdf-invoicing-advanced.php:204
|
15627 |
msgid "Open docs in new window"
|
15628 |
msgstr ""
|
15629 |
|
15630 |
+
#: includes/settings/wcj-settings-pdf-invoicing-advanced.php:210
|
15631 |
msgid "Add editable numbers and dates"
|
15632 |
msgstr ""
|
15633 |
|
15634 |
+
#: includes/settings/wcj-settings-pdf-invoicing-advanced.php:220
|
15635 |
msgid "Report Tool Options"
|
15636 |
msgstr ""
|
15637 |
|
15638 |
+
#: includes/settings/wcj-settings-pdf-invoicing-advanced.php:225
|
15639 |
msgid "Reports Filename"
|
15640 |
msgstr ""
|
15641 |
|
15642 |
+
#: includes/settings/wcj-settings-pdf-invoicing-advanced.php:233
|
15643 |
msgid "Report Columns"
|
15644 |
msgstr ""
|
15645 |
|
15646 |
+
#: includes/settings/wcj-settings-pdf-invoicing-advanced.php:234
|
15647 |
msgid "Leave blank to show all columns."
|
15648 |
msgstr ""
|
15649 |
|
15650 |
+
#: includes/settings/wcj-settings-pdf-invoicing-advanced.php:242
|
15651 |
msgid "Tax Percent Precision"
|
15652 |
msgstr ""
|
15653 |
|
15654 |
+
#: includes/settings/wcj-settings-pdf-invoicing-advanced.php:255
|
15655 |
msgid "CSV UTF-8 BOM"
|
15656 |
msgstr ""
|
15657 |
|
15658 |
+
#: includes/settings/wcj-settings-pdf-invoicing-advanced.php:262
|
15659 |
msgid "Replace Periods with Commas in CSV Data"
|
15660 |
msgstr ""
|
15661 |
|
15662 |
+
#: includes/settings/wcj-settings-pdf-invoicing-advanced.php:263
|
15663 |
#: includes/settings/wcj-settings-product-open-pricing.php:183
|
15664 |
msgid "Replace"
|
15665 |
msgstr ""
|
15666 |
|
15667 |
#: includes/settings/wcj-settings-pdf-invoicing-display.php:30
|
15668 |
+
#: includes/settings/wcj-settings-price-by-country.php:404
|
15669 |
#: includes/settings/wcj-settings-shipping.php:34
|
15670 |
msgid "Admin Title"
|
15671 |
msgstr ""
|
16008 |
msgid "Available in Booster Plus only."
|
16009 |
msgstr ""
|
16010 |
|
16011 |
+
#: includes/settings/wcj-settings-price-by-country.php:33
|
16012 |
msgid ""
|
16013 |
"All existing country groups will be deleted and new groups will be created. "
|
16014 |
"Are you sure?"
|
16015 |
msgstr ""
|
16016 |
|
16017 |
+
#: includes/settings/wcj-settings-price-by-country.php:41
|
16018 |
msgid "Price by Country Options"
|
16019 |
msgstr ""
|
16020 |
|
16021 |
+
#: includes/settings/wcj-settings-price-by-country.php:43
|
16022 |
msgid ""
|
16023 |
"Change product's price and currency by customer's country. Customer's country "
|
16024 |
"is detected automatically by IP, or selected by customer manually."
|
16025 |
msgstr ""
|
16026 |
|
16027 |
+
#: includes/settings/wcj-settings-price-by-country.php:47
|
16028 |
msgid "Customer Country Detection Method"
|
16029 |
msgstr ""
|
16030 |
|
16031 |
+
#: includes/settings/wcj-settings-price-by-country.php:49
|
16032 |
msgid ""
|
16033 |
"If you choose \"by user selection\", use [wcj_country_select_drop_down_list] "
|
16034 |
"shortcode to display country selection list on frontend."
|
16035 |
msgstr ""
|
16036 |
|
16037 |
+
#: includes/settings/wcj-settings-price-by-country.php:53
|
16038 |
msgid "by IP"
|
16039 |
msgstr ""
|
16040 |
|
16041 |
+
#: includes/settings/wcj-settings-price-by-country.php:54
|
16042 |
msgid "by IP, then by user selection"
|
16043 |
msgstr ""
|
16044 |
|
16045 |
+
#: includes/settings/wcj-settings-price-by-country.php:55
|
16046 |
msgid "by user selection"
|
16047 |
msgstr ""
|
16048 |
|
16049 |
+
#: includes/settings/wcj-settings-price-by-country.php:59
|
16050 |
msgid "Override Country Options"
|
16051 |
msgstr ""
|
16052 |
|
16053 |
+
#: includes/settings/wcj-settings-price-by-country.php:64
|
16054 |
msgid "No Override"
|
16055 |
msgstr ""
|
16056 |
|
16057 |
+
#: includes/settings/wcj-settings-price-by-country.php:65
|
16058 |
msgid "Override Country with Customer's Checkout Billing Country"
|
16059 |
msgstr ""
|
16060 |
|
16061 |
+
#: includes/settings/wcj-settings-price-by-country.php:66
|
16062 |
msgid "Override Country with Customer's Checkout Shipping Country"
|
16063 |
msgstr ""
|
16064 |
|
16065 |
+
#: includes/settings/wcj-settings-price-by-country.php:70
|
16066 |
msgid "Override Scope"
|
16067 |
msgstr ""
|
16068 |
|
16069 |
+
#: includes/settings/wcj-settings-price-by-country.php:75
|
16070 |
msgid "All site"
|
16071 |
msgstr ""
|
16072 |
|
16073 |
+
#: includes/settings/wcj-settings-price-by-country.php:76
|
16074 |
msgid "Checkout only"
|
16075 |
msgstr ""
|
16076 |
|
16077 |
+
#: includes/settings/wcj-settings-price-by-country.php:80
|
16078 |
msgid "Revert Currency to Default on Checkout"
|
16079 |
msgstr ""
|
16080 |
|
16081 |
+
#: includes/settings/wcj-settings-price-by-country.php:85
|
16082 |
msgid ""
|
16083 |
"If selected currency is € and your shop currency is $, So if you "
|
16084 |
"want to show $ on the checkout page you can enable the option."
|
16085 |
msgstr ""
|
16086 |
|
16087 |
+
#: includes/settings/wcj-settings-price-by-country.php:88
|
16088 |
msgid "Auto set default checkout billing country"
|
16089 |
msgstr ""
|
16090 |
|
16091 |
+
#: includes/settings/wcj-settings-price-by-country.php:95
|
16092 |
msgid "Price Rounding"
|
16093 |
msgstr ""
|
16094 |
|
16095 |
+
#: includes/settings/wcj-settings-price-by-country.php:96
|
16096 |
msgid "If you choose to multiply price, set rounding options here."
|
16097 |
msgstr ""
|
16098 |
|
16099 |
+
#: includes/settings/wcj-settings-price-by-country.php:108
|
16100 |
msgid "Make Pretty Price"
|
16101 |
msgstr ""
|
16102 |
|
16103 |
+
#: includes/settings/wcj-settings-price-by-country.php:110
|
16104 |
msgid ""
|
16105 |
"If enabled, this will be applied if exchange rates are used. Final converted "
|
16106 |
"price will be rounded, then decreased by smallest possible value. For "
|
16109 |
"above zero."
|
16110 |
msgstr ""
|
16111 |
|
16112 |
+
#: includes/settings/wcj-settings-price-by-country.php:116
|
16113 |
msgid "Discount Min Amount Multiplier"
|
16114 |
msgstr ""
|
16115 |
|
16116 |
+
#: includes/settings/wcj-settings-price-by-country.php:117
|
16117 |
msgid ""
|
16118 |
"If \"Make Pretty Price\" is enabled, here you can set by how many smallest "
|
16119 |
"possible values (e.g. cents) final price should be decreased."
|
16120 |
msgstr ""
|
16121 |
|
16122 |
+
#: includes/settings/wcj-settings-price-by-country.php:124
|
16123 |
msgid "Price by Country on per Product Basis"
|
16124 |
msgstr ""
|
16125 |
|
16126 |
+
#: includes/settings/wcj-settings-price-by-country.php:126
|
16127 |
msgid "This will add product data fields in product edit."
|
16128 |
msgstr ""
|
16129 |
|
16130 |
+
#: includes/settings/wcj-settings-price-by-country.php:132
|
16131 |
msgid "Per product options - backend style"
|
16132 |
msgstr ""
|
16133 |
|
16134 |
+
#: includes/settings/wcj-settings-price-by-country.php:137
|
16135 |
#: includes/settings/wcj-settings-product-msrp.php:107
|
16136 |
msgid "Inline"
|
16137 |
msgstr ""
|
16138 |
|
16139 |
+
#: includes/settings/wcj-settings-price-by-country.php:138
|
16140 |
msgid "Separate meta box"
|
16141 |
msgstr ""
|
16142 |
|
16143 |
+
#: includes/settings/wcj-settings-price-by-country.php:142
|
16144 |
msgid "Per product options - backend user role visibility"
|
16145 |
msgstr ""
|
16146 |
|
16147 |
+
#: includes/settings/wcj-settings-price-by-country.php:143
|
16148 |
msgid "Leave empty to show to all user roles."
|
16149 |
msgstr ""
|
16150 |
|
16151 |
+
#: includes/settings/wcj-settings-price-by-country.php:151
|
16152 |
msgid "Add Countries Flags Images to Select Drop-Down Box"
|
16153 |
msgstr ""
|
16154 |
|
16155 |
+
#: includes/settings/wcj-settings-price-by-country.php:153
|
16156 |
msgid ""
|
16157 |
"If you are using [wcj_country_select_drop_down_list] shortcode or \"Booster: "
|
16158 |
"Country Switcher\" widget, this will add country flags to these select boxes."
|
16159 |
msgstr ""
|
16160 |
|
16161 |
+
#: includes/settings/wcj-settings-price-by-country.php:159
|
16162 |
#: includes/settings/wcj-settings-price-by-user-role.php:65
|
16163 |
msgid "Search Engine Bots"
|
16164 |
msgstr ""
|
16165 |
|
16166 |
+
#: includes/settings/wcj-settings-price-by-country.php:160
|
16167 |
msgid "Disable Price by Country for Bots"
|
16168 |
msgstr ""
|
16169 |
|
16170 |
+
#: includes/settings/wcj-settings-price-by-country.php:175
|
16171 |
msgid "Active Webtofee subscription Section"
|
16172 |
msgstr ""
|
16173 |
|
16174 |
+
#: includes/settings/wcj-settings-price-by-country.php:176
|
16175 |
msgid "Compatibility with Webtofee subscription PLugin"
|
16176 |
msgstr ""
|
16177 |
|
16178 |
+
#: includes/settings/wcj-settings-price-by-country.php:182
|
16179 |
+
#: includes/settings/wcj-settings-price-by-country.php:183
|
16180 |
msgid "Active B2B Plugin Price Section"
|
16181 |
msgstr ""
|
16182 |
|
16183 |
+
#: includes/settings/wcj-settings-price-by-country.php:189
|
16184 |
#: includes/settings/wcj-settings-product-price-by-formula.php:117
|
16185 |
msgid "Disable Quick Edit Product For Admin Scope"
|
16186 |
msgstr ""
|
16187 |
|
16188 |
+
#: includes/settings/wcj-settings-price-by-country.php:190
|
16189 |
#: includes/settings/wcj-settings-product-price-by-formula.php:118
|
16190 |
msgid "Disable For Admin Quick Edit Scope."
|
16191 |
msgstr ""
|
16192 |
|
16193 |
+
#: includes/settings/wcj-settings-price-by-country.php:191
|
16194 |
msgid "Disable module on Edit Product For Admin scope."
|
16195 |
msgstr ""
|
16196 |
|
16197 |
+
#: includes/settings/wcj-settings-price-by-country.php:191
|
16198 |
#: includes/settings/wcj-settings-product-price-by-formula.php:119
|
16199 |
msgid ""
|
16200 |
"For example if you use Quick Edit Product and donot want change the deafult "
|
16201 |
"price then the box ticked"
|
16202 |
msgstr ""
|
16203 |
|
16204 |
+
#: includes/settings/wcj-settings-price-by-country.php:198
|
16205 |
msgid "Price Filter Widget and Sorting by Price Support"
|
16206 |
msgstr ""
|
16207 |
|
16208 |
+
#: includes/settings/wcj-settings-price-by-country.php:210
|
16209 |
msgid "Recalculate price filter widget and sorting by price product prices."
|
16210 |
msgstr ""
|
16211 |
|
16212 |
+
#: includes/settings/wcj-settings-price-by-country.php:225
|
16213 |
msgid "WooCommerce Coupons"
|
16214 |
msgstr ""
|
16215 |
|
16216 |
+
#: includes/settings/wcj-settings-price-by-country.php:233
|
16217 |
msgid "Woo Discount Rules"
|
16218 |
msgstr ""
|
16219 |
|
16220 |
+
#: includes/settings/wcj-settings-price-by-country.php:237
|
16221 |
#, php-format
|
16222 |
msgid ""
|
16223 |
"Adds compatibility with <a href=\"%s\" target=\"_blank\">Woo Discount Rules</"
|
16224 |
"a> plugin."
|
16225 |
msgstr ""
|
16226 |
|
16227 |
+
#: includes/settings/wcj-settings-price-by-country.php:237
|
16228 |
#, php-format
|
16229 |
msgid ""
|
16230 |
"If it doesn't work properly try to enable <a href=\"%s\">redirect to the cart "
|
16231 |
"page after successful addition</a> option."
|
16232 |
msgstr ""
|
16233 |
|
16234 |
+
#: includes/settings/wcj-settings-price-by-country.php:243
|
16235 |
msgid "WooCommerce Points and Rewards"
|
16236 |
msgstr ""
|
16237 |
|
16238 |
+
#: includes/settings/wcj-settings-price-by-country.php:247
|
16239 |
#, php-format
|
16240 |
msgid ""
|
16241 |
"Adds compatibility with <a href=\"%s\" target=\"_blank\">WooCommerce Points "
|
16242 |
"and Rewards</a> plugin."
|
16243 |
msgstr ""
|
16244 |
|
16245 |
+
#: includes/settings/wcj-settings-price-by-country.php:269
|
16246 |
msgid "User IP Detection Method"
|
16247 |
msgstr ""
|
16248 |
|
16249 |
+
#: includes/settings/wcj-settings-price-by-country.php:279
|
16250 |
msgid "Price Format Method"
|
16251 |
msgstr ""
|
16252 |
|
16253 |
+
#: includes/settings/wcj-settings-price-by-country.php:280
|
16254 |
msgid "The moment \"Pretty Price\" and \"Rounding\" will be applied"
|
16255 |
msgstr ""
|
16256 |
|
16257 |
+
#: includes/settings/wcj-settings-price-by-country.php:285
|
16258 |
msgid "get_price()"
|
16259 |
msgstr ""
|
16260 |
|
16261 |
+
#: includes/settings/wcj-settings-price-by-country.php:286
|
16262 |
msgid "wc_get_price_to_display()"
|
16263 |
msgstr ""
|
16264 |
|
16265 |
+
#: includes/settings/wcj-settings-price-by-country.php:298
|
16266 |
msgid "Save Country Group ID"
|
16267 |
msgstr ""
|
16268 |
|
16269 |
+
#: includes/settings/wcj-settings-price-by-country.php:299
|
16270 |
msgid ""
|
16271 |
"Try to disable it if the country detection is not correct, most probably if "
|
16272 |
"\"Override Country Options\" is enabled."
|
16273 |
msgstr ""
|
16274 |
|
16275 |
+
#: includes/settings/wcj-settings-price-by-country.php:310
|
16276 |
msgid "Country Groups"
|
16277 |
msgstr ""
|
16278 |
|
16279 |
+
#: includes/settings/wcj-settings-price-by-country.php:315
|
16280 |
msgid "Countries Selection"
|
16281 |
msgstr ""
|
16282 |
|
16283 |
+
#: includes/settings/wcj-settings-price-by-country.php:316
|
16284 |
msgid "Choose how do you want to enter countries groups in admin."
|
16285 |
msgstr ""
|
16286 |
|
16287 |
+
#: includes/settings/wcj-settings-price-by-country.php:321
|
16288 |
msgid "Comma separated list"
|
16289 |
msgstr ""
|
16290 |
|
16291 |
+
#: includes/settings/wcj-settings-price-by-country.php:322
|
16292 |
msgid "Multiselect"
|
16293 |
msgstr ""
|
16294 |
|
16295 |
+
#: includes/settings/wcj-settings-price-by-country.php:323
|
16296 |
#: includes/settings/wcj-settings-product-by-condition.php:90
|
16297 |
#: includes/settings/wcj-settings-related-products.php:181
|
16298 |
msgid "Chosen select"
|
16299 |
msgstr ""
|
16300 |
|
16301 |
+
#: includes/settings/wcj-settings-price-by-country.php:327
|
16302 |
msgid "Autogenerate Groups"
|
16303 |
msgstr ""
|
16304 |
|
16305 |
+
#: includes/settings/wcj-settings-price-by-country.php:333
|
16306 |
msgid "Groups Number"
|
16307 |
msgstr ""
|
16308 |
|
16309 |
+
#: includes/settings/wcj-settings-price-by-country.php:362
|
16310 |
msgid ""
|
16311 |
"Countries. List of comma separated country codes.<br>For country codes and "
|
16312 |
"predefined sets visit <a href=\"https://booster.io/country-codes/\" target="
|
16313 |
"\"_blank\">https://booster.io/country-codes/</a>"
|
16314 |
msgstr ""
|
16315 |
|
16316 |
+
#: includes/settings/wcj-settings-price-by-country.php:457
|
16317 |
msgid "Multiply Price by"
|
16318 |
msgstr ""
|
16319 |
|
17344 |
|
17345 |
#: includes/settings/wcj-settings-product-by-user.php:18
|
17346 |
#: includes/shortcodes/class-wcj-products-add-form-shortcodes.php:192
|
17347 |
+
#: includes/shortcodes/class-wcj-products-add-form-shortcodes.php:397
|
17348 |
msgid "Image"
|
17349 |
msgstr ""
|
17350 |
|
17393 |
msgstr ""
|
17394 |
|
17395 |
#: includes/settings/wcj-settings-product-by-user.php:130
|
17396 |
+
#: includes/shortcodes/class-wcj-products-add-form-shortcodes.php:314
|
17397 |
msgid "\"%product_title%\" successfully added!"
|
17398 |
msgstr ""
|
17399 |
|
17402 |
msgstr ""
|
17403 |
|
17404 |
#: includes/settings/wcj-settings-product-by-user.php:137
|
17405 |
+
#: includes/shortcodes/class-wcj-products-add-form-shortcodes.php:322
|
17406 |
msgid "\"%product_title%\" successfully edited!"
|
17407 |
msgstr ""
|
17408 |
|
20621 |
msgid "Attribute \"name\" is required!"
|
20622 |
msgstr ""
|
20623 |
|
20624 |
+
#: includes/shortcodes/class-wcj-orders-shortcodes.php:397
|
20625 |
#, php-format
|
20626 |
msgid "Refund #%1$s - %2$s"
|
20627 |
msgstr ""
|
20639 |
msgstr ""
|
20640 |
|
20641 |
#: includes/shortcodes/class-wcj-products-add-form-shortcodes.php:195
|
20642 |
+
#: includes/shortcodes/class-wcj-products-add-form-shortcodes.php:423
|
20643 |
msgid "Product URL"
|
20644 |
msgstr ""
|
20645 |
|
20652 |
msgid "Sale price must be less than the regular price!"
|
20653 |
msgstr ""
|
20654 |
|
20655 |
+
#: includes/shortcodes/class-wcj-products-add-form-shortcodes.php:306
|
20656 |
msgid "Error!"
|
20657 |
msgstr ""
|
20658 |
|
20659 |
+
#: includes/shortcodes/class-wcj-products-add-form-shortcodes.php:349
|
20660 |
msgid "Add New Product"
|
20661 |
msgstr ""
|
20662 |
|
20663 |
+
#: includes/shortcodes/class-wcj-products-add-form-shortcodes.php:349
|
20664 |
msgid "Edit Product"
|
20665 |
msgstr ""
|
20666 |
|
20685 |
msgid "This product is currently out of stock and unavailable."
|
20686 |
msgstr ""
|
20687 |
|
20688 |
+
#: includes/tools/class-wcj-eu-countries-vat-rates-tool.php:55
|
20689 |
+
#: includes/tools/class-wcj-eu-countries-vat-rates-tool.php:88
|
20690 |
msgid "VAT"
|
20691 |
msgstr ""
|
20692 |
|
20693 |
+
#: includes/tools/class-wcj-eu-countries-vat-rates-tool.php:96
|
20694 |
msgid "Add EU Countries VAT Rates"
|
20695 |
msgstr ""
|
20696 |
|
20698 |
msgid "Note: will add duplicates."
|
20699 |
msgstr ""
|
20700 |
|
20701 |
+
#: includes/tools/class-wcj-eu-countries-vat-rates-tool.php:108
|
20702 |
msgid "List of EU VAT rates to be added"
|
20703 |
msgstr ""
|
20704 |
|
20705 |
+
#: includes/tools/class-wcj-eu-countries-vat-rates-tool.php:114
|
20706 |
+
#: includes/tools/class-wcj-eu-countries-vat-rates-tool.php:134
|
20707 |
msgid "Rate"
|
20708 |
msgstr ""
|
20709 |
|
20710 |
+
#: includes/tools/class-wcj-eu-countries-vat-rates-tool.php:128
|
20711 |
msgid "Current standard tax rates"
|
20712 |
msgstr ""
|
20713 |
|
20889 |
msgid "Product custom visibility"
|
20890 |
msgstr ""
|
20891 |
|
20892 |
+
#: tracking/class-plugin-usage-tracker.php:217
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
20893 |
msgid "Once Monthly"
|
20894 |
msgstr ""
|
20895 |
|
20896 |
+
#: tracking/class-plugin-usage-tracker.php:419
|
20897 |
msgid ""
|
20898 |
"We can't detect any product information. This is most probably because you "
|
20899 |
"have not included the code snippet."
|
20900 |
msgstr ""
|
20901 |
|
20902 |
+
#: tracking/class-plugin-usage-tracker.php:958
|
20903 |
#, php-format
|
20904 |
msgid ""
|
20905 |
"Thank you for installing our %1$s. We would like to track its usage on your "
|
20908 |
"improvements to the %1$s. Tracking is completely optional."
|
20909 |
msgstr ""
|
20910 |
|
20911 |
+
#: tracking/class-plugin-usage-tracker.php:965
|
20912 |
#, php-format
|
20913 |
msgid ""
|
20914 |
"Thank you for installing our %1$s. We'd like your permission to track its "
|
20917 |
"help us make improvements to the %1$s. Tracking is completely optional."
|
20918 |
msgstr ""
|
20919 |
|
20920 |
+
#: tracking/class-plugin-usage-tracker.php:976
|
20921 |
msgid "Allow"
|
20922 |
msgstr ""
|
20923 |
|
20924 |
+
#: tracking/class-plugin-usage-tracker.php:977
|
20925 |
msgid "Do Not Allow"
|
20926 |
msgstr ""
|
20927 |
|
20928 |
+
#: tracking/class-plugin-usage-tracker.php:1026
|
20929 |
#, php-format
|
20930 |
msgid ""
|
20931 |
"Thank you for opting in to tracking. Would you like to receive occasional "
|
20932 |
"news about this %s, including details of new features and special offers?"
|
20933 |
msgstr ""
|
20934 |
|
20935 |
+
#: tracking/class-plugin-usage-tracker.php:1036
|
20936 |
msgid "Yes Please"
|
20937 |
msgstr ""
|
20938 |
|
20939 |
+
#: tracking/class-plugin-usage-tracker.php:1037
|
20940 |
msgid "No Thank You"
|
20941 |
msgstr ""
|
20942 |
|
20943 |
+
#: tracking/class-plugin-usage-tracker.php:1072
|
20944 |
msgid "Sorry to see you go"
|
20945 |
msgstr ""
|
20946 |
|
20947 |
+
#: tracking/class-plugin-usage-tracker.php:1073
|
20948 |
msgid ""
|
20949 |
"Before you deactivate the plugin, would you quickly give us your reason for "
|
20950 |
"doing so?"
|
20951 |
msgstr ""
|
20952 |
|
20953 |
+
#: tracking/class-plugin-usage-tracker.php:1075
|
20954 |
msgid "Set up is too difficult"
|
20955 |
msgstr ""
|
20956 |
|
20957 |
+
#: tracking/class-plugin-usage-tracker.php:1076
|
20958 |
msgid "Lack of documentation"
|
20959 |
msgstr ""
|
20960 |
|
20961 |
+
#: tracking/class-plugin-usage-tracker.php:1077
|
20962 |
msgid "Not the features I wanted"
|
20963 |
msgstr ""
|
20964 |
|
20965 |
+
#: tracking/class-plugin-usage-tracker.php:1078
|
20966 |
msgid "Found a better plugin"
|
20967 |
msgstr ""
|
20968 |
|
20969 |
+
#: tracking/class-plugin-usage-tracker.php:1079
|
20970 |
msgid "Installed by mistake"
|
20971 |
msgstr ""
|
20972 |
|
20973 |
+
#: tracking/class-plugin-usage-tracker.php:1080
|
20974 |
msgid "Only required temporarily"
|
20975 |
msgstr ""
|
20976 |
|
20977 |
+
#: tracking/class-plugin-usage-tracker.php:1081
|
20978 |
msgid "Didn't work"
|
20979 |
msgstr ""
|
20980 |
|
20981 |
+
#: tracking/class-plugin-usage-tracker.php:1083
|
20982 |
msgid "Details (optional)"
|
20983 |
msgstr ""
|
20984 |
|
20985 |
+
#: tracking/class-plugin-usage-tracker.php:1124
|
20986 |
msgid "Submitting form"
|
20987 |
msgstr ""
|
20988 |
|
20989 |
+
#: tracking/class-plugin-usage-tracker.php:1184
|
20990 |
msgid "Submit and Deactivate"
|
20991 |
msgstr ""
|
20992 |
|
20993 |
+
#: tracking/class-plugin-usage-tracker.php:1184
|
20994 |
msgid "Just Deactivate"
|
20995 |
msgstr ""
|
readme.txt
CHANGED
@@ -1,10 +1,10 @@
|
|
1 |
=== Booster for WooCommerce ===
|
2 |
Contributors: anbinder, karzin, pluggabl
|
3 |
Tags: woocommerce customization, woocommerce bundle, woocommerce product addon, woocommerce integration, ecommerce plugin
|
4 |
-
Requires at least:
|
5 |
-
Tested up to: 6.
|
6 |
Requires PHP: 7.2
|
7 |
-
Stable tag: 5.6.
|
8 |
License: GNU General Public License v3.0
|
9 |
License URI: http://www.gnu.org/licenses/gpl-3.0.html
|
10 |
|
@@ -275,6 +275,21 @@ To unlock all Booster for WooCommerce features, please install additional paid B
|
|
275 |
|
276 |
== Changelog ==
|
277 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
278 |
= 5.6.7 27/10/2022 =
|
279 |
|
280 |
* FIXED - PAYMENT GATEWAYS - Gateways Currency Converter - Fixed the issue of currency on the cart page.
|
1 |
=== Booster for WooCommerce ===
|
2 |
Contributors: anbinder, karzin, pluggabl
|
3 |
Tags: woocommerce customization, woocommerce bundle, woocommerce product addon, woocommerce integration, ecommerce plugin
|
4 |
+
Requires at least: 5.8
|
5 |
+
Tested up to: 6.1
|
6 |
Requires PHP: 7.2
|
7 |
+
Stable tag: 5.6.8
|
8 |
License: GNU General Public License v3.0
|
9 |
License URI: http://www.gnu.org/licenses/gpl-3.0.html
|
10 |
|
275 |
|
276 |
== Changelog ==
|
277 |
|
278 |
+
= 5.6.8 16/11/2022 =
|
279 |
+
|
280 |
+
* FIXED - CART & CHECKOUT - EU VAT Number - Replace endpoint to validate EU VAT number for without soap method.
|
281 |
+
* FIXED - CART & CHECKOUT - EU VAT Number - Fixed tools UI.
|
282 |
+
* FIXED - EMAILS & MISC. - Admin Tools - Fixed admin order page issue when order item value is array.
|
283 |
+
* FIXED - EMAILS & MISC. - Reports - Fixed Product Sales (Monthly) report not highlight selected year.
|
284 |
+
* FIXED - BUTTON & PRICE LABELS - Custom Price Labels- Escape the HTML content from the "per page product meta box" value.
|
285 |
+
* FIXED - SHIPPING & ORDERS- Order Quantities - Fixed Maximum allowed quantity issue.
|
286 |
+
* FIXED - Added Security vulnerability fixes - Multiple CSRF.
|
287 |
+
* FIXED - Added Security vulnerability fixes.
|
288 |
+
* FIXED - Current timestamp issue - Created new function wcj_get_timestamp_date_from_gmt() and replace with gmdate( 'U' ).
|
289 |
+
* FIXED - PHP Warning: asort() expects parameter 1 to be array, string given in .../includes/shortcodes/class-wcj-general-shortcodes.php on line 501
|
290 |
+
* WooCommerce 7.1.0 tested
|
291 |
+
* WordPress 6.1 Tested
|
292 |
+
|
293 |
= 5.6.7 27/10/2022 =
|
294 |
|
295 |
* FIXED - PAYMENT GATEWAYS - Gateways Currency Converter - Fixed the issue of currency on the cart page.
|
tracking/README.md
DELETED
@@ -1 +0,0 @@
|
|
1 |
-
put class-plugin-usage-tracker.php into a subfolder called tracking
|
|
tracking/class-example-settings.php
DELETED
@@ -1,203 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
/**
|
3 |
-
* Discussion Board admin class
|
4 |
-
*
|
5 |
-
* @package Booster_For_WooCommerce/tracking
|
6 |
-
|
7 |
-
// this file is used to demonstrate how to add a setting to your own theme
|
8 |
-
// or plugin that will allow the user to opt in or out
|
9 |
-
// of tracking after they've made their initial choice on installation.
|
10 |
-
|
11 |
-
// Exit if accessed directly
|
12 |
-
if ( ! defined( 'ABSPATH' ) ) {
|
13 |
-
exit;
|
14 |
-
}
|
15 |
-
|
16 |
-
/**
|
17 |
-
* Plugin admin class.
|
18 |
-
*/
|
19 |
-
|
20 |
-
if ( ! class_exists( 'PUT_Example_Settings' ) ) { // Don't initialise if there's already a Discussion Board activated.
|
21 |
-
|
22 |
-
/**
|
23 |
-
* PUT_Example_Settings
|
24 |
-
*
|
25 |
-
* @since 1.0.0
|
26 |
-
*/
|
27 |
-
class PUT_Example_Settings {
|
28 |
-
/**
|
29 |
-
* Construct
|
30 |
-
*
|
31 |
-
* @since 1.0.0
|
32 |
-
*/
|
33 |
-
public function __construct() {
|
34 |
-
}
|
35 |
-
|
36 |
-
/**
|
37 |
-
* Initialize the class and start calling our hooks and filters.
|
38 |
-
*
|
39 |
-
* @since 1.0.0
|
40 |
-
*/
|
41 |
-
public function init() {
|
42 |
-
add_action( 'admin_menu', array( $this, 'add_settings_submenu' ) );
|
43 |
-
add_action( 'admin_init', array( $this, 'register_options_init' ) );
|
44 |
-
add_action( 'admin_init', array( $this, 'save_registered_setting' ) );
|
45 |
-
}
|
46 |
-
|
47 |
-
/**
|
48 |
-
* We save this artificially to let the tracker know that we're allowed to export this option's data
|
49 |
-
*/
|
50 |
-
public function save_registered_setting() {
|
51 |
-
$options = get_option( 'wisdom_example_options_settings' );
|
52 |
-
$options['wisdom_registered_setting'] = 1;
|
53 |
-
update_option( 'wisdom_example_options_settings', $options );
|
54 |
-
}
|
55 |
-
|
56 |
-
/**
|
57 |
-
* Add_settings_submenu
|
58 |
-
*/
|
59 |
-
public function add_settings_submenu() {
|
60 |
-
add_submenu_page( 'options-general.php', __( 'Example Settings', 'plugin-usage-tracker' ), __( 'Example Settings', 'plugin-usage-tracker' ), 'manage_options', 'example-settings-page', array( $this, 'options_page' ) );
|
61 |
-
}
|
62 |
-
/**
|
63 |
-
* Register_options_init
|
64 |
-
*/
|
65 |
-
public function register_options_init() {
|
66 |
-
|
67 |
-
register_setting( 'wisdom_example_options', 'wisdom_example_options_settings' );
|
68 |
-
|
69 |
-
add_settings_section(
|
70 |
-
'wisdom_example_options_section',
|
71 |
-
__( 'Example Settings', 'plugin-usage-tracker' ),
|
72 |
-
array( $this, 'example_settings_section_callback' ),
|
73 |
-
'wisdom_example_options'
|
74 |
-
);
|
75 |
-
add_settings_field(
|
76 |
-
'text_field_example',
|
77 |
-
__( 'Text field:', 'plugin-usage-tracker' ),
|
78 |
-
array( $this, 'text_field_example_render' ),
|
79 |
-
'wisdom_example_options',
|
80 |
-
'wisdom_example_options_section'
|
81 |
-
);
|
82 |
-
add_settings_field(
|
83 |
-
'checkbox_example',
|
84 |
-
__( 'Checkbox', 'plugin-usage-tracker' ),
|
85 |
-
array( $this, 'checkbox_example_render' ),
|
86 |
-
'wisdom_example_options',
|
87 |
-
'wisdom_example_options_section'
|
88 |
-
);
|
89 |
-
add_settings_field(
|
90 |
-
'select_example',
|
91 |
-
__( 'Select', 'plugin-usage-tracker' ),
|
92 |
-
array( $this, 'select_example_render' ),
|
93 |
-
'wisdom_example_options',
|
94 |
-
'wisdom_example_options_section'
|
95 |
-
);
|
96 |
-
add_settings_field(
|
97 |
-
'wisdom_opt_out',
|
98 |
-
__( 'Opt out', 'plugin-usage-tracker' ),
|
99 |
-
array( $this, 'opt_out_example_render' ),
|
100 |
-
'wisdom_example_options',
|
101 |
-
'wisdom_example_options_section'
|
102 |
-
);
|
103 |
-
|
104 |
-
// Set default options.
|
105 |
-
$options = get_option( 'wisdom_example_options_settings' );
|
106 |
-
if ( false === $options ) {
|
107 |
-
// Get defaults.
|
108 |
-
$defaults = $this->get_default_options_settings();
|
109 |
-
update_option( 'wisdom_example_options_settings', $defaults );
|
110 |
-
}
|
111 |
-
|
112 |
-
}
|
113 |
-
/**
|
114 |
-
* Get_default_options_settings
|
115 |
-
*/
|
116 |
-
public function get_default_options_settings() {
|
117 |
-
$defaults = array(
|
118 |
-
'text_field_example' => __( 'Default setting', 'plugin-usage-tracker' ),
|
119 |
-
'checkbox_example' => 1,
|
120 |
-
'select_example' => 'option-1',
|
121 |
-
'wisdom_opt_out' => '',
|
122 |
-
'wisdom_registered_setting' => 1, // For plugin-usage-tracker.
|
123 |
-
);
|
124 |
-
return $defaults;
|
125 |
-
}
|
126 |
-
/**
|
127 |
-
* Text_field_example_render
|
128 |
-
*/
|
129 |
-
public function text_field_example_render() {
|
130 |
-
$options = get_option( 'wisdom_example_options_settings' );
|
131 |
-
$value = '';
|
132 |
-
if ( isset( $options['text_field_example'] ) ) {
|
133 |
-
$value = $options['text_field_example'];
|
134 |
-
}
|
135 |
-
?>
|
136 |
-
<input type='text' name='wisdom_example_options_settings[text_field_example]' value="<?php echo wp_kses_post( $value ); ?>" />
|
137 |
-
<?php
|
138 |
-
}
|
139 |
-
/**
|
140 |
-
* Checkbox_example_render
|
141 |
-
*/
|
142 |
-
public function checkbox_example_render() {
|
143 |
-
$options = get_option( 'wisdom_example_options_settings' );
|
144 |
-
?>
|
145 |
-
<input type='checkbox' name='wisdom_example_options_settings[checkbox_example]' <?php checked( ! empty( $options['checkbox_example'] ), 1 ); ?> value='1'>
|
146 |
-
<?php
|
147 |
-
}
|
148 |
-
/**
|
149 |
-
* Opt_out_example_render
|
150 |
-
*/
|
151 |
-
public function opt_out_example_render() {
|
152 |
-
$options = get_option( 'wisdom_example_options_settings' );
|
153 |
-
?>
|
154 |
-
<input type='checkbox' name='wisdom_example_options_settings[wisdom_opt_out]' <?php checked( ! empty( $options['wisdom_opt_out'] ), 1 ); ?> value='1'>
|
155 |
-
<p class="description"><?php wp_kses_post( 'You previously opted in to sending tracking details. You can change that setting here.', 'plugin-usage-tracker' ); ?></p>
|
156 |
-
<?php
|
157 |
-
}
|
158 |
-
/**
|
159 |
-
* Select_example_render
|
160 |
-
*/
|
161 |
-
public function select_example_render() {
|
162 |
-
$options = get_option( 'wisdom_example_options_settings' );
|
163 |
-
$value = '';
|
164 |
-
if ( isset( $options['select_example'] ) ) {
|
165 |
-
$value = $options['select_example'];
|
166 |
-
}
|
167 |
-
?>
|
168 |
-
<select name='wisdom_example_options_settings[select_example]'>
|
169 |
-
<option value="option-1" <?php selected( esc_attr( $value ), 'option-1' ); ?>><?php wp_kses_post( 'Option 1', 'plugin-usage-tracker' ); ?></option>
|
170 |
-
<option value="option-2" <?php selected( esc_attr( $value ), 'option-2' ); ?>><?php wp_kses_post( 'Option 2', 'plugin-usage-tracker' ); ?></option>
|
171 |
-
<option value="option-3" <?php selected( esc_attr( $value ), 'option-3' ); ?>><?php wp_kses_post( 'Option 3', 'plugin-usage-tracker' ); ?></option>
|
172 |
-
</select>
|
173 |
-
<?php
|
174 |
-
}
|
175 |
-
/**
|
176 |
-
* Example_settings_section_callback
|
177 |
-
*/
|
178 |
-
public function example_settings_section_callback() {
|
179 |
-
echo '<p>' . wp_kses_post( 'These settings are for example only.', 'plugin-usage-tracker' ) . '</p>';
|
180 |
-
}
|
181 |
-
/**
|
182 |
-
* Options_page
|
183 |
-
*/
|
184 |
-
public function options_page() {
|
185 |
-
?>
|
186 |
-
|
187 |
-
<div class="wrap">
|
188 |
-
<form action='options.php' method='post'>
|
189 |
-
<?php
|
190 |
-
settings_fields( 'wisdom_example_options' );
|
191 |
-
do_settings_sections( 'wisdom_example_options' );
|
192 |
-
submit_button();
|
193 |
-
?>
|
194 |
-
</form>
|
195 |
-
</div>
|
196 |
-
<?php
|
197 |
-
}
|
198 |
-
}
|
199 |
-
|
200 |
-
}
|
201 |
-
|
202 |
-
$put_example_settings = new PUT_Example_Settings();
|
203 |
-
$put_example_settings->init();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
tracking/class-plugin-usage-tracker.php
CHANGED
@@ -3,7 +3,7 @@
|
|
3 |
* This is the class that sends all the data back to the home site
|
4 |
* It also handles opting in and deactivation
|
5 |
*
|
6 |
-
* @version 5.6.
|
7 |
* @package Booster_For_WooCommerce/tracking
|
8 |
*/
|
9 |
|
@@ -13,37 +13,91 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
13 |
}
|
14 |
|
15 |
if ( ! class_exists( 'Plugin_Usage_Tracker' ) ) {
|
|
|
|
|
|
|
|
|
|
|
|
|
16 |
/**
|
17 |
-
*
|
18 |
*
|
19 |
-
* @
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
20 |
*/
|
21 |
-
class Plugin_Usage_Tracker {
|
22 |
-
|
23 |
-
private $wisdom_version = '1.2.4';
|
24 |
-
private $home_url = '';
|
25 |
-
private $plugin_file = '';
|
26 |
-
private $plugin_name = '';
|
27 |
-
private $options = array();
|
28 |
-
private $require_optin = true;
|
29 |
-
private $include_goodbye_form = true;
|
30 |
-
private $marketing = false;
|
31 |
-
private $collect_email = false;
|
32 |
-
private $what_am_i = 'plugin';
|
33 |
private $theme_allows_tracking = 0;
|
34 |
|
35 |
/**
|
36 |
* Class constructor.
|
37 |
*
|
38 |
-
* @param $
|
39 |
-
* @param $
|
40 |
-
* @param $_options Plugin options to track
|
41 |
-
* @param $_require_optin Whether user opt-in is required (always required on WordPress.org)
|
42 |
-
* @param $_include_goodbye_form Whether to include a form when the user deactivates
|
43 |
-
* @param $_marketing Marketing method
|
44 |
-
*
|
45 |
-
*
|
46 |
-
*
|
47 |
*/
|
48 |
public function __construct(
|
49 |
$_plugin_file,
|
@@ -62,8 +116,9 @@ if ( ! class_exists( 'Plugin_Usage_Tracker' ) ) {
|
|
62 |
} else {
|
63 |
$this->what_am_i = 'theme';
|
64 |
$theme = wp_get_theme();
|
65 |
-
|
66 |
-
|
|
|
67 |
}
|
68 |
}
|
69 |
|
@@ -150,6 +205,7 @@ if ( ! class_exists( 'Plugin_Usage_Tracker' ) ) {
|
|
150 |
* Create weekly schedule.
|
151 |
*
|
152 |
* @since 1.2.3
|
|
|
153 |
*/
|
154 |
public function schedule_weekly_event( $schedules ) {
|
155 |
$schedules['weekly'] = array(
|
@@ -181,7 +237,7 @@ if ( ! class_exists( 'Plugin_Usage_Tracker' ) ) {
|
|
181 |
* Then send it back
|
182 |
*
|
183 |
* @since 1.0.0
|
184 |
-
* @param $force
|
185 |
*/
|
186 |
public function do_tracking( $force = false ) {
|
187 |
|
@@ -223,6 +279,7 @@ if ( ! class_exists( 'Plugin_Usage_Tracker' ) ) {
|
|
223 |
* Send the data to the home site.
|
224 |
*
|
225 |
* @since 1.0.0
|
|
|
226 |
*/
|
227 |
public function send_data( $body ) {
|
228 |
|
@@ -252,6 +309,7 @@ if ( ! class_exists( 'Plugin_Usage_Tracker' ) ) {
|
|
252 |
*
|
253 |
* @version 1.0.0
|
254 |
* @since 3.2.4
|
|
|
255 |
*/
|
256 |
public function add_tracking_module( $modules_array ) {
|
257 |
|
@@ -308,7 +366,7 @@ if ( ! class_exists( 'Plugin_Usage_Tracker' ) ) {
|
|
308 |
}
|
309 |
$body['marketing_method'] = $this->marketing;
|
310 |
|
311 |
-
$body['server'] =
|
312 |
|
313 |
// Extra PHP fields.
|
314 |
$body['memory_limit'] = ini_get( 'memory_limit' );
|
@@ -327,7 +385,7 @@ if ( ! class_exists( 'Plugin_Usage_Tracker' ) ) {
|
|
327 |
$active_plugins = get_option( 'active_plugins', array() );
|
328 |
|
329 |
foreach ( $plugins as $key => $plugin ) {
|
330 |
-
if ( in_array( $plugin, $active_plugins ) ) {
|
331 |
// Remove active plugins from list so we can show active and inactive separately.
|
332 |
unset( $plugins[ $key ] );
|
333 |
}
|
@@ -396,15 +454,18 @@ if ( ! class_exists( 'Plugin_Usage_Tracker' ) ) {
|
|
396 |
*
|
397 |
* @since 1.0.0
|
398 |
*/
|
399 |
-
$theme
|
400 |
-
|
401 |
-
|
|
|
|
|
|
|
402 |
}
|
403 |
-
if ( $theme
|
404 |
-
$body['theme_version'] = sanitize_text_field( $theme
|
405 |
}
|
406 |
-
if ( $theme
|
407 |
-
$body['theme_parent'] = sanitize_text_field( $theme
|
408 |
}
|
409 |
|
410 |
global $wpdb;
|
@@ -415,14 +476,14 @@ if ( ! class_exists( 'Plugin_Usage_Tracker' ) ) {
|
|
415 |
}
|
416 |
$names = implode( '\', \'', $tracked_module );
|
417 |
|
418 |
-
$
|
419 |
|
420 |
$booster_active_plugin = array();
|
421 |
-
foreach ( $
|
422 |
-
$
|
423 |
-
$
|
424 |
-
$
|
425 |
-
$booster_active_plugin[] = ucwords( $
|
426 |
}
|
427 |
|
428 |
$booster_active_plugin = implode( ',', $booster_active_plugin );
|
@@ -530,7 +591,8 @@ if ( ! class_exists( 'Plugin_Usage_Tracker' ) ) {
|
|
530 |
* More than one plugin may be using the tracker
|
531 |
*
|
532 |
* @since 1.0.0
|
533 |
-
* @param $is_allowed
|
|
|
534 |
*/
|
535 |
public function set_is_tracking_allowed( $is_allowed, $plugin = null ) {
|
536 |
|
@@ -694,6 +756,7 @@ if ( ! class_exists( 'Plugin_Usage_Tracker' ) ) {
|
|
694 |
* Option is an array of all plugins that have received a response from the user.
|
695 |
*
|
696 |
* @since 1.0.0
|
|
|
697 |
*/
|
698 |
public function update_block_notice( $plugin = null ) {
|
699 |
if ( empty( $plugin ) ) {
|
@@ -731,7 +794,8 @@ if ( ! class_exists( 'Plugin_Usage_Tracker' ) ) {
|
|
731 |
* More than one plugin may be using the tracker.
|
732 |
*
|
733 |
* @since 1.0.0
|
734 |
-
* @param $can_collect
|
|
|
735 |
*/
|
736 |
public function set_can_collect_email( $can_collect, $plugin = null ) {
|
737 |
if ( empty( $plugin ) ) {
|
@@ -777,8 +841,8 @@ if ( ! class_exists( 'Plugin_Usage_Tracker' ) ) {
|
|
777 |
* There might be more than one admin on the site
|
778 |
* So we only use the first admin's email address
|
779 |
*
|
780 |
-
* @param $email
|
781 |
-
* @param $plugin
|
782 |
* @since 1.1.2
|
783 |
*/
|
784 |
public function set_admin_email( $email = null, $plugin = null ) {
|
@@ -812,9 +876,10 @@ if ( ! class_exists( 'Plugin_Usage_Tracker' ) ) {
|
|
812 |
*/
|
813 |
public function optin_notice() {
|
814 |
// Check for plugin args.
|
815 |
-
|
816 |
-
|
817 |
-
$
|
|
|
818 |
if ( 'yes' === $action ) {
|
819 |
$this->set_is_tracking_allowed( true, $plugin );
|
820 |
// Run this straightaway.
|
@@ -861,8 +926,9 @@ if ( ! class_exists( 'Plugin_Usage_Tracker' ) ) {
|
|
861 |
|
862 |
// Args to add to query if user opts in to tracking.
|
863 |
$yes_args = array(
|
864 |
-
'plugin'
|
865 |
-
'plugin_action'
|
|
|
866 |
);
|
867 |
|
868 |
// Decide how to request permission to collect email addresses.
|
@@ -877,8 +943,9 @@ if ( ! class_exists( 'Plugin_Usage_Tracker' ) ) {
|
|
877 |
$url_no = esc_url(
|
878 |
add_query_arg(
|
879 |
array(
|
880 |
-
'plugin'
|
881 |
-
'plugin_action'
|
|
|
882 |
)
|
883 |
)
|
884 |
);
|
@@ -906,8 +973,8 @@ if ( ! class_exists( 'Plugin_Usage_Tracker' ) ) {
|
|
906 |
<p><?php echo '<strong>' . esc_html( $plugin_name ) . '</strong>'; ?></p>
|
907 |
<p><?php echo esc_html( $notice_text ); ?></p>
|
908 |
<p>
|
909 |
-
<a href="<?php echo esc_url( $url_yes ); ?>" class="button-secondary"><?php
|
910 |
-
<a href="<?php echo esc_url( $url_no ); ?>" class="button-secondary"><?php
|
911 |
</p>
|
912 |
</div>
|
913 |
<?php
|
@@ -922,10 +989,11 @@ if ( ! class_exists( 'Plugin_Usage_Tracker' ) ) {
|
|
922 |
* @since 1.0.0
|
923 |
*/
|
924 |
public function marketing_notice() {
|
|
|
925 |
// Check if user has opted in to marketing.
|
926 |
-
if ( isset( $_GET['marketing_optin'] ) ) {
|
927 |
// Set marketing optin.
|
928 |
-
$this->set_can_collect_email( sanitize_text_field( $_GET['marketing_optin'] ), $this->plugin_name );
|
929 |
// Do tracking.
|
930 |
$this->do_tracking( true );
|
931 |
} elseif ( isset( $_GET['marketing'] ) && 'yes' === $_GET['marketing'] ) {
|
@@ -937,16 +1005,18 @@ if ( ! class_exists( 'Plugin_Usage_Tracker' ) ) {
|
|
937 |
$url_yes = esc_url(
|
938 |
add_query_arg(
|
939 |
array(
|
940 |
-
'plugin'
|
941 |
-
'marketing_optin'
|
|
|
942 |
)
|
943 |
)
|
944 |
);
|
945 |
$url_no = esc_url(
|
946 |
add_query_arg(
|
947 |
array(
|
948 |
-
'plugin'
|
949 |
-
'marketing_optin'
|
|
|
950 |
)
|
951 |
)
|
952 |
);
|
@@ -963,8 +1033,8 @@ if ( ! class_exists( 'Plugin_Usage_Tracker' ) ) {
|
|
963 |
<p><?php echo '<strong>' . esc_html( $plugin_name ) . '</strong>'; ?></p>
|
964 |
<p><?php echo esc_html( $marketing_text ); ?></p>
|
965 |
<p>
|
966 |
-
<a href="<?php echo esc_url( $url_yes ); ?>" data-putnotice="yes" class="button-secondary"><?php
|
967 |
-
<a href="<?php echo esc_url( $url_no ); ?>" data-putnotice="no" class="button-secondary"><?php
|
968 |
</p>
|
969 |
</div>
|
970 |
<?php
|
@@ -975,6 +1045,7 @@ if ( ! class_exists( 'Plugin_Usage_Tracker' ) ) {
|
|
975 |
* Filter the deactivation link to allow us to present a form when the user deactivates the plugin.
|
976 |
*
|
977 |
* @since 1.0.0
|
|
|
978 |
*/
|
979 |
public function filter_action_links( $links ) {
|
980 |
// Check to see if the user has opted in to tracking.
|
@@ -1110,7 +1181,7 @@ if ( ! class_exists( 'Plugin_Usage_Tracker' ) ) {
|
|
1110 |
var url = document.getElementById("put-goodbye-link-<?php echo esc_attr( $this->plugin_name ); ?>");
|
1111 |
$('body').toggleClass('put-form-active');
|
1112 |
$("#put-goodbye-form-<?php echo esc_attr( $this->plugin_name ); ?>").fadeIn();
|
1113 |
-
$("#put-goodbye-form-<?php echo esc_attr( $this->plugin_name ); ?>").html( '<?php echo $html; ?>' + '<div class="put-goodbye-form-footer"><p><a id="put-submit-form" class="button primary" href="#"><?php
|
1114 |
$('#put-submit-form').on('click', function(e){
|
1115 |
// As soon as we click, the body of the form should disappear.
|
1116 |
$("#put-goodbye-form-<?php echo esc_attr( $this->plugin_name ); ?> .put-goodbye-form-body").fadeOut();
|
@@ -1127,7 +1198,7 @@ if ( ! class_exists( 'Plugin_Usage_Tracker' ) ) {
|
|
1127 |
'action': 'goodbye_form',
|
1128 |
'values': values,
|
1129 |
'details': details,
|
1130 |
-
'security': "<?php echo wp_create_nonce( 'wisdom_goodbye_form' ); ?>",
|
1131 |
'dataType': "json"
|
1132 |
}
|
1133 |
$.post(
|
@@ -1158,11 +1229,11 @@ if ( ! class_exists( 'Plugin_Usage_Tracker' ) ) {
|
|
1158 |
public function goodbye_form_callback() {
|
1159 |
check_ajax_referer( 'wisdom_goodbye_form', 'security' );
|
1160 |
if ( isset( $_POST['values'] ) ) {
|
1161 |
-
$values =
|
1162 |
update_option( 'wisdom_deactivation_reason_' . $this->plugin_name, $values );
|
1163 |
}
|
1164 |
if ( isset( $_POST['details'] ) ) {
|
1165 |
-
$details = sanitize_text_field( $_POST['details'] );
|
1166 |
update_option( 'wisdom_deactivation_details_' . $this->plugin_name, $details );
|
1167 |
}
|
1168 |
$this->do_tracking(); // Run this straightaway.
|
3 |
* This is the class that sends all the data back to the home site
|
4 |
* It also handles opting in and deactivation
|
5 |
*
|
6 |
+
* @version 5.6.8
|
7 |
* @package Booster_For_WooCommerce/tracking
|
8 |
*/
|
9 |
|
13 |
}
|
14 |
|
15 |
if ( ! class_exists( 'Plugin_Usage_Tracker' ) ) {
|
16 |
+
/**
|
17 |
+
* Plugin_Usage_Tracker
|
18 |
+
*
|
19 |
+
* @since 5.6.8
|
20 |
+
*/
|
21 |
+
class Plugin_Usage_Tracker {
|
22 |
/**
|
23 |
+
* Wisdom version.
|
24 |
*
|
25 |
+
* @var string
|
26 |
+
*/
|
27 |
+
private $wisdom_version = '1.2.4';
|
28 |
+
/**
|
29 |
+
* Home url.
|
30 |
+
*
|
31 |
+
* @var string
|
32 |
+
*/
|
33 |
+
private $home_url = '';
|
34 |
+
/**
|
35 |
+
* Plugin file.
|
36 |
+
*
|
37 |
+
* @var string
|
38 |
+
*/
|
39 |
+
private $plugin_file = '';
|
40 |
+
/**
|
41 |
+
* Plugin name.
|
42 |
+
*
|
43 |
+
* @var string
|
44 |
+
*/
|
45 |
+
private $plugin_name = '';
|
46 |
+
/**
|
47 |
+
* Options.
|
48 |
+
*
|
49 |
+
* @var array
|
50 |
+
*/
|
51 |
+
private $options = array();
|
52 |
+
/**
|
53 |
+
* Require optin.
|
54 |
+
*
|
55 |
+
* @var string
|
56 |
+
*/
|
57 |
+
private $require_optin = true;
|
58 |
+
/**
|
59 |
+
* Include goodbye form.
|
60 |
+
*
|
61 |
+
* @var string
|
62 |
+
*/
|
63 |
+
private $include_goodbye_form = true;
|
64 |
+
/**
|
65 |
+
* Marketing.
|
66 |
+
*
|
67 |
+
* @var string
|
68 |
+
*/
|
69 |
+
private $marketing = false;
|
70 |
+
/**
|
71 |
+
* Collect email.
|
72 |
+
*
|
73 |
+
* @var string
|
74 |
+
*/
|
75 |
+
private $collect_email = false;
|
76 |
+
/**
|
77 |
+
* What am i.
|
78 |
+
*
|
79 |
+
* @var string
|
80 |
+
*/
|
81 |
+
private $what_am_i = 'plugin';
|
82 |
+
/**
|
83 |
+
* Theme allows tracking.
|
84 |
+
*
|
85 |
+
* @var int
|
86 |
*/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
87 |
private $theme_allows_tracking = 0;
|
88 |
|
89 |
/**
|
90 |
* Class constructor.
|
91 |
*
|
92 |
+
* @param string $_plugin_file The file path for this plugin.
|
93 |
+
* @param string $_home_url The URL to the site we're sending data to.
|
94 |
+
* @param string $_options Plugin options to track.
|
95 |
+
* @param string $_require_optin Whether user opt-in is required (always required on WordPress.org).
|
96 |
+
* @param string $_include_goodbye_form Whether to include a form when the user deactivates.
|
97 |
+
* @param string $_marketing Marketing method:.
|
98 |
+
* 0: Don't collect email addresses.
|
99 |
+
* 1: Request permission same time as tracking opt-in.
|
100 |
+
* 2: Request permission after opt-in.
|
101 |
*/
|
102 |
public function __construct(
|
103 |
$_plugin_file,
|
116 |
} else {
|
117 |
$this->what_am_i = 'theme';
|
118 |
$theme = wp_get_theme();
|
119 |
+
$t_name = 'Name';
|
120 |
+
if ( $theme->$t_name ) {
|
121 |
+
$this->plugin_name = sanitize_text_field( $theme->$t_name );
|
122 |
}
|
123 |
}
|
124 |
|
205 |
* Create weekly schedule.
|
206 |
*
|
207 |
* @since 1.2.3
|
208 |
+
* @param string $schedules defines the cron schedules.
|
209 |
*/
|
210 |
public function schedule_weekly_event( $schedules ) {
|
211 |
$schedules['weekly'] = array(
|
237 |
* Then send it back
|
238 |
*
|
239 |
* @since 1.0.0
|
240 |
+
* @param bool $force Force tracking if it's not time.
|
241 |
*/
|
242 |
public function do_tracking( $force = false ) {
|
243 |
|
279 |
* Send the data to the home site.
|
280 |
*
|
281 |
* @since 1.0.0
|
282 |
+
* @param array $body body data of the request.
|
283 |
*/
|
284 |
public function send_data( $body ) {
|
285 |
|
309 |
*
|
310 |
* @version 1.0.0
|
311 |
* @since 3.2.4
|
312 |
+
* @param array $modules_array array of the modules.
|
313 |
*/
|
314 |
public function add_tracking_module( $modules_array ) {
|
315 |
|
366 |
}
|
367 |
$body['marketing_method'] = $this->marketing;
|
368 |
|
369 |
+
$body['server'] = getenv( 'SERVER_SOFTWARE' );
|
370 |
|
371 |
// Extra PHP fields.
|
372 |
$body['memory_limit'] = ini_get( 'memory_limit' );
|
385 |
$active_plugins = get_option( 'active_plugins', array() );
|
386 |
|
387 |
foreach ( $plugins as $key => $plugin ) {
|
388 |
+
if ( in_array( $plugin, $active_plugins, true ) ) {
|
389 |
// Remove active plugins from list so we can show active and inactive separately.
|
390 |
unset( $plugins[ $key ] );
|
391 |
}
|
454 |
*
|
455 |
* @since 1.0.0
|
456 |
*/
|
457 |
+
$theme = wp_get_theme();
|
458 |
+
$t_name = 'Name';
|
459 |
+
$t_version = 'Version';
|
460 |
+
$t_template = 'Template';
|
461 |
+
if ( $theme->$t_name ) {
|
462 |
+
$body['theme'] = sanitize_text_field( $theme->$t_name );
|
463 |
}
|
464 |
+
if ( $theme->$t_version ) {
|
465 |
+
$body['theme_version'] = sanitize_text_field( $theme->$t_version );
|
466 |
}
|
467 |
+
if ( $theme->$t_template ) {
|
468 |
+
$body['theme_parent'] = sanitize_text_field( $theme->$t_template );
|
469 |
}
|
470 |
|
471 |
global $wpdb;
|
476 |
}
|
477 |
$names = implode( '\', \'', $tracked_module );
|
478 |
|
479 |
+
$booster_active_plugins = $wpdb->get_results( "SELECT `option_name` FROM $wpdb->options WHERE `autoload` = 'yes' AND `option_value` = 'yes' AND `option_name` IN ('.$names.')" ); // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching, WordPress.DB.PreparedSQL.InterpolatedNotPrepared
|
480 |
|
481 |
$booster_active_plugin = array();
|
482 |
+
foreach ( $booster_active_plugins as $booster_plugin ) {
|
483 |
+
$booster_plugin = str_replace( 'wcj_', '', $booster_plugin->option_name );
|
484 |
+
$booster_plugin_title = str_replace( '_enabled', '', $booster_plugin );
|
485 |
+
$plugin_title = str_replace( '_', ' ', $booster_plugin_title );
|
486 |
+
$booster_active_plugin[] = ucwords( $plugin_title );
|
487 |
}
|
488 |
|
489 |
$booster_active_plugin = implode( ',', $booster_active_plugin );
|
591 |
* More than one plugin may be using the tracker
|
592 |
*
|
593 |
* @since 1.0.0
|
594 |
+
* @param bool $is_allowed true if tracking is allowed, false if not.
|
595 |
+
* @param string $plugin plugin name.
|
596 |
*/
|
597 |
public function set_is_tracking_allowed( $is_allowed, $plugin = null ) {
|
598 |
|
756 |
* Option is an array of all plugins that have received a response from the user.
|
757 |
*
|
758 |
* @since 1.0.0
|
759 |
+
* @param string $plugin plugin name.
|
760 |
*/
|
761 |
public function update_block_notice( $plugin = null ) {
|
762 |
if ( empty( $plugin ) ) {
|
794 |
* More than one plugin may be using the tracker.
|
795 |
*
|
796 |
* @since 1.0.0
|
797 |
+
* @param boolean $can_collect true if collection is allowed, false if not.
|
798 |
+
* @param string $plugin plugin name.
|
799 |
*/
|
800 |
public function set_can_collect_email( $can_collect, $plugin = null ) {
|
801 |
if ( empty( $plugin ) ) {
|
841 |
* There might be more than one admin on the site
|
842 |
* So we only use the first admin's email address
|
843 |
*
|
844 |
+
* @param string $email Email address to set.
|
845 |
+
* @param string $plugin Plugin name to set email address for.
|
846 |
* @since 1.1.2
|
847 |
*/
|
848 |
public function set_admin_email( $email = null, $plugin = null ) {
|
876 |
*/
|
877 |
public function optin_notice() {
|
878 |
// Check for plugin args.
|
879 |
+
$wpnonce = isset( $_REQUEST['plugin_action-nonce'] ) ? wp_verify_nonce( sanitize_key( $_REQUEST['plugin_action-nonce'] ), 'plugin_action' ) : false;
|
880 |
+
if ( $wpnonce && isset( $_GET['plugin'] ) && isset( $_GET['plugin_action'] ) ) {
|
881 |
+
$plugin = sanitize_text_field( wp_unslash( $_GET['plugin'] ) );
|
882 |
+
$action = sanitize_text_field( wp_unslash( $_GET['plugin_action'] ) );
|
883 |
if ( 'yes' === $action ) {
|
884 |
$this->set_is_tracking_allowed( true, $plugin );
|
885 |
// Run this straightaway.
|
926 |
|
927 |
// Args to add to query if user opts in to tracking.
|
928 |
$yes_args = array(
|
929 |
+
'plugin' => $this->plugin_name,
|
930 |
+
'plugin_action' => 'yes',
|
931 |
+
'plugin_action-nonce' => wp_create_nonce( 'plugin_action' ),
|
932 |
);
|
933 |
|
934 |
// Decide how to request permission to collect email addresses.
|
943 |
$url_no = esc_url(
|
944 |
add_query_arg(
|
945 |
array(
|
946 |
+
'plugin' => $this->plugin_name,
|
947 |
+
'plugin_action' => 'no',
|
948 |
+
'plugin_action-nonce' => wp_create_nonce( 'plugin_action' ),
|
949 |
)
|
950 |
)
|
951 |
);
|
973 |
<p><?php echo '<strong>' . esc_html( $plugin_name ) . '</strong>'; ?></p>
|
974 |
<p><?php echo esc_html( $notice_text ); ?></p>
|
975 |
<p>
|
976 |
+
<a href="<?php echo esc_url( $url_yes ); ?>" class="button-secondary"><?php esc_html_e( 'Allow', 'singularity' ); ?></a>
|
977 |
+
<a href="<?php echo esc_url( $url_no ); ?>" class="button-secondary"><?php esc_html_e( 'Do Not Allow', 'singularity' ); ?></a>
|
978 |
</p>
|
979 |
</div>
|
980 |
<?php
|
989 |
* @since 1.0.0
|
990 |
*/
|
991 |
public function marketing_notice() {
|
992 |
+
$wpnonce = isset( $_REQUEST['marketing_optin-nonce'] ) ? wp_verify_nonce( sanitize_key( $_REQUEST['marketing_optin-nonce'] ), 'marketing_optin' ) : false;
|
993 |
// Check if user has opted in to marketing.
|
994 |
+
if ( $wpnonce && isset( $_GET['marketing_optin'] ) ) {
|
995 |
// Set marketing optin.
|
996 |
+
$this->set_can_collect_email( sanitize_text_field( wp_unslash( $_GET['marketing_optin'] ) ), $this->plugin_name );
|
997 |
// Do tracking.
|
998 |
$this->do_tracking( true );
|
999 |
} elseif ( isset( $_GET['marketing'] ) && 'yes' === $_GET['marketing'] ) {
|
1005 |
$url_yes = esc_url(
|
1006 |
add_query_arg(
|
1007 |
array(
|
1008 |
+
'plugin' => $this->plugin_name,
|
1009 |
+
'marketing_optin' => 'yes',
|
1010 |
+
'marketing_optin-nonce' => wp_create_nonce( 'marketing_optin' ),
|
1011 |
)
|
1012 |
)
|
1013 |
);
|
1014 |
$url_no = esc_url(
|
1015 |
add_query_arg(
|
1016 |
array(
|
1017 |
+
'plugin' => $this->plugin_name,
|
1018 |
+
'marketing_optin' => 'no',
|
1019 |
+
'marketing_optin-nonce' => wp_create_nonce( 'marketing_optin' ),
|
1020 |
)
|
1021 |
)
|
1022 |
);
|
1033 |
<p><?php echo '<strong>' . esc_html( $plugin_name ) . '</strong>'; ?></p>
|
1034 |
<p><?php echo esc_html( $marketing_text ); ?></p>
|
1035 |
<p>
|
1036 |
+
<a href="<?php echo esc_url( $url_yes ); ?>" data-putnotice="yes" class="button-secondary"><?php esc_html_e( 'Yes Please', 'singularity' ); ?></a>
|
1037 |
+
<a href="<?php echo esc_url( $url_no ); ?>" data-putnotice="no" class="button-secondary"><?php esc_html_e( 'No Thank You', 'singularity' ); ?></a>
|
1038 |
</p>
|
1039 |
</div>
|
1040 |
<?php
|
1045 |
* Filter the deactivation link to allow us to present a form when the user deactivates the plugin.
|
1046 |
*
|
1047 |
* @since 1.0.0
|
1048 |
+
* @param string $links links to set.
|
1049 |
*/
|
1050 |
public function filter_action_links( $links ) {
|
1051 |
// Check to see if the user has opted in to tracking.
|
1181 |
var url = document.getElementById("put-goodbye-link-<?php echo esc_attr( $this->plugin_name ); ?>");
|
1182 |
$('body').toggleClass('put-form-active');
|
1183 |
$("#put-goodbye-form-<?php echo esc_attr( $this->plugin_name ); ?>").fadeIn();
|
1184 |
+
$("#put-goodbye-form-<?php echo esc_attr( $this->plugin_name ); ?>").html( '<?php echo wp_kses_post( $html ); ?>' + '<div class="put-goodbye-form-footer"><p><a id="put-submit-form" class="button primary" href="#"><?php esc_html_e( 'Submit and Deactivate', 'singularity' ); ?></a> <a class="secondary button" href="'+url+'"><?php esc_html_e( 'Just Deactivate', 'singularity' ); ?></a></p></div>');
|
1185 |
$('#put-submit-form').on('click', function(e){
|
1186 |
// As soon as we click, the body of the form should disappear.
|
1187 |
$("#put-goodbye-form-<?php echo esc_attr( $this->plugin_name ); ?> .put-goodbye-form-body").fadeOut();
|
1198 |
'action': 'goodbye_form',
|
1199 |
'values': values,
|
1200 |
'details': details,
|
1201 |
+
'security': "<?php echo wp_kses_post( wp_create_nonce( 'wisdom_goodbye_form' ) ); ?>",
|
1202 |
'dataType': "json"
|
1203 |
}
|
1204 |
$.post(
|
1229 |
public function goodbye_form_callback() {
|
1230 |
check_ajax_referer( 'wisdom_goodbye_form', 'security' );
|
1231 |
if ( isset( $_POST['values'] ) ) {
|
1232 |
+
$values = wp_json_encode( array_map( 'sanitize_text_field', wp_unslash( $_POST['values'] ) ) );
|
1233 |
update_option( 'wisdom_deactivation_reason_' . $this->plugin_name, $values );
|
1234 |
}
|
1235 |
if ( isset( $_POST['details'] ) ) {
|
1236 |
+
$details = sanitize_text_field( wp_unslash( $_POST['details'] ) );
|
1237 |
update_option( 'wisdom_deactivation_details_' . $this->plugin_name, $details );
|
1238 |
}
|
1239 |
$this->do_tracking(); // Run this straightaway.
|
version-details.json
CHANGED
@@ -1,6 +1,8 @@
|
|
1 |
{
|
2 |
-
"0" : "= 5.6.
|
3 |
-
"1" : "* FIXED -
|
4 |
-
"2" : "* FIXED -
|
5 |
-
"3" : "* FIXED -
|
|
|
|
|
6 |
}
|
1 |
{
|
2 |
+
"0" : "= 5.6.8 16/11/2022 =",
|
3 |
+
"1" : "* FIXED - CART & CHECKOUT - EU VAT Number - Replace endpoint to validate EU VAT number for without soap method",
|
4 |
+
"2" : "* FIXED - EMAILS & MISC. - Admin Tools - Fixed admin order page issue when order item value is array.",
|
5 |
+
"3" : "* FIXED - Added Security vulnerability fixes",
|
6 |
+
"4" : "* WooCommerce 7.1.0 tested",
|
7 |
+
"5" : "* WordPress 6.1 Tested"
|
8 |
}
|
woocommerce-jetpack.php
CHANGED
@@ -1,15 +1,15 @@
|
|
1 |
-
<?php //phpcs:ignore
|
2 |
/**
|
3 |
* Plugin Name: Booster for WooCommerce
|
4 |
* Plugin URI: https://booster.io
|
5 |
* Description: Supercharge your WooCommerce site with these awesome powerful features. More than 100 modules.All in one WooCommerce plugin.
|
6 |
-
* Version: 5.6.
|
7 |
* Author: Pluggabl LLC
|
8 |
* Author URI: https://booster.io
|
9 |
* Text Domain: woocommerce-jetpack
|
10 |
* Domain Path: /langs
|
11 |
* Copyright: © 2020 Pluggabl LLC.
|
12 |
-
* WC tested up to: 7.
|
13 |
* License: GNU General Public License v3.0
|
14 |
* php version 7.2
|
15 |
* License URI: http://www.gnu.org/licenses/gpl-3.0.html
|
@@ -65,7 +65,7 @@ if ( ! class_exists( 'WC_Jetpack' ) ) :
|
|
65 |
* @var string
|
66 |
* @since 2.4.7
|
67 |
*/
|
68 |
-
public $version = '5.6.
|
69 |
|
70 |
/**
|
71 |
* The single instance of the class
|
1 |
+
<?php // phpcs:ignore WordPress.Files.FileName
|
2 |
/**
|
3 |
* Plugin Name: Booster for WooCommerce
|
4 |
* Plugin URI: https://booster.io
|
5 |
* Description: Supercharge your WooCommerce site with these awesome powerful features. More than 100 modules.All in one WooCommerce plugin.
|
6 |
+
* Version: 5.6.8
|
7 |
* Author: Pluggabl LLC
|
8 |
* Author URI: https://booster.io
|
9 |
* Text Domain: woocommerce-jetpack
|
10 |
* Domain Path: /langs
|
11 |
* Copyright: © 2020 Pluggabl LLC.
|
12 |
+
* WC tested up to: 7.1.0
|
13 |
* License: GNU General Public License v3.0
|
14 |
* php version 7.2
|
15 |
* License URI: http://www.gnu.org/licenses/gpl-3.0.html
|
65 |
* @var string
|
66 |
* @since 2.4.7
|
67 |
*/
|
68 |
+
public $version = '5.6.8';
|
69 |
|
70 |
/**
|
71 |
* The single instance of the class
|