diff options
author | Robin Appelman <icewind@owncloud.com> | 2012-04-29 15:09:47 +0200 |
---|---|---|
committer | Robin Appelman <icewind@owncloud.com> | 2012-04-29 15:09:47 +0200 |
commit | e3adbcb7d58d06c2bac8d925930d2deb2ed563ea (patch) | |
tree | 800cc280d6202f8fb4a33143ffc299c480950c00 | |
parent | 09a5c59cca415a046766ae7262926460721902ad (diff) | |
download | nextcloud-server-e3adbcb7d58d06c2bac8d925930d2deb2ed563ea.tar.gz nextcloud-server-e3adbcb7d58d06c2bac8d925930d2deb2ed563ea.zip |
remove non existing files from the cache when rescanning a folder
-rw-r--r-- | lib/filecache.php | 34 | ||||
-rw-r--r-- | lib/filesystem.php | 1 |
2 files changed, 20 insertions, 15 deletions
diff --git a/lib/filecache.php b/lib/filecache.php index 28a9eb247a6..431470696a6 100644 --- a/lib/filecache.php +++ b/lib/filecache.php @@ -522,26 +522,30 @@ class OC_FileCache{ $view=new OC_FilesystemView(($root=='/')?'':$root); } self::scanFile($path,$root); - $dh=$view->opendir($path.'/'); - $totalSize=0; - if($dh){ - while (($filename = readdir($dh)) !== false) { - if($filename != '.' and $filename != '..'){ - $file=$path.'/'.$filename; - if($view->is_dir($file.'/')){ - self::scan($file,$eventSource,$count,$root); - }else{ - $totalSize+=self::scanFile($file,$root); - $count++; - if($count>$lastSend+25 and $eventSource){ - $lastSend=$count; - $eventSource->send('scanning',array('file'=>$path,'count'=>$count)); + if(self::inCache($path)){ + self::updateFolder($path,$root); + }else{ + $dh=$view->opendir($path.'/'); + $totalSize=0; + if($dh){ + while (($filename = readdir($dh)) !== false) { + if($filename != '.' and $filename != '..'){ + $file=$path.'/'.$filename; + if($view->is_dir($file.'/')){ + self::scan($file,$eventSource,$count,$root); + }else{ + $totalSize+=self::scanFile($file,$root); + $count++; + if($count>$lastSend+25 and $eventSource){ + $lastSend=$count; + $eventSource->send('scanning',array('file'=>$path,'count'=>$count)); + } } } } } + self::increaseSize($view->getRoot().$path,$totalSize); } - self::increaseSize($view->getRoot().$path,$totalSize); } /** diff --git a/lib/filesystem.php b/lib/filesystem.php index 1b91eabc7c1..cac7e8648ef 100644 --- a/lib/filesystem.php +++ b/lib/filesystem.php @@ -275,6 +275,7 @@ class OC_Filesystem{ if(class_exists($class)){ return new $class($arguments); }else{ + OC_Log::write('core','storage backend '.$class.' not found',OC_Log::ERROR); return false; } } |