예제 #1
0
 public function modelSaveAfter(Varien_Event_Observer $observer)
 {
     // only log if the model is on the whitelist
     if (Mage::getStoreConfig(self::LOG_ACTION_WHITELIST_PREFIX . get_class($observer->getObject())) !== null) {
         $customerSession = Mage::getSingleton('customer/session');
         $action = Mage::getModel('hackathon_frontendmonitoring/user_action');
         $action->setSessionId($customerSession->getSessionId());
         $action->setCustomerId($customerSession->getCustomerId());
         $action->setModel(get_class($observer->getObject()));
         $action->setAction('save_after');
         $action->setTimestamp(Mage::helper('hackathon_frontendmonitoring')->getNow());
         $action->save();
     }
 }
예제 #2
0
 public function prepareLayoutHandlesAndBlocks(Varien_Event_Observer $observer)
 {
     $object = $observer->getObject();
     $handles = $object->getHandles();
     $blockNames = $object->getBlockNames();
     $request = $observer->getObserver()->getControllerAction()->getRequest();
     $suggestpageHandles = array('suggestpage_index_index', 'tm_ajaxpro_checkout_cart_add_suggestpage');
     if (!array_intersect($suggestpageHandles, $handles)) {
         return;
     }
     if ('delete' == $request->getActionName()) {
         $handles = $this->_replaceArrayValues($handles, array('tm_ajaxpro_checkout_cart_add_suggestpage' => 'tm_ajaxpro_checkout_cart_add_with_cart_extended'));
     } else {
         // hide all popups, when on the suggest page
         if (in_array('suggestpage_index_index', $handles)) {
             $blockNames[] = 'content';
             $blockNames[] = 'catalog_product_price_template';
             $blockNames = $this->_replaceArrayValues($blockNames, array('ajaxpro_message' => false));
             // need to remove all popup handles to prevent their appearence inside of content block
             $handles = $this->_replaceArrayValues($handles, array('tm_ajaxpro_checkout_cart_add_*' => false, 'suggestpage_view' => false));
         } elseif (in_array('tm_ajaxpro_checkout_cart_add_suggestpage', $handles)) {
             // modify handles, when suggestpage should be shown in popup
             $handles = array('default', 'tm_ajaxpro_checkout_cart_add_suggestpage');
             $blockNames[] = 'content';
             $blockNames[] = 'catalog_product_price_template';
         }
     }
     $object->setBlockNames($blockNames);
     $object->setHandles($handles);
 }
예제 #3
0
 /**
  * Clear Mage_Core_Model_Email_Queue recipients after saving it
  *
  * @param Varien_Event_Observer $observer
  */
 public function clearCoreEmailQueueRecipientsAfterSave(Varien_Event_Observer $observer)
 {
     $object = $observer->getObject();
     if ($object instanceof Mage_Core_Model_Email_Queue) {
         $object->clearRecipients();
     }
 }
예제 #4
0
 protected function _castObject(Varien_Event_Observer $observer)
 {
     $object = $observer->getObject();
     if ($object instanceof Mage_Core_Model_Email_Template) {
         return $object;
     }
 }
예제 #5
0
 /**
  * @param Varien_Event_Observer $observer
  */
 public function cmsPageSaveAfter($observer)
 {
     /* @var $page Mage_Cms_Model_Page */
     $page = $observer->getObject();
     Mage::helper('typecms')->setupAttributes();
     $pageType = Mage::getModel('typecms/page')->load($page->getId());
     if (!$pageType->getId()) {
         $pageType->setId($page->getId());
     }
     $pageType->setPageType($page->getPageType());
     $data = $page->getData('typecms');
     if (isset($data)) {
         $pageType->addData($data);
     }
     $config = Mage::getSingleton('typecms/config');
     $attributes = $config->getAttributes($pageType->getData('page_type'));
     foreach ($attributes as $attributeCode => $attribute) {
         if (in_array($attribute['type'], array('image', 'file'))) {
             if ($pageType->getData($attributeCode . '_delete') == '1') {
                 self::deleteImage($pageType->getData($attributeCode));
                 $pageType->setData($attributeCode, null);
             }
             $file = $this->handleUpload($attributeCode, $attribute['type']);
             if ($file && $file !== $pageType->getData($attributeCode)) {
                 self::deleteImage($pageType->getData($attributeCode));
             }
             if ($file) {
                 $pageType->setData($attributeCode, $file);
             }
         }
     }
     $pageType->save();
 }
예제 #6
0
 /**
  * Handle data of new fields in customer group when saving
  *
  * @param Varien_Event_Observer $observer
  */
 public function customerGroupSaveBefore($observer)
 {
     /** @var Mage_Customer_Model_Group $group */
     $group = $observer->getObject();
     $group->setData('request_vat_id', Mage::app()->getRequest()->getParam('request_vat_id'));
     $group->setData('tax_class_id_vat_id', Mage::app()->getRequest()->getParam('tax_class_id_vat_id'));
 }
예제 #7
0
 /**
  * Clear product cache after a review is saved
  *
  * @param Varien_Event_Observer $observer
  */
 public function reviewSaveAfter(Varien_Event_Observer $observer)
 {
     $object = $observer->getObject();
     $productCollection = $object->getProductCollection()->addAttributeToFilter('rt.review_id', array('eq' => $object->getId()));
     foreach ($productCollection as $product) {
         $product->cleanCache();
     }
 }
예제 #8
0
파일: Observer.php 프로젝트: Vedariy/test
 /**
  * Saves default blocks' versions
  * @param $observer
  */
 public function DefaultBlockVersion(Varien_Event_Observer $observer)
 {
     $block = $observer->getObject();
     if (get_class($block) == "Mage_Cms_Model_Block") {
         $collection = Mage::getModel('sc_cmsblockmanagement/versions')->getCollection();
         $collection->addFieldToFilter('block_identifier', array("eq" => $block->getIdentifier()));
         if (count($collection) == 0) {
             $this->SaveBlockVersion($observer);
         }
     }
 }
 /**
  * @param Varien_Event_Observer $observer
  */
 public function onUserLoadAfter($observer)
 {
     /** @var Mage_Admin_Model_User $user */
     $user = $observer->getObject();
     if (!$user->getUserId()) {
         // @bug???
         return;
     }
     $resource = Mage::getSingleton('core/resource');
     $query = 'SELECT signature FROM ' . $resource->getTableName('helpdesk/user') . ' WHERE user_id=' . $user->getUserId();
     $data = $resource->getConnection('core_read')->fetchOne($query);
     $user->setSignature($data);
 }
예제 #10
0
 public function deleteProduct(Varien_Event_Observer $observer)
 {
     $product = $observer->getObject();
     $storeCollection = Mage::getModel('core/store')->getCollection();
     foreach ($storeCollection as $store) {
         $idPath = sprintf('reviews/%d', $product->getId());
         $rewrite = $this->getUrlRewrite();
         $rewrite->setStoreId($store->getId())->loadByIdPath($idPath);
         if ($rewrite->getId()) {
             $rewrite->delete();
         }
     }
 }
예제 #11
0
 /**
  * Save relation of admin user to API2 role
  *
  * @param Varien_Event_Observer $observer
  * @return void
  */
 public function saveAdminToRoleRelation(Varien_Event_Observer $observer)
 {
     /** @var $user Mage_User_Model_User Object */
     $user = $observer->getObject();
     if ($user->hasData('api2_roles')) {
         $roles = $user->getData('api2_roles');
         if (!is_array($roles) || !isset($roles[0])) {
             throw new Exception('API2 roles property has wrong data format.');
         }
         /** @var $resourceModel Mage_Api2_Model_Resource_Acl_Global_Role */
         $resourceModel = Mage::getResourceModel('Mage_Api2_Model_Resource_Acl_Global_Role');
         $resourceModel->saveAdminToRoleRelation($user->getId(), $roles[0]);
     }
 }
예제 #12
0
 /**
  * creates a customer from facebook user
  * @param Varien_Event_Observer $observer
  * @throws Exception
  */
 public function registerCustomer(Varien_Event_Observer $observer)
 {
     /** @var Alaa_FacebookConnect_Model_User $model */
     $model = $observer->getObject();
     if ($model instanceof Alaa_FacebookConnect_Model_User) {
         $customer = null;
         if ($model->isObjectNew()) {
             $customer = $model->createCustomer();
         }
         if ($customer instanceof Mage_Customer_Model_Customer && $customer->getId()) {
             $this->login($customer);
         }
     }
 }
예제 #13
0
 /**
  * Log data
  *
  * @param Varien_Event_Observer $event
  */
 public function log(Varien_Event_Observer $event)
 {
     $logActive = Mage::getStoreConfig(self::XML_PATH_MODEL_CACHE_ENABLED);
     if (!$logActive) {
         return;
     }
     $object = $event->getObject();
     /* @var $object Mage_Core_Model_Abstract */
     $class = get_class($object);
     $id = $event->getValue();
     if (!isset($this->data[$class])) {
         $this->data[$class] = array();
     }
     if (!isset($this->data[$class][$id])) {
         $this->data[$class][$id] = array();
     }
     $trace = debug_backtrace();
     $this->data[$class][$id][] = $trace[5]['file'] . ':' . $trace[5]['line'];
     $this->loadedModels++;
 }
예제 #14
0
 /**
  * save typo3 group id
  * 
  * @param Varien_Event_Observer $observer
  */
 public function customerGroupSaveBefore($observer)
 {
     $observer->getObject()->setData('typo3_group_id', intval(Mage::app()->getRequest()->getParam('typo3_group_id')));
 }
예제 #15
0
 /**
  * Processes models after save commit events
  *
  * @param Varien_Event_Observer $observer
  * @return $this
  */
 public function modelSaveCommitAfter(Varien_Event_Observer $observer)
 {
     $this->_getProcessor()->afterSave($observer->getObject());
     return $this;
 }
예제 #16
0
 protected function _processCustomerConfirmation(Varien_Event_Observer $observer)
 {
     $customer = $observer->getObject();
     if ($customer instanceof Mage_Customer_Model_Customer && $this->_isCustomerJustConfirmed($customer)) {
         $this->_findAffiliateForCustomer($customer);
     }
     return $this;
 }
예제 #17
0
 /**
  * Check if billing agreement is not linked to a subscription
  * If this is the case return an exception when trying to delete
  *
  * @param Varien_Event_Observer $observer
  */
 public function deleteBillingAgreement(Varien_Event_Observer $observer)
 {
     $agreement = $observer->getObject();
     if (!$agreement instanceof Adyen_Payment_Model_Billing_Agreement) {
         return;
     }
     $agreementId = $agreement->getId();
     $subscriptionCollection = Mage::getModel('adyen_subscription/subscription')->getCollection()->addFieldToFilter('billing_agreement_id', $agreementId);
     if ($subscriptionCollection->count() > 0) {
         Mage::throwException(Mage::helper('adyen_subscription')->__('You cannot delete this billing agreement because it is used for a subscription.'));
     }
     /** @var Mage_Core_Model_Resource $resource */
     $resource = Mage::getSingleton('core/resource');
     $connection = $resource->getConnection('core_read');
     $select = $connection->select();
     $select->from(['a' => $resource->getTableName('sales/billing_agreement_order')]);
     $select->joinLeft(['order' => $resource->getTableName('sales/order')], 'a.order_id = order.entity_id');
     $select->reset(Zend_Db_Select::COLUMNS);
     $select->columns(['a.order_id', 'order.state']);
     $select->where('agreement_id = ?', $agreementId);
     $select->where('order.state NOT IN (?)', [Mage_Sales_Model_Order::STATE_CANCELED, Mage_Sales_Model_Order::STATE_CLOSED, Mage_Sales_Model_Order::STATE_COMPLETE]);
     if ($connection->fetchOne($select)) {
         Mage::throwException(Mage::helper('adyen_subscription')->__('You cannot delete this billing agreement because it is used in active orders.'));
     }
 }
예제 #18
0
 /**
  * Observe all models so that a cached page can be associated with all model instances
  * loaded in the course of page rendering.
  *
  * @param Varien_Event_Observer $observer
  * @return void
  */
 public function modelLoadAfter(Varien_Event_Observer $observer)
 {
     if ($this->helper()->getLifetime() && ($tags = $observer->getObject()->getCacheIdTags())) {
         // add tags to list of tags for this page
         $this->helper()->addTags($tags);
     }
 }
 /**
  * Handle the model_save_before event.
  *
  * @param Varien_Event_Observer $observer Observer Instance
  */
 public function modelBefore(Varien_Event_Observer $observer)
 {
     /* @var $savedObject Mage_Core_Model_Abstract */
     $savedObject = $observer->getObject();
     $this->setCurrentHash($savedObject);
     $this->storeBeforeId($savedObject->getId());
 }
 /**
  * Add copyright notice to end of imprint cms page
  *
  * @param Varien_Event_Observer $observer
  * @event cms_page_load_after
  */
 public function afterLoadCmsPage(Varien_Event_Observer $observer)
 {
     /** @var $page Mage_Cms_Model_Page */
     $page = $observer->getObject();
     if ($page->getIdentifier() == 'impressum' && Mage::getStoreConfigFlag('general/imprint/display_copyright')) {
         $copyrightHtml = Mage::app()->getLayout()->createBlock('germanstoreconfig/frontend_copyright', 'copyright')->setTemplate('germanstoreconfig/copyright.phtml')->toHtml();
         $page->setContent($page->getContent() . $copyrightHtml);
     }
 }
예제 #21
0
 /**
  * Clear product cache after a review is saved
  *
  * @param Varien_Event_Observer $observer
  */
 public function reviewSaveAfter(Varien_Event_Observer $observer)
 {
     $object = $observer->getObject();
     $cacheKey = Mage_Catalog_Model_Product::CACHE_TAG . '_' . $object->getEntityPkValue();
     Mage::app()->cleanCache($cacheKey);
 }
예제 #22
0
 /**
  * Add a notice to rebuild the groupscatalog indexer whenever a new customer group is created.
  * Also clear the group collection cache.
  *
  * @param Varien_Event_Observer $observer
  */
 public function customerGroupSaveAfter(Varien_Event_Observer $observer)
 {
     /** @var $group Mage_Customer_Model_Group */
     $group = $observer->getObject();
     if ($group->isObjectNew()) {
         foreach (array('groupscatalog2_category', 'groupscatalog2_product') as $indexerCode) {
             $process = Mage::getModel('index/indexer')->getProcessByCode($indexerCode);
             $process->changeStatus(Mage_Index_Model_Process::STATUS_REQUIRE_REINDEX);
         }
     }
     // Clean the collection cache used when the input type of the attributes
     // is switched to label via the system configuration.
     Mage::app()->cleanCache(array(Netzarbeiter_GroupsCatalog2_Helper_Data::CUSTOMER_GROUP_CACHE_TAG));
 }
예제 #23
0
 /**
  * Creates a log entry based on the API queue entry
  *
  * @param Varien_Event_Observer $observer
  */
 public function afterQueueSave($observer)
 {
     $queue = $observer->getObject();
     if ($queue->getEmailClass() == 'bronto_reviews/message') {
         $unData = $queue->getUnserializedEmailData();
         try {
             $log = Mage::getModel('bronto_reviews/log')->loadByOrderAndDeliveryId($unData['params']['order_id'], $queue->getId());
             $logId = $log->getId();
             $log->setData($unData['params']);
             $log->setId($logId)->setMessageId($unData['delivery']['messageId'])->setDeliveryId($queue->getId())->setDeliveryDate(Mage::getModel('core/date')->gmtDate())->setFields(serialize($unData['delivery']['fields']));
             $log->save();
         } catch (Exception $e) {
             $this->_helper->writeError("Failed to save log entry for queue save: {$e->getMessage()}");
         }
     }
 }