/** * If caching is enabled let the backend take additional actions (set headers, cache content, etc.) * * @param Varien_Event_Observer $observer */ public function httpResponseSendBefore(Varien_Event_Observer $observer) { if ($this->helper()->isEnabled() && !Mage::registry('diehard_cache_hit')) { $response = $observer->getResponse(); /* @var $response Mage_Core_Controller_Response_Http */ $fullActionName = $this->helper()->getFullActionName(); Mage::dispatchEvent('diehard_response_send_before_' . strtolower($this->helper()->getBackend()->getName()), array('response' => $response, 'full_action_name' => $fullActionName, 'lifetime' => $this->helper()->getLifetime())); // Update ignored blocks cookie $ignored = $this->helper()->getIgnoredBlocks(); if ($ignored === NULL) { $ignored = $this->helper()->getDefaultIgnoredBlocks(); } $addedIgnored = $this->helper()->getAddedIgnoredBlocks(); $removedIgnored = $this->helper()->getRemovedIgnoredBlocks(); $ignored = array_unique(array_merge($ignored, $addedIgnored)); $ignored = array_diff($ignored, $removedIgnored); $this->helper()->setIgnoredBlocks($ignored); $lifetime = $this->helper()->getLifetime(); if ($lifetime !== FALSE) { // 0 lifetime allowed (e.g. max-age=0) // Allow backend to take action on responses that are to be cached $this->helper()->getBackend()->httpResponseSendBefore($response, $lifetime); } // Add debug data if ($this->helper()->isDebug()) { $response->setHeader('X-Diehard', "{$this->helper()->getBackend()->getName()}-{$fullActionName}-{$lifetime}", true); $response->setHeader('X-Diehard-Tags', implode('|', $this->helper()->getTags()), true); $response->setHeader('X-Diehard-Blocks-Added', implode('|', $addedIgnored), true); $response->setHeader('X-Diehard-Blocks-Removed', implode('|', $removedIgnored), true); } // Log miss to counter $this->helper()->logRequest($fullActionName, FALSE); } }
/** * @param Varien_Event_Observer $observer * * @return $this */ public function handleInlineJs(Varien_Event_Observer $observer) { Varien_Profiler::start('MeanbeeFooterJs'); /** @var Meanbee_Footerjs_Helper_Data $helper */ $helper = Mage::helper('meanbee_footerjs'); if (!$helper->isEnabled()) { return $this; } /** @var Mage_Core_Controller_Response_Http $response */ $response = $observer->getResponse(); if (!$response->getBody()) { // No further action if no body, e.g. redirect return $this; } $patterns = array('js' => self::REGEX_JS, 'document_end' => self::REGEX_DOCUMENT_END); foreach ($patterns as $pattern) { $matches = array(); $html = $response->getBody(); $success = preg_match_all($pattern, $html, $matches); if ($success) { $text = implode('', $matches[0]); $html = preg_replace($pattern, '', $html); $response->setBody($html . $text); } } Varien_Profiler::stop('MeanbeeFooterJs'); return $this; }
public function addToCartComplete(Varien_Event_Observer $observer) { $generalConfig = Mage::getStoreConfig('firecheckout/general'); if ($generalConfig['enabled'] && $generalConfig['redirect_to_checkout']) { $observer->getResponse()->setRedirect(Mage::helper('firecheckout/url')->getCheckoutUrl()); Mage::getSingleton('checkout/session')->setNoCartRedirect(true); } }
/** * @param Varien_Event_Observer $observer * * @return $this */ public function handleHttpResponseInlineJs(Varien_Event_Observer $observer) { Varien_Profiler::start('MeanbeeFooterJs'); /** @var Meanbee_Footerjs_Helper_Data $helper */ $helper = Mage::helper('meanbee_footerjs'); if (!$helper->isEnabled()) { return $this; } /** @var Mage_Core_Controller_Response_Http $response */ $response = $observer->getResponse(); $response->setBody($helper->moveJsToEnd($response->getBody())); Varien_Profiler::stop('MeanbeeFooterJs'); return $this; }
/** * Replace missing media images before response goes out. * * @param Varien_Event_Observer $observer The event details. * * @return void */ public function checkMediaImages(Varien_Event_Observer $observer) { $response = $observer->getResponse(); $html = $response->getBody(); $placeholder = Mage::getStoreConfig('imagefill/general/placeholder_url'); // Collect all images preg_match_all('/(\\/media\\/(catalog|images)\\/[^"\']+)"|\'/', $html, $matches); for ($i = 0; $i < count($matches[1]); $i++) { $original = $matches[1][$i]; if (Mage::getDesign()->isImage($original) && !file_exists(Mage::getBaseDir() . $original)) { $html = str_replace($original, $placeholder, $html); } } $response->setBody($html); }
/** * Initialize toolbar interface * * @param Varien_Event_Observer $observer * @return void */ public function toolbarInit(Varien_Event_Observer $observer) { if (!Mage::helper('ash_bar')->isEnabled()) { return; } // grab response object from observer event $response = $observer->getResponse(); // render toolbar assets and inject into response body $assets = $this->_getLayout()->createBlock('ash_bar/template')->setTemplate('assets.phtml')->toHtml(); $this->_appendToHtmlHead($response, $assets); // render toolbar HTML and inject into response body $toolbar = $this->_getLayout()->createBlock('ash_bar/toolbar')->setTemplate('toolbar.phtml')->toHtml(); $this->_prependToHtmlBody($response, $toolbar); // pass in collected data $this->_appendToHtmlBody($response, $this->_getCollectedData()); }
public function addToCartComplete(Varien_Event_Observer $observer) { if ($observer->getRequest()->getParam('return_url') || !Mage::getStoreConfig('suggestpage/general/show_after_addtocart')) { return; } if ($this->_isMobile() && !Mage::getStoreConfig('suggestpage/mobile/show_after_addtocart')) { return; } $observer->getResponse()->setRedirect(Mage::getUrl('suggest')); $session = Mage::getSingleton('checkout/session'); $session->setNoCartRedirect(true); $session->setSuggestpageProductId($observer->getProduct()->getId()); $session->setViewCartUrl(Mage::getUrl('suggest')); //ajaxpro integration $message = Mage::helper('checkout')->__('%s was added to your shopping cart.', Mage::helper('core')->htmlEscape($observer->getProduct()->getName())); $session->addSuccess($message); }
/** * Initialize toolbar interface * * @param Varien_Event_Observer $observer * @return void */ public function toolbarInit(Varien_Event_Observer $observer) { if (!Mage::helper('ash_devbar')->isEnabled()) { return; } $response = $observer->getResponse(); /* * Render toolbar assets and inject into response body * * This is done outside the normal Magento layout routine to avoid * template hints being applied and also so front-end and admin can easily * share the same front-end files. */ $templates = array('styles.phtml', 'scripts.phtml'); foreach ($templates as $_template) { $_block = Mage::getSingleton('core/layout')->createBlock('ash_devbar/template')->setTemplate($_template); $this->_appendToResponseHtmlTag('head', $response, $_block->toHtml()); } // pass in collected data $this->_appendToResponseHtmlTag('body', $response, $this->_getCollectedData()); }
/** * replace all occurrences of the form key * * @param Varien_Event_Observer $observer */ public function replaceFormKeys(Varien_Event_Observer $observer) { if ($this->_isCacheEnabled()) { $esiHelper = Mage::helper('varnishcache/esi'); /* @var $esiHelper Phoenix_VarnishCache_Helper_Esi */ if (!$esiHelper->hasFormKey() || Mage::app()->getRequest()->isPost()) { return false; } $response = $observer->getResponse(); $html = $response->getBody(); $html = $esiHelper->replaceFormKey($html); // enable ESI processing in VCL if ($response->canSendHeaders()) { $response->setHeader('X-Cache-DoEsi', '1'); } $response->setBody($html); } }
function onActionPostDispatch(Varien_Event_Observer $event) { $action = $event->getControllerAction(); $response = $event->getResponse(); $actionStruct = array(); $actionStruct['class'] = get_class($action); $actionStruct['action_name'] = $action->getFullActionName(); $actionStruct['route_name'] = $action->getRequest()->getRouteName(); $this->_actions[] = $actionStruct; }
public function controller_response_redirect(Varien_Event_Observer $observer) { /* we know all the add compare operations were finished, * so we stop the redirection and only show * the ajax json response */ $_r = Mage::app()->getRequest(); if (!Mage::app()->getStore()->isAdmin() && $_r->getRouteName() == "catalog" && $_r->getControllerName() == "product_compare" && in_array($_r->getActionName(), array("add", "remove", "clear")) && $_r->getParam("ajaxlist")) { Mage::helper("ajaxlist/compare")->returnResultJsonResponse($observer->getResponse()); } }
public function adminhtml_catalog_product_edit_element_types(Varien_Event_Observer $observer) { $observer->getResponse()->setTypes(array_merge($observer->getResponse()->getTypes(), array('udropship_vendor' => Mage::getConfig()->getBlockClassName('udropship/vendor_htmlselect')))); }
/** * Process the response from a successful post to Riskified. * * @param Varien_Event_Observer $observer */ public function processSuccessfulPost(Varien_Event_Observer $observer) { /* @var Mage_Sales_Model_Order $order */ $order = $observer->getOrder(); /* @var stdClass $response */ $response = $observer->getResponse(); if (isset($response->order)) { $orderId = $response->order->id; $status = $response->order->status; $oldStatus = isset($response->order->old_status) ? $response->order->old_status : null; $description = $response->order->description; if (!$description) { $description = "Riskified Status: {$status}"; } if ($orderId && $status) { Mage::helper('full/order')->updateOrder($order, $status, $oldStatus, $description); } $name = $order->getIncrementId(); Mage::getSingleton('adminhtml/session')->addSuccess(Mage::helper('adminhtml')->__("Order #{$name} was successfully updated at Riskified")); } else { Mage::getSingleton('adminhtml/session')->addError(Mage::helper('adminhtml')->__("Malformed response from Riskified")); } }
/** * Redirect to one page checkout * * @param Varien_Event_Observer $observer */ public function afterAddToCart(Varien_Event_Observer $observer) { $response = $observer->getResponse(); $response->setRedirect(Mage::getUrl('checkout/onepage')); Mage::getSingleton('checkout/session')->setNoCartRedirect(true); }
/** * replace all occurrences of the form key * * @param Varien_Event_Observer $observer */ public function replaceFormKeys(Varien_Event_Observer $observer) { $esiHelper = Mage::helper('varnishcache/esi'); /* @var $esiHelper Phoenix_VarnishCache_Helper_Esi */ if (!$esiHelper->hasFormKey() || Mage::app()->getRequest()->isPost()) { return false; } $response = $observer->getResponse(); $html = $response->getBody(); $html = $esiHelper->replaceFormKey($html); $response->setBody($html); }
/** * Appends the "sortable" js code to the bottom of ajax-Request for the category-products initially loaded. * * This observer is currently not called as default sort order is by ID * * @param Varien_Event_Observer $observer */ public function addSortableScriptOnEdit($observer) { $content = $observer->getResponse()->getContent(); $content = $this->appendScript($content); $observer->getResponse()->setContent($content); }