/** * 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; }
/** * Build a Solr document for a given page * * @param integer $storeId Store ID * @param Mage_Cms_Model_Page $page Page instance * @return Apache_Solr_Document */ protected function buildPageDocument($storeId, $page) { $helper = Mage::helper('solr'); $baseUrl = Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_WEB); $host = parse_url($baseUrl, PHP_URL_HOST); $document = new Apache_Solr_Document(); $document->setField('appKey', 'Asm_Solr'); $document->setField('type', 'cms/page'); $document->setField('id', $helper->getPageDocumentId($page->getId())); $document->setField('site', $host); $document->setField('siteHash', $helper->getSiteHashForDomain($host)); $document->setField('storeId', $storeId); $document->setField('created', $helper->dateToIso($page->getCreationTime())); $document->setField('changed', $helper->dateToIso($page->getUpdateTime())); $document->setField('sku', 'cms/page'); $document->setField('productId', 0); $document->setField('pageId', $page->getId()); $document->setField('title', $page->getTitle()); $document->setField('content', Mage::helper('solr/contentExtractor')->getIndexableContent($page->getContent())); $document->setField('keywords', $helper->trimExplode(',', $page->getMetaKeywords(), true)); $document->setField('url', Mage::helper('cms/page')->getPageUrl($page->getId())); return $document; }
/** * Data provider * * @return array */ public function prepareLayoutDataProvider() { $urlRewrite = new Mage_Core_Model_Url_Rewrite(); $cmsPage = new Mage_Cms_Model_Page(array('page_id' => 1, 'title' => 'Test CMS Page')); $existingUrlRewrite = new Mage_Core_Model_Url_Rewrite(array('url_rewrite_id' => 1)); return array(array(array('cms_page' => $cmsPage, 'url_rewrite' => $urlRewrite), array('selector' => false, 'cms_page_link' => array('name' => $cmsPage->getTitle()), 'back_button' => true, 'save_button' => true, 'reset_button' => false, 'delete_button' => false, 'form' => array('cms_page' => $cmsPage, 'url_rewrite' => $urlRewrite), 'cms_pages_grid' => false)), array(array('url_rewrite' => $urlRewrite), array('selector' => true, 'cms_page_link' => false, 'back_button' => true, 'save_button' => false, 'reset_button' => false, 'delete_button' => false, 'form' => false, 'cms_pages_grid' => true)), array(array('url_rewrite' => $existingUrlRewrite, 'cms_page' => $cmsPage), array('selector' => false, 'cms_page_link' => array('name' => $cmsPage->getTitle()), 'back_button' => true, 'save_button' => true, 'reset_button' => true, 'delete_button' => true, 'form' => array('cms_page' => $cmsPage, 'url_rewrite' => $existingUrlRewrite), 'cms_pages_grid' => false))); }