PHP 8.0.30
Preview: class-wc-cart-fees.php Size: 3.37 KB
/home/certprox/zang.certproxywizard.com/wp/wp-content/plugins/woocommerce/includes/class-wc-cart-fees.php

<?php
/**
 * Cart fees API.
 *
 * Developers can add fees to the cart via WC()->cart->fees_api() which will reference this class.
 *
 * We suggest using the action woocommerce_cart_calculate_fees hook for adding fees.
 *
 * @package WooCommerce\Classes
 * @version 3.2.0
 */

defined( 'ABSPATH' ) || exit;

/**
 * WC_Cart_Fees class.
 *
 * @since 3.2.0
 */
final class WC_Cart_Fees {

	/**
	 * An array of fee objects.
	 *
	 * @var object[]
	 */
	private $fees = array();

	/**
	 * New fees are made out of these props.
	 *
	 * @var array
	 */
	private $default_fee_props = array(
		'id'        => '',
		'name'      => '',
		'tax_class' => '',
		'taxable'   => false,
		'amount'    => 0,
		'total'     => 0,
	);

	/**
	 * Constructor. Reference to the cart.
	 *
	 * @param null $deprecated Deprecated since WooCommerce 8.2.0.
	 *
	 * @since 3.2.0
	 */
	public function __construct( $deprecated = null ) {
		if ( isset( $deprecated ) ) {
			wc_doing_it_wrong(
				'new WC_Cart_Fees',
				'You don\'t need to pass a cart parameter to the WC_Cart_Fees constructor anymore',
				'8.2.0'
			);
		}
	}

	/**
	 * Register methods for this object on the appropriate WordPress hooks.
	 */
	public function init() {}

	/**
	 * Add a fee. Fee IDs must be unique.
	 *
	 * @since 3.2.0
	 * @param array $args Array of fee properties.
	 * @return object Either a fee object if added, or a WP_Error if it failed.
	 */
	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 ];
	}

	/**
	 * Get fees.
	 *
	 * @return array
	 */
	public function get_fees() {
		uasort( $this->fees, array( $this, 'sort_fees_callback' ) );

		return $this->fees;
	}

	/**
	 * Set fees.
	 *
	 * @param object[] $raw_fees Array of fees.
	 */
	public function set_fees( $raw_fees = array() ) {
		$this->fees = array();

		foreach ( $raw_fees as $raw_fee ) {
			$this->add_fee( $raw_fee );
		}
	}

	/**
	 * Remove all fees.
	 *
	 * @since 3.2.0
	 */
	public function remove_all_fees() {
		$this->set_fees();
	}

	/**
	 * Sort fees by amount.
	 *
	 * @param stdClass $a Fee object.
	 * @param stdClass $b Fee object.
	 * @return int
	 */
	protected function sort_fees_callback( $a, $b ) {
		/**
		 * Filter sort fees callback.
		 *
		 * @since 3.8.0
		 * @param int Sort order, -1 or 1.
		 * @param stdClass $a Fee object.
		 * @param stdClass $b Fee object.
		 */
		return apply_filters( 'woocommerce_sort_fees_callback', $a->amount > $b->amount ? -1 : 1, $a, $b );
	}

	/**
	 * Generate a unique ID for the fee being added.
	 *
	 * @param string $fee Fee object.
	 * @return string fee key.
	 */
	private function generate_id( $fee ) {
		return sanitize_title( $fee->name );
	}
}

Directory Contents

Dirs: 28 × Files: 115

Name Size Perms Modified Actions
abstracts DIR
- drwxr-xr-x 2026-03-30 10:22:29
Edit Download
admin DIR
- drwxr-xr-x 2026-03-30 10:22:31
Edit Download
blocks DIR
- drwxr-xr-x 2026-03-30 10:22:31
Edit Download
cli DIR
- drwxr-xr-x 2026-03-30 10:22:33
Edit Download
- drwxr-xr-x 2026-03-30 10:22:33
Edit Download
- drwxr-xr-x 2026-03-30 10:22:34
Edit Download
emails DIR
- drwxr-xr-x 2026-03-30 10:22:34
Edit Download
export DIR
- drwxr-xr-x 2026-03-30 10:22:34
Edit Download
gateways DIR
- drwxr-xr-x 2026-03-30 10:22:34
Edit Download
import DIR
- drwxr-xr-x 2026-03-30 10:22:34
Edit Download
- drwxr-xr-x 2026-03-30 10:21:54
Edit Download
- drwxr-xr-x 2026-03-30 10:22:34
Edit Download
legacy DIR
- drwxr-xr-x 2026-03-30 10:22:35
Edit Download
libraries DIR
- drwxr-xr-x 2026-03-30 10:22:35
Edit Download
- drwxr-xr-x 2026-03-30 10:22:35
Edit Download
- drwxr-xr-x 2026-03-30 10:22:35
Edit Download
- drwxr-xr-x 2026-03-30 10:22:35
Edit Download
queue DIR
- drwxr-xr-x 2026-03-30 10:22:35
Edit Download
- drwxr-xr-x 2026-03-30 10:22:35
Edit Download
rest-api DIR
- drwxr-xr-x 2026-03-30 10:22:36
Edit Download
shipping DIR
- drwxr-xr-x 2026-03-30 10:21:54
Edit Download
- drwxr-xr-x 2026-03-30 10:22:36
Edit Download
- drwxr-xr-x 2026-03-30 10:22:36
Edit Download
tracks DIR
- drwxr-xr-x 2026-03-30 10:22:36
Edit Download
traits DIR
- drwxr-xr-x 2026-03-30 10:22:37
Edit Download
walkers DIR
- drwxr-xr-x 2026-03-30 10:22:37
Edit Download
- drwxr-xr-x 2026-03-30 10:22:37
Edit Download
widgets DIR
- drwxr-xr-x 2026-03-30 10:22:38
Edit Download
123.43 KB lrw-r--r-- 2026-03-30 10:22:31
Edit Download
12.69 KB lrw-r--r-- 2026-03-30 10:22:31
Edit Download
5.27 KB lrw-r--r-- 2026-03-30 10:22:31
Edit Download
4.58 KB lrw-r--r-- 2026-03-30 10:22:32
Edit Download
3.45 KB lrw-r--r-- 2026-03-30 10:22:32
Edit Download
1.78 KB lrw-r--r-- 2026-03-30 10:22:32
Edit Download
6.89 KB lrw-r--r-- 2026-03-30 10:22:32
Edit Download
34.80 KB lrw-r--r-- 2026-03-30 10:22:32
Edit Download
10.41 KB lrw-r--r-- 2026-03-30 10:22:32
Edit Download
12.69 KB lrw-r--r-- 2026-03-30 10:22:32
Edit Download
3.37 KB lrw-r--r-- 2026-03-30 10:22:32
Edit Download
25.38 KB lrw-r--r-- 2026-03-30 10:22:32
Edit Download
28.48 KB lrw-r--r-- 2026-03-30 10:22:32
Edit Download
74.21 KB lrw-r--r-- 2026-03-30 10:22:32
Edit Download
50.15 KB lrw-r--r-- 2026-03-30 10:22:32
Edit Download
3.34 KB lrw-r--r-- 2026-03-30 10:22:32
Edit Download
23.08 KB lrw-r--r-- 2026-03-30 10:22:32
Edit Download
50.67 KB lrw-r--r-- 2026-03-30 10:22:32
Edit Download
43.87 KB lrw-r--r-- 2026-03-30 10:22:32
Edit Download
3.37 KB lrw-r--r-- 2026-03-30 10:22:32
Edit Download
10.34 KB lrw-r--r-- 2026-03-30 10:22:32
Edit Download
33.20 KB lrw-r--r-- 2026-03-30 10:22:32
Edit Download
1.29 KB lrw-r--r-- 2026-03-30 10:22:32
Edit Download
6.59 KB lrw-r--r-- 2026-03-30 10:22:32
Edit Download
2.26 KB lrw-r--r-- 2026-03-30 10:22:32
Edit Download
6.59 KB lrw-r--r-- 2026-03-30 10:22:32
Edit Download
7.34 KB lrw-r--r-- 2026-03-30 10:22:32
Edit Download
36.64 KB lrw-r--r-- 2026-03-30 10:22:32
Edit Download
28.37 KB lrw-r--r-- 2026-03-30 10:22:32
Edit Download
39.09 KB lrw-r--r-- 2026-03-30 10:22:32
Edit Download
4.24 KB lrw-r--r-- 2026-03-30 10:22:32
Edit Download
48.17 KB lrw-r--r-- 2026-03-30 10:22:32
Edit Download
34.36 KB lrw-r--r-- 2026-03-30 10:22:32
Edit Download
30.43 KB lrw-r--r-- 2026-03-30 10:22:32
Edit Download
1.99 KB lrw-r--r-- 2026-03-30 10:22:32
Edit Download
11.34 KB lrw-r--r-- 2026-03-30 10:22:32
Edit Download
4.33 KB lrw-r--r-- 2026-03-30 10:22:32
Edit Download
116.06 KB lrw-r--r-- 2026-03-30 10:22:32
Edit Download
1.28 KB lrw-r--r-- 2026-03-30 10:22:32
Edit Download
3.90 KB lrw-r--r-- 2026-03-30 10:22:32
Edit Download
9.41 KB lrw-r--r-- 2026-03-30 10:22:32
Edit Download
2.21 KB lrw-r--r-- 2026-03-30 10:22:32
Edit Download
8.66 KB lrw-r--r-- 2026-03-30 10:22:32
Edit Download
4.08 KB lrw-r--r-- 2026-03-30 10:22:32
Edit Download
9.99 KB lrw-r--r-- 2026-03-30 10:22:32
Edit Download
5.80 KB lrw-r--r-- 2026-03-30 10:22:32
Edit Download
17.54 KB lrw-r--r-- 2026-03-30 10:22:32
Edit Download
9.58 KB lrw-r--r-- 2026-03-30 10:22:32
Edit Download
6.49 KB lrw-r--r-- 2026-03-30 10:22:32
Edit Download
21.39 KB lrw-r--r-- 2026-03-30 10:22:32
Edit Download
2.55 KB lrw-r--r-- 2026-03-30 10:22:33
Edit Download
5.99 KB lrw-r--r-- 2026-03-30 10:22:33
Edit Download
77.53 KB lrw-r--r-- 2026-03-30 10:22:32
Edit Download
16.56 KB lrw-r--r-- 2026-03-30 10:22:33
Edit Download
6.24 KB lrw-r--r-- 2026-03-30 10:22:33
Edit Download
36.87 KB lrw-r--r-- 2026-03-30 10:22:33
Edit Download
32.89 KB lrw-r--r-- 2026-03-30 10:22:33
Edit Download
1.79 KB lrw-r--r-- 2026-03-30 10:22:33
Edit Download
13.61 KB lrw-r--r-- 2026-03-30 10:22:33
Edit Download
14.69 KB lrw-r--r-- 2026-03-30 10:22:33
Edit Download
17.22 KB lrw-r--r-- 2026-03-30 10:22:33
Edit Download
7.87 KB lrw-r--r-- 2026-03-30 10:22:33
Edit Download
13.18 KB lrw-r--r-- 2026-03-30 10:22:33
Edit Download
4.98 KB lrw-r--r-- 2026-03-30 10:22:33
Edit Download
4.54 KB lrw-r--r-- 2026-03-30 10:22:33
Edit Download
6.75 KB lrw-r--r-- 2026-03-30 10:22:33
Edit Download
2.27 KB lrw-r--r-- 2026-03-30 10:22:33
Edit Download
2.70 KB lrw-r--r-- 2026-03-30 10:22:33
Edit Download
23.70 KB lrw-r--r-- 2026-03-30 10:22:33
Edit Download
20.18 KB lrw-r--r-- 2026-03-30 10:22:33
Edit Download
33.50 KB lrw-r--r-- 2026-03-30 10:22:33
Edit Download
4.00 KB lrw-r--r-- 2026-03-30 10:22:33
Edit Download
7.74 KB lrw-r--r-- 2026-03-30 10:22:33
Edit Download
15.44 KB lrw-r--r-- 2026-03-30 10:22:33
Edit Download
5.05 KB lrw-r--r-- 2026-03-30 10:22:33
Edit Download
21.55 KB lrw-r--r-- 2026-03-30 10:22:33
Edit Download
276 B lrw-r--r-- 2026-03-30 10:22:33
Edit Download
24.15 KB lrw-r--r-- 2026-03-30 10:22:33
Edit Download
9.34 KB lrw-r--r-- 2026-03-30 10:22:33
Edit Download
13.08 KB lrw-r--r-- 2026-03-30 10:22:33
Edit Download
5.00 KB lrw-r--r-- 2026-03-30 10:22:33
Edit Download
12.85 KB lrw-r--r-- 2026-03-30 10:22:33
Edit Download
18.82 KB lrw-r--r-- 2026-03-30 10:22:33
Edit Download
24.42 KB lrw-r--r-- 2026-03-30 10:22:33
Edit Download
39.74 KB lrw-r--r-- 2026-03-30 10:22:33
Edit Download
20.42 KB lrw-r--r-- 2026-03-30 10:22:33
Edit Download
51.50 KB lrw-r--r-- 2026-03-30 10:22:33
Edit Download
5.79 KB lrw-r--r-- 2026-03-30 10:22:33
Edit Download
30.08 KB lrw-r--r-- 2026-03-30 10:22:33
Edit Download
62.17 KB lrw-r--r-- 2026-03-30 10:22:33
Edit Download
14.15 KB lrw-r--r-- 2026-03-30 10:22:37
Edit Download
21.85 KB lrw-r--r-- 2026-03-30 10:22:37
Edit Download
4.17 KB lrw-r--r-- 2026-03-30 10:22:37
Edit Download
20.81 KB lrw-r--r-- 2026-03-30 10:22:37
Edit Download
15.53 KB lrw-r--r-- 2026-03-30 10:22:37
Edit Download
78.71 KB lrw-r--r-- 2026-03-30 10:22:37
Edit Download
5.56 KB lrw-r--r-- 2026-03-30 10:22:37
Edit Download
39.78 KB lrw-r--r-- 2026-03-30 10:22:37
Edit Download
49.90 KB lrw-r--r-- 2026-03-30 10:22:37
Edit Download
2.17 KB lrw-r--r-- 2026-03-30 10:22:37
Edit Download
8.49 KB lrw-r--r-- 2026-03-30 10:22:37
Edit Download
43.41 KB lrw-r--r-- 2026-03-30 10:22:37
Edit Download
5.03 KB lrw-r--r-- 2026-03-30 10:22:37
Edit Download
5.97 KB lrw-r--r-- 2026-03-30 10:22:37
Edit Download
9.43 KB lrw-r--r-- 2026-03-30 10:22:37
Edit Download
67.38 KB lrw-r--r-- 2026-03-30 10:22:37
Edit Download
13.93 KB lrw-r--r-- 2026-03-30 10:22:37
Edit Download
17.43 KB lrw-r--r-- 2026-03-30 10:22:37
Edit Download
141.89 KB lrw-r--r-- 2026-03-30 10:22:37
Edit Download
12.84 KB lrw-r--r-- 2026-03-30 10:22:37
Edit Download
24.57 KB lrw-r--r-- 2026-03-30 10:22:37
Edit Download
101.89 KB lrw-r--r-- 2026-03-30 10:22:37
Edit Download
34.17 KB lrw-r--r-- 2026-03-30 10:22:37
Edit Download
5.77 KB lrw-r--r-- 2026-03-30 10:22:37
Edit Download
2.01 KB lrw-r--r-- 2026-03-30 10:22:37
Edit Download

If ZipArchive is unavailable, a .tar will be created (no compression).