From e11bf460e06fdafe04cc3bd7436725c40a71ffac Mon Sep 17 00:00:00 2001
From: Robin Appelman <icewind@owncloud.com>
Date: Tue, 5 Jun 2012 19:57:49 +0200
Subject: [PATCH] add OC_Cache::clear

---
 lib/cache.php      |  7 +++++++
 lib/cache/file.php | 23 +++++++++++++++++++----
 2 files changed, 26 insertions(+), 4 deletions(-)

diff --git a/lib/cache.php b/lib/cache.php
index a4fb244843..36cec63aa5 100644
--- a/lib/cache.php
+++ b/lib/cache.php
@@ -37,4 +37,11 @@ class OC_Cache {
 		return self::$cache->remove($key);
 	}
 
+	static public function clear() {
+		if (!self::$cache) {
+			self::init();
+		}
+		return self::$cache->clear();
+	}
+
 }
diff --git a/lib/cache/file.php b/lib/cache/file.php
index a724b9682a..1c97c5be4e 100644
--- a/lib/cache/file.php
+++ b/lib/cache/file.php
@@ -7,7 +7,7 @@
  */
 
 
-class OC_Cache_File extends OC_Cache {
+class OC_Cache_File{
 	protected function getStorage() {
 		if(OC_User::isLoggedIn()){
 			$subdir = 'cache';
@@ -24,7 +24,7 @@ class OC_Cache_File extends OC_Cache {
 
 	public function get($key) {
 		$storage = $this->getStorage();
-		if ($storage->is_file($key)) {
+		if ($storage and $storage->is_file($key)) {
 			$mtime = $storage->filemtime($key);
 			if ($mtime < time()) {
 				$storage->unlink($key);
@@ -35,9 +35,9 @@ class OC_Cache_File extends OC_Cache {
 		return null;
 	}
 
-	public function set($key, $value, $ttl) {
+	public function set($key, $value, $ttl=0) {
 		$storage = $this->getStorage();
-		if ($storage->file_put_contents($key, $value)) {
+		if ($storage and $storage->file_put_contents($key, $value)) {
 			return $storage->touch($key, time() + $ttl);
 		}
 		return false;
@@ -45,6 +45,21 @@ class OC_Cache_File extends OC_Cache {
 
 	public function remove($key) {
 		$storage = $this->getStorage();
+		if(!$storage){
+			return false;
+		}
 		return $storage->unlink($key);
 	}
+
+	public function clear(){
+		$storage = $this->getStorage();
+		if($storage and $storage->is_dir('/')){
+			$dh=$storage->opendir('/');
+			while($file=readdir($dh)){
+				if($file!='.' and $file!='..'){
+					$storage->unlink('/'.$file);
+				}
+			}
+		}
+	}
 }
-- 
GitLab