Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/server.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/apps
diff options
context:
space:
mode:
authorBjörn Schießle <schiessle@owncloud.com>2014-01-27 13:37:52 +0400
committerBjörn Schießle <schiessle@owncloud.com>2014-01-27 13:37:52 +0400
commit1d3da8b0eda0b7f01f8bb6157e223ccc8aa876a7 (patch)
tree97637f8b2edc42fccdf09c624f3c0f344aad89a0 /apps
parentd94c9bc8daa2e6d02f92646383519f70bb47cff0 (diff)
parent83878b9a7dc364c5f51c2ad7eb0960250e2fe42e (diff)
Merge pull request #6916 from owncloud/encryption_update_filecache
[encryption] update file cache after the file was written
Diffstat (limited to 'apps')
-rw-r--r--apps/files_encryption/lib/proxy.php31
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
*/