From e76e4e75407cc672bf342f13bbd77392a93c1623 Mon Sep 17 00:00:00 2001
From: Robin Appelman <icewind@owncloud.com>
Date: Wed, 29 Feb 2012 23:42:40 +0100
Subject: [PATCH] add touch() to all storage backands, and make  parameter
 optional

---
 apps/files_sharing/sharedstorage.php |  8 +++++++-
 lib/filestorage.php                  |  1 +
 lib/filestorage/common.php           |  1 +
 lib/filestorage/commontest.php       |  3 +++
 lib/filestorage/local.php            | 11 ++++++++---
 lib/filesystem.php                   |  2 +-
 lib/filesystemview.php               |  2 +-
 7 files changed, 22 insertions(+), 6 deletions(-)

diff --git a/apps/files_sharing/sharedstorage.php b/apps/files_sharing/sharedstorage.php
index 3067d4d34c..845659588e 100644
--- a/apps/files_sharing/sharedstorage.php
+++ b/apps/files_sharing/sharedstorage.php
@@ -505,7 +505,13 @@ class OC_Filestorage_Shared extends OC_Filestorage {
 			return $storage->getLocalFile($this->getInternalPath($source));
 		}
 	}
-	
+	public function touch($path, $mtime=null){
+		$source = $this->getSource($path);
+		if ($source) {
+			$storage = OC_Filesystem::getStorage($source);
+			return $storage->touch($this->getInternalPath($source),$time);
+		}
+	}
 }
 
 ?>
diff --git a/lib/filestorage.php b/lib/filestorage.php
index 6b679eab89..fd6497b947 100644
--- a/lib/filestorage.php
+++ b/lib/filestorage.php
@@ -48,5 +48,6 @@ abstract class OC_Filestorage{
 	abstract public function hash($type,$path,$raw);
 	abstract public function free_space($path);
 	abstract public function search($query);
+	abstract public function touch($path, $mtime=null);
 	abstract public function getLocalFile($path);// get a path to a local version of the file, whether the original file is local or remote
 }
diff --git a/lib/filestorage/common.php b/lib/filestorage/common.php
index 40a9cff5d0..fa14d7e99f 100644
--- a/lib/filestorage/common.php
+++ b/lib/filestorage/common.php
@@ -121,4 +121,5 @@ abstract class OC_Filestorage_Common extends OC_Filestorage {
 		$count=OC_Helper::streamCopy($source,$target);
 		return $tmpFile;
 	}
+// 	abstract public function touch($path, $mtime=null);
 }
diff --git a/lib/filestorage/commontest.php b/lib/filestorage/commontest.php
index dd552c6865..512e7c1b66 100644
--- a/lib/filestorage/commontest.php
+++ b/lib/filestorage/commontest.php
@@ -72,4 +72,7 @@ class OC_Filestorage_CommonTest extends OC_Filestorage_Common{
 	public function search($query){
 		return $this->storage->search($query);
 	}
+	public function touch($path, $mtime=null){
+		return $this->storage->touch($path,$mtime);
+	}
 }
\ No newline at end of file
diff --git a/lib/filestorage/local.php b/lib/filestorage/local.php
index 8acfe504cb..8e07ce6025 100644
--- a/lib/filestorage/local.php
+++ b/lib/filestorage/local.php
@@ -58,15 +58,20 @@ class OC_Filestorage_Local extends OC_Filestorage{
 	public function filemtime($path){
 		return filemtime($this->datadir.$path);
 	}
-	public function touch($path, $mtime){
+	public function touch($path, $mtime=null){
 		// sets the modification time of the file to the given value. 
 		// If mtime is nil the current time is set.
 		// note that the access time of the file always changes to the current time.
-		if( touch( $this->datadir.$path, $mtime ) ) {
+		if(!is_null($mtime)){
+			$result=touch( $this->datadir.$path, $mtime );
+		}else{
+			$result=touch( $this->datadir.$path);
+		}
+		if( $result ) {
 			clearstatcache( true, $this->datadir.$path );
 		}
 		
-		return touch($this->datadir.$path, $mtime);
+		return $result;
 	}
 	public function file_get_contents($path){
 		return file_get_contents($this->datadir.$path);
diff --git a/lib/filesystem.php b/lib/filesystem.php
index 90195bc213..5013b3968c 100644
--- a/lib/filesystem.php
+++ b/lib/filesystem.php
@@ -345,7 +345,7 @@ class OC_Filesystem{
 	static public function filemtime($path){
 		return self::$defaultInstance->filemtime($path);
 	}
-	static public function touch($path, $mtime){
+	static public function touch($path, $mtime=null){
 		return self::$defaultInstance->touch($path, $mtime);
 	}
 	static public function file_get_contents($path){
diff --git a/lib/filesystemview.php b/lib/filesystemview.php
index 5996a5f60f..2d54a676c8 100644
--- a/lib/filesystemview.php
+++ b/lib/filesystemview.php
@@ -163,7 +163,7 @@ class OC_FilesystemView {
 	public function filemtime($path){
 		return $this->basicOperation('filemtime',$path);
 	}
-	public function touch($path, $mtime){
+	public function touch($path, $mtime=null){
 		return $this->basicOperation('touch', $path, array('write'), $mtime);
 	}
 	public function file_get_contents($path){
-- 
GitLab