From 2144b2f37ae90faa03a44e5526c29893c5c7e7d0 Mon Sep 17 00:00:00 2001 From: Robin Appelman Date: Thu, 6 Sep 2012 23:10:24 +0200 Subject: [PATCH] clear the filecache if the mount configuration has changed --- lib/filecache.php | 14 ++++++++++++++ lib/filesystem.php | 7 +++++++ 2 files changed, 21 insertions(+) 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;