Exemplo n.º 1
0
 /**
  * Prepare response body before caching
  *
  * @param Zend_Controller_Response_Http $response
  * @return string
  */
 public function prepareContent(Zend_Controller_Response_Http $response)
 {
     $cacheInstance = Ves_Optimize_Model_Cache::getCacheInstance();
     /** @var Ves_Optimize_Model_Processor */
     $processor = Mage::getSingleton('ves_optimize/processor');
     $countLimit = Mage::getStoreConfig(Mage_Reports_Block_Product_Viewed::XML_PATH_RECENTLY_VIEWED_COUNT);
     // save recently viewed product count limit
     $cacheId = $processor->getRecentlyViewedCountCacheId();
     if (!$cacheInstance->getFrontend()->test($cacheId)) {
         $cacheInstance->save($countLimit, $cacheId, array(Ves_Optimize_Model_Processor::CACHE_TAG));
     }
     // save current product id
     $product = Mage::registry('current_product');
     if ($product) {
         $cacheId = $processor->getRequestCacheId() . '_current_product_id';
         $cacheInstance->save($product->getId(), $cacheId, array(Ves_Optimize_Model_Processor::CACHE_TAG));
         $processor->setMetadata(self::METADATA_PRODUCT_ID, $product->getId());
         Ves_Optimize_Model_Cookie::registerViewedProducts($product->getId(), $countLimit);
     }
     return parent::prepareContent($response);
 }
Exemplo n.º 2
0
 /**
  * Remove customer cookie
  *
  * @param Varien_Event_Observer $observer
  * @return Ves_Optimize_Model_Observer
  */
 public function customerLogout(Varien_Event_Observer $observer)
 {
     if (!$this->isCacheEnabled()) {
         return $this;
     }
     $this->_getCookie()->updateCustomerCookies();
     if (!$this->_getCookie()->get(Ves_Optimize_Model_Cookie::COOKIE_CUSTOMER)) {
         $this->_getCookie()->delete(Ves_Optimize_Model_Cookie::COOKIE_RECENTLY_COMPARED);
         $this->_getCookie()->delete(Ves_Optimize_Model_Cookie::COOKIE_COMPARE_LIST);
         Ves_Optimize_Model_Cookie::registerViewedProducts(array(), 0, false);
     }
     return $this;
 }
Exemplo n.º 3
0
 /**
  * Get page content from cache storage
  *
  * @param string $content
  * @return string|false
  */
 public function extractContent($content)
 {
     $cacheInstance = Ves_Optimize_Model_Cache::getCacheInstance();
     /*
      * Apply design change
      */
     $designChange = $cacheInstance->load($this->getRequestCacheId() . self::DESIGN_CHANGE_CACHE_SUFFIX);
     if ($designChange) {
         $designChange = unserialize($designChange);
         if (is_array($designChange) && isset($designChange['package']) && isset($designChange['theme'])) {
             $designPackage = Mage::getSingleton('core/design_package');
             $designPackage->setPackageName($designChange['package'])->setTheme($designChange['theme']);
         }
     }
     if (!$this->_designExceptionExistsInCache) {
         //no design exception value - error
         //must be at least empty value
         return false;
     }
     if (!$content && $this->isAllowed()) {
         $subprocessorClass = $this->getMetadata('cache_subprocessor');
         if (!$subprocessorClass) {
             return $content;
         }
         /*
          * @var Ves_Optimize_Model_Processor_Default
          */
         $subprocessor = new $subprocessorClass();
         $this->setSubprocessor($subprocessor);
         $cacheId = $this->prepareCacheId($subprocessor->getPageIdWithoutApp($this));
         $content = $cacheInstance->load($cacheId);
         if ($content) {
             if (function_exists('gzuncompress')) {
                 $content = gzuncompress($content);
             }
             $content = $this->_processContent($content);
             // restore response headers
             $responseHeaders = $this->getMetadata('response_headers');
             if (is_array($responseHeaders)) {
                 foreach ($responseHeaders as $header) {
                     Mage::app()->getResponse()->setHeader($header['name'], $header['value'], $header['replace']);
                 }
             }
             // renew recently viewed products
             $productId = $cacheInstance->load($this->getRequestCacheId() . '_current_product_id');
             $countLimit = $cacheInstance->load($this->getRecentlyViewedCountCacheId());
             if ($productId && $countLimit) {
                 Ves_Optimize_Model_Cookie::registerViewedProducts($productId, $countLimit);
             }
         }
     }
     return $content;
 }