<?php if (!defined('ABSPATH')) { exit; } abstract class WC_Legacy_Cart { public $cart_session_data = array('cart_contents_total' => 0, 'total' => 0, 'subtotal' => 0, 'subtotal_ex_tax' => 0, 'tax_total' => 0, 'taxes' => array(), 'shipping_taxes' => array(), 'discount_cart' => 0, 'discount_cart_tax' => 0, 'shipping_total' => 0, 'shipping_tax_total' => 0, 'coupon_discount_amounts' => array(), 'coupon_discount_tax_amounts' => array(), 'fee_total' => 0, 'fees' => array()); public $coupon_applied_count = array(); public function __isset($name) { $legacy_keys = array_merge(array('dp', 'prices_include_tax', 'round_at_subtotal', 'cart_contents_total', 'total', 'subtotal', 'subtotal_ex_tax', 'tax_total', 'fee_total', 'discount_cart', 'discount_cart_tax', 'shipping_total', 'shipping_tax_total', 'display_totals_ex_tax', 'display_cart_ex_tax', 'cart_contents_weight', 'cart_contents_count', 'coupons', 'taxes', 'shipping_taxes', 'coupon_discount_amounts', 'coupon_discount_tax_amounts', 'fees', 'tax', 'discount_total', 'tax_display_cart'), is_array($this->cart_session_data) ? array_keys($this->cart_session_data) : array()); if (in_array($name, $legacy_keys, true)) { return true; } return false; } public function &__get($name) { $value = ''; switch ($name) { case 'dp': $value = wc_get_price_decimals(); break; case 'prices_include_tax': $value = wc_prices_include_tax(); break; case 'round_at_subtotal': $value = 'yes' === get_option('woocommerce_tax_round_at_subtotal'); break; case 'cart_contents_total': $value = $this->get_cart_contents_total(); break; case 'total': $value = $this->get_total('edit'); break; case 'subtotal': $value = $this->get_subtotal() + $this->get_subtotal_tax(); break; case 'subtotal_ex_tax': $value = $this->get_subtotal(); break; case 'tax_total': $value = $this->get_fee_tax() + $this->get_cart_contents_tax(); break; case 'fee_total': $value = $this->get_fee_total(); break; case 'discount_cart': $value = $this->get_discount_total(); break; case 'discount_cart_tax': $value = $this->get_discount_tax(); break; case 'shipping_total': $value = $this->get_shipping_total(); break; case 'shipping_tax_total': $value = $this->get_shipping_tax(); break; case 'display_totals_ex_tax': case 'display_cart_ex_tax': $value = !$this->display_prices_including_tax(); break; case 'cart_contents_weight': $value = $this->get_cart_contents_weight(); break; case 'cart_contents_count': $value = $this->get_cart_contents_count(); break; case 'coupons': $value = $this->get_coupons(); break; case 'taxes': wc_deprecated_function('WC_Cart->taxes', '3.2', sprintf('getters (%s) and setters (%s)', 'WC_Cart::get_cart_contents_taxes()', 'WC_Cart::set_cart_contents_taxes()')); $value =& $this->totals['cart_contents_taxes']; break; case 'shipping_taxes': wc_deprecated_function('WC_Cart->shipping_taxes', '3.2', sprintf('getters (%s) and setters (%s)', 'WC_Cart::get_shipping_taxes()', 'WC_Cart::set_shipping_taxes()')); $value =& $this->totals['shipping_taxes']; break; case 'coupon_discount_amounts': $value =& $this->coupon_discount_totals; break; case 'coupon_discount_tax_amounts': $value =& $this->coupon_discount_tax_totals; break; case 'fees': wc_deprecated_function('WC_Cart->fees', '3.2', sprintf('the fees API (%s)', 'WC_Cart::get_fees')); $new_fees = $this->fees_api()->get_fees(); $this->fees = $new_fees; $value =& $this->fees; break; case 'tax': wc_deprecated_argument('WC_Cart->tax', '2.3', 'Use WC_Tax directly'); $this->tax = new WC_Tax(); $value = $this->tax; break; case 'discount_total': wc_deprecated_argument('WC_Cart->discount_total', '2.3', 'After tax coupons are no longer supported. For more information see: https://woocommerce.wordpress.com/2014/12/upcoming-coupon-changes-in-woocommerce-2-3/'); $value = 0; break; case 'tax_display_cart': wc_deprecated_argument('WC_Cart->tax_display_cart', '4.4', 'Use WC_Cart->get_tax_price_display_mode() instead.'); $value = $this->get_tax_price_display_mode(); break; } return $value; } public function __set($name, $value) { switch ($name) { case 'cart_contents_total': $this->set_cart_contents_total($value); break; case 'total': $this->set_total($value); break; case 'subtotal': $this->set_subtotal($value); break; case 'subtotal_ex_tax': $this->set_subtotal($value); break; case 'tax_total': $this->set_cart_contents_tax($value); $this->set_fee_tax(0); break; case 'taxes': $this->set_cart_contents_taxes($value); break; case 'shipping_taxes': $this->set_shipping_taxes($value); break; case 'fee_total': $this->set_fee_total($value); break; case 'discount_cart': $this->set_discount_total($value); break; case 'discount_cart_tax': $this->set_discount_tax($value); break; case 'shipping_total': $this->set_shipping_total($value); break; case 'shipping_tax_total': $this->set_shipping_tax($value); break; case 'coupon_discount_amounts': $this->set_coupon_discount_totals($value); break; case 'coupon_discount_tax_amounts': $this->set_coupon_discount_tax_totals($value); break; case 'fees': wc_deprecated_function('WC_Cart->fees', '3.2', sprintf('the fees API (%s)', 'WC_Cart::add_fee')); $this->fees = $value; break; default: $this->{$name} = $value; break; } } public function get_cart_from_session() { $this->session->get_cart_from_session(); } public function maybe_set_cart_cookies() { $this->session->maybe_set_cart_cookies(); } public function set_session() { $this->session->set_session(); } public function get_cart_for_session() { return $this->session->get_cart_for_session(); } public function persistent_cart_update() { $this->session->persistent_cart_update(); } public function persistent_cart_destroy() { $this->session->persistent_cart_destroy(); } public function get_cart_discount_total() { return $this->get_discount_total(); } public function get_cart_discount_tax_total() { return $this->get_discount_tax(); } public function add_discount($coupon_code) { return $this->apply_coupon($coupon_code); } public function remove_taxes() { wc_deprecated_function('WC_Cart::remove_taxes', '3.2', ''); } public function init() { wc_deprecated_function('WC_Cart::init', '3.2', ''); $this->get_cart_from_session(); } public function get_discounted_price($values, $price, $add_totals = false) { wc_deprecated_function('WC_Cart::get_discounted_price', '3.2', ''); $cart_item_key = $values['key']; $cart_item = $this->cart_contents[$cart_item_key]; return $cart_item['line_total']; } public function get_cart_url() { wc_deprecated_function('WC_Cart::get_cart_url', '2.5', 'wc_get_cart_url'); return wc_get_cart_url(); } public function get_checkout_url() { wc_deprecated_function('WC_Cart::get_checkout_url', '2.5', 'wc_get_checkout_url'); return wc_get_checkout_url(); } public function ship_to_billing_address_only() { wc_deprecated_function('WC_Cart::ship_to_billing_address_only', '2.5', 'wc_ship_to_billing_address_only'); return wc_ship_to_billing_address_only(); } public function coupons_enabled() { wc_deprecated_function('WC_Legacy_Cart::coupons_enabled', '2.5.0', 'wc_coupons_enabled'); return wc_coupons_enabled(); } public function get_discounts_before_tax() { wc_deprecated_function('get_discounts_before_tax', '2.3', 'get_total_discount'); if ($this->get_cart_discount_total()) { $discounts_before_tax = wc_price($this->get_cart_discount_total()); } else { $discounts_before_tax = false; } return apply_filters('woocommerce_cart_discounts_before_tax', $discounts_before_tax, $this); } public function get_order_discount_total() { wc_deprecated_function('get_order_discount_total', '2.3'); return 0; } public function apply_cart_discounts_after_tax($values, $price) { wc_deprecated_function('apply_cart_discounts_after_tax', '2.3'); } public function apply_product_discounts_after_tax($values, $price) { wc_deprecated_function('apply_product_discounts_after_tax', '2.3'); } public function get_discounts_after_tax() { wc_deprecated_function('get_discounts_after_tax', '2.3'); } }