diff options
author | Bjoern Schiessle <schiessle@owncloud.com> | 2014-06-23 16:14:52 +0200 |
---|---|---|
committer | Bjoern Schiessle <schiessle@owncloud.com> | 2014-06-25 12:27:30 +0200 |
commit | 709691548dbf72c5763879136f3a0ba4e8a0c135 (patch) | |
tree | 2bffd7b28c99c764d8d025b7b67616e821351437 | |
parent | 89f26915152e5aaf357b2aa633d5bea954e4bcc2 (diff) | |
download | nextcloud-server-709691548dbf72c5763879136f3a0ba4e8a0c135.tar.gz nextcloud-server-709691548dbf72c5763879136f3a0ba4e8a0c135.zip |
always use oc filesystem for rename operation
-rw-r--r-- | apps/files_encryption/hooks/hooks.php | 51 | ||||
-rwxr-xr-x | apps/files_encryption/lib/helper.php | 24 |
2 files changed, 41 insertions, 34 deletions
diff --git a/apps/files_encryption/hooks/hooks.php b/apps/files_encryption/hooks/hooks.php index df101acab9d..3625d5a09f3 100644 --- a/apps/files_encryption/hooks/hooks.php +++ b/apps/files_encryption/hooks/hooks.php @@ -464,61 +464,44 @@ class Hooks { $newShareKeyPath = $ownerNew . '/files_encryption/share-keys/' . $pathNew;
}
- // add key ext if this is not an folder
+ // create new key folders if it doesn't exists
+ if (!$view->file_exists(dirname($newShareKeyPath))) {
+ $view->mkdir(dirname($newShareKeyPath));
+ }
+ if (!$view->file_exists(dirname($newKeyfilePath))) {
+ $view->mkdir(dirname($newKeyfilePath));
+ }
+
+ // handle share keys
if (!$view->is_dir($oldKeyfilePath)) {
$oldKeyfilePath .= '.key';
$newKeyfilePath .= '.key';
// handle share-keys
- $localKeyPath = $view->getLocalFile($oldShareKeyPath);
- $escapedPath = Helper::escapeGlobPattern($localKeyPath);
- $matches = glob($escapedPath . '*.shareKey');
+ $matches = Helper::findShareKeys($oldShareKeyPath, $view);
foreach ($matches as $src) {
$dst = \OC\Files\Filesystem::normalizePath(str_replace($pathOld, $pathNew, $src));
-
- // create destination folder if not exists
- if (!file_exists(dirname($dst))) {
- mkdir(dirname($dst), 0750, true);
- }
-
- rename($src, $dst);
+ $view->rename($src, $dst);
}
} else {
// handle share-keys folders
-
- // create destination folder if not exists
- if (!$view->file_exists(dirname($newShareKeyPath))) {
- mkdir($view->getLocalFile($newShareKeyPath), 0750, true);
- }
-
$view->rename($oldShareKeyPath, $newShareKeyPath);
}
// Rename keyfile so it isn't orphaned
if ($view->file_exists($oldKeyfilePath)) {
-
- // create destination folder if not exists
- if (!$view->file_exists(dirname($newKeyfilePath))) {
- mkdir(dirname($view->getLocalFile($newKeyfilePath)), 0750, true);
- }
-
$view->rename($oldKeyfilePath, $newKeyfilePath);
}
- // build the path to the file
- $newPath = '/' . $ownerNew . '/files' . $pathNew;
+ // update share keys
+ $sharingEnabled = \OCP\Share::isEnabled();
- if ($util->fixFileSize($newPath)) {
- // get sharing app state
- $sharingEnabled = \OCP\Share::isEnabled();
-
- // get users
- $usersSharing = $util->getSharingUsersArray($sharingEnabled, $pathNew);
+ // get users
+ $usersSharing = $util->getSharingUsersArray($sharingEnabled, $pathNew);
- // update sharing-keys
- $util->setSharedFileKeyfiles($session, $usersSharing, $pathNew);
- }
+ // update sharing-keys
+ $util->setSharedFileKeyfiles($session, $usersSharing, $pathNew);
\OC_FileProxy::$enabled = $proxyStatus;
}
diff --git a/apps/files_encryption/lib/helper.php b/apps/files_encryption/lib/helper.php index 2684bf7be33..c6f18602b2b 100755 --- a/apps/files_encryption/lib/helper.php +++ b/apps/files_encryption/lib/helper.php @@ -439,6 +439,30 @@ class Helper { } /** + * find all share keys for a given file + * @param string $path to the file + * @param \OC\Files\View $view view, relative to data/ + */ + public static function findShareKeys($path, $view) { + $result = array(); + $pathinfo = pathinfo($path); + $dirContent = $view->opendir($pathinfo['dirname']); + + if (is_resource($dirContent)) { + while (($file = readdir($dirContent)) !== false) { + if (!\OC\Files\Filesystem::isIgnoredDir($file)) { + if (preg_match("/" . $pathinfo['filename'] . ".(.*).shareKey/", $file)) { + $result[] = $pathinfo['dirname'] . '/' . $file; + } + } + } + closedir($dirContent); + } + + return $result; + } + + /** * remember from which file the tmp file (getLocalFile() call) was created * @param string $tmpFile path of tmp file * @param string $originalFile path of the original file relative to data/ |