Mage_Tag_IndexController Class Reference

Inheritance diagram for Mage_Tag_IndexController:

Mage_Core_Controller_Front_Action Mage_Core_Controller_Varien_Action

List of all members.

Public Member Functions

 saveAction ()


Detailed Description

Definition at line 35 of file IndexController.php.


Member Function Documentation

saveAction (  ) 

Definition at line 37 of file IndexController.php.

00038     {
00039         if(!Mage::getSingleton('customer/session')->authenticate($this)) {
00040             return;
00041         }
00042         $tagName    = (string) $this->getRequest()->getQuery('productTagName');
00043         $productId  = (int)$this->getRequest()->getParam('product');
00044 
00045         if(strlen($tagName) && $productId) {
00046             $session = Mage::getSingleton('catalog/session');
00047             $product = Mage::getModel('catalog/product')
00048                 ->load($productId);
00049             if(!$product->getId()){
00050                 $session->addError(Mage::helper('tag')->__('Unable to save tag(s)'));
00051             } else {
00052                 try {
00053                     $customerId = Mage::getSingleton('customer/session')->getCustomerId();
00054                     $tagName = urldecode($tagName);
00055                     $tagNamesArr = explode("\n", preg_replace("/(\'(.*?)\')|(\s+)/i", "$1\n", $tagName));
00056 
00057                     foreach( $tagNamesArr as $key => $tagName ) {
00058                         $tagNamesArr[$key] = trim($tagNamesArr[$key], '\'');
00059                         $tagNamesArr[$key] = trim($tagNamesArr[$key]);
00060                         if( $tagNamesArr[$key] == '' ) {
00061                             unset($tagNamesArr[$key]);
00062                         }
00063                     }
00064                     $newCount = 0;
00065                     foreach( $tagNamesArr as $tagName ) {
00066                         if( $tagName ) {
00067                             $tagModel = Mage::getModel('tag/tag');
00068                             $tagModel->loadByName($tagName);
00069                             if ($tagModel->getId()) {
00070                                 $status = $tagModel->getStatus();
00071                                 $session->addNotice(Mage::helper('tag')->__('Tag "%s" has already been added to the product' ,$tagName));
00072                             }
00073                             else {
00074                                 $status = $tagModel->getPendingStatus();
00075                                 $newCount++;
00076                             }
00077 
00078                             $tagModel->setName($tagName)
00079                                     ->setStoreId(Mage::app()->getStore()->getId())
00080                                     ->setStatus($status)
00081                                     ->save();
00082 
00083                             $tagRelationModel = Mage::getModel('tag/tag_relation');
00084                             $tagRelationModel->loadByTagCustomer($productId,
00085                                 $tagModel->getId(),
00086                                 $customerId,
00087                                 Mage::app()->getStore()->getId()
00088                             );
00089 
00090                             if( $tagRelationModel->getCustomerId() == $customerId && $tagRelationModel->getActive()) {
00091                                 continue;
00092                             }
00093                             $tagRelationModel->setTagId($tagModel->getId())
00094                                 ->setCustomerId($customerId)
00095                                 ->setProductId($productId)
00096                                 ->setStoreId(Mage::app()->getStore()->getId())
00097                                 ->setCreatedAt( now() )
00098                                 ->setActive(1)
00099                                 ->save();
00100                             $tagModel->aggregate();
00101                         } else {
00102                             continue;
00103                         }
00104                     }
00105                     if ($newCount > 0) {
00106                         $session->addSuccess(Mage::helper('tag')->__('%s tag(s) have been accepted for moderation', $newCount));
00107                     }
00108                 } catch (Exception $e) {
00109                     $session->addError(Mage::helper('tag')->__('Unable to save tag(s)'));
00110                 }
00111             }
00112         }
00113         $this->_redirectReferer();
00114     }


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

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