aboutsummaryrefslogtreecommitdiffstats
path: root/apps/files
diff options
context:
space:
mode:
authorVincent Petry <pvince81@owncloud.com>2014-09-05 14:54:06 +0200
committerVincent Petry <pvince81@owncloud.com>2014-09-05 14:54:06 +0200
commite43c9b84c42a8b3f4fb25a950123fbcc060d1a5a (patch)
tree72d6d140c5f08e06201567e53c425b761b20ee49 /apps/files
parent1a7df3323391f6d6f7ef04de2687b3a566ab6351 (diff)
downloadnextcloud-server-e43c9b84c42a8b3f4fb25a950123fbcc060d1a5a.tar.gz
nextcloud-server-e43c9b84c42a8b3f4fb25a950123fbcc060d1a5a.zip
Catch exceptions when moving files
When moving files on storages that don't expose permissions, the storage itself might throw an exception when the permission is denied. This fix ensures that exceptions are caught and forwarded to the client instead of just hanging.
Diffstat (limited to 'apps/files')
-rw-r--r--apps/files/ajax/move.php14
1 files changed, 10 insertions, 4 deletions
diff --git a/apps/files/ajax/move.php b/apps/files/ajax/move.php
index 3a07554ad00..12760d4415f 100644
--- a/apps/files/ajax/move.php
+++ b/apps/files/ajax/move.php
@@ -19,10 +19,16 @@ if(\OC\Files\Filesystem::file_exists($target . '/' . $file)) {
if ($target != '' || strtolower($file) != 'shared') {
$targetFile = \OC\Files\Filesystem::normalizePath($target . '/' . $file);
$sourceFile = \OC\Files\Filesystem::normalizePath($dir . '/' . $file);
- if(\OC\Files\Filesystem::rename($sourceFile, $targetFile)) {
- OCP\JSON::success(array("data" => array( "dir" => $dir, "files" => $file )));
- } else {
- OCP\JSON::error(array("data" => array( "message" => $l->t("Could not move %s", array($file)) )));
+ try {
+ if(\OC\Files\Filesystem::rename($sourceFile, $targetFile)) {
+ OCP\JSON::success(array("data" => array( "dir" => $dir, "files" => $file )));
+ } else {
+ OCP\JSON::error(array("data" => array( "message" => $l->t("Could not move %s", array($file)) )));
+ }
+ } catch (\OCP\Files\NotPermittedException $e) {
+ OCP\JSON::error(array("data" => array( "message" => $l->t("Permission denied") )));
+ } catch (\Exception $e) {
+ OCP\JSON::error(array("data" => array( "message" => $e->getMessage())));
}
}else{
OCP\JSON::error(array("data" => array( "message" => $l->t("Could not move %s", array($file)) )));