/** * Remove gift from cart after special product has been removed * * @param $observer * @return $this */ public function deleteGift($observer) { if ($this->_helper->productGiftEnabled()) { $quote_item = $observer->getEvent()->getQuoteItem(); $product = Mage::getModel('catalog/product')->load($quote_item->getProduct()->getId()); $child_items = $quote_item->getChildren(); if (!empty($child_items)) { $id_delete = current($child_items)->getProduct()->getId(); } else { $id_delete = $quote_item->getProduct()->getId(); } $has_gift = $product->getData('is_product_gift_enabled'); if (!$has_gift) { return $this; } $cart = Mage::getSingleton('checkout/cart'); $quote = $cart->getQuote(); foreach ($quote->getItemsCollection() as $it) { $gift_attr = $it->getOptionByCode('gift_for_product_id'); if ($gift_attr) { if ($gift_attr->getValue() == $id_delete) { $cart->removeItem($it->getItemId()); $quote->save(); return $this; } } } return $this; } }