/** * Clears a given cache info item. This method maintains compatibility with the odl cache module's behaviour. * * @param string $cache * @throws \Shopware\Components\Api\Exception\NotFoundException */ protected function clearCache($cache) { $capabilities = $this->cacheManager->getCoreCache()->getBackend()->getCapabilities(); if ($cache == 'all') { $this->cacheManager->getCoreCache()->clean(); $this->cacheManager->clearHttpCache(); $this->cacheManager->clearConfigCache(); $this->cacheManager->clearTemplateCache(); $this->cacheManager->clearProxyCache(); $this->cacheManager->clearSearchCache(); return; } switch ($cache) { case 'http': $this->cacheManager->clearHttpCache(); break; case 'config': $tags[] = 'Shopware_Config'; $tags[] = 'Shopware_Plugin'; $this->cacheManager->clearConfigCache(); break; case 'template': $this->cacheManager->clearTemplateCache(); break; case 'backend': $tags[] = 'Shopware_Config'; $tags[] = 'Shopware_Plugin'; $this->cacheManager->clearTemplateCache(); break; case 'proxy': $tags[] = 'Shopware_Models'; $this->cacheManager->clearProxyCache(); break; case 'doctrine-proxy': $tags[] = 'Shopware_Models'; $this->cacheManager->clearProxyCache(); break; case 'doctrine-file': $tags[] = 'Shopware_Models'; $this->cacheManager->clearProxyCache(); break; case 'search': $tags[] = 'Shopware_Modules_Search'; $this->cacheManager->clearSearchCache(); break; case 'rewrite': $this->cacheManager->clearRewriteCache(); break; default: throw new ApiException\NotFoundException("Cache {$cache} is not a valid cache id."); } if (!empty($capabilities['tags'])) { if (!empty($tags)) { $this->cacheManager->getCoreCache()->clean(\Zend_Cache::CLEANING_MODE_MATCHING_ANY_TAG, $tags); } else { $this->cacheManager->getCoreCache()->clean(); } } }
/** * Clear cache action */ public function clearCacheAction() { $cache = $this->Request()->getPost('cache', array()); $cacheInstance = $this->cacheManager->getCoreCache(); $capabilities = $cacheInstance->getBackend()->getCapabilities(); if (empty($capabilities['tags'])) { if ($cache['config'] == 'on' || $cache['template'] == 'on') { $cacheInstance->clean(); } } else { $tags = array(); if ($cache['config'] == 'on' || $cache['backend'] == 'on') { $tags[] = 'Shopware_Config'; $tags[] = 'Shopware_Plugin'; } if ($cache['search'] == 'on') { $tags[] = 'Shopware_Modules_Search'; } if ($cache['backend'] == 'on') { $tags[] = 'Shopware_Config'; } if ($cache['proxy'] == 'on') { $tags[] = 'Shopware_Models'; } if (!empty($tags) && $tags < 7) { $cacheInstance->clean(Zend_Cache::CLEANING_MODE_MATCHING_ANY_TAG, $tags); } else { $cacheInstance->clean(); } } if ($cache['config'] == 'on' || $cache['backend'] == 'on' || $cache['frontend'] == 'on') { $this->cacheManager->clearTemplateCache(); } if ($cache['search'] == 'on') { $this->cacheManager->clearSearchCache(); } if ($cache['router'] == 'on') { $this->cacheManager->clearRewriteCache(); } if ($cache['template'] == 'on' || $cache['backend'] == 'on' || $cache['frontend'] == 'on') { $this->cacheManager->clearTemplateCache(); } if ($cache['theme'] == 'on' || $cache['frontend'] == 'on') { $this->cacheManager->clearHttpCache(); } if ($cache['http'] == 'on' || $cache['frontend'] == 'on') { $this->cacheManager->clearHttpCache(); } if ($cache['proxy'] == 'on') { $this->cacheManager->clearProxyCache(); } $this->View()->assign(array('success' => true)); }