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

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

Download   Open   Edit   Advanced Editor   Back

<?php

defined('ABSPATH') || exit;
class WC_Shortcode_Cart
{
    public static function calculate_shipping()
    {
        try {
            WC()->shipping()->reset_shipping();
            $address = array();
            $address['country'] = isset($_POST['calc_shipping_country']) ? wc_clean(wp_unslash($_POST['calc_shipping_country'])) : '';
            $address['state'] = isset($_POST['calc_shipping_state']) ? wc_clean(wp_unslash($_POST['calc_shipping_state'])) : '';
            $address['postcode'] = isset($_POST['calc_shipping_postcode']) ? wc_clean(wp_unslash($_POST['calc_shipping_postcode'])) : '';
            $address['city'] = isset($_POST['calc_shipping_city']) ? wc_clean(wp_unslash($_POST['calc_shipping_city'])) : '';
            $address = apply_filters('woocommerce_cart_calculate_shipping_address', $address);
            if ($address['postcode'] && !WC_Validation::is_postcode($address['postcode'], $address['country'])) {
                throw new Exception(__('Please enter a valid postcode / ZIP.', 'woocommerce'));
            } elseif ($address['postcode']) {
                $address['postcode'] = wc_format_postcode($address['postcode'], $address['country']);
            }
            if ($address['country']) {
                if (!WC()->customer->get_billing_first_name()) {
                    WC()->customer->set_billing_location($address['country'], $address['state'], $address['postcode'], $address['city']);
                }
                WC()->customer->set_shipping_location($address['country'], $address['state'], $address['postcode'], $address['city']);
            } else {
                WC()->customer->set_billing_address_to_base();
                WC()->customer->set_shipping_address_to_base();
            }
            WC()->customer->set_calculated_shipping(true);
            WC()->customer->save();
            wc_add_notice(__('Shipping costs updated.', 'woocommerce'), 'notice');
            do_action('woocommerce_calculated_shipping');
        } catch (Exception $e) {
            if (!empty($e)) {
                wc_add_notice($e->getMessage(), 'error');
            }
        }
    }
    public static function output($atts)
    {
        if (!apply_filters('woocommerce_output_cart_shortcode_content', true)) {
            return;
        }
        wc_maybe_define_constant('WOOCOMMERCE_CART', true);
        $atts = shortcode_atts(array(), $atts, 'woocommerce_cart');
        $nonce_value = wc_get_var($_REQUEST['woocommerce-shipping-calculator-nonce'], wc_get_var($_REQUEST['_wpnonce'], ''));
        if (!empty($_POST['calc_shipping']) && (wp_verify_nonce($nonce_value, 'woocommerce-shipping-calculator') || wp_verify_nonce($nonce_value, 'woocommerce-cart'))) {
            self::calculate_shipping();
            WC()->cart->calculate_totals();
        }
        do_action('woocommerce_check_cart_items');
        WC()->cart->calculate_totals();
        if (WC()->cart->is_empty()) {
            wc_get_template('cart/cart-empty.php');
        } else {
            wc_get_template('cart/cart.php');
        }
    }
}