HEX
Server: nginx/1.27.1
System: Linux in-3 5.15.0-161-generic #171-Ubuntu SMP Sat Oct 11 08:17:01 UTC 2025 x86_64
User: ivenus-clone (3297)
PHP: 7.4.33
Disabled: exec,passthru,shell_exec,system,proc_open,popen,parse_ini_file,show_source
Upload Files
File: /storage/v4513/tepnot/public_html/wp-content/plugins/dokan-lite/includes/Shipping/Tax.php
<?php

namespace WeDevs\Dokan\Shipping;

use WC_Tax;

class Tax extends WC_Tax {

    /**
     * Get tax rates for shipping
     *
     * @since 4.2.4
     *
     * @param $args
     *
     * @return array
     */
    public static function get_tax_rates( $args ) {
        $tax_class = self::get_shipping_tax_class_from_vendor_cart_items( $args );

        if ( is_null( $tax_class ) ) {
            return array();
        }

        $location = self::get_tax_location( $tax_class );

        // Check for a valid location.
        if ( 4 !== count( $location ) ) {
            return array();
        }

        [ $country, $state, $postcode, $city ] = $location;

        return self::find_shipping_rates(
            array(
                'country'   => $country,
                'state'     => $state,
                'postcode'  => $postcode,
                'city'      => $city,
                'tax_class' => $tax_class,
            )
        );
    }

    /**
     * Get shipping tax class from vendor cart items.
     *
     * @since 4.2.4
     *
     * @param $args
     *
     * @return false|mixed|string|null
     */
    private static function get_shipping_tax_class_from_vendor_cart_items( $args ) {
        $standard_tax_class = '';
        $vendor_cart = ! empty( $args['package']['contents'] ) ? $args['package']['contents'] : [];

        // Check if cart has items before proceeding.
        if ( ! $vendor_cart ) {
            return null;
        }

        $cart_tax_classes = self::get_vendor_cart_item_tax_classes_for_shipping( $vendor_cart );

        // No tax classes = no taxable items.
        if ( empty( $cart_tax_classes ) ) {
            return null;
        }

        // Standard tax class takes priority over any other tax class.
        if ( in_array( $standard_tax_class, $cart_tax_classes, true ) ) {
            return $standard_tax_class;
        }

        // If only one tax class, use it directly.
        if ( 1 === count( $cart_tax_classes ) ) {
            return reset( $cart_tax_classes );
        }

        // For multiple classes, use the first one found using the order defined in settings.
        static $tax_class_slugs = null;
        if ( null === $tax_class_slugs ) {
            $tax_class_slugs = self::get_tax_class_slugs();
        }

        foreach ( $tax_class_slugs as $tax_class_slug ) {
            if ( in_array( $tax_class_slug, $cart_tax_classes, true ) ) {
                return $tax_class_slug;
            }
        }

        // Default to standard tax class if nothing else matches.
        return $standard_tax_class;
    }

    /**
     * Retrieves a list of unique tax classes for shipping from the provided vendor cart items.
     *
     * @static 4.2.4
     *
     * @param array $cart_items An array of cart items.
     *
     * @return array An array of unique tax classes applicable to shipping for the provided cart items.
     */
    public static function get_vendor_cart_item_tax_classes_for_shipping( $cart_items ) {
        $found_tax_classes = array();

        foreach ( $cart_items as $item ) {
            if ( $item['data'] && ( $item['data']->is_shipping_taxable() ) ) {
                $found_tax_classes[] = $item['data']->get_tax_class();
            }
        }

        return array_unique( $found_tax_classes );
    }
}