Project

General

Profile

Bug #16675 » clearCache-changes.txt

Administrator Admin, 2007-03-15 14:21

 
Index: C:/Documents and Settings/Dmitry/workspace-typo3/TYPO3-HEAD/t3lib/class.t3lib_tcemain.php
===================================================================
--- C:/Documents and Settings/Dmitry/workspace-typo3/TYPO3-HEAD/t3lib/class.t3lib_tcemain.php (revision 2190)
+++ C:/Documents and Settings/Dmitry/workspace-typo3/TYPO3-HEAD/t3lib/class.t3lib_tcemain.php (working copy)
@@ -6002,15 +6013,13 @@
switch($cacheCmd) {
case 'pages':
if ($this->admin || $this->BE_USER->getTSConfigVal('options.clearCache.pages')) {
- if (t3lib_extMgm::isLoaded('cms')) {
- $GLOBALS['TYPO3_DB']->exec_DELETEquery('cache_pages','');
- }
+ $this->internal_clearPageCache();
}
break;
case 'all':
if ($this->admin || $this->BE_USER->getTSConfigVal('options.clearCache.all')) {
if (t3lib_extMgm::isLoaded('cms')) {
- $GLOBALS['TYPO3_DB']->exec_DELETEquery('cache_pages','');
+ $this->internal_clearPageCache();
$GLOBALS['TYPO3_DB']->exec_DELETEquery('cache_pagesection','');
}
$GLOBALS['TYPO3_DB']->exec_DELETEquery('cache_hash','');
@@ -6178,6 +6187,42 @@
exit;
}
}
+
+ /*****************************
+ *
+ * Internal (do not use outside Core!)
+ *
+ *****************************/
+
+ /**
+ * Clears page cache. Takes into account file cache.
+ *
+ * @return void
+ */
+ function internal_clearPageCache() {
+ if (t3lib_extMgm::isLoaded('cms')) {
+ $GLOBALS['TYPO3_DB']->exec_DELETEquery('cache_pages','');
+ if ($GLOBALS['TYPO3_CONF_VARS']['FE']['pageCacheToExternalFiles']) {
+ $cacheDir = PATH_site.'typo3temp/cache_pages';
+ if (@is_dir($cacheDir) && false !== ($topDir = @opendir($cacheDir))) {
+ while (false !== ($dir = @readdir($topDir))) {
+ $curDirName = $cacheDir . '/' . $dir;
+ if (@is_dir($curDirName) && false !== ($curDir = @opendir($curDirName))) {
+ while (false != ($fname = @readdir($curDir))) {
+ $curFName = $curDirName . '/' . $fname;
+ if (@is_file($curFName)) {
+ @unlink($curFName);
+ }
+ }
+ }
+ closedir($curDir);
+ @rmdir($curDirName);
+ }
+ closedir($cacheDir);
+ }
+ }
+ }
+ }
}
(1-1/2)