/home/arranoyd/energyclinic/wp-content/plugins/woo-multi-currency/plugins/learnpress.php
<?php
/**
* Class WOOMULTI_CURRENCY_F_Plugin_LearnPress
*/
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
class WOOMULTI_CURRENCY_F_Plugin_LearnPress {
protected $settings;
public function __construct() {
$this->settings = WOOMULTI_CURRENCY_F_Data::get_ins();
if ( $this->settings->get_enable() ) {
if ( is_plugin_active( 'learnpress/learnpress.php' ) ) {
$check_version = get_option( 'learnpress_version', '' );
if ( $check_version && version_compare( $check_version, '4.2.7', '>=' ) ) {
add_filter( 'learn-press/course/regular-price', array(
$this,
'learn_press_course_slash_regular_price'
), 99, 2 );
add_filter( 'learn-press/course/sale-price', array(
$this,
'learn_press_course_slash_sale_price'
), 99, 2 );
add_filter( 'learn-press/course/regular-price-html', array(
$this,
'learn_press_course_slash_regular_price_html'
), 99, 3 );
add_filter( 'learn_press_course_price_html', array(
$this,
'learn_press_course_slash_price_html'
), 99, 3 );
//deprecated_function
// add_filter( 'learn_press_get_cart_subtotal', array(
// $this,
// 'learn_press_get_cart_subtotal'
// ) );
// add_filter( 'learn_press_get_cart_total', array(
// $this,
// 'learn_press_get_cart_total'
// ) );
add_filter( 'learn-press/cart-total', array(
$this,
'learn_press_slash_cart_total'
) );
add_filter( 'learn-press/cart-subtotal', array(
$this,
'learn_press_slash_cart_subtotal'
) );
add_filter( 'learn-press/cart/item-subtotal', array(
$this,
'learn_press_cart_item_subtotal'
), 10, 4 );
/*LearnPress – WooCommerce Payment Methods Integration*/
// add_filter( 'learn-press/woo-course-price', array(
// $this,
// 'learn_press_woo_course_price'
// ), 10, 2 );
add_filter( 'learn-press/woo-course/price', array(
$this,
'learn_press_slash_woo_course_price'
), 10, 2 );
add_filter( 'learn-press/woo-course/regular-price', array(
$this,
'learn_press_slash_woo_course_regular_price'
), 10, 2 );
add_filter( 'learn-press/woo-course/sale-price', array(
$this,
'learn_press_slash_woo_course_sale_price'
), 10, 2 );
} elseif ( version_compare( learn_press_get_current_version(), '4.1.5', '>=' ) ) {
add_filter( 'learn-press/course/regular-price', array(
$this,
'learn_press_course_regular_price'
), 99, 2 );
add_filter( 'learn_press_course_price_html', array(
$this,
'learn_press_course_price_html_new'
), 99, 3 );
add_filter( 'learn_press_get_cart_subtotal', array(
$this,
'learn_press_get_cart_subtotal'
) );
add_filter( 'learn_press_get_cart_total', array(
$this,
'learn_press_get_cart_total'
) );
add_filter( 'learn-press/cart/item-subtotal', array(
$this,
'learn_press_cart_item_subtotal'
), 10, 4 );
/*LearnPress – WooCommerce Payment Methods Integration*/
add_filter( 'learn-press/woo-course-price', array(
$this,
'learn_press_woo_course_price'
), 10, 2 );
} else {
add_filter( 'learn-press/course-price', array( $this, 'learn_press_course_price' ), 99, 2 );
add_filter( 'learn_press_course_price_html', array(
$this,
'learn_press_course_price_html'
), 99, 2 );
add_filter( 'learn_press_course_origin_price_html', array(
$this,
'learn_press_course_origin_price_html'
), 99, 2 );
}
}
}
}
public function learn_press_slash_woo_course_price( $price, $course ) {
return wmc_get_price( $price );
}
public function learn_press_slash_woo_course_regular_price( $price, $course ) {
return wmc_get_price( $price );
}
public function learn_press_slash_woo_course_sale_price( $price, $course ) {
return wmc_get_price( $price );
}
public function learn_press_slash_cart_subtotal( $price ) {
if ( ! $this->is_default_currency() ) {
$price = $this->wc_price( wmc_get_price( $GLOBALS['LearnPress']->get_cart()->subtotal ) );
}
return $price;
}
public function learn_press_slash_cart_total( $price ) {
if ( ! $this->is_default_currency() ) {
$price = $this->wc_price( wmc_get_price( $GLOBALS['LearnPress']->get_cart()->total ) );
}
return $price;
}
public function learn_press_course_slash_price_html( $price_html, $has_sale, $course_id ) {
$course = learn_press_get_course( $course_id );
if ( $course ) {
if ( is_plugin_active( 'thim-course-builder/thim-course-builder.php' ) && function_exists( 'learn_press_format_price' ) ) {
$price_arr = explode( ' ', $price_html );
if ( count( $price_arr ) > 1 ) {
$price_html = sprintf( '<span class="origin-price">%s</span>', $this->wc_price( $course->get_regular_price() ) );
$price_html .= sprintf( '<span class="price">%s</span>', $this->wc_price( $course->get_price() ) );
} else {
$price_html = esc_html( $this->wc_price( $course->get_price() ) );
// $price_html = $course->get_price();
// $c_currency = $this->settings->get_current_currency();
// $current_currency_symbol = get_woocommerce_currency_symbol( $c_currency );
// return learn_press_format_price( $price_html, $current_currency_symbol );
}
} else {
if ( $has_sale ) {
$price_html = sprintf( '<span class="origin-price">%s</span>', $this->wc_price( $course->get_regular_price() ) );
$price_html .= sprintf( '<span class="price">%s</span>', $this->wc_price( $course->get_price() ) );
} else {
$price_html = esc_html( $this->wc_price( $course->get_price() ) );
}
}
}
return $price_html;
}
public function learn_press_course_slash_regular_price_html( $price, $course_id ) {
$course = learn_press_get_course( $course_id );
if ( $course ) {
$price = esc_html( $this->wc_price( $course->get_regular_price() ) );
}
return $price;
}
public function learn_press_course_slash_sale_price( $price, $course_id ) {
if ( is_float( $price ) ) {
$price = wmc_get_price( $price );
} elseif ( is_string( $price ) ) {
$course = learn_press_get_course( $course_id );
if ( $course ) {
$price = wmc_get_price( $course->get_regular_price() );
$price = $this->wc_price( $price );
}
}
return $price;
}
public function learn_press_course_slash_regular_price( $price, $course_id ) {
if ( is_float( $price ) ) {
$price = wmc_get_price( $price );
} elseif ( is_string( $price ) ) {
$course = learn_press_get_course( $course_id );
if ( $course ) {
$price = wmc_get_price( $course->get_regular_price() );
$price = $this->wc_price( $price );
}
}
return $price;
}
public function learn_press_woo_course_price( $price, $course ) {
return wmc_get_price( $price );
}
/**
* @param $course_subtotal
* @param $course LP_Course
* @param $quantity
* @param $lp_cart
*
* @return string
*/
public function learn_press_cart_item_subtotal( $course_subtotal, $course, $quantity, $lp_cart ) {
if ( ! $this->is_default_currency() ) {
$price = $course->get_price();
$row_price = $price * $quantity;
$course_subtotal = $this->wc_price( wmc_get_price( $row_price ) );
}
return $course_subtotal;
}
public function learn_press_get_cart_total( $price ) {
if ( ! $this->is_default_currency() ) {
$price = $this->wc_price( wmc_get_price( $GLOBALS['LearnPress']->get_cart()->total ) );
}
return $price;
}
public function learn_press_get_cart_subtotal( $price ) {
if ( ! $this->is_default_currency() ) {
$price = $this->wc_price( wmc_get_price( $GLOBALS['LearnPress']->get_cart()->subtotal ) );
}
return $price;
}
public function learn_press_course_regular_price( $price, $course_id ) {
if ( is_float( $price ) ) {
// $price = wmc_get_price( $price );
} elseif ( is_string( $price ) ) {
$course = learn_press_get_course( $course_id );
if ( $course ) {
$price = wmc_get_price( $course->get_regular_price() );
$price = $this->wc_price( $price );
}
}
return $price;
}
public function learn_press_course_price_html_new( $price_html, $has_sale, $course_id ) {
$course = learn_press_get_course( $course_id );
if ( $course ) {
$price_html = '';
if ( $has_sale ) {
$price_html .= sprintf( '<span class="origin-price">%s</span>', $course->get_regular_price_html() );
}
$price_html .= sprintf( '<span class="price">%s</span>', $this->wc_price( wmc_get_price( $course->get_price() ) ) );
}
return $price_html;
}
public function learn_press_course_price( $price, $product_id ) {
return wmc_get_price( $price );
}
/**
* @param $price
* @param $course LP_Course
*
* @return string
*/
public function learn_press_course_price_html( $price, $course ) {
return $this->wc_price( $course->get_price() );
}
/**
* @param $sale_price
* @param $course LP_Course
*
* @return string
*/
public function learn_press_course_origin_price_html( $sale_price, $course ) {
if ( $course ) {
if ( $course->has_sale_price() ) {
$sale_price = $this->wc_price( wmc_get_price( $course->get_origin_price() ) );
}
}
return $sale_price;
}
public function wc_price( $price, $args = array() ) {
extract(
apply_filters(
'wc_price_args', wp_parse_args(
$args, array(
'ex_tax_label' => false,
'currency' => get_woocommerce_currency_symbol(),
'decimal_separator' => wc_get_price_decimal_separator(),
'thousand_separator' => wc_get_price_thousand_separator(),
'decimals' => wc_get_price_decimals(),
'price_format' => get_woocommerce_price_format(),
)
)
)
);
$negative = $price < 0;
$price = apply_filters( 'raw_woocommerce_price', floatval( $negative ? $price * - 1 : $price ) );
$price = apply_filters( 'formatted_woocommerce_price', number_format( $price, $decimals, $decimal_separator, $thousand_separator ), $price, $decimals, $decimal_separator, $thousand_separator );
if ( apply_filters( 'woocommerce_price_trim_zeros', false ) && $decimals > 0 ) {
$price = wc_trim_zeros( $price );
}
$formatted_price = ( $negative ? '-' : '' ) . sprintf( $price_format, $currency, $price );
return $formatted_price;
}
private function is_default_currency() {
return $this->settings->get_current_currency() === $this->settings->get_default_currency();
}
}