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(); } }
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); }
/** * 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(); } }
protected function _castObject(Varien_Event_Observer $observer) { $object = $observer->getObject(); if ($object instanceof Mage_Core_Model_Email_Template) { return $object; } }
/** * @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(); }
/** * 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')); }
/** * 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(); } }
/** * 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); }
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(); } } }
/** * 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]); } }
/** * 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); } } }
/** * 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++; }
/** * 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'))); }
/** * 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; }
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; }
/** * 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.')); } }
/** * 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); } }
/** * 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); }
/** * 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)); }
/** * 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()}"); } } }