File "class-wc-cart-fees.php"

Full path: /home/kosmetik/public_html/wp-content/plugins/woocommerce/includes/class-wc-cart-fees.php
File size: 2 B
MIME-type: text/x-php
Charset: utf-8

Download   Open   Edit   Advanced Editor   Back

<?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);
    }
}