diff options
author | Björn Schießle <schiessle@owncloud.com> | 2014-01-27 01:37:52 -0800 |
---|---|---|
committer | Björn Schießle <schiessle@owncloud.com> | 2014-01-27 01:37:52 -0800 |
commit | 1d3da8b0eda0b7f01f8bb6157e223ccc8aa876a7 (patch) | |
tree | 97637f8b2edc42fccdf09c624f3c0f344aad89a0 | |
parent | d94c9bc8daa2e6d02f92646383519f70bb47cff0 (diff) | |
parent | 83878b9a7dc364c5f51c2ad7eb0960250e2fe42e (diff) | |
download | nextcloud-server-1d3da8b0eda0b7f01f8bb6157e223ccc8aa876a7.tar.gz nextcloud-server-1d3da8b0eda0b7f01f8bb6157e223ccc8aa876a7.zip |
Merge pull request #6916 from owncloud/encryption_update_filecache
[encryption] update file cache after the file was written
-rw-r--r-- | apps/files_encryption/lib/proxy.php | 31 |
1 files changed, 24 insertions, 7 deletions
diff --git a/apps/files_encryption/lib/proxy.php b/apps/files_encryption/lib/proxy.php index 4fe76b97711..4e71ab1dd5d 100644 --- a/apps/files_encryption/lib/proxy.php +++ b/apps/files_encryption/lib/proxy.php @@ -37,6 +37,7 @@ namespace OCA\Encryption; class Proxy extends \OC_FileProxy { private static $blackList = null; //mimetypes blacklisted from encryption + private static $unencryptedSizes = array(); // remember unencrypted size /** * Check if a file requires encryption @@ -114,14 +115,12 @@ class Proxy extends \OC_FileProxy { // get encrypted content $data = $view->file_get_contents($tmpPath); - // update file cache for target file + // store new unenecrypted size so that it can be updated + // in the post proxy $tmpFileInfo = $view->getFileInfo($tmpPath); - $fileInfo = $view->getFileInfo($path); - if (is_array($fileInfo) && is_array($tmpFileInfo)) { - $fileInfo['encrypted'] = true; - $fileInfo['unencrypted_size'] = $tmpFileInfo['size']; - $view->putFileInfo($path, $fileInfo); - } + if ( isset($tmpFileInfo['size']) ) { + self::$unencryptedSizes[\OC_Filesystem::normalizePath($path)] = $tmpFileInfo['size']; + } // remove our temp file $view->deleteAll('/' . \OCP\User::getUser() . '/cache/' . $cacheFolder); @@ -137,6 +136,24 @@ class Proxy extends \OC_FileProxy { } /** + * @brief update file cache with the new unencrypted size after file was written + * @param string $path + * @param mixed $result + * @return mixed + */ + public function postFile_put_contents($path, $result) { + $normalizedPath = \OC_Filesystem::normalizePath($path); + if ( isset(self::$unencryptedSizes[$normalizedPath]) ) { + $view = new \OC_FilesystemView('/'); + $view->putFileInfo($normalizedPath, + array('encrypted' => true, 'encrypted_size' => self::$unencryptedSizes[$normalizedPath])); + unset(self::$unencryptedSizes[$normalizedPath]); + } + + return $result; + } + + /** * @param string $path Path of file from which has been read * @param string $data Data that has been read from file */ |