]> source.dussan.org Git - nextcloud-server.git/commitdiff
Clean user cache on login
authorBart Visscher <bartv@thisnet.nl>
Tue, 28 Aug 2012 21:07:09 +0000 (23:07 +0200)
committerBart Visscher <bartv@thisnet.nl>
Tue, 28 Aug 2012 21:07:28 +0000 (23:07 +0200)
lib/base.php
lib/cache/file.php

index af860027c1d37dce4c0bcb321c584d7d1667409d..d3f3c5ba1c6b0a6e2e3191f458e97b0019924804 100644 (file)
@@ -346,8 +346,9 @@ class OC{
                        }
                }
 
-               // register cache cleanup
+               // register cache cleanup jobs
                OC_BackgroundJob_RegularTask::register('OC_Cache_FileGlobal', 'gc');
+               OC_Hook::connect('OC_User', 'post_login', 'OC_Cache_File', 'loginListener');
 
                // Check for blacklisted files
                OC_Hook::connect('OC_Filesystem','write','OC_Filesystem','isBlacklisted');
index 562c3d1716780f162f8be62492c6aaca8bf92acc..7298ba9074cd49b43eec21b95801096c90f53c2b 100644 (file)
@@ -74,4 +74,25 @@ class OC_Cache_File{
                }
                return true;
        }
+
+       public function gc() {
+               $storage = $this->getStorage();
+               if($storage and $storage->is_dir('/')) {
+                       $now = time();
+                       $dh=$storage->opendir('/');
+                       while($file=readdir($dh)) {
+                               if($file!='.' and $file!='..') {
+                                       $mtime = $storage->filemtime('/'.$file);
+                                       if ($mtime < $now) {
+                                               $storage->unlink('/'.$file);
+                                       }
+                               }
+                       }
+               }
+       }
+
+       public static function loginListener() {
+               $c = new self();
+               $c->gc();
+       }
 }