示例#1
0
 /**
  * Update all attribute-dependant index
  *
  * @param Varien_Event_Observer $observer
  * @return Mage_CatalogSearch_Model_Fulltext_Observer
  */
 public function eavAttributeChange(Varien_Event_Observer $observer)
 {
     $attribute = $observer->getEvent()->getAttribute();
     /* @var $attribute Mage_Eav_Model_Entity_Attribute */
     $entityType = Mage::getSingleton('eav/config')->getEntityType(Mage_Catalog_Model_Product::ENTITY);
     /* @var $entityType Mage_Eav_Model_Entity_Type */
     if ($attribute->getEntityTypeId() != $entityType->getId()) {
         return $this;
     }
     $delete = $observer->getEventName() == 'eav_entity_attribute_delete_after';
     if (!$delete && !$attribute->dataHasChangedFor('is_searchable')) {
         return $this;
     }
     $showNotice = false;
     if ($delete) {
         if ($attribute->getIsSearchable()) {
             $showNotice = true;
         }
     } elseif ($attribute->dataHasChangedFor('is_searchable')) {
         $showNotice = true;
     }
     if ($showNotice) {
         $url = Mage::getSingleton('adminhtml/url')->getUrl('adminhtml/system_cache');
         Mage::getSingleton('adminhtml/session')->addNotice(Mage::helper('catalogsearch')->__('Attribute setting change related with Search Index. Please run <a href="%s">Rebuild Search Index</a> process.', $url));
     }
     return $this;
 }
示例#2
0
 /**
  * Register an observer
  * 
  * If observer has event_name property it will be regitered for this specific event.
  * If not it will be registered as global observer
  *
  * @param Varien_Event_Observer $observer
  * @return Varien_Event_Collection
  */
 public function addObserver(Varien_Event_Observer $observer)
 {
     $eventName = $observer->getEventName();
     if ($eventName) {
         $this->getEventByName($eventName)->addObserver($observer);
     } else {
         $this->getGlobalObservers()->addObserver($observer);
     }
     return $this;
 }
示例#3
0
 /**
  * in some cases the payment method is not set properly by Magento so we need to reset the
  * payment method in the quote's payment before importing the data
  *
  * @event sales_quote_payment_import_data_before
  * @param $observer
  * @return $this
  */
 public function clearPaymentMethodFromQuote(Varien_Event_Observer $observer)
 {
     if ($observer->getEventName() == 'sales_quote_payment_import_data_before' && $observer->getEvent()->getPayment() instanceof Mage_Sales_Model_Quote_Payment) {
         $observer->getEvent()->getPayment()->setMethod(null);
     }
     return $this;
 }