public static function recursiveDelete($dir) { $files = array_diff(scandir($dir), array('.', '..')); foreach ($files as $file) { if (is_dir($dir . '/' . $file)) { if (!self::recursiveDelete($dir . '/' . $file)) { return false; } } else { if ($file == 'clear.lock') { continue; } //Don't delete our lock file $size = filesize($dir . '/' . $file); if ($size) { self::$cacheStats['totalData'] += round($size / 1024); } if (strpos($dir, 'wfcache/') === false) { self::$lastRecursiveDeleteError = "Not deleting file in directory {$dir} because it appears to be in the wrong path."; self::$cacheStats['totalErrors']++; return false; //Safety check that we're in a subdir of the cache } if (@unlink($dir . '/' . $file)) { self::$cacheStats['filesDeleted']++; } else { self::$lastRecursiveDeleteError = "Could not delete file " . $dir . "/" . $file . " : " . wfUtils::getLastError(); self::$cacheStats['totalErrors']++; return false; } } } if ($dir != WP_CONTENT_DIR . '/wfcache/') { if (strpos($dir, 'wfcache/') === false) { self::$lastRecursiveDeleteError = "Not deleting directory {$dir} because it appears to be in the wrong path."; self::$cacheStats['totalErrors']++; return false; //Safety check that we're in a subdir of the cache } if (@rmdir($dir)) { self::$cacheStats['dirsDeleted']++; } else { self::$lastRecursiveDeleteError = "Could not delete directory {$dir} : " . wfUtils::getLastError(); self::$cacheStats['totalErrors']++; return false; } return true; } else { return true; } }