Mage_Wishlist_IndexController Class Reference

Inheritance diagram for Mage_Wishlist_IndexController:

Mage_Core_Controller_Front_Action Mage_Core_Controller_Varien_Action

List of all members.

Public Member Functions

 preDispatch ()
 indexAction ()
 addAction ()
 updateAction ()
 removeAction ()
 cartAction ()
 allcartAction ()
 shareAction ()
 sendAction ()

Protected Member Functions

 _getWishlist ()

Protected Attributes

 $_cookieCheckActions = array('add')


Detailed Description

Definition at line 35 of file IndexController.php.


Member Function Documentation

_getWishlist (  )  [protected]

Retrieve wishlist object

Returns:
Mage_Wishlist_Model_Wishlist

Definition at line 65 of file IndexController.php.

00066     {
00067         try {
00068             $wishlist = Mage::getModel('wishlist/wishlist')
00069                 ->loadByCustomer(Mage::getSingleton('customer/session')->getCustomer(), true);
00070             Mage::register('wishlist', $wishlist);
00071         }
00072         catch (Exception $e) {
00073             Mage::getSingleton('wishlist/session')->addError($this->__('Cannot create wishlist'));
00074             return false;
00075         }
00076         return $wishlist;
00077     }

addAction (  ) 

Adding new item

Definition at line 100 of file IndexController.php.

00101     {
00102         $session = Mage::getSingleton('customer/session');
00103         $wishlist = $this->_getWishlist();
00104         if (!$wishlist) {
00105             $this->_redirect('*/');
00106             return;
00107         }
00108 
00109         $productId = (int) $this->getRequest()->getParam('product');
00110         if (!$productId) {
00111             $this->_redirect('*/');
00112             return;
00113         }
00114 
00115         $product = Mage::getModel('catalog/product')->load($productId);
00116         if (!$product->getId() || !$product->isVisibleInCatalog()) {
00117             $session->addError($this->__('Cannot specify product'));
00118             $this->_redirect('*/');
00119             return;
00120         }
00121 
00122         try {
00123             $wishlist->addNewItem($product->getId());
00124             Mage::dispatchEvent('wishlist_add_product', array('wishlist'=>$wishlist, 'product'=>$product));
00125 
00126             if ($referer = $session->getBeforeWishlistUrl()) {
00127                 $session->setBeforeWishlistUrl(null);
00128             }
00129             else {
00130                 $referer = $this->_getRefererUrl();
00131             }
00132             $message = $this->__('%1$s was successfully added to your wishlist. Click <a href="%2$s">here</a> to continue shopping', $product->getName(), $referer);
00133             $session->addSuccess($message);
00134         }
00135         catch (Mage_Core_Exception $e) {
00136             $session->addError($this->__('There was an error while adding item to wishlist: %s', $e->getMessage()));
00137         }
00138         catch (Exception $e) {
00139             $session->addError($this->__('There was an error while adding item to wishlist.'));
00140         }
00141         $this->_redirect('*');
00142     }

allcartAction (  ) 

Add all items to shoping cart

Definition at line 255 of file IndexController.php.

00255                                     {
00256         $messages           = array();
00257         $urls               = array();
00258         $wishlistIds        = array();
00259         $notSalableNames    = array(); // Out of stock products message
00260 
00261         $wishlist           = $this->_getWishlist();
00262         $wishlist->getItemCollection()->load();
00263 
00264         foreach ($wishlist->getItemCollection() as $item) {
00265             try {
00266                 $product = Mage::getModel('catalog/product')
00267                     ->load($item->getProductId())
00268                     ->setQty(1);
00269                 if ($product->isSalable()) {
00270                     Mage::getSingleton('checkout/cart')->addProduct($product);
00271                     $item->delete();
00272                 }
00273                 else {
00274                     $notSalableNames[] = $product->getName();
00275                 }
00276             } catch(Exception $e) {
00277                 $url = Mage::getSingleton('checkout/session')
00278                     ->getRedirectUrl(true);
00279                 if ($url) {
00280                     $url = Mage::getModel('core/url')
00281                         ->getUrl('catalog/product/view', array(
00282                             'id'            => $item->getProductId(),
00283                             'wishlist_next' => 1
00284                         ));
00285 
00286                     $urls[]         = $url;
00287                     $messages[]     = $e->getMessage();
00288                     $wishlistIds[]  = $item->getId();
00289                 } else {
00290                     $item->delete();
00291                 }
00292             }
00293             Mage::getSingleton('checkout/cart')->save();
00294         }
00295 
00296         if (count($notSalableNames) > 0) {
00297             Mage::getSingleton('checkout/session')
00298                 ->addNotice($this->__('This product(s) is currently out of stock:'));
00299             array_map(array(Mage::getSingleton('checkout/session'), 'addNotice'), $notSalableNames);
00300         }
00301 
00302         if ($urls) {
00303             Mage::getSingleton('checkout/session')->addError(array_shift($messages));
00304             $this->getResponse()->setRedirect(array_shift($urls));
00305 
00306             Mage::getSingleton('checkout/session')->setWishlistPendingUrls($urls);
00307             Mage::getSingleton('checkout/session')->setWishlistPendingMessages($messages);
00308             Mage::getSingleton('checkout/session')->setWishlistIds($wishlistIds);
00309         }
00310         else {
00311             $this->_redirect('checkout/cart');
00312         }
00313     }

cartAction (  ) 

Add wishlist item to shopping cart

Definition at line 206 of file IndexController.php.

00207     {
00208         $wishlist   = $this->_getWishlist();
00209         $id         = (int) $this->getRequest()->getParam('item');
00210         $item       = Mage::getModel('wishlist/item')->load($id);
00211 
00212         if($item->getWishlistId()==$wishlist->getId()) {
00213             try {
00214                 $product = Mage::getModel('catalog/product')->load($item->getProductId())->setQty(1);
00215                 $quote = Mage::getSingleton('checkout/cart')
00216                    ->addProduct($product)
00217                    ->save();
00218                 $item->delete();
00219             }
00220             catch(Exception $e) {
00221                 Mage::getSingleton('checkout/session')->addError($e->getMessage());
00222                 $url = Mage::getSingleton('checkout/session')->getRedirectUrl(true);
00223                 if ($url) {
00224                     $url = Mage::getModel('core/url')->getUrl('catalog/product/view', array(
00225                         'id'=>$item->getProductId(),
00226                         'wishlist_next'=>1
00227                     ));
00228                     Mage::getSingleton('checkout/session')->setSingleWishlistId($item->getId());
00229                     $this->getResponse()->setRedirect($url);
00230                 }
00231                 else {
00232                     $this->_redirect('*/*/');
00233                 }
00234                 return;
00235             }
00236         }
00237 
00238         if (Mage::getStoreConfig('checkout/cart/redirect_to_cart')) {
00239             $this->_redirect('checkout/cart');
00240         } else {
00241             if ($this->getRequest()->getParam(self::PARAM_NAME_BASE64_URL)) {
00242                 $this->getResponse()->setRedirect(
00243                     Mage::helper('core')->urlDecode($this->getRequest()->getParam(self::PARAM_NAME_BASE64_URL))
00244                 );
00245             } else {
00246                 $this->_redirect('*/*/');
00247             }
00248         }
00249     }

indexAction (  ) 

Display customer wishlist

Definition at line 82 of file IndexController.php.

00083     {
00084         $this->_getWishlist();
00085         $this->loadLayout();
00086         $this->_initLayoutMessages('customer/session');
00087         $this->_initLayoutMessages('catalog/session');
00088 
00089         if ($block = $this->getLayout()->getBlock('customer.wishlist')) {
00090             $block->setRefererUrl($this->_getRefererUrl());
00091         }
00092         $this->_initLayoutMessages('customer/session');
00093         $this->_initLayoutMessages('checkout/session');
00094         $this->renderLayout();
00095     }

preDispatch (  ) 

Predispatch: shoud set layout area

Returns:
Mage_Core_Controller_Front_Action

Reimplemented from Mage_Core_Controller_Front_Action.

Definition at line 44 of file IndexController.php.

00045     {
00046         parent::preDispatch();
00047 
00048         if (!Mage::getSingleton('customer/session')->authenticate($this)) {
00049             $this->setFlag('', 'no-dispatch', true);
00050             if(!Mage::getSingleton('customer/session')->getBeforeWishlistUrl()) {
00051                 Mage::getSingleton('customer/session')->setBeforeWishlistUrl($this->_getRefererUrl());
00052             }
00053         }
00054         if (!Mage::getStoreConfigFlag('wishlist/general/active')) {
00055             $this->norouteAction();
00056             return;
00057         }
00058     }

removeAction (  ) 

Remove item

Definition at line 179 of file IndexController.php.

00180     {
00181         $wishlist = $this->_getWishlist();
00182         $id = (int) $this->getRequest()->getParam('item');
00183         $item = Mage::getModel('wishlist/item')->load($id);
00184 
00185         if($item->getWishlistId()==$wishlist->getId()) {
00186             try {
00187                 $item->delete();
00188             }
00189             catch (Mage_Core_Exception $e) {
00190                 Mage::getSingleton('customer/session')->addError(
00191                     $this->__('There was an error while deleting item from wishlist: %s', $e->getMessage())
00192                 );
00193             }
00194             catch(Exception $e) {
00195                 Mage::getSingleton('customer/session')->addError(
00196                     $this->__('There was an error while deleting item from wishlist.')
00197                 );
00198             }
00199         }
00200         $this->_redirectReferer(Mage::getUrl('*/*'));
00201     }

sendAction (  ) 

Definition at line 323 of file IndexController.php.

00324     {
00325         if (!$this->_validateFormKey()) {
00326             return $this->_redirect('*/*/');
00327         }
00328 
00329         $emails = explode(',', $this->getRequest()->getPost('emails'));
00330         $message= nl2br(htmlspecialchars((string) $this->getRequest()->getPost('message')));
00331         $error  = false;
00332         if (empty($emails)) {
00333             $error = $this->__('Email address can\'t be empty.');
00334         }
00335         else {
00336             foreach ($emails as $index => $email) {
00337                 $email = trim($email);
00338                 if (!Zend_Validate::is($email, 'EmailAddress')) {
00339                     $error = $this->__('You input not valid email address.');
00340                     break;
00341                 }
00342                 $emails[$index] = $email;
00343             }
00344         }
00345         if ($error) {
00346             Mage::getSingleton('wishlist/session')->addError($error);
00347             Mage::getSingleton('wishlist/session')->setSharingForm($this->getRequest()->getPost());
00348             $this->_redirect('*/*/share');
00349             return;
00350         }
00351 
00352         $translate = Mage::getSingleton('core/translate');
00353         /* @var $translate Mage_Core_Model_Translate */
00354         $translate->setTranslateInline(false);
00355 
00356         try {
00357             $customer = Mage::getSingleton('customer/session')->getCustomer();
00358             $wishlist = $this->_getWishlist();
00359 
00360             /*if share rss added rss feed to email template*/
00361             if ($this->getRequest()->getParam('rss_url')) {
00362                 $rss_url = $this->getLayout()->createBlock('wishlist/share_email_rss')->toHtml();
00363                 $message .=$rss_url;
00364             }
00365             $wishlistBlock = $this->getLayout()->createBlock('wishlist/share_email_items')->toHtml();
00366 
00367             $emails = array_unique($emails);
00368             $emailModel = Mage::getModel('core/email_template');
00369 
00370             foreach($emails as $email) {
00371                 $emailModel->sendTransactional(
00372                     Mage::getStoreConfig('wishlist/email/email_template'),
00373                     Mage::getStoreConfig('wishlist/email/email_identity'),
00374                     $email,
00375                     null,
00376                     array(
00377                         'customer'      => $customer,
00378                         'salable'       => $wishlist->isSalable() ? 'yes' : '',
00379                         'items'         => &$wishlistBlock,
00380                         'addAllLink'    => Mage::getUrl('*/shared/allcart',array('code'=>$wishlist->getSharingCode())),
00381                         'viewOnSiteLink'=> Mage::getUrl('*/shared/index',array('code'=>$wishlist->getSharingCode())),
00382                         'message'       => $message
00383                     ));
00384             }
00385 
00386             $wishlist->setShared(1);
00387             $wishlist->save();
00388 
00389             $translate->setTranslateInline(true);
00390 
00391             Mage::dispatchEvent('wishlist_share', array('wishlist'=>$wishlist));
00392             Mage::getSingleton('customer/session')->addSuccess(
00393                 $this->__('Your Wishlist was successfully shared')
00394             );
00395             $this->_redirect('*/*');
00396         }
00397         catch (Exception $e) {
00398             $translate->setTranslateInline(true);
00399 
00400             Mage::getSingleton('wishlist/session')->addError($e->getMessage());
00401             Mage::getSingleton('wishlist/session')->setSharingForm($this->getRequest()->getPost());
00402             $this->_redirect('*/*/share');
00403         }
00404     }

shareAction (  ) 

Definition at line 315 of file IndexController.php.

00316     {
00317         $this->loadLayout();
00318         $this->_initLayoutMessages('customer/session');
00319         $this->_initLayoutMessages('wishlist/session');
00320         $this->renderLayout();
00321     }

updateAction (  ) 

Update wishlist item comments

Definition at line 147 of file IndexController.php.

00148     {
00149         if (!$this->_validateFormKey()) {
00150             return $this->_redirect('*/*/');
00151         }
00152         $post = $this->getRequest()->getPost();
00153         if($post && isset($post['description']) && is_array($post['description'])) {
00154             $wishlist = $this->_getWishlist();
00155 
00156             foreach ($post['description'] as $itemId => $description) {
00157                 $item = Mage::getModel('wishlist/item')->load($itemId);
00158                 $description = (string) $description;
00159                 if(!strlen($description) || $item->getWishlistId()!=$wishlist->getId()) {
00160                     continue;
00161                 }
00162                 try {
00163                     $item->setDescription($description)
00164                         ->save();
00165                 }
00166                 catch (Exception $e) {
00167                     Mage::getSingleton('customer/session')->addError(
00168                         $this->__('Can\'t save description %s', Mage::helper('core')->htmlEscape($description))
00169                     );
00170                 }
00171             }
00172         }
00173         $this->_redirect('*');
00174     }


Member Data Documentation

$_cookieCheckActions = array('add') [protected]

Reimplemented from Mage_Core_Controller_Varien_Action.

Definition at line 42 of file IndexController.php.


The documentation for this class was generated from the following file:

Generated on Sat Jul 4 17:24:57 2009 for Magento by  doxygen 1.5.8