types = Array( 'percent_total_amount' => __('Percentage of cart total amount', 'aco-woo-dynamic-pricing'), 'percent_product_price' => __('Percentage of product price', 'aco-woo-dynamic-pricing'), 'fixed_product_price' => __('Fixed price of product price', 'aco-woo-dynamic-pricing'), 'fixed_cart_amount' => __('Fixed price of cart total amount', 'aco-woo-dynamic-pricing'), 'cart_quantity' => __('Quantity based discount', 'aco-woo-dynamic-pricing') ); $this->init_modules(); } /** * Ensures only one instance of AWDP is loaded or can be loaded. * @since 1.0.0 * @static * @see WordPress_Plugin_Template() * @return Main AWDP instance */ public static function instance($file = '', $version = '1.0.0') { if (is_null(self::$_instance)) { self::$_instance = new self($file, $version); } return self::$_instance; } /** * @return bool */ public function isActive() { return $this->_active; } public function init_modules() { $this->utilities = new AWDP_Discount_Utilities($this); $this->rules = new AWDP_Discount_Rules($this); $this->cart = new AWDP_Discount_Cart($this); $this->display = new AWDP_Discount_Display($this); $this->wcpa = new AWDP_Discount_Wcpa($this); $this->coupon = new AWDP_Discount_Coupon($this); $this->order = new AWDP_Discount_Order($this); } public function validate_discount_rules($cart_obj, $rule, $rules_to_validate = array(), $item = false, $single = false) { return $this->rules->validate_discount_rules($cart_obj, $rule, $rules_to_validate, $item, $single); } public function eval_rule($rule, $cart_obj, $discount_rule, $list_id, $qn_flag, $item = false, $single = false) { return $this->rules->eval_rule($rule, $cart_obj, $discount_rule, $list_id, $qn_flag, $item, $single); } public function load_rules() { return $this->rules->load_rules(); } public function get_items_to_apply_discount($product, $rule, $disc_prod_ID = false, $cartRule = false, $product_slug = false) { return $this->rules->get_items_to_apply_discount($product, $rule, $disc_prod_ID, $cartRule, $product_slug); } public function check_in_product_list($product, $rule) { return $this->rules->check_in_product_list($product, $rule); } public function set_product_list() { return $this->rules->set_product_list(); } public function set_custom_list($product_list) { return $this->rules->set_custom_list($product_list); } public function check_in_rule($selectedRule, $productID) { return $this->rules->check_in_rule($selectedRule, $productID); } public function wdpCalculateDiscount($cartObject) { return $this->cart->wdpCalculateDiscount($cartObject); } public function cart_discount_items($item_price, $cart_item) { return $this->cart->cart_discount_items($item_price, $cart_item); } public function get_cart_item_calculated_unit_price($cart_item) { return $this->cart->get_cart_item_calculated_unit_price($cart_item); } public function get_cart_item_display_unit_price($cart_item) { return $this->cart->get_cart_item_display_unit_price($cart_item); } public function align_store_api_cart_item_prices($item) { return $this->cart->align_store_api_cart_item_prices($item); } public function wdpCartLoop($wc, $cart_item, $cart_item_key) { return $this->cart->wdpCartLoop($wc, $cart_item, $cart_item_key); } public function check_discount($slug) { return $this->cart->check_discount($slug); } public function check_discount_shop($slug) { return $this->cart->check_discount_shop($slug); } public function get_individual_discounted_price_in_cents($item, $include_tax = true, $sequential = false, $price = false) { return $this->cart->get_individual_discounted_price_in_cents($item, $include_tax, $sequential, $price); } public function get_discount($key, $in_cents = false) { return $this->cart->get_discount($key, $in_cents); } public function get_discounts_by_item($in_cents = false) { return $this->cart->get_discounts_by_item($in_cents); } protected function apply_discount_remainder($rule, $items_to_apply, $amount) { return $this->cart->apply_discount_remainder($rule, $items_to_apply, $amount); } public function get_discounted_price_in_cents($item, $include_tax = true, $sequential = false) { return $this->cart->get_discounted_price_in_cents($item, $include_tax, $sequential); } public function show_pricing_table() { return $this->display->show_pricing_table(); } public function get_product_price_html($item_price, $product) { return $this->display->get_product_price_html($item_price, $product); } public function show_offer_message() { return $this->display->show_offer_message(); } public function wdpCartMessage() { return $this->display->wdpCartMessage(); } public function wdpDynamicPricingTable() { return $this->display->wdpDynamicPricingTable(); } public function wdpWCPAVariationPrice() { return $this->wcpa->wdpWCPAVariationPrice(); } public function wcpaQunantity_Discount() { return $this->wcpa->wcpaQunantity_Discount(); } public function wdpDynamicDiscount() { return $this->wcpa->wdpDynamicDiscount(); } public function wcpaDiscount($response, $product) { return $this->wcpa->wcpaDiscount($response, $product); } public function wdpWCPAPrice($default, $product) { return $this->wcpa->wdpWCPAPrice($default, $product); } public function addVirtualCoupon($response, $curr_coupon_code) { return $this->coupon->addVirtualCoupon($response, $curr_coupon_code); } public function couponLabel($label, $coupon) { return $this->coupon->couponLabel($label, $coupon); } public function applyFakeCoupons() { return $this->coupon->applyFakeCoupons(); } public function remove_regular_coupons_if_blocked() { return $this->coupon->remove_regular_coupons_if_blocked(); } public function wdpMiniCart() { return $this->coupon->wdpMiniCart(); } public function wdpOrderMeta($item_id, $values, $cart_item_key) { return $this->order->wdpOrderMeta($item_id, $values, $cart_item_key); } public function wdpDisplayOrderMeta($item_id, $item, $product) { return $this->order->wdpDisplayOrderMeta($item_id, $item, $product); } public function format_order_line_subtotal_html($subtotal, $item, $order) { return $this->order->format_order_line_subtotal_html($subtotal, $item, $order); } public function filter_order_item_totals($total_rows, $order, $tax_display = '') { return $this->order->filter_order_item_totals($total_rows, $order, $tax_display); } public function wdpAdminOrderHeader($order) { return $this->order->wdpAdminOrderHeader($order); } public function wdpAdminOrderContent($_product, $item, $itemid = null) { return $this->order->wdpAdminOrderContent($_product, $item, $itemid); } public function wdpCustomJS() { return $this->order->wdpCustomJS(); } public function get_con_unit($product, $price = false, $insideloop = false) { return $this->utilities->get_con_unit($product, $price, $insideloop); } public function wdpGetVariations($productID, $list = false) { return $this->utilities->wdpGetVariations($productID, $list); } public function array_needle_search($needle, $haystack) { return $this->utilities->array_needle_search($needle, $haystack); } public function check_product_on_sale($productID) { return $this->utilities->check_product_on_sale($productID); } public function wdp_price_including_tax($product, $prodPrice, $args = array()) { return $this->utilities->wdp_price_including_tax($product, $prodPrice, $args); } public function wdp_price_excluding_tax($product, $prodPrice, $args = array()) { return $this->utilities->wdp_price_excluding_tax($product, $prodPrice, $args); } public function __clone() { _doing_it_wrong(__FUNCTION__, __('Cheatin’ huh?'), $this->_version); } /** * Unserializing instances of this class is forbidden. * * @since 1.0.0 */ public function __wakeup() { _doing_it_wrong(__FUNCTION__, __('Cheatin’ huh?'), $this->_version); } }