diff options
author | Vincent Petry <pvince81@owncloud.com> | 2014-09-05 14:54:06 +0200 |
---|---|---|
committer | Vincent Petry <pvince81@owncloud.com> | 2014-09-05 14:54:06 +0200 |
commit | e43c9b84c42a8b3f4fb25a950123fbcc060d1a5a (patch) | |
tree | 72d6d140c5f08e06201567e53c425b761b20ee49 /apps/files | |
parent | 1a7df3323391f6d6f7ef04de2687b3a566ab6351 (diff) | |
download | nextcloud-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.php | 14 |
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)) ))); |