00001 <?php
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00020 
00021 
00022 
00023 
00024 
00025 
00026 
00027 
00028 
00029 
00030 
00031 
00032 
00033 
00034 class Mage_Adminhtml_System_CacheController extends Mage_Adminhtml_Controller_Action
00035 {
00036 
00037 
00038 
00039 
00040 
00041     protected function _getSession()
00042     {
00043         return Mage::getSingleton('adminhtml/session');
00044     }
00045 
00046 
00047 
00048 
00049     public function indexAction()
00050     {
00051         $this->loadLayout()
00052             ->_setActiveMenu('system/cache')
00053             ->_addContent($this->getLayout()->createBlock('adminhtml/system_cache_edit')->initForm())
00054             ->renderLayout();
00055     }
00056 
00057 
00058 
00059 
00060     public function saveAction()
00061     {
00062 
00063 
00064 
00065         $postData = $this->getRequest()->getPost();
00066         if (empty($postData)) {
00067             $this->_redirect('*/*');
00068             return;
00069         }
00070 
00071 
00072 
00073 
00074         $allCache = $this->getRequest()->getPost('all_cache');
00075         if ($allCache=='disable' || $allCache=='refresh') {
00076             Mage::app()->cleanCache();
00077         }
00078 
00079         $e = $this->getRequest()->getPost('enable');
00080         $enable = array();
00081         $clean  = array();
00082         $cacheTypes = array_keys(Mage::helper('core')->getCacheTypes());
00083         foreach ($cacheTypes as $type) {
00084             $flag = $allCache!='disable' && (!empty($e[$type]) || $allCache=='enable');
00085             $enable[$type] = $flag ? 1 : 0;
00086             if ($allCache=='' && !$flag) {
00087                 $clean[] = $type;
00088             }
00089         }
00090 
00091         $beta = $this->getRequest()->getPost('beta');
00092         $betaCache = array_keys(Mage::helper('core')->getCacheBetaTypes());
00093 
00094         foreach ($betaCache as $type) {
00095             if (empty($beta[$type])) {
00096                 $clean[] = $type;
00097             } else {
00098                 $enable[$type] = 1;
00099             }
00100         }
00101 
00102         if (!empty($clean)) {
00103             Mage::app()->cleanCache($clean);
00104         }
00105         Mage::app()->saveUseCache($enable);
00106 
00107 
00108 
00109 
00110         if ($catalogAction = $this->getRequest()->getPost('catalog_action')) {
00111             switch ($catalogAction) {
00112                 case 'refresh_catalog_rewrites':
00113                     try {
00114                         Mage::getSingleton('catalog/url')->refreshRewrites();
00115                         $this->_getSession()->addSuccess(
00116                             Mage::helper('adminhtml')->__('Catalog Rewrites were refreshed successfully')
00117                         );
00118                     }
00119                     catch (Mage_Core_Exception $e) {
00120                         $this->_getSession()->addError($e->getMessage());
00121                     }
00122                     catch (Exception $e) {
00123                         $this->_getSession()->addException($e, Mage::helper('adminhtml')->__('Error while refreshed Catalog Rewrites. Please try again later'));
00124                     }
00125                     break;
00126 
00127                 case 'clear_images_cache':
00128                     try {
00129                         Mage::getModel('catalog/product_image')->clearCache();
00130                         $this->_getSession()->addSuccess(
00131                             Mage::helper('adminhtml')->__('Image cache was cleared successfully')
00132                         );
00133                     }
00134                     catch (Mage_Core_Exception $e) {
00135                         $this->_getSession()->addError($e->getMessage());
00136                     }
00137                     catch (Exception $e) {
00138                         $this->_getSession()->addException($e, Mage::helper('adminhtml')->__('Error while cleared Image cache. Please try again later'));
00139                     }
00140                     break;
00141 
00142                 case 'refresh_layered_navigation_now':
00143                     try {
00144                         $flag = Mage::getModel('catalogindex/catalog_index_flag')->loadSelf();
00145                         if ($flag->getState() == Mage_CatalogIndex_Model_Catalog_Index_Flag::STATE_RUNNING) {
00146                             $kill = Mage::getModel('catalogindex/catalog_index_kill_flag')->loadSelf();
00147                             $kill->setFlagData($flag->getFlagData())->save();
00148                         }
00149 
00150                         $flag->setState(Mage_CatalogIndex_Model_Catalog_Index_Flag::STATE_QUEUED)->save();
00151                         Mage::getSingleton('catalogindex/indexer')->plainReindex();
00152                         $this->_getSession()->addSuccess(
00153                             Mage::helper('adminhtml')->__('Layered Navigation Indices were refreshed successfully')
00154                         );
00155                     }
00156                     catch (Mage_Core_Exception $e) {
00157                         $this->_getSession()->addError($e->getMessage());
00158                     }
00159                     catch (Exception $e) {
00160                         $this->_getSession()->addException($e, Mage::helper('adminhtml')->__('Error while refreshed Layered Navigation Indices. Please try again later'));
00161                     }
00162                     break;
00163 
00164                 case 'refresh_layered_navigation':
00165                     try {
00166                         $flag = Mage::getModel('catalogindex/catalog_index_flag')->loadSelf();
00167                         switch ($flag->getState()) {
00168                             case Mage_CatalogIndex_Model_Catalog_Index_Flag::STATE_QUEUED:
00169                                 $flag->delete();
00170                                 $this->_getSession()->addSuccess(
00171                                     Mage::helper('adminhtml')->__('Layered Navigation indexing queue cancelled')
00172                                 );
00173                                 break;
00174                             case Mage_CatalogIndex_Model_Catalog_Index_Flag::STATE_RUNNING:
00175                                 $kill = Mage::getModel('catalogindex/catalog_index_kill_flag')->loadSelf();
00176                                 $kill->setFlagData($flag->getFlagData())->save();
00177                                 $this->_getSession()->addSuccess(
00178                                     Mage::helper('adminhtml')->__('Layered Navigation process queued to be killed')
00179                                 );
00180                                 break;
00181                             default:
00182                                 $flag->setState(Mage_CatalogIndex_Model_Catalog_Index_Flag::STATE_QUEUED)->save();
00183                                 $this->_getSession()->addSuccess(
00184                                     Mage::helper('adminhtml')->__('Layered Navigation indexing queued')
00185                                 );
00186                                 break;
00187                         }
00188                     }
00189                     catch (Mage_Core_Exception $e) {
00190                         $this->_getSession()->addError($e->getMessage());
00191                     }
00192                     catch (Exception $e) {
00193                         $this->_getSession()->addException($e, Mage::helper('adminhtml')->__('Error while refreshed Layered Navigation Indices. Please try again later'));
00194                     }
00195                     break;
00196 
00197                 case 'rebuild_search_index':
00198                     try {
00199                         Mage::getSingleton('catalogsearch/fulltext')->rebuildIndex();
00200                         $this->_getSession()->addSuccess(Mage::helper('adminhtml')->__('Search Index was rebuilt successfully'));
00201                     }
00202                     catch (Mage_Core_Exception $e) {
00203                         $this->_getSession()->addError($e->getMessage());
00204                     }
00205                     catch (Exception $e) {
00206                         $this->_getSession()->addException($e, Mage::helper('adminhtml')->__('Search Index rebuild error. Please try again later'));
00207                     }
00208                     break;
00209 
00210                 case 'rebuild_inventory_stock_status':
00211                     try {
00212                         Mage::getSingleton('cataloginventory/stock_status')->rebuild();
00213                         $this->_getSession()->addSuccess(Mage::helper('adminhtml')->__('CatalogInventory Stock Status was rebuilt successfully'));
00214                     }
00215                     catch (Mage_Core_Exception $e) {
00216                         $this->_getSession()->addError($e->getMessage());
00217                     }
00218                     catch (Exception $e) {
00219                         $this->_getSession()->addException($e, Mage::helper('adminhtml')->__('CatalogInventory Stock Status rebuild error. Please try again later'));
00220                     }
00221                     break;
00222 
00223                 case 'rebuild_catalog_index':
00224                     try {
00225                         Mage::getSingleton('catalog/index')->rebuild();
00226                         $this->_getSession()->addSuccess(Mage::helper('adminhtml')->__('Catalog Index was rebuilt successfully'));
00227                     }
00228                     catch (Mage_Core_Exception $e) {
00229                         $this->_getSession()->addError($e->getMessage());
00230                     }
00231                     catch (Exception $e) {
00232                         $this->_getSession()->addException($e, Mage::helper('adminhtml')->__('Catalog Index rebuild error. Please try again later'));
00233                     }
00234                     break;
00235 
00236                 case 'rebuild_flat_catalog_category':
00237                     try {
00238                         Mage::getResourceModel('catalog/category_flat')->rebuild();
00239                         $this->_getSession()->addSuccess(Mage::helper('adminhtml')->__('Flat Catalog Category was rebuilt successfully'));
00240                     }
00241                     catch (Mage_Core_Exception $e) {
00242                         $this->_getSession()->addError($e->getMessage());
00243                     }
00244                     catch (Exception $e) {
00245                         $this->_getSession()->addException($e, Mage::helper('adminhtml')->__('Flat Catalog Category rebuild error'));
00246                     }
00247                     break;
00248 
00249                 case 'rebuild_flat_catalog_product':
00250                     try {
00251                         Mage::getResourceModel('catalog/product_flat_indexer')->rebuild();
00252                         $this->_getSession()->addSuccess(Mage::helper('adminhtml')->__('Flat Catalog Product was rebuilt successfully'));
00253                     }
00254                     catch (Mage_Core_Exception $e) {
00255                         $this->_getSession()->addError($e->getMessage());
00256                     }
00257                     catch (Exception $e) {
00258                         $this->_getSession()->addException($e, Mage::helper('adminhtml')->__('Flat Catalog Product rebuild error. Please try again later'));
00259                     }
00260                     break;
00261 
00262                 default:
00263                     break;
00264             }
00265         }
00266 
00267         $this->_redirect('*/*');
00268     }
00269 
00270     public function refreshCatalogRewritesAction()
00271     {
00272         try {
00273             Mage::getSingleton('catalog/url')->refreshRewrites();
00274             $this->_getSession()->addSuccess(
00275                 Mage::helper('adminhtml')->__('Catalog Rewrites was refreshed successfully')
00276             );
00277         }
00278         catch (Mage_Core_Exception $e) {
00279             $this->_getSession()->addError($e->getMessage());
00280         }
00281         catch (Exception $e) {
00282             $this->_getSession()->addException($e, Mage::helper('adminhtml')->__('Error while refreshed Catalog Rewrites. Please try again later'));
00283         }
00284 
00285         $this->_redirect('*/*');
00286     }
00287 
00288     public function clearImagesCacheAction()
00289     {
00290         try {
00291             Mage::getModel('catalog/product_image')->clearCache();
00292             $this->_getSession()->addSuccess(
00293                 Mage::helper('adminhtml')->__('Image cache was cleared successfully')
00294             );
00295         }
00296         catch (Mage_Core_Exception $e) {
00297             $this->_getSession()->addError($e->getMessage());
00298         }
00299         catch (Exception $e) {
00300             $this->_getSession()->addException($e, Mage::helper('adminhtml')->__('Error while cleared Image cache. Please try again later'));
00301         }
00302 
00303         $this->_redirect('*/*');
00304     }
00305 
00306     public function refreshLayeredNavigationAction()
00307     {
00308         try {
00309             Mage::getSingleton('catalogindex/indexer')->plainReindex();
00310             $this->_getSession()->addSuccess(
00311                 Mage::helper('adminhtml')->__('Layered Navigation Indices was refreshed successfully')
00312             );
00313         }
00314         catch (Mage_Core_Exception $e) {
00315             $this->_getSession()->addError($e->getMessage());
00316         }
00317         catch (Exception $e) {
00318             $this->_getSession()->addException($e, Mage::helper('adminhtml')->__('Error while refreshed Layered Navigation Indices. Please try again later'));
00319         }
00320 
00321         $this->_redirect('*/*');
00322     }
00323 
00324     protected function _isAllowed()
00325     {
00326         return Mage::getSingleton('admin/session')->isAllowed('system/cache');
00327     }
00328 }