Create New Item
×
Item Type
File
Folder
Item Name
×
Search file in folder and subfolders...
File Manager
/
wp-content
/
plugins
/
woocommerce
/
includes
Advanced Search
Upload
New Item
Settings
Back
Back Up
Advanced Editor
Save
<?php defined('ABSPATH') || exit; final class WC_Cart_Fees { private $fees = array(); private $cart; private $default_fee_props = array('id' => '', 'name' => '', 'tax_class' => '', 'taxable' => false, 'amount' => 0, 'total' => 0); public function __construct(&$cart) { if (!is_a($cart, 'WC_Cart')) { throw new Exception('A valid WC_Cart object is required'); } $this->cart = $cart; } public function init() { } public function add_fee($args = array()) { $fee_props = (object) wp_parse_args($args, $this->default_fee_props); $fee_props->name = $fee_props->name ? $fee_props->name : __('Fee', 'woocommerce'); $fee_props->tax_class = in_array($fee_props->tax_class, array_merge(WC_Tax::get_tax_classes(), WC_Tax::get_tax_class_slugs()), true) ? $fee_props->tax_class : ''; $fee_props->taxable = wc_string_to_bool($fee_props->taxable); $fee_props->amount = wc_format_decimal($fee_props->amount); if (empty($fee_props->id)) { $fee_props->id = $this->generate_id($fee_props); } if (array_key_exists($fee_props->id, $this->fees)) { return new WP_Error('fee_exists', __('Fee has already been added.', 'woocommerce')); } $this->fees[$fee_props->id] = $fee_props; return $this->fees[$fee_props->id]; } public function get_fees() { uasort($this->fees, array($this, 'sort_fees_callback')); return $this->fees; } public function set_fees($raw_fees = array()) { $this->fees = array(); foreach ($raw_fees as $raw_fee) { $this->add_fee($raw_fee); } } public function remove_all_fees() { $this->set_fees(); } protected function sort_fees_callback($a, $b) { return apply_filters('woocommerce_sort_fees_callback', $a->amount > $b->amount ? -1 : 1, $a, $b); } private function generate_id($fee) { return sanitize_title($fee->name); } }