예제 #1
0
 public function updateItemOptionsAction()
 {
     if (!Mage::helper('multiplewishlist')->isEnabled()) {
         return parent::updateItemOptionsAction();
     }
     $session = Mage::getSingleton('customer/session');
     $wishlist = $this->_getWishlist();
     if (!$wishlist) {
         $this->_redirect('*/');
         return;
     }
     $productId = (int) $this->getRequest()->getParam('product');
     if (!$productId) {
         $this->_redirect('*/');
         return;
     }
     $product = Mage::getModel('catalog/product')->load($productId);
     if (!$product->getId() || !$product->isVisibleInCatalog()) {
         $session->addError($this->__('Cannot specify product.'));
         $this->_redirect('*/');
         return;
     }
     try {
         $id = (int) $this->getRequest()->getParam('id');
         $buyRequest = new Varien_Object($this->getRequest()->getParams());
         /* BELVG START */
         $item_old = Mage::getModel('multiplewishlist/item')->checkItemExists($wishlist->getId(), $wishlist->getItem($id)->getId());
         /* BELVG END */
         $wishlist->updateItem($id, $buyRequest)->save();
         Mage::helper('wishlist')->calculate();
         Mage::dispatchEvent('wishlist_update_item', array('wishlist' => $wishlist, 'product' => $product, 'item' => $wishlist->getItem($id)));
         Mage::helper('wishlist')->calculate();
         /* BELVG START */
         if ($item_old) {
             $tab = Mage::getModel('multiplewishlist/tab')->checkTabExistsById($wishlist->getId(), $item_old->getWishlistTabId());
             if ($tab->getId()) {
                 Mage::getModel('core/session')->setWishlistActiveTabId($tab->getId());
                 $item = Mage::getResourceModel('wishlist/item_collection')->addWishlistFilter($wishlist)->addStoreFilter($wishlist->getSharedStoreIds())->setVisibilityFilter()->addFieldToFilter('product_id', $product->getId())->getFirstItem();
                 Mage::getModel('multiplewishlist/item')->getItem($wishlist, $tab, $item);
             }
             if ($item_old) {
                 $item_old->delete();
             }
         }
         /* BELVG END */
         $message = $this->__('%1$s has been updated in your wishlist.', $product->getName());
         $session->addSuccess($message);
     } catch (Mage_Core_Exception $e) {
         $session->addError($e->getMessage());
     } catch (Exception $e) {
         $session->addError($this->__('An error occurred while updating wishlist.'));
         Mage::logException($e);
     }
     $this->_redirect('*/*');
 }