diff --git a/lib/filecache.php b/lib/filecache.php index 811e8a3e6a..de38ad99e8 100644 --- a/lib/filecache.php +++ b/lib/filecache.php @@ -474,6 +474,20 @@ class OC_FileCache{ $query=OC_DB::prepare('DELETE FROM `*PREFIX*fscache` WHERE LENGTH(`path_hash`)<30'); $query->execute(); } + + /** + * clear filecache entries + * @param string user (optonal) + */ + public static function clear($user=''){ + if($user){ + $query=OC_DB::prepare('DELETE FROM `*PREFIX*fscache` WHERE user=?'); + $query->execute(array($user)); + }else{ + $query=OC_DB::prepare('DELETE FROM `*PREFIX*fscache`'); + $query->execute(); + } + } } //watch for changes and try to keep the cache up to date diff --git a/lib/filesystem.php b/lib/filesystem.php index c69970467f..01467b54c8 100644 --- a/lib/filesystem.php +++ b/lib/filesystem.php @@ -236,6 +236,13 @@ class OC_Filesystem{ } } } + + $mtime=filemtime(OC::$SERVERROOT.'/config/mount.php'); + $previousMTime=OC_Appconfig::getValue('files','mountconfigmtime',0); + if($mtime>$previousMTime){//mount config has changed, filecache needs to be updated + OC_FileCache::clear(); + OC_Appconfig::setValue('files','mountconfigmtime',$mtime); + } } self::$loaded=true;