Enabled product bundles
This commit is contained in:
@@ -0,0 +1,155 @@
|
||||
<?php
|
||||
/**
|
||||
* Booster for WooCommerce - Module - Price Formats
|
||||
*
|
||||
* @version 3.5.0
|
||||
* @since 2.5.2
|
||||
* @author Algoritmika Ltd.
|
||||
*/
|
||||
|
||||
if ( ! defined( 'ABSPATH' ) ) exit;
|
||||
|
||||
if ( ! class_exists( 'WCJ_Price_Formats' ) ) :
|
||||
|
||||
class WCJ_Price_Formats extends WCJ_Module {
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
*
|
||||
* @version 3.5.0
|
||||
* @since 2.5.2
|
||||
*/
|
||||
function __construct() {
|
||||
|
||||
$this->id = 'price_formats';
|
||||
$this->short_desc = __( 'Price Formats', 'woocommerce-jetpack' );
|
||||
$this->desc = __( 'Set different price formats for different currencies. Set general price format options.', 'woocommerce-jetpack' );
|
||||
$this->link_slug = 'woocommerce-price-formats';
|
||||
parent::__construct();
|
||||
|
||||
if ( $this->is_enabled() ) {
|
||||
// Trim Zeros
|
||||
if ( 'yes' === get_option( 'wcj_price_formats_general_trim_zeros', 'no' ) ) {
|
||||
add_filter( 'woocommerce_price_trim_zeros', '__return_true', PHP_INT_MAX );
|
||||
}
|
||||
// Price Formats by Currency (or WPML)
|
||||
if ( 'yes' === get_option( 'wcj_price_formats_by_currency_enabled', 'yes' ) ) {
|
||||
add_filter( 'wc_price_args', array( $this, 'price_format' ), PHP_INT_MAX );
|
||||
add_action( 'init', array( $this, 'add_hooks' ), PHP_INT_MAX );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* add_hooks.
|
||||
*
|
||||
* @version 3.5.0
|
||||
* @since 3.5.0
|
||||
*/
|
||||
function add_hooks() {
|
||||
add_filter( 'wc_get_price_decimals', array( $this, 'price_decimals' ), PHP_INT_MAX );
|
||||
}
|
||||
|
||||
/**
|
||||
* price_decimals.
|
||||
*
|
||||
* @version 3.5.0
|
||||
* @since 3.5.0
|
||||
* @todo code refactoring
|
||||
*/
|
||||
function price_decimals( $price_decimals_num ) {
|
||||
for ( $i = 1; $i <= apply_filters( 'booster_option', 1, get_option( 'wcj_price_formats_total_number', 1 ) ); $i++ ) {
|
||||
if ( get_woocommerce_currency() === get_option( 'wcj_price_formats_currency_' . $i ) ) {
|
||||
if ( defined( 'ICL_LANGUAGE_CODE' ) && '' != ( $wpml_language = get_option( 'wcj_price_formats_wpml_language_' . $i, '' ) ) ) {
|
||||
$wpml_language = explode( ',', trim( str_replace( ' ', '', $wpml_language ), ',' ) );
|
||||
if ( ! in_array( ICL_LANGUAGE_CODE, $wpml_language ) ) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
$price_decimals_num = get_option( 'wcj_price_formats_number_of_decimals_' . $i );
|
||||
break;
|
||||
}
|
||||
}
|
||||
return $price_decimals_num;
|
||||
}
|
||||
|
||||
/**
|
||||
* price_format.
|
||||
*
|
||||
* @version 3.2.4
|
||||
* @since 2.5.2
|
||||
*/
|
||||
function price_format( $args ) {
|
||||
for ( $i = 1; $i <= apply_filters( 'booster_option', 1, get_option( 'wcj_price_formats_total_number', 1 ) ); $i++ ) {
|
||||
if ( get_woocommerce_currency() === get_option( 'wcj_price_formats_currency_' . $i ) ) {
|
||||
if ( defined( 'ICL_LANGUAGE_CODE' ) && '' != ( $wpml_language = get_option( 'wcj_price_formats_wpml_language_' . $i, '' ) ) ) {
|
||||
$wpml_language = explode( ',', trim( str_replace( ' ', '', $wpml_language ), ',' ) );
|
||||
if ( ! in_array( ICL_LANGUAGE_CODE, $wpml_language ) ) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
$args['price_format'] = $this->get_woocommerce_price_format( get_option( 'wcj_price_formats_currency_position_' . $i ) );
|
||||
$args['price_format'] = $this->get_woocommerce_price_format_currency_code(
|
||||
get_option( 'wcj_price_formats_currency_code_position_' . $i, 'none' ), get_option( 'wcj_price_formats_currency_' . $i ), $args['price_format'] );
|
||||
$args['decimal_separator'] = get_option( 'wcj_price_formats_decimal_separator_' . $i );
|
||||
$args['thousand_separator'] = get_option( 'wcj_price_formats_thousand_separator_' . $i );
|
||||
$args['decimals'] = absint( get_option( 'wcj_price_formats_number_of_decimals_' . $i ) );
|
||||
break;
|
||||
}
|
||||
}
|
||||
return $args;
|
||||
}
|
||||
|
||||
/**
|
||||
* get_woocommerce_price_format_currency_code.
|
||||
*
|
||||
* @version 3.2.4
|
||||
* @since 3.2.4
|
||||
*/
|
||||
function get_woocommerce_price_format_currency_code( $currency_code_pos, $currency, $price_format ) {
|
||||
switch ( $currency_code_pos ) {
|
||||
case 'left' :
|
||||
return $currency . $price_format;
|
||||
case 'right' :
|
||||
return $price_format . $currency;
|
||||
case 'left_space' :
|
||||
return $currency . ' ' . $price_format;
|
||||
case 'right_space' :
|
||||
return $price_format . ' ' . $currency;
|
||||
default: // 'none'
|
||||
return $price_format;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* get_woocommerce_price_format.
|
||||
*
|
||||
* @version 2.5.2
|
||||
* @since 2.5.2
|
||||
*/
|
||||
function get_woocommerce_price_format( $currency_pos ) {
|
||||
$format = '%1$s%2$s';
|
||||
|
||||
switch ( $currency_pos ) {
|
||||
case 'left' :
|
||||
$format = '%1$s%2$s';
|
||||
break;
|
||||
case 'right' :
|
||||
$format = '%2$s%1$s';
|
||||
break;
|
||||
case 'left_space' :
|
||||
$format = '%1$s %2$s';
|
||||
break;
|
||||
case 'right_space' :
|
||||
$format = '%2$s %1$s';
|
||||
break;
|
||||
}
|
||||
|
||||
return apply_filters( 'woocommerce_price_format', $format, $currency_pos );
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
endif;
|
||||
|
||||
return new WCJ_Price_Formats();
|
||||
Reference in New Issue
Block a user