*/ class Mage_XmlConnect_Block_Cart extends Mage_Checkout_Block_Cart_Abstract { /** * Render shopping cart xml * * @return string */ protected function _toHtml() { $cartMessages = $this->getMessages(); $quote = $this->getQuote(); /** @var $xmlObject Mage_XmlConnect_Model_Simplexml_Element */ $xmlObject = Mage::getModel('xmlconnect/simplexml_element', ''); $xmlObject->addAttribute('is_virtual', (int)$this->helper('checkout/cart')->getIsVirtualQuote()); $xmlObject->addAttribute('summary_qty', (int)$this->helper('checkout/cart')->getSummaryCount()); if (strlen($quote->getCouponCode())) { $xmlObject->addAttribute('has_coupon_code', 1); } $productSmallImageSize = Mage::getModel('xmlconnect/images')->getImageLimitParam('content/product_small'); $products = $xmlObject->addChild('products'); /* @var $item Mage_Sales_Model_Quote_Item */ foreach ($this->getItems() as $item) { $type = $item->getProductType(); $renderer = $this->getItemRenderer($type)->setItem($item); /** * General information */ $itemXml = $products->addChild('item'); $itemXml->addChild('entity_id', $item->getProduct()->getId()); $itemXml->addChild('entity_type', $type); $itemXml->addChild('item_id', $item->getId()); $itemXml->addChild('name', $xmlObject->escapeXml($renderer->getProductName())); $itemXml->addChild('code', 'cart[' . $item->getId() . '][qty]'); $itemXml->addChild('qty', $renderer->getQty()); $icon = $renderer->getProductThumbnail()->resize($productSmallImageSize); $iconXml = $itemXml->addChild('icon', $icon); $iconXml->addAttribute('modification_time', filemtime($icon->getNewFile())); /** * Price */ $exclPrice = $inclPrice = 0; if ($this->helper('tax')->displayCartPriceExclTax() || $this->helper('tax')->displayCartBothPrices()) { if (Mage::helper('weee')->typeOfDisplay($item, array(0, 1, 4), 'sales') && $item->getWeeeTaxAppliedAmount() ) { $exclPrice = $item->getCalculationPrice() + $item->getWeeeTaxAppliedAmount() + $item->getWeeeTaxDisposition(); } else { $exclPrice = $item->getCalculationPrice(); } } if ($this->helper('tax')->displayCartPriceInclTax() || $this->helper('tax')->displayCartBothPrices()) { $incl = $this->helper('checkout')->getPriceInclTax($item); if (Mage::helper('weee')->typeOfDisplay($item, array(0, 1, 4), 'sales') && $item->getWeeeTaxAppliedAmount() ) { $inclPrice = $incl + $item->getWeeeTaxAppliedAmount(); } else { $inclPrice = $incl - $item->getWeeeTaxDisposition(); } } $exclPrice = Mage::helper('xmlconnect')->formatPriceForXml($exclPrice); $paypalPrice = Mage::helper('xmlconnect')->formatPriceForXml($item->getCalculationPrice()); $formattedExclPrice = $quote->getStore()->formatPrice($exclPrice, false); $inclPrice = Mage::helper('xmlconnect')->formatPriceForXml($inclPrice); $formattedInclPrice = $quote->getStore()->formatPrice($inclPrice, false); $priceXmlObj = $itemXml->addChild('price'); $formattedPriceXmlObj = $itemXml->addChild('formated_price'); if ($this->helper('tax')->displayCartBothPrices()) { $priceXmlObj->addAttribute('excluding_tax', $exclPrice); $priceXmlObj->addAttribute('including_tax', $inclPrice); $formattedPriceXmlObj->addAttribute('excluding_tax', $formattedExclPrice); $formattedPriceXmlObj->addAttribute('including_tax', $formattedInclPrice); } else { if ($this->helper('tax')->displayCartPriceExclTax()) { $priceXmlObj->addAttribute('regular', $exclPrice); $formattedPriceXmlObj->addAttribute('regular', $formattedExclPrice); } if ($this->helper('tax')->displayCartPriceInclTax()) { $priceXmlObj->addAttribute('regular', $inclPrice); $formattedPriceXmlObj->addAttribute('regular', $formattedInclPrice); } } /** * Info for paypal MEP if it's enabled */ $appConfig = Mage::helper('xmlconnect')->getApplication()->loadConfiguration()->getRenderConf(); $isMepActive = $appConfig['paypal']['isActive']; $paypalMepIsAvailable = Mage::getModel('xmlconnect/payment_method_paypal_mep')->isAvailable(null); if ($paypalMepIsAvailable && $isMepActive) { $paypalPriceXmlObj = $itemXml->addChild('paypal_price'); $paypalPriceXmlObj->addAttribute('regular', $paypalPrice); $paypalPriceXmlObj->addAttribute( 'subtotal', Mage::helper('xmlconnect')->formatPriceForXml($item->getRowTotal()) ); } /** * Subtotal */ $exclPrice = $inclPrice = 0; if ($this->helper('tax')->displayCartPriceExclTax() || $this->helper('tax')->displayCartBothPrices()) { if (Mage::helper('weee')->typeOfDisplay($item, array(0, 1, 4), 'sales') && $item->getWeeeTaxAppliedAmount() ) { $exclPrice = $item->getRowTotal() + $item->getWeeeTaxAppliedRowAmount() + $item->getWeeeTaxRowDisposition(); } else { $exclPrice = $item->getRowTotal(); } } if ($this->helper('tax')->displayCartPriceInclTax() || $this->helper('tax')->displayCartBothPrices()) { $incl = $this->helper('checkout')->getSubtotalInclTax($item); if (Mage::helper('weee')->typeOfDisplay($item, array(0, 1, 4), 'sales') && $item->getWeeeTaxAppliedAmount() ) { $inclPrice = $incl + $item->getWeeeTaxAppliedRowAmount(); } else { $inclPrice = $incl - $item->getWeeeTaxRowDisposition(); } } $exclPrice = Mage::helper('xmlconnect')->formatPriceForXml($exclPrice); $formattedExclPrice = $quote->getStore()->formatPrice($exclPrice, false); $inclPrice = Mage::helper('xmlconnect')->formatPriceForXml($inclPrice); $formattedInclPrice = $quote->getStore()->formatPrice($inclPrice, false); $subtotalPriceXmlObj = $itemXml->addChild('subtotal'); $subtotalFormattedPriceXmlObj = $itemXml->addChild('formated_subtotal'); if ($this->helper('tax')->displayCartBothPrices()) { $subtotalPriceXmlObj->addAttribute('excluding_tax', $exclPrice); $subtotalPriceXmlObj->addAttribute('including_tax', $inclPrice); $subtotalFormattedPriceXmlObj->addAttribute('excluding_tax', $formattedExclPrice); $subtotalFormattedPriceXmlObj->addAttribute('including_tax', $formattedInclPrice); } else { if ($this->helper('tax')->displayCartPriceExclTax()) { $subtotalPriceXmlObj->addAttribute('regular', $exclPrice); $subtotalFormattedPriceXmlObj->addAttribute('regular', $formattedExclPrice); } if ($this->helper('tax')->displayCartPriceInclTax()) { $subtotalPriceXmlObj->addAttribute('regular', $inclPrice); $subtotalFormattedPriceXmlObj->addAttribute('regular', $formattedInclPrice); } } /** * Options list */ $options = $renderer->getOptionList(); if ($options) { $itemOptionsXml = $itemXml->addChild('options'); foreach ($options as $option) { $formattedOptionValue = $renderer->getFormatedOptionValue($option); $optionXml = $itemOptionsXml->addChild('option'); $optionXml->addAttribute('label', $xmlObject->xmlAttribute($option['label'])); $optionXml->addAttribute('text', $xmlObject->xmlAttribute($formattedOptionValue['value'])); } } /** * Downloadable products */ $links = $renderer->getLinks(); if ($links) { $itemOptionsXml = $itemXml->addCustomChild('options', null, array( 'label' => $renderer->getLinksTitle() )); foreach ($links as $link) { $itemOptionsXml->addCustomChild('option', null, array('label' => $link->getTitle())); } } /** * Item messages */ $messages = $renderer->getMessages(); if ($messages) { $itemMessagesXml = $itemXml->addChild('messages'); foreach ($messages as $message) { $messageXml = $itemMessagesXml->addChild('option'); $messageXml->addChild('type', $message['type']); $messageXml->addChild('text', $xmlObject->escapeXml($message['text'])); } } } /** * Cart messages */ if ($cartMessages) { $messagesXml = $xmlObject->addChild('messages'); foreach ($cartMessages as $status => $messages) { foreach ($messages as $message) { $messageXml = $messagesXml->addChild('message'); $messageXml->addChild('status', $status); $messageXml->addChild('text', strip_tags($message)); } } } /** * Cross Sell Products */ if (count($this->getItems())) { $crossellXml = $this->getChildHtml('crosssell'); } else { $crossellXml = ''; } $crossSellXmlObj = Mage::getModel('xmlconnect/simplexml_element', $crossellXml); $xmlObject->appendChild($crossSellXmlObj); return $xmlObject->asNiceXml(); } }