Files
old-experiments/backend/wordpress/wp-content/plugins/woocommerce-jetpack/includes/class-wcj-url-coupons.php
2018-06-29 14:40:28 +02:00

109 lines
2.9 KiB
PHP
Executable File

<?php
/**
* Booster for WooCommerce - Module - URL Coupons
*
* @version 3.6.0
* @since 2.9.1
* @author Algoritmika Ltd.
*/
if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
if ( ! class_exists( 'WCJ_URL_Coupons' ) ) :
class WCJ_URL_Coupons extends WCJ_Module {
/**
* Constructor.
*
* @version 2.9.1
* @since 2.9.1
*/
function __construct() {
$this->id = 'url_coupons';
$this->short_desc = __( 'URL Coupons', 'woocommerce-jetpack' );
$this->desc = __( 'WooCommerce URL coupons.', 'woocommerce-jetpack' );
$this->link_slug = 'woocommerce-url-coupons';
parent::__construct();
if ( $this->is_enabled() ) {
add_action( 'wp_loaded', array( $this, 'maybe_apply_url_coupon' ), PHP_INT_MAX );
}
}
/**
* get_redirect_url.
*
* @version 2.9.1
* @since 2.9.1
*/
function get_redirect_url( $arg_key ) {
switch ( apply_filters( 'booster_option', 'no', get_option( 'wcj_url_coupons_redirect', 'no' ) ) ) {
case 'cart':
return wc_get_cart_url();
case 'checkout':
return wc_get_checkout_url();
case 'custom':
return get_option( 'wcj_url_coupons_redirect_custom_url', '' );
default: // 'no'
return remove_query_arg( $arg_key );
}
}
/**
* maybe_add_products_to_cart.
*
* @version 3.6.0
* @since 2.9.1
* @todo (maybe) check if coupon is valid
*/
function maybe_add_products_to_cart( $coupon_code ) {
if ( 'no' === apply_filters( 'booster_option', 'no', get_option( 'wcj_url_coupons_fixed_product_discount_add_products', 'no' ) ) ) {
return false;
}
// Coupons are globally disabled.
if ( ! wc_coupons_enabled() ) {
return false;
}
// Sanitize coupon code.
$coupon_code = wc_format_coupon_code( $coupon_code );
// Get the coupon.
$the_coupon = new WC_Coupon( $coupon_code );
if ( 'fixed_product' === $the_coupon->get_discount_type() ) {
$product_ids = $the_coupon->get_product_ids();
if ( ! empty( $product_ids ) ) {
foreach ( $product_ids as $product_id ) {
if ( ! wcj_is_product_in_cart( $product_id ) ) {
WC()->cart->add_to_cart( $product_id );
}
}
}
}
}
/**
* maybe_apply_url_coupon.
*
* @version 2.9.1
* @since 2.7.0
* @todo (maybe) options to add products to cart with query arg
* @todo (maybe) if ( ! WC()->cart->has_discount( $coupon_code ) ) {}
*/
function maybe_apply_url_coupon() {
$arg_key = get_option( 'wcj_url_coupons_key', 'wcj_apply_coupon' );
if ( isset( $_GET[ $arg_key ] ) && '' != $_GET[ $arg_key ] ) {
$coupon_code = sanitize_text_field( $_GET[ $arg_key ] );
$this->maybe_add_products_to_cart( $coupon_code );
WC()->cart->add_discount( $coupon_code );
wp_safe_redirect( $this->get_redirect_url( $arg_key ) );
exit;
}
}
}
endif;
return new WCJ_URL_Coupons();