00001 <?php
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032 class Mage_Wishlist_Model_Observer extends Mage_Core_Model_Abstract
00033 {
00034
00035
00036
00037
00038
00039
00040 protected function _getWishlist($customerId)
00041 {
00042 if (!$customerId) {
00043 return false;
00044 }
00045 return Mage::getModel('wishlist/wishlist')->loadByCustomer($customerId, true);
00046 }
00047
00048
00049
00050
00051
00052
00053
00054 public function processCartUpdateBefore($observer)
00055 {
00056 $cart = $observer->getEvent()->getCart();
00057 $data = $observer->getEvent()->getInfo();
00058 $productIds = array();
00059
00060 $wishlist = $this->_getWishlist($cart->getQuote()->getCustomerId());
00061 if (!$wishlist) {
00062 return $this;
00063 }
00064
00065
00066
00067
00068 foreach ($data as $itemId => $itemInfo) {
00069 if (!empty($itemInfo['wishlist'])) {
00070 if ($item = $cart->getQuote()->getItemById($itemId)) {
00071 $productId = $item->getProductId();
00072 $productIds[] = $productId;
00073 $cart->getQuote()->removeItem($itemId);
00074 }
00075 }
00076 }
00077
00078 if (!empty($productIds)) {
00079 foreach ($productIds as $productId) {
00080 $wishlist->addNewItem($productId);
00081 }
00082 $wishlist->save();
00083 }
00084 return $this;
00085 }
00086
00087 public function processAddToCart($observer)
00088 {
00089 $request = $observer->getRequest();
00090 $sharedWishlist = Mage::getSingleton('checkout/session')->getSharedWishlist();
00091 $messages = Mage::getSingleton('checkout/session')->getWishlistPendingMessages();
00092 $urls = Mage::getSingleton('checkout/session')->getWishlistPendingUrls();
00093 $wishlistIds = Mage::getSingleton('checkout/session')->getWishlistIds();
00094 $singleWishlistId = Mage::getSingleton('checkout/session')->getSingleWishlistId();
00095
00096 if ($singleWishlistId) {
00097 $wishlistIds = array($singleWishlistId);
00098 }
00099
00100 if (count($wishlistIds) && $request->getParam('wishlist_next')){
00101 $wishlistId = array_shift($wishlistIds);
00102
00103 if (Mage::getSingleton('customer/session')->isLoggedIn()) {
00104 $wishlist = Mage::getModel('wishlist/wishlist')
00105 ->loadByCustomer(Mage::getSingleton('customer/session')->getCustomer(), true);
00106 } else if ($sharedWishlist) {
00107 $wishlist = Mage::getModel('wishlist/wishlist')->loadByCode($sharedWishlist);
00108 } else {
00109 return;
00110 }
00111
00112
00113 $wishlist->getItemCollection()->load();
00114
00115 foreach($wishlist->getItemCollection() as $wishlistItem){
00116 if ($wishlistItem->getId() == $wishlistId)
00117 $wishlistItem->delete();
00118 }
00119 Mage::getSingleton('checkout/session')->setWishlistIds($wishlistIds);
00120 Mage::getSingleton('checkout/session')->setSingleWishlistId(null);
00121 }
00122
00123 if ($request->getParam('wishlist_next') && count($urls)) {
00124 $url = array_shift($urls);
00125 $message = array_shift($messages);
00126
00127 Mage::getSingleton('checkout/session')->setWishlistPendingUrls($urls);
00128 Mage::getSingleton('checkout/session')->setWishlistPendingMessages($messages);
00129
00130 Mage::getSingleton('checkout/session')->addError($message);
00131
00132 $observer->getResponse()->setRedirect($url);
00133 Mage::getSingleton('checkout/session')->setNoCartRedirect(true);
00134 }
00135 }
00136 }