ControllerExtensionPaymentKlarnaCheckout::cartTotal PHP Method

cartTotal() public method

public cartTotal ( )
    public function cartTotal()
    {
        $this->load->language('checkout/cart');
        if (!$this->config->get('klarna_checkout_status')) {
            return false;
        }
        // Totals
        $this->load->model('extension/extension');
        $totals = array();
        $taxes = $this->cart->getTaxes();
        $total = 0;
        // Because __call can not keep var references so we put them into an array.
        $total_data = array('totals' => &$totals, 'taxes' => &$taxes, 'total' => &$total);
        // Display prices
        if ($this->config->get('config_customer_price') && $this->customer->isLogged() || !$this->config->get('config_customer_price')) {
            $sort_order = array();
            $results = $this->model_extension_extension->getExtensions('total');
            foreach ($results as $key => $value) {
                $sort_order[$key] = $this->config->get($value['code'] . '_sort_order');
            }
            array_multisort($sort_order, SORT_ASC, $results);
            foreach ($results as $result) {
                if ($this->config->get($result['code'] . '_status')) {
                    $this->load->model('extension/total/' . $result['code']);
                    // We have to put the totals in an array so that they pass by reference.
                    $this->{'model_extension_total_' . $result['code']}->getTotal($total_data);
                }
            }
            $sort_order = array();
            foreach ($totals as $key => $value) {
                $sort_order[$key] = $value['sort_order'];
            }
            array_multisort($sort_order, SORT_ASC, $totals);
            $total = sprintf($this->language->get('text_items'), $this->cart->countProducts() + (isset($this->session->data['vouchers']) ? count($this->session->data['vouchers']) : 0), $this->currency->format($total, $this->session->data['currency']));
        }
        $this->response->addHeader('Content-Type: application/json');
        $this->response->setOutput(json_encode($total));
    }