/**
  * Purge Cms Page
  *
  * @param Mage_Cms_Model_Page $page
  * @return Phoenix_VarnishCache_Model_Control_Cms_Page
  */
 public function purge(Mage_Cms_Model_Page $page)
 {
     if ($this->_canPurge()) {
         $storeIds = Mage::getResourceModel('varnishcache/cms_page_store_collection')->addPageFilter($page->getId())->getAllIds();
         if (count($storeIds) && current($storeIds) == 0) {
             $storeIds = Mage::getResourceModel('core/store_collection')->setWithoutDefaultFilter()->getAllIds();
         }
         foreach ($storeIds as $storeId) {
             $url = Mage::app()->getStore($storeId)->getUrl(null, array('_direct' => $page->getIdentifier()));
             extract(parse_url($url));
             $path = rtrim($path, '/');
             $this->_getCacheControl()->clean($host, '^' . $path . '/{0,1}$');
             // Purge if current page is a home page
             $homePageIdentifier = Mage::getStoreConfig(self::XML_PATH_WEB_DEFAULT_CMS_HOME_PAGE, $storeId);
             if ($page->getIdentifier() == $homePageIdentifier) {
                 $url = Mage::app()->getStore($storeId)->getUrl();
                 extract(parse_url($url));
                 $path = rtrim($path, '/');
                 $this->_getCacheControl()->clean($host, '^' . $path . '/{0,1}$');
                 $this->_getCacheControl()->clean($host, '^/{0,1}$');
             }
         }
         $this->_getSession()->addSuccess(Mage::helper('varnishcache')->__('Varnish cache for "%s" has been purged.', $page->getTitle()));
     }
     return $this;
 }
Пример #2
0
 /**
  * Get request path
  *
  * @param Mage_Cms_Model_Page $cmsPage
  * @return string
  */
 public function generateRequestPath($cmsPage)
 {
     return $cmsPage->getIdentifier();
 }
Пример #3
0
 public function deletePermanentRedirects(Mage_Cms_Model_Page $page)
 {
     $urls = Mage::getModel('core/url_rewrite')->getCollection()->addFieldToFilter('store_id', $page->getStoreId())->addFieldToFilter('request_path', array('like' => $page->getIdentifier() . '%'));
     foreach ($urls as $url) {
         $url->delete();
         // Removing old url to avoid infinite loop
     }
 }