]> source.dussan.org Git - nextcloud-server.git/commitdiff
When moving a file from/to a temporary location, also update the file access/modifica...
authorMatthew Dawson <matthew@mjdsystems.ca>
Fri, 11 Mar 2011 17:03:30 +0000 (12:03 -0500)
committerMatthew Dawson <matthew@mjdsystems.ca>
Wed, 16 Mar 2011 21:56:05 +0000 (17:56 -0400)
When PHP moves a file across filesystem boundaries, it does not update the access/modification times.
Thus do it manually so that this information is not lost.

inc/lib_filestorage.php

index 06ce26f0d23df0414883152a14e027ac405701f7..45becf7c8f739531f18c40c704dae5b5cb761d53 100644 (file)
@@ -359,7 +359,9 @@ class OC_FILESTORAGE_LOCAL extends OC_FILESTORAGE{
        public function toTmpFile($path){
                $tmpFolder=sys_get_temp_dir();
                $filename=tempnam($tmpFolder,'OC_TEMP_FILE_'.substr($path,strrpos($path,'.')));
+               $fileStats = stat($this->datadir.$path);
                if(copy($this->datadir.$path,$filename)){
+                       touch($filename, $fileStats['mtime'], $fileStats['atime']);
                        $this->notifyObservers($path,OC_FILEACTION_READ);
                        return $filename;
                }else{
@@ -368,7 +370,9 @@ class OC_FILESTORAGE_LOCAL extends OC_FILESTORAGE{
        }
 
        public function fromTmpFile($tmpFile,$path){
+               $fileStats = stat($tmpFile);
                if(rename($tmpFile,$this->datadir.$path)){
+                       touch($this->datadir.$path, $fileStats['mtime'], $fileStats['atime']);
                        $this->notifyObservers($path,OC_FILEACTION_CREATE);
                        return true;
                }else{