Beispiel #1
0
 /**
  * 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);
     }
 }
Beispiel #2
0
 /**
  * @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;
 }
Beispiel #3
0
 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;
 }
Beispiel #5
0
 /**
  * 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);
 }
Beispiel #6
0
 /**
  * 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());
 }
Beispiel #7
0
 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);
 }
Beispiel #8
0
 /**
  * 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;
 }
Beispiel #11
0
 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'))));
 }
Beispiel #13
0
 /**
  * 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"));
     }
 }
Beispiel #14
0
 /**
  * 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);
 }