Ejemplo n.º 1
0
 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;
     }
 }