From d2ff6c569e93133026454150f71a7e8afd36b9e5 Mon Sep 17 00:00:00 2001 From: Joas Schilling Date: Mon, 28 Nov 2016 11:36:10 +0100 Subject: [PATCH] Keep the filemtime for files when downloading them in a zip/tar Signed-off-by: Joas Schilling --- lib/private/Streamer.php | 16 ++++++++++++---- lib/private/legacy/files.php | 3 ++- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/lib/private/Streamer.php b/lib/private/Streamer.php index 75877ab166a..52eeea422ef 100644 --- a/lib/private/Streamer.php +++ b/lib/private/Streamer.php @@ -76,8 +76,9 @@ class Streamer { $file = $dir . '/' . $filename; if(\OC\Files\Filesystem::is_file($file)) { $filesize = \OC\Files\Filesystem::filesize($file); + $fileTime = \OC\Files\Filesystem::filemtime($file); $fh = \OC\Files\Filesystem::fopen($file, 'r'); - $this->addFileFromStream($fh, $internalDir . $filename, $filesize); + $this->addFileFromStream($fh, $internalDir . $filename, $filesize, $fileTime); fclose($fh); }elseif(\OC\Files\Filesystem::is_dir($file)) { $this->addDirRecursive($file, $internalDir); @@ -93,11 +94,18 @@ class Streamer { * @param int $size Filesize * @return bool $success */ - public function addFileFromStream($stream, $internalName, $size){ + public function addFileFromStream($stream, $internalName, $size, $time) { + $options = []; + if ($time) { + $options = [ + 'timestamp' => $time + ]; + } + if ($this->streamerInstance instanceof ZipStreamer) { - return $this->streamerInstance->addFileFromStream($stream, $internalName); + return $this->streamerInstance->addFileFromStream($stream, $internalName, $options); } else { - return $this->streamerInstance->addFileFromStream($stream, $internalName, $size); + return $this->streamerInstance->addFileFromStream($stream, $internalName, $size, $options); } } diff --git a/lib/private/legacy/files.php b/lib/private/legacy/files.php index 064fa9e1d7a..b6c6857a1bf 100644 --- a/lib/private/legacy/files.php +++ b/lib/private/legacy/files.php @@ -153,8 +153,9 @@ class OC_Files { $file = $dir . '/' . $file; if (\OC\Files\Filesystem::is_file($file)) { $fileSize = \OC\Files\Filesystem::filesize($file); + $fileTime = \OC\Files\Filesystem::filemtime($file); $fh = \OC\Files\Filesystem::fopen($file, 'r'); - $streamer->addFileFromStream($fh, basename($file), $fileSize); + $streamer->addFileFromStream($fh, basename($file), $fileSize, $fileTime); fclose($fh); } elseif (\OC\Files\Filesystem::is_dir($file)) { $streamer->addDirRecursive($file); -- 2.39.5